Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Organization Mgmt, Sales Strategies -There is no additional organizational management or sales strategies for this requirement outside of a service providers "normal" ONAP deployment and its attendant organizational resources from a service provider. 

P1: Phase 1 (for Guilin)

P2: Phase 2 (post Guilin)

P3: Phase 3 (future release)


ONAP SO NFVO Requirements for Guilin

ONAP SO NFVO is a sub-component of SO and provides ETSI NFV-compliant NFVO functions in ONAP, such as ETSI NFVO MANO 1) SOL007, SOL004 and SOL001 Modeling and Package, 2) SOL005-compliant NBI, 3) NS LCM and 4) SOL003-compliant SBI for VNFM invocation.

P1: Phase 1 (for Guilin)

P2: Phase 2 (post Guilin)

P3: Phase 3 (future release)

Requirement #RequirementComponentPhase
NFVO.R1

Provides a NFVO function Microservice plugin framework for hosting NFVO function components

  • Support for Microservice registration functions 
    • The following default function Microservices will be providedplugged in
      • SOL005 NBI (API Handler)
      • NS LCM Manager
      • ETSI Catalog Manager Adapter
      • Camunda Workflow Engine
      • NS Workflows and Logic
      • NS Resource Infra Management (RIM) Manager
      • SOL003 Adapter
      • K8S Client
      • Configuration Manager
      • MultiCloud Adapter
      • Inventory DB Adapter (default: AAI)
      • Notification Manager
      • K8S Client
      • Configuration Manager
      • FM/PM Event Manager
  • Support for substitution of existing function plugins
    • Supports registration of a new substitution Microservice with version control (leverage a mechanism like AAI ESR/MSR/API Fabric/MSB/Kubernetes - TBD)
    • supports plug-in mechanism of substitution Microservices
    • Dynamic dispatching/launching plugin instances based on configuration/policy
  • Support for extension of existing function plugins
    • Default function plugin extension with version control
    • Dynamic dispatching/launching an extended plugin instance based on configuration/policy
  • Support for Service Discovery
  • Support for Inter-Service Communication
Microservice Plugin FrameworkP1
NFVO.R2

Supports SOL005-compliant NS LCM (Network Service Lifecycle Management) NBI interfaces for its client such as ONAP SO or SOL005-compliant clients. In Guilin, the following operations will be supported

  • Create NS
  • Instantiate NS
  • Terminate NS
  • Delete NS
  • Get NS Operation Status
  • Subscription (Create, GET, Delete)
  • Sends Notification (as a client)
SOL005 NBIP1
NFVO.R3

Supports the ETSI-compliant NS LCM. In Guilin, the following operations will be supported

  • Create NS
  • Instantiate NS
  • Terminate NS
  • Delete NS 
  • Subscription
NS LCMP1
NFVO.R4

Sends SOL005-compliant NS LCM notifications to its subscriber, such as ONAP SO or SOL005-compliant clients

  • Send NS Notification
NS LCMP1
NFVO.R5

Manages (as a client) virtualized resources via interfaces (Or-Vi) exposed by the VIM

  • Software Image (P1)
  • Container Image Management (P2)
  • Resource Management, validation and authorization of NFVI resource requests (P2)
NS Resource ManagementRMP1
NFVO.R6

Supports Virtual Links and VNF-FG - NS LCM 

  • VLs (P1)
  • VNF-FGs (P2)
NS LCMP1
NFVO.R7

Manages (as a client) virtualized resource management interfaces (SOL003) thru the existing SOL003 Adapter

  • Create VNFs
  • Instantiate VNFs
  • Terminate VNFs
  • Delete VNFs
  • Subscription
NS LCM, SOL003 AdapterP1
NFVO.R8

Supports VNF Granting interfaces (SOL003) to the SOL003 Adapter 

  • Granting VNF with HPA, leveraging OOF (TBD)
NS LCM, SOL003 AdapterP1
NFVO.R9

Supports VNF lifecycle management (LCM) notifications (SOL003) to the SOL003 Adapter 

  • Provides SOL003-compliant Notification endpoint for the SOL003 Adapter
NS LCM, SOL003 AdapterP1
NFVO.R10

Interfaces with ETSI Catalog Manager for SOL004 VNF/PNF and SOL007 NS packages

  • Queries packages (VNF/PNF/NS)
  • Queries descriptions (VNFD/PNFD/NSD)
  • Subscription
NS LCMP1
NFVO.R11

Supports package management notification interfaces to ETSI Catalog Manager

  • Provides notification endpoints based on the ETSI Catalog Manager package management interfaces
NS LCM
NFVO.R12

Supports Communication Security, conforming SOL005 specification 

  • ONAP SO NFVO NBI supports HTTPS and Authentication/Authorization towards SO/SOL005 Adapter
  • ONAP SO NFVO SBI (through SOL003 Adapter) supports HTTPS and Authentication/Authorization towards SVNFMs
NS LCM, SOL005 NBIP1





SOL005 Adapter Requirements 

...

  • As a start, vCPE NS use cases plan to be used
    • For simplicity, vCPE NS use cases without nested NSDs will be used for initial component testing.
  • Network Slicing use cases will be defined for official testing
    • TBD

Epic and User Story

Epic

User Story

Task

Description

In Guilin?

JIRASize

Support for ETSI NFV NFVO  Orchestrator in ONAP SO (ONAP SO ETSI-Aligned Hierarchical Orchestration)













Executive Summary - Enable E2E workflows by orchestrating ETSI NFV compliant Network Services and VNFs. This NFVO should provide an ETSI NFV SOL005 v2.7.1 NBI which can onboard ETSI NFV SOL004 and ETSI NFV  SOL007 v2.7.1 compliant packages which then can be Life Cycle Managed and monitored. This NFVO should use an ETSI SOL003 v2.7.1 SBI to invoke an external VNF Manager. 

Business Impact - Enables operators and service providers to use Industry standard Orchestration to deploy, manage and monitor network services. Industry compatibility.

Business Markets - All operators and service providers that are developing ETSI compatible Network Services especially for 5G Slicing where each Slice Subnet is associated with a Network Service 

Funding/Financial Impacts - Reduction in operations expense from using industry standard ETSI Orchestration.

Organization Mgmt, Sales Strategies -There is no additional organizational management or sales strategies for this requirement outside of a service providers "normal" ONAP deployment and its attendant organizational resources from a service provider. 

Yes 

Jira
serverONAP JIRA
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keySO-2840


Support for NFVO Microservice Plugin Framework (P1)

<NFVO

-

.R1>


Provides

the NFVO

a NFVO function Microservice plugin framework for

supporting: (P1)

hosting NFVO function components

  • Support for Microservice registration
    • The following default
plugins will be registered to the Framework; routing will be configured)
    • function Microservices will be plugged in: 
      • SOL005 NBI (API Handler)
      • NS LCM Manager
      • ETSI Catalog Manager Adapter
      • Camunda Workflow Engine
      • NS Workflows and Logic
      • NS Resource Infra Management (RIM) Manager
      • SOL003 Adapter
Configuration Manager
      • MultiCloud Adapter
      • Inventory DB Adapter (default: AAI)
      • Notification Manager
      • K8S Client
      • Configuration Manager
      • FM/PM Event Manager
  • K8S Client
    • Support for substitution of existing function plugins
    Registration
      • Supports registration of a new substitution Microservice with version control (leverage a mechanism like AAI ESR/MSR/API Fabric/MSB/Kubernetes - TBD)
    Plug
      • supports plug-in
    a
      • mechanism of substitution
    Microservice
      • Microservices
      • Dynamic dispatching/launching
    a new
      • plugin
    instance
      • instances based on configuration/policy
    • Support for extension of existing function plugins
      • Default function plugin extension with version control
      • Dynamic dispatching/launching an extended plugin instance based on configuration/policy
    • Support for Service Discovery
    • Support for Inter-Service Communication
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2841



    Support for Service Registration
    supports

    Supports Micro-Service Registration for plugging in microservices

    Yes


    Support for Service Discovery
    supports

    Supports Micro-Service Discovery with version control

    Yes


    Support for Inter-Service Communication
    supports

    Supports for Inter-Service Communication

    Yes

    Support for SOL005 NBI API

    Handler (P1)

    Handler 

    <NFVO.R2>

    <NFVO-R3>


    Provides SOL005-compliant Restful Northbound APIs for SO/SOL005 Adapter (P1)
    • Supports NS Lifecycle Management (LCM) APIs
      • Create NS  (POST “/api/nslcm/v1/ns_instances”)
      •  Instantiate NS (POST “/api/nslcm/v1/ns_instances/{nsInstanceId}/instantiate”)
      • Terminate NS (“/api/nslcm/v1/ns_instances/{nsInstanceId}/terminate”)
      • Delete NS (DELETE “/api/nslcm/v1/ns_instances/{nsInstanceId}”)
      • Get Operation Status ( GET /
     api
      • api/nslcm/v1/ns_lcm_op_occs, 
        • / api/nslcm/v1/ns_lcm_op_occs
      • Scale NS (POST “/api/nslcm/v1/ns_instances/{nsInstanceId}/scale”) – (P2)
      • Heal NS (“POST ”/api/nslcm/v1/ns_instances/{nsInstanceId}/heal”) – (P2)
      • Query NS (GET “/api/nslcm/v1/ns_instances”, “/api/nslcm/v1/ns_instances/{nsInstanceId}”)
      • Subscription (POST ”/subscriptions”)
      • Notification (SO SOL005 Adapter client-provided; POST notification based on the callbackUrl from the subscription) 
    • Support NS Fault Management API (stretch goal)
    • Support NS Performance Management APIs (stretch goal)

    • Leverages SOL005 Swagger Files
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2842



    Create NS NBI
    • Supports Create NS: POST /api/nslcm/v1/ns_instances (CreateNsRequest)
    • Responses with NsInstance with 201 (for success) or an error
    • Sends NsIdentifierCreationNotification to the NFVO subscriber(s) (e.g., ONAP SO SOL005 Adapter)
    • Postcondition: NS Instance is NOT_INSTANTIATED state
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2858



    Instantiate NS NBI
    • Precondition: NS instance is NOT_INSTNANTIATED state
    • Supports Instantiate NS: POST /api/nslcm/v1/ns_instances/{nsInstanceId}/instantiate (InstantiateNsRequest)
    • Responses 202 Accepted with an empty payload body
      • a Location HTTP header that points to the new individual NS Lifecycle Operation Occurrence resource; i.e. the URI of that resource (.../ns_lcm_op_occs/{nsLcmOpOccId}
    • Sends nsLcmOperationOccurrenceNotifiation (start, result)
    • Postcondition: NS Instance is INSTANTIATED state
    • Error handling: if the operation is failed, error information is provided in the notification message
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2859



    Terminate NS NBI
    • Precondition: NS instance is INSTANTIATED state
    • Support Terminate NS: POST /api/nslcm/v1/ns_instances/{nsInstanceId}/terminate (TerminateNsRequest)
    • Responses 202 Accepted with an empty payload body
      • a Location HTTP header that points to the new individual NS Lifecycle Operation Occurrence resource; i.e. the URI of that resource (.../ns_lcm_op_occs/{nsLcmOpOccId}
    • Sends nsLcmOperationOccurrenceNotifiation with nsLcmOpOccId, notificationStatus (start, result), subscriptionId, etc. 
    • Postcondition: NS Instance is TERMINATED state
    • Error handling: if the operation is failed, error information is provided in the notification message
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2860



    Delete NS NBI
    • Precondition: NS instance in NOT_INSTANTIATED state
    • Supports Delete NS: DELETE /api/nslcm/v1/ns_instances/{nsInstanceId}
    • Sends 204 No Content with an empty payload body
    • Sends NsIdentifierDeletionNotification to the NFVO subscriber(s) (e.g., ONAP SO SOL005 Adapter)
    • Postcondition: the resource representing the NS instance has been removed from the list of NS instance resources
    • Error handling: if the individual NS instance is not in NOT_INSTANTIATED state, it rejects the deletion request
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2861



    Get NS Operation Status NBI
    • Support multiple NS LCM operation occurrences: GET / api/nslcm/v1/ns_lcm_op_occs
      • Response with 200 OK (NsLcmOpOcc[])
    • Support individual NS LCM operation occurrence: GET /api/nslcm/v1/ns_lcm_op_occs/{nsLcmOpOccId}
      • nsLcmOpOccId is an attribute in the NsLcmOperationOccurrenceNotification
      • Response with 200 OK (NsLcmOpOcc), where its opeationStatus=PROCESSING, COMPLETED)

    Note: Instantiate NS and Terminate NS use the individual NS LCM operation occurrence

    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2862



    Create NS Subscription NBI
    • Supports subscription: POST /api/nslcm/v1/subscriptions (LccnSubscriptionRequest)
    • Tests the callback notification endpoint
      • GET <<callback uri>>
      • expects 204 No Content response from the subscriber (e.g., SO SOL005 Adapter)
    • Responses with 201 Created (LccnSubscription)
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2864



    Get NS Subscription NBI
    • Supports Get all subscriptions: GET /api/nslcm/v1/subscriptions/
      • Responses with 200 OK (LccnSubscription[])
    • Supports Get individual subscription: GET /api/nslcm/v1/subscriptions/{subscriptionId}
      • Responses with 200 OK (LccnSubscription)
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2863



    Delete NS Subscription NBI
    • Supports Delete subscription: DELETE /api/nslcm/v1/subscriptions/{subscriptionId}
      • Responses with 204 No Content
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2865



    Send NS Notifications
    NBISends
    (As a Client)
    • As a client, sends notifications to the subscriber(s) for NS LCM: POST <<callback URI>> (<<Notification>>)
      • <<Notification>> follows NsLcmOperationOccurrenceNotification, NsIdentifierCreationNotification, NsIdentifierDeletionNotification or NsChangeNotification (see, SOL005 v2.7.1 specification 6.5.2.5 - 6.5.2.8)
    • Gets response: 204 No Content from the subscriber (e.g, SO SOL005 Adapter)
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2866








    Supports for NS LCM and Workflows (P1)

    <NFVO

    -R2>

    .R3>


    Support for NS LCM and Workflows (P1

    )Provides Workflow engines (stand-along/clustered Camunda engine) for the NS workflow managementSupports Stand-Alone/clustered Camunda engine(s

    )

    deployment

  • Allows hot deployment of custom workflow packages  while ONAP NFVO is running

    • Provides NS LCM and workflows
      • Provides default NS workflows (part of ONAP NFVO deployment)
        • CreateNS bpmn files with business logic
        • InstantiateNS bpmn files with business logic
        • TerminateNS bpmn files with business logic
        • DeleteNS bpmn files with business logic 
      • Allows custom NS workflows deployment (Hot deployment)
        • The Operators build their own workflows and business logic as war files
        • The Operators drop off custom workflows war files into the Camunda deployment directory
        • UI for the custom workflow war deployment would be supported 
      • Provides business logic for NS LCM
      • Invokes SOL003 Adapter
      • Invokes
    Resource Adapter
      • NS RIM Manager for Granting and other VIM resource management
      • Invokes Catalog DB Adapter (access to ETSI Catalog Manager)
      • Invokes NS Inventory
    AdapterInvokes MultiCloud Adapter 
      • Adapter (access to AAI)
      • Invokes MultiCloud Adapter (for VLs)
      • Invokes Notification Manager
      • Invokes Configuration Manager (TBD)
      • Invokes Policy Adapter (TBD)
      • Invokes OOF Adapter
    (TBD)Invokes Notification Manager
      • (TBD)
      • Invokes FM/PM Event Manager (TBD)
      • Invoke K8S Client (TBD)
    • Invokes Workflow engines (stand-along/clustered Camunda engine) for the NS workflow management
      • Supports Stand-Alone/clustered Camunda engine(s) deployment
      • Allows hot deployment of custom workflow packages  while ONAP NFVO is running

    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2843



    Create NS 
    SOL005 NBI Handler

    NS LCM invokes the Create NS workflows which do the following:

    <Create NS>

    Image Modified

    • Initialize Parameters: set csar_id, ns_name, description, global_customer_id, service_type from the parameters to the execution variables
    • Get NS Package from ETSI Catalog Manager: query ETSI Catalog Manager for an NS package with the given csar_id 
    • Check NSD Validation: check if the NSD package exists in the ETSI Catalog Manager DB; otherwise generates errors
    • Check if an NS Instance (with the ns_name as the key) exists in the NS Instance DB (NFVO_NSINST DB table)
    • Create NS Instance in NS Instance DB: stores the NS instance data into the NS Instance DB with the status= 'NOT_INSTANTIATED'
      • create an ns instance id (uuid)
      • store ns_instance_id, ns_name, ns_package_id, nsd_id, nsd_invariant_id, description, lastuptime, global_customer_id, service_type
    • Create NS instance in AAI: store an NS instance data to AAI as follows:
      • service-instance-id = ns_inst_id
      • service-instance-name = ns-name
      • service-type = SERVICE_TYPE (NetworkService)
      • service-role = SERVICE_ROLE (NetworkService)
    • get nsInstance from GetNSInfoService
    • return 201 Created with the NsInstance
    • Send NsIdentifierCreationNotification


    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2867



    Instantiate NS
    SOL005 NBI Handler

    NS LCM invokes the Instantiate NS workflows which do the following:

    <Instantiate NS>

    Image Modified

    • Initialize Parameters: set ns_inst_id, plan_input
      • plan_input = job_id, ns_inst_id, dst_plan, additionalParamsForNs, additionalParamsForVnf, additionalParamsForPnf
      • dst_plan = get nsd with the given nspackage_id, input parameters
      • Get an ns instance id from the parameter
    • Create a Job: create a job for the ns instance id and return a job_id
      • create a job object with job_type = NS, job_action= NS_INST, ns_inst_id
      • store it to NFVO_JOB database table
    • create an occ id for the ns instance id
    • Update the status of ns_instance record in DB: update the ns instance id row of the NFVO_NSINST db for status (= INSTANTIATING)
    • get a ns instance data from DB for the given ns_inst_id: get an NS records from the NFVO_NSINST db for the ns instance id
    • collect parameters for NS: get and store additional Parameters for NS
    • Get an VIM id: get an VIM id from the cloud owner and cloud region parameters
    • Get VNF VIM: get an VNF VIM from the location constraints
    • set the job status with 'Start Query NSD'
    • get NSD from ETSI Catalog Manager & Parse NSD: get and parse a nsd for the ns package id
      • get ns model (dst_plan)
    • Update NFVO_INST db to modify nsd model (dst_plan)
    • Prepare each VNF request: get VNF list from the nsd 
      • for each VNF,
        • get vnfd_id, vnfm_type, vimId, s_vimId (with "cloud_owner"_"cloud_regionid")
        • select VNFM by leveraging AAI ESR
        • store VNF pararms in collection, with vnf info including vnfmInstanceId
    • Set VL: set vl vim id
      • for each VNF
        • if VNF has dependencies, for each dependency
          • add VNF properties and id into vl_vnf array
      • for each VLs
        • get vnfdId and vimId
        • add vimId into VL array
    • Update NFVO_NSINST db: update NFVO_NSINST with the nsd model
    • get PNF parameters
    • get VNF parameters (from VNF params above)
    • set up Plan Input with job_id, ns_inst_id, tosca plan, additional NS params, VNF params, PNF params)
    • save serviceBaseInfoModel DB
    • start workflows with the job_id, ns_inst, plan_input, occ_id)
      • get service template id from ETSI Catalog Manager
      • get process id from ETSI Catalog Manager
      • workflow run with data (process id, params = plan input)


        • createVL
        • createVNF
        • createSFC (Service Function Chain)


    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2868



    Terminate NS
    SOL005 NBI Handler

    NS LCM invokes the Terminate NS workflows which do the following:

    <Terminate NS>


    Image Modified
    • Initialize Parameters: Get an ns_inst_d, job_id and request_data from the parameters
      • set terminate_type, terminate_timeout from request_data 
      • set job_id, ns_inst_id
      • set occ_id by creating a record in NsLcmOpOccModel DB
    • Check if the NS instance in NS_INST DB: if there no matching ns_inst_id from the NFVO_NSINT database table, consider there is nothing to terminate, and return
    • Set Job Status to Starting: set job status as "Starting terminate..."
    • update the ns_inst_id row from the NFVO_NSINST database table with the status = TERMINATING
    • cancel SFC list
      • get sfc inst array
      • for each sfc inst
        • DELETE /api/nslcm/v1/ns/sfcs/{instId}
    • cancel VNF list
      • get vnf inst list array from NFVO_NFINST
        • for each vnf inst
          • delete_vnf (nf_instid)
            • POST /api/nslcm/v1/ns/terminateVnf/{instId}
    • cancel VL list
      • get VL Inst array
      • for each VL inst
        • DELETE /api/nslcm/v1/ns/vls/{instId}
    • cancel PNF list
      • get pnf inst array
      • for each pnf inst 
        • DELETE /api/nslcm/v1/pnfs/{instId}
    • modify the ns_inst_id row state from the NFVO_NSINST database table
    • modify NFVO_NSINST status = NOT_INSTANTIATED
    • set job status = NS terminate ends
    • Update NsLcmOpOCC to COMPLETED
    • Send nsLcmOperationOccurrenceNotification



    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2869



    Delete NS
    SOL005 NBI Handler

    NS LCM invokes the Delete NS workflows which do the following:

    <Delete NS>

    Image Modified

    • Initialize Parameters: get ns_inst_id
    • delete ns instance in AAI
      • get ns_instances from NFVO_NSINST database table
      • if there are ns_instances, 
        • query AAI for global_customer_id, service_type, ns_inst_id
        • invoke delete_ns_aai with global_customer_id, service_type, ns_inst_id, resource_version
          • formulate the resource url with parameters
          • call_aaI (resource, "DELETE")
    • delete ns_inst_id row from the NFVO_NSINST database table
    • delete ns_inst_id row from the t_lcm_inputparam_mapping database table
    • delete ns_inst_id row from the t_lcm_defPackage_mapping database table
    • delete ns_inst_id row from the t_lcm_servicebaseinfo database table
    • return 204 No Content
    • Send NsIdentifierDeletionNotification


    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2870



    Get NS Operation Status
    SOL005 NBI Handler

    NS LCM invokes the Get NS Operation Status workflows which do the following:

    Image Modified

    • Initialize Parameters: set lcm_op_occ_id, parameter
    • if the nsLcmOpOccId pareameter is present, 
      • Query NSLCMOPOCCS DB for the nsLcmOpOccId
      • return NsLcmOpOcc
    • else
      • Query NSLCMOPOCCS DB for all
      • return NsLcmOpOcc[]
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2871



    Create NS Subscription
    SOL005 NBI Handler

    NS LCM invokes the Create NS Subscription workflows which do the following:

    Image Modified


    • Initialize Parameters: set subscription filters
      • callback_uri
      • authentication
      • notification_types
      • operation_types
      • operation_states
      • ns_component_types
      • lcm_opname_impactin_nscomponent
      • lcm_opoccstatus_impacting_nscomponent
      • nsInstanceSubscriptionFilter
    • Create Subscription ID: create subscription id
    • Check valid auth info:
    • Check Filter Type:
      • check if the notification is NOTIFICATION_TYPE.NSLCM_OPERATION_OCCURRENCE_NOTIFICATION
    • Check Valid:
      • Check Callback_URI: check callback Uri
        • check if the callbackUri exists in the NFVO_SUBSCRIPTION DB
          • if no subscription, return true
          • else 
            • check additional filter types, notificationTypes, operationTypes, operationStates
              • if the filters are NOT equal, return false
            • check ns instance filter, If the filter type is not equal, return false
          • return true
    • save subscription request to database
    • return response with subscription
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2872



    Get NS Subscription
    SOL005 NBI Handler

    NS LCM invokes the Get NS Subscription workflows which do the following:

    Image Modified

    • Initialize Parameter: set subscription_id, params
    • if there is no param, 
      • query NFVO_SUBSCRIPTION DB for all
      • return LccSubscription[]
    • else if there is param, subscriptionId,
      • query NFVO_SUBSCRIPTION DB for the subscriptionId
      • return LccSubscription


    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2874



    Delete NS Subscription
    SOL005 NBI Handler

    NS LCM invokes the Delete NS Subscription workflows which do the following:

    Image Modified

    • Initialize Parameters: set subscriptonId
    • Delete NFVO_SUBSCRIPTION DB for the subscriptionId
    • if success, return 204 No Content
    • else, return error
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2875



    Send NS Notifications

    NS LCM sends notifications to SOL005 NBI Handler

    (

    as

    a client) sends notifications as

    the following:

    Image Modified

    • Initialize Parameter:
      • query NFVO_SUBSCRIPTION DB for the given key
      • get the callback URI from the return subscription 
    • Formulate notification data (one of the followings)
      • NsLcmOperationOccurrenceNotification,
      • NsIdentifierCreationNotification,
      • NsIdentifierDeletionNotification or
      • NsChangeNotification
    • Sends notifications to the subscriber(s) for NS LCM: POST <<callback URI>> (<<Notification>>)
    • Gets response: 204 No Content from the subscriber (e.g, SO SOL005 Adapter)


    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2876



    Support for Create VLs 

    Creates NS invokes Create VLs


    • Initializes Parameters: set VL data
    • Creates VL to VIM through the MultiCloud Adapter
    • Creates VL to
    Resource
    • RIM Manager 
    (question)
    • Saves VL to NFVO_VLINST database
    • Create Network AAI
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2886



    Support for Delete VLs

    Deletes NS invokes Delete VLs


    • gets VL info from the NFVO_VLINST DB for the vl_inst_id
    • gets ns_inst_id from the VL info ownerid
    • gets vim_id from the VL info vimid
    • gets subnet_id_list from the VL info relatedsubnetworkid
    • gets network_id
    • invokes delete_vl_from_vim (vim_id, subnetwork_id_list, network_id) thru the MultiCloud Adapter
    • invokes delete_vl_from_resmgr()
    • invokes delete_network_and_subnet_in_aai()
      • delete_network_aai
    • invokes delete_vl_from_db (vl_inst_info)
      • delete the vl_inst_info record from NFVO_VLINST DB
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2887



    Support for Get VLs

    Queries VL info for the given vl_inst_id

    • queries NFVO_VLINST DB for the vl_inst_id
    • return a record for the vl_inst_id


    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2888








    Package and deploy NS LCM Workflows with business logic
    • Package and deploy NS LCM workflows with business logic for NS LCM
      • default NS LCM workflows and business logic
    • Allows custom NS workflows deployment (Hot deployment)
      • The Operators build their own workflows and business logic as war files
      • The Operators drop off custom workflows war files into the Camunda deployment directory
      • UI for the custom workflow war deployment would be supported 
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2891



    Package and deploy default NS LCM workflows with business logic
    • Provides default for NS LCM workflows with business logic for NS LCM
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2892



    Support for UI and REST interfaces for custom workflow war deployment 
    • Supports for UI and REST interfaces for custom workflow war deployment
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2893














    Support for NS Resource
    Management
    Infra Management  (RIM) Manager (P1 partial)
    • Provides Resource Granting Information through OOF (Policy, MultiCloud, A&AI) (P1)
      • Supports interfaces with OOF to collect Granting information
      • Collects Homing information from OOF or ONAP SO (service-level homing thru OOF)

      • Cache/Persist Resource Homing information from ONAP SO or OOF
      • Provides the Grant information to other NFVO components
    • Supports Or-Vi Interfaces that provided by VIM, Infrastructure Manager, VIM or CaaS manager (note: for Guilin, many of them would be stretch goals) (P1 Partial)
      • Software Image Management (P1)
      • Container Image Management (P2)

      • Virtualized Resources Information Management
      • Virtualized Resources Capacity Management

      • Virtualized Resources Management
      • Virtualized Resources Change Management

      • Virtualized Resources Reservation Management
      • Virtualized Resource Quota Management

      • Virtualized Resource Performance Management
      • Virtualized Resource Fault Management

      • Network Forwarding Path (NFP) Management
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2844



    Support for Grant VNF
    • Provides Grant VNF
    • Receives a Grant VNF request from SOL003 Adapter 
    • If OOF-based Grant VNF is supported
      • Uses homing data from ONAP SO E2E
    • else use the non-OOF-based Grant
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2894



    Support for Software Image Management
    • Provides Software Image to VIM based on the Or-Vi, by leveraging VIM or MultiCloud APIs.
    • Note: it depends on the current VIM / MultiCloud API support. If they don't support this, we defer this to the future release. 
      • Add Image operation (AddImageRequest); gets AddImageResponse
      • Query Images operation (QueryImagesRequest); get QueryImagesResponse
      • Query Image operation (QueryImageRequest); get QueryImageResponse
      • Update Images operation (UpdateImageRequest); get UpdateImageResponse
      • Delete Images operation (DeleteImageRequest); get UpdateImageResponse
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2895


    Support for NS Catalog DB Adapter (P1)
    • Provides access for ETSI Catalog Manager
    • Get notifications from ETSI Catalog Manager
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2845



    Support for queries for VNF/PNF/NS package management
    • Queries ETSI Catalog Manager for NS/PNF/VNF packages by using the ETSI Catalog Manager package management swagger
      • Note: for VNF packages, refer to the existing SOL003 Adapter ETSI Catalog Manager access mechanism
      • ETSI Catalog Manager package management swagger: 


    View file
    nameetsicatalog.swagger.json
    height250


    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2877



    Support for notification endpoint for ETSI Catalog Manager notification
    • Provides the notification endpoint for NS/PNF/VNF packages by using the ETSI Catalog Manager package management notification swagger.
      • Note: for VNF package notification, refer the existing SOL003 Adapter ETSI Catalog Manager access mechanism
      • Note: use the notification endpoint as callback uri during subscription
      • ETSI Catalog Manager package management notification swagger:

    View file
    nameetsicatalog.swagger.notification.json
    height250


    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2878


    Support for NS Inventory Adapter (P1)
    • Provides access for AAI for NS LCM, leveraging the AAI client module
    • Refactoring of the current AAI Adapter
    • Support for NS AAI APIs (CRUD)
    • Support for Network AAI APIs (CRUD)
    • Support for VNF AAI APIs (CRUD)
    • Support for Vserver AAI APIs (CRUD)
    • Support for Customer AAI APIs (CRUD) - TBD
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2846



    Support for NS AAI APIs (CRUD)
    • supports the Create NS AAI (global_customer_id, service_type, service_instance_id, data) 
      • data = {
            "service-instance-id": ns_inst_id,
            "service-instance-name": ns_name,
            "service-type": NetworkService,
            "service-role": NetworkService
        }

      • resource = /business/customers/customer/{global_customer_id}/service-subscriptions/service-subscription/{service_type}/service-instances/service-instance/{service_instance_id}

      • call AAI (resource, "PUT", data)
    • supports the Query NS AAI (global_customer_id, service_type, service_instance_id) 
      • resource = /business/customers/customer/{global_customer_id}/service-subscriptions/service-subscription/{service_type}/service-instances/service-instance/{service_instance_id}?depth=all

      • call AAI (resource, "GET")
    • supports the Delete NS AAI (global_customer_id, service_type, service_instance_id, resource_version)
      • resource = /business/customers/customer/{global_customer_id}/service-subscriptions/service-subscription/{service_type}/service-instances/service-instance/{service_instance_id}
      • if resource_version is not empty, resource_version = resource + "?resource-version={resource_version}
      • call AAI (resource, "DELETE")
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2880



    Support for Network AAI APIs (CRUD)
    • supports the Create Network AAI (network_id, data)
      • data = {
            "network-id": self.vl_inst_id,
            "network-name": self.vl_inst_id,
            "is-bound-to-vpn": False,
            "is-provider-network": True,
            "is-shared-network": True,
            "is-external-network": True,
            "relationship-list": {
                "relationship": [
                    {
                        "related-to": "service-instance",
                        "relationship-data": [
                            {
                                "relationship-key": "customer.global-customer-id",
                                "relationship-value": self.global_customer_id
                            },
                            {
                                "relationship-key": "service-subscription.service-type",
                                "relationship-value": self.service_type
                             },
                            {
                                "relationship-key": "service-instance.service-instance-id",
                                "relationship-value": self.owner_id
                            }
                        ]
                    }
                ]
            }
        }

      • resource = network/l3-networks/l3-network/{network_id}
      • call AAI (resource, "PUT", data)
    • supports the Delete Network AAI (network_id, resource_version="")
      • resource = network/l3-networks/l3-network/{network_id}
      • if resource_version is not empty, resource_version = resource + "?resource-version={resource_version}
      • call AAI (resource, "DELETE")
    • supports the Query Network AAI (network_id)
      • resource = network/l3-networks/l3-network/{network_id}
      • call AAI (resource, "GET")
    • supports the Create subnet AAI (network_id, subnet_id, data)
      • resource = /network/l3-networks/l3-network/{network_id}/subnets/subnet/{subnet_id}

      • data = {
            "subnets": {
                "subnet": [
                    {
                        "subnet-id": self.related_subnetwork_id,
                        "dhcp-enabled": False
                    }

                ]
            },
        }

      • call AAI (resource, "PUT", data)
    • supports the Query subnet AAI (network_id, subnet_id)
      • resource = /network/l3-networks/l3-network/{network_id}/subnets/subnet/{subnet_id}
      • call AAI (resource, "GET")
    • supports the Delete subnet AAI (network_id, subnet_id, resource_version = "")
      • resource = /network/l3-networks/l3-network/{network_id}/subnets/subnet/{subnet_id} 
      • if resource_version is not empty, resource_version = resource + "?resource-version={resource_version}
      • call AAI (resource, "DELETE")
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2881



    Support for VNF AAI APIs (CRUD)
    • supports the Create VNF AAI (vnf_id, data)
      • resource = /network/generic-vnfs/generic-vnf/{vnf_id}  
      • data = {
            "vnf-id": nf_inst_id,
            "vnf-name": vnf_inst_name,
            "vnf-type": "vnf-type-test111",
            "service-id": ns_inst_id,
            "in-maint": True,
            "is-closed-loop-disabled": False,
            "relationship-list": {
                "relationship": [
                {
                    "related-to": "service-instance",
                    "relationship-data": [
                        {
                            "relationship-key": "customer.global-customer-id",
                            "relationship-value": global_customer_id
                        },
                       {
                           "relationship-key": "service-subscription.service-type",
                           "relationship-value": service_type
                       },
                      {
                           "relationship-key": "service-instance.service-instance-id",
                           "relationship-value": ns_inst_id
                      }
                    ]
                }
                ]
            }
        }
      • call AAI (resource, "PUT" data)
    • supports the Query VNF AAI (vnf_id)

      • resource = /network/generic-vnfs/generic-vnf/{vnf_id}?depth=all

      • call AAI (resource, "GET")
    • supports the Delete VNF AAI (vnf_id, resource_version="")
      • resource = network/generic-vnfs/generic-vnf/{vnf_id}
      • if resource_version is not empty, resource_version = resource + "?resource-version={resource_version}
      • call AAI (resource, "DELETE")
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2882



    Support for Vserver AAI APIs (CRUD)
    • supports the Create Vserver AAI (cloud_owner, cloud_region_id, tenant_id, vserver_id, data)

      • resource = /cloud-infrastructure/cloud-regions/cloud-region/{cloud_owner}/{cloud_region_id}/tenants/tenant/{tenant_id}/vservers/vserver/{vserver_id}
      • data = {
            "vserver-id": vserver_id,
            "vserver-name": vserver_name,
            "prov-status": "ACTIVE",
            "vserver-selflink": "",
            "in-maint": True,
            "is-closed-loop-disabled": False,
            "relationship-list": {
                "relationship": [
                {
                    "related-to": "generic-vnf",
                    "relationship-data": [
                        {
                            "relationship-key": "generic-vnf.vnf-id",
                            "relationship-value": vnf_instid
                        }
                    ]
                }
                ]
            }
        }

      • call AAI (resource, "PUT", data)
    • supports the Query Vserver AAI (cloud_owner, cloud_region_id, tenant_id, vserver_id)
      • resource = /cloud-infrastructure/cloud-regions/cloud-region/{cloud_owner}/{cloud_region_id}/tenants/tenant/{tenant_id}/vservers/vserver/{vserver_id}?depth=all
      • call AAI (resource, "GET")
    • supports the Delete Vserver AAI (cloud_owner, cloud_region_id, tenant_id, vserver_id, resource_version="")
      • resource = /cloud-infrastructure/cloud-regions/cloud-region/{cloud_owner}/{cloud_region_id}/tenants/tenant/{tenant_id}/vservers/vserver/{vserver_id}
      • if resource_version is not empty, resource_version = resource + "?resource-version={resource_version}
      • call AAI (resource, "DELETE")
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2883



    Support for Customer AAI APIs (CRUD)
    • TBD for its use case









    Support for NS LCM Database Management
    • Provides NS LCM Database Management
    • Creates NS LCM Database tables
    • Provides Database Access Objects (DAO)
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2889



    Create NS LCM Database tables and provide CRUD

    creates NS LCM Database tables and provides CRUD

    • NFVO_NSINST

    id = models.CharField(db_column='ID', primary_key=True, max_length=200)
    name = models.CharField(db_column='NAME', max_length=200)
    nspackage_id = models.CharField(db_column='NSPACKAGEID', max_length=200, null=True, blank=True)
    nsd_id = models.CharField(db_column='NSDID', max_length=200)
    nsd_invariant_id = models.CharField(db_column='NSDINVARIANTID', max_length=200)
    description = models.CharField(db_column='DESCRIPTION', max_length=255, null=True, blank=True)
    sdncontroller_id = models.CharField(db_column='SDNCONTROLLERID', max_length=200, null=True, blank=True)
    flavour_id = models.CharField(db_column='FLAVOURID', max_length=200, null=True, blank=True)
    ns_level = models.CharField(db_column='NSLEVEL', max_length=200, null=True, blank=True)
    status = models.CharField(db_column='STATUS', max_length=200, null=True, blank=True)
    nsd_model = models.TextField(db_column='NSDMODEL', max_length=20000, null=True, blank=True)
    input_params = models.TextField(db_column='INPUTPARAMS', max_length=2000, null=True, blank=True)
    scale_params = models.TextField(db_column='SCALEPARAMS', max_length=2000, null=True, blank=True)
    create_time = models.CharField(db_column='CREATETIME', max_length=200, null=True, blank=True)
    lastuptime = models.CharField(db_column='LASTUPTIME', max_length=200, null=True, blank=True)
    global_customer_id = models.CharField(db_column='GLOBALCUSTOMERID', max_length=50, null=True, blank=True)
    service_type = models.CharField(db_column='SERVICETYPE', max_length=50, null=True, blank=True)

    • NFVO_NFINST

    nfinstid = models.CharField(db_column='NFINSTID', max_length=200, primary_key=True)
    mnfinstid = models.CharField(db_column='M_NFINSTID', max_length=200, blank=True, null=True)
    nf_name = models.CharField(db_column='NFNAME', max_length=100, blank=True, null=True)
    template_id = models.CharField(db_column='TEMPLATEID', max_length=200, blank=True, null=True)
    vnf_id = models.CharField(db_column='VNFID', max_length=200, blank=True, null=True)
    package_id = models.CharField(db_column='PACKAGEID', max_length=200, blank=True, null=True)
    vnfm_inst_id = models.CharField(db_column='VNFMINSTID', max_length=200, blank=True, null=True)
    ns_inst_id = models.CharField(db_column='NSINSTID', max_length=200, blank=True, null=True)
    status = models.CharField(db_column='STATUS', max_length=20, blank=True, null=True)
    flavour_id = models.CharField(db_column='FLAVOURID', max_length=200, blank=True, null=True)
    vnf_level = models.CharField(db_column='VNFLEVEL', max_length=200, blank=True, null=True)
    location = models.CharField(db_column='LOCATION', max_length=200, blank=True, null=True)
    max_vm = models.IntegerField(db_column='MAXVM', null=True)
    max_cpu = models.IntegerField(db_column='MAXCPU', null=True)
    max_ram = models.IntegerField(db_column='MAXRAM', null=True)
    max_hd = models.IntegerField(db_column='MAXHD', null=True)
    max_shd = models.IntegerField(db_column='MAXSHD', null=True)
    max_net = models.IntegerField(db_column='MAXNET', null=True)
    version = models.CharField(db_column='VERSION', max_length=255, null=True)
    vendor = models.CharField(db_column='VENDOR', max_length=255, null=True, blank=True)
    vnfd_model = models.TextField(db_column='VNFDMODEL', max_length=20000, blank=True, null=True)
    input_params = models.TextField(db_column='INPUTPARAMS', max_length=2000, blank=True, null=True)
    scale_params = models.TextField(db_column='SCALEPARAMS', max_length=2000, null=True, blank=True)
    create_time = models.CharField(db_column='CREATETIME', max_length=200, null=True, blank=True)
    lastuptime = models.CharField(db_column='LASTUPTIME', max_length=200, blank=True, null=True)
    extension = models.TextField(db_column='EXTENSION', max_length=65535, blank=True, null=True)

    • NFVO_VLINST

    vlinstanceid = models.CharField(db_column='VLINSTANCEID', max_length=255, primary_key=True)
    vldid = models.CharField(db_column='VLDID', max_length=255)
    vlinstancename = models.CharField(db_column='VLINSTANCENAME', max_length=255, blank=True, null=True)
    ownertype = models.IntegerField(db_column='OWNERTYPE')
    ownerid = models.CharField(db_column='OWNERID', max_length=255)
    relatednetworkid = models.CharField(db_column='RELATEDNETWORKID', max_length=255, blank=True, null=True)
    relatedsubnetworkid = models.CharField(db_column='RELATEDSUBNETWORKID', max_length=255, blank=True,
    null=True)
    vltype = models.IntegerField(db_column='VLTYPE', default=0)
    vimid = models.CharField(db_column='VIMID', max_length=255)
    tenant = models.CharField(db_column='TENANT', max_length=255)
    status = models.CharField(db_column='STATUS', max_length=255)

    • NFVO_JOB

    jobid = models.CharField(db_column='JOBID', primary_key=True, max_length=255)
    jobtype = models.CharField(db_column='JOBTYPE', max_length=255)
    jobaction = models.CharField(db_column='JOBACTION', max_length=255)
    resid = models.CharField(db_column='RESID', max_length=255)
    status = models.IntegerField(db_column='STATUS', null=True, blank=True)
    starttime = models.CharField(db_column='STARTTIME', max_length=255, null=True, blank=True)
    endtime = models.CharField(db_column='ENDTIME', max_length=255, null=True, blank=True)
    progress = models.IntegerField(db_column='PROGRESS', null=True, blank=True)
    user = models.CharField(db_column='USER', max_length=255, null=True, blank=True)
    parentjobid = models.CharField(db_column='PARENTJOBID', max_length=255, null=True, blank=True)
    resname = models.CharField(db_column='RESNAME', max_length=255, null=True, blank=True)

    • NFVO_OOF_DATA

    request_id = models.CharField(db_column='REQUESTID', max_length=255)
    transaction_id = models.CharField(db_column='TRANSACTIONID', max_length=255)
    request_status = models.CharField(db_column='REQUESTSTATUS', max_length=50)
    request_module_name = models.CharField(db_column='RESOURCEMODULENAME', max_length=100)
    service_resource_id = models.CharField(db_column='SERVICERESOURCEID', max_length=255, primary_key=True)
    vim_id = models.CharField(db_column='VIMID', max_length=255, null=True, blank=True)
    cloud_owner = models.CharField(db_column='CLOUDOWNER', max_length=100, null=True, blank=True)
    cloud_region_id = models.CharField(db_column='CLOUDREGIONID', max_length=255, null=True, blank=True)
    vdu_info = models.TextField(db_column='VDUINFO', max_length=65535, null=True, blank=True)

    • NFVO_SUBSCRIPTION

    subscription_id = models.CharField(db_column='SUBSCRIPTIONID', max_length=255, primary_key=True)
    vnf_instance_filter = models.TextField(db_column='VNFINSTANCEFILTER', null=True)
    ns_instance_filter = models.TextField(db_column='NSINSTANCEFILTER', null=True)
    notification_types = models.TextField(db_column='NOTIFICATIONTYPES', null=True)
    operation_types = models.TextField(db_column='OPERATIONTYPES', null=True)
    operation_states = models.TextField(db_column='OPERATIONSTATES', null=True)
    ns_component_types = models.TextField(db_column='NSCOMPONENTTYPES', null=True)
    lcm_opname_impacting_nscomponent = models.TextField(db_column='LCMOPNAMEIMPACTINGNSCOMPONENT', null=True)
    lcm_opoccstatus_impacting_nscomponent = models.TextField(db_column='LCMOPOCCSTATUSIMPACTINGNSCOMPONENT', null=True)
    callback_uri = models.CharField(db_column='CALLBACKURI', max_length=255)
    links = models.TextField(db_column='LINKS', max_length=20000)
    auth_info = models.TextField(db_column='AUTHINFO', max_length=20000, blank=True, null=True)

    • NSLCMOPOCCS

    id = models.CharField(db_column='ID', max_length=255, primary_key=True)
    operation_state = models.CharField(db_column='OPERATIONSTATE', null=False, max_length=30)
    state_entered_time = models.CharField(db_column='STATEENTEREDTIME', null=False, max_length=30)
    start_time = models.CharField(db_column='STARTTIME', null=False, max_length=30)
    ns_instance_id = models.CharField(db_column='NSINSTANCEID', null=False, max_length=255)
    operation = models.CharField(db_column='OPERATION', null=False, max_length=30)
    is_automatic_invocation = models.CharField(db_column='ISAUTOMATICINVOCATION', null=False, max_length=5)
    operation_params = models.TextField(db_column='OPERATIONPARAMS', null=False)
    is_cancel_pending = models.CharField(db_column='ISCANCELPENDING', null=False, max_length=5)
    cancel_mode = models.TextField(db_column='CANCELMODE', null=True)
    error = models.TextField(db_column='ERROR', null=True)
    resource_changes = models.TextField(db_column='RESOURCECHANGES', null=True)
    links = models.TextField(db_column='LINKS', null=False)

    • NFVO_PNFINST

    pnfId = models.CharField(db_column='PNFID', primary_key=True, max_length=255)
    pnfName = models.CharField(db_column='PNFNAME', max_length=255)
    pnfdId = models.CharField(db_column='PNFDID', max_length=50)
    pnfdInfoId = models.CharField(db_column='PNFDINFOID', max_length=100)
    pnfProfileId = models.CharField(db_column='PNFPROFILEID', max_length=255)
    cpInfo = models.TextField(db_column='CPINFO', max_length=255, null=True, blank=True)
    emsId = models.CharField(db_column='EMSID', null=True, max_length=255)
    nsInstances = models.TextField(db_column='NSINSTANCES', max_length=1000, null=True, blank=True)

    • t_lcm_defPackage_mapping 

    service_id = models.CharField(db_column='serviceId', max_length=255, primary_key=True)
    service_def_id = models.CharField(db_column='serviceDefId', max_length=255)
    template_id = models.CharField(db_column='templateId', max_length=255)
    template_name = models.CharField(db_column='templateName', max_length=255)

    • t_lcm_inputParam_mapping 

    service_id = models.CharField(db_column='serviceId', max_length=255)
    input_key = models.CharField(db_column='inputKey', max_length=255)
    input_value = models.CharField(db_column='inputValue', max_length=255, null=True, blank=True)

    • t_lcm_servicebaseinfo 

    service_id = models.CharField(db_column='serviceId', max_length=255, primary_key=True)
    service_name = models.CharField(db_column='serviceName', max_length=255)
    service_type = models.CharField(db_column='serviceType', max_length=20)
    description = models.CharField(db_column='description', max_length=255, null=True, blank=True)
    active_status = models.CharField(db_column='activeStatus', max_length=20)
    status = models.CharField(db_column='status', max_length=20)
    creator = models.CharField(db_column='creator', max_length=50)
    create_time = models.BigIntegerField(db_column='createTime')

    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2890














    Support for MultiCloud Adapter (P1)
    • Provides MultiCloud Access
    • Refactoring of the current SO MultiCloud Adapter
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2847



    Support for Create Network to VIM API
    • supports the Create Network to VIM through MultiCloud (network_data)
      • gets VIM info: vim_resp_body = get_vim_by_id (vim_id) from AAI

        • call AAI ("/cloud-infrastructure/cloud-regions/cloud-region/{cloud_owner}/{cloud_regionid}?depth=all", "GET")

      • data = {
            "vimid": vim_id,
            "vimtype": vim_resp_body["type"],
            "url": vim_resp_body["url"],
            "user": vim_resp_body["userName"],
            "passwd": vim_resp_body["password"],
            "tenant": vim_resp_body["tenant"]
               }
      • create API (data)
        • call MultiVimAPI.create_network(auth_info, data)

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2884



    Support for Delete Network (VL) from VIM API
    • supports the Delete Network from VIM through MultiCloud (vim_id, subnetwork_id_list, network_id)
      • delete_vl_from_vim
      • gets VIM info: vim_resp_body = get_vim_by_id (vim_id) from AAI

        • call AAI ("/cloud-infrastructure/cloud-regions/cloud-region/{cloud_owner}/{cloud_regionid}?depth=all", "GET")

      • data = {
            "vimid": vim_id,
            "vimtype": vim_resp_body["type"],
            "url": vim_resp_body["url"],
            "user": vim_resp_body["userName"],
            "passwd": vim_resp_body["password"],
            "tenant": vim_resp_body["tenant"]
      • if ther are subnetwork, delete_subnet (subnet_id=subnetwokr_id)
      • delete_network (network_id = network_id)
        • call MultiVimAPI delete network
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2885


    Support for Configuration Mgr (P2)
    • Provides APPC and or CDS access
    • Refactoring of the current APPC and CDS connection
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2848


    Support for Policy Adapter (P2)
    • Provides Policy access
    • Refactoring of the current Policy access
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2849


    Support for OOF Adapter (P1?)
    • Provides OOF access for homing
    • Refactoring of the current OOF access
    • Need to discuss further
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2850


    Supports for Notification Manager (P1)
    • Provides notifications to SO E2E
    • depends on the SOL003 notification endpoint
    ?TBD
    Support for FM/PM Event Manager (P3)
    • Provides access to DCAE
    ?TBD
    Support for K8S client (P3)
    • Provides access to K8S
    • When we support CNF, it will be done, not for Guilin
    ?TBD
    Support for SOL005 Adapter to interface to/from ONAP SO NFVO (P1)

    SOL005 Adapter supports interfaces to/from ONAP SO NFVO

    • SOL005 Adapter sends SOL005 requests to the ONAP SO NFVO, as one of the choices (SO NFVO, VFC, External NFVO)
    • SOL005 Adapter subscribes (CREATE and DELETE) to ONAP SO NFVO for notifications
    • SOL005 Adapter provides notification endpoint(s) to receive notifications (P1)
    • Swagger will be provided to the SOL005 Adapter development
    Yes

    Jira
    serverONAP JIRA
    serverId425b2b0a-557c-3c0c-b515-579789cceedb
    keySO-2857














    NFVO Architecture & Functions

    ...

    • Provides the NFVO function Microservice plugin framework for supporting:
      • Default function plugins support (following default plugins will be registered to the Framework; routing will be configured)
        • SOL005 NBI (API Handler)
        • NS LCM Manager
        • ETSI Catalog Manager Adapter
        • Camunda Workflow Engine
        • NS Workflows and Logic
        • Resource Infra Management (RIM) Manager
        • K8S Client
        • Configuration Manager
        • MultiCloud Adapter
        • Inventory DB Adapter
        • Notification Manager
        • FM/PM Event Manager
      • Substitution of existing function plugins
        • Registration of a new substitution Microservice with version control (leverage a mechanism like AAI ESR/MSR/API Fabric/MSB/Kubernetes - TBD)
        • Plug-in a substitution Microservice
        • Dynamic dispatching/launching a new plugin instance based on configuration/policy
      • Extension of existing function plugins
        • Default function plugin extension with version control
        • Dynamic dispatching/launching an extended plugin instance based on configuration/policy

    ...

    • Provides SOL003-compliant (Or-Vnfm) Southbound APIs towards SVNFMs
      • Supports VNF Lifecycle Management (LCM)
        • Create VNF
        • Instantiate VNF
        • Terminate VNF
        • Delete VNF
        • Scale VNF
        • Heal VNF
        • Query VNF
        • ModifyInfo VNF
        • Subscription
        • Notification
        • Granting with HPA
      • It is a Microservice and part of ONAP SO NFVO
      • It is launched by NS Workflows for VNF LCM
      • It locates the VNFM instance by leveraging AAI ESR


    Resource

    ...

    Infra Management (RIM) Manager - high priority

    • Provides Resource Granting Information through OOF (Policy, MultiCloud, A&AI)
      • Supports interfaces with OOF to collect Granting information
      • Collects Homing information from OOF and provides the information to other NFVO components

    • Supports Or-Vi Interfaces that provided by VIM, Infrastructure Manager, VIM or CaaS manager (note: for Guilin, many of them would be stretch goals)
      • Software Image Management (P1)
      • Container Image Management (P2)

      • Virtualized Resources Information Management (P2)
      • Virtualized Resources Capacity Management (P2)

      • Virtualized Resources Management (P2)
      • Virtualized Resources Change Management (P2)

      • Virtualized Resources Reservation Management (P2)
      • Virtualized Resource Quota Management (P2)

      • Virtualized Resource Performance Management (P2)
      • Virtualized Resource Fault Management (P2)

      • Network Forwarding Path (NFP) Management (P2)

    ...

    ONAP SONFVO

    Asdc-controller (scope: Service, NS, VNF, VF-Module)

    Asdc-controller for NS, leveraging ETSI Catalog Manager

    API Handler

    SOL005 API Handler

    BPMN Infra (scope: Service, NS, VNF, VF-Module) including Workflows with embedded Camunda Workflow engine

    NS LCM +

    Default NS Workflows (with business logic) + Custom NS Workflows (with business logic)

    Stand-Alone/Clustered Camunda Workflow Engine

    VFC / SOL005 Adapter

    Not Applicable

    SOL003 Adapter in SO

    SOL003 Adapter in NFVO (move its home)

    Catalog DB Adapter

    Leverage ETSI Catalog Manager

    Request DB Adapter (scope: service, NS, VNF, VF-Module)

    Request DB Adapter for NS scope

    APPC Orchestrator

    Configuration Manager Client

    ve-vnfm-adapter (SOL002 Adapter)

    TBD

    sdnc-adapter

    TBD

    nssmf-adapter

    TBD

    Openstack adapter / MultiCloud adapter

    Resource Infra Management (RIM) Manager

    VNF Adapter

    Not Applicable (SOL003 Adapter delegates VNF operations to SVNFM)

    K8S Client (PoC)

    K8S Client

    SO-monitoring

    SO-monitoring for NS and VNF

    Common (beans and utils common for all the projects)

    Leverage Common as needed

    Close Loop Handling

    FM/PM Event Handler





    ...