Versions Compared

Key

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

...

for NS LCM and Workflows (P1)

<NFVO.R3>

<NFVO.R3>

<NFVO.R3>

<NFVO.R8>

<NFVO.R9>

<NFVO.R6><NFVO.R6>Support for Get VLs

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 (P1)

<NFVO.R1>


Support SO NFVO function Microservice plugin capabilities, leveraging MSB, SpringBoot and Kubernetes,  for hosting NFVO function components by configuration. So, the SO NFVO can be customized in a future by operators.

  • Support for substitution of existing function plugins
    • Supports registration of a new substitution Microservice with version control (leverage a mechanism like AAI ESR)
    • 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
  • Test Service Discovery
  • Test Inter-Service Communication (for Guilin, SOL003 Adapter)

Note: we are not building the Microservice service registration, aggregation, discovery and routing engine itself, but we are leveraging the engine's capability (e.g., MSB, API Fabric, Kong, or Kubernetes & service discovery) to offer configuration of NFVO Microservice components access. 

In Guilin, the following will be supported

  • Configure Microservice registration
    • The following default function Microservices will be plugged in: 
      • NS LCM Manager including:
        • SOL005 NBI API Handler
        • NS Workflows and Logic
        • Embedded Camunda Workflow Engine
        • MultiCloud Adapter client
        • ETSI Catalog Manager Adapter
        • AAI Client
      • SOL003 Adapter
      • Shared Camunda Workflow Engine (allow to use ONAP SO Camunda engine) - if ONAP SO Dynamic BPMN is available.
      • ETSI Catalog Manager Adapter (in Guilin, it is part of NS LCM Manager)
      • NS Resource Infra Management (RIM) Manager
      • MultiCloud Adapter (in Guilin, reuse of ONAP SO MultiCloud Adapter)
      • Inventory DB Adapter (In Guilin, reuse of ONAP SO AAI client)
      • Notification Manager (not for Guilin)
      • Policy Adapter (not for Guilin)
      • K8S Client (not for Guilin)
      • Configuration Adapter (not for Guilin)
      • FM/PM Event Adapter (not for Guilin)

Yes

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


<requirements for each SO-NFVO Microservice>

  • to be included to user story requirements
Support for NFVO Service Registration

Supports NFVO Micro-Service Registration for plugging in microservices

  • Configuration for the default NFVO sub-components
Yes



<requirements for finding SO-NFVO sub-microservices>

  • to be included to user story requirements
Support for NFVO Service Discovery

Supports NFVO Micro-Service Discovery with version control

  • Test for the default NFVO sub-component discovery
Yes



<requirements for communication between SO-NFVO sub-microservices>

  • to be included to user story requirements
Support for NFVO Inter-Service Communication

Supports for NFVO Inter-Service Communication

  • Test for the default NFVO sub-component communication
Yes



Support for SOL005 NBI API Handler 

<NFVO.R2>


Preconditions:

  • ETSI SOL007 NS packages are onboarded into SDC and distributed to ETSI Catalog Manager.
  • In Guilin, we are testing SOL005-compliant requests, allowing the CLI-based SOL005 client sends SOL005 requests directly to SO NFVO in case the UUI - SO - E2E Workflows - NS Workflows - SOL005 Adapter sequences are NOT ready for Guilin.

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/nslcm/v1/ns_lcm_op_occs, 
      • / api/nslcm/v1/ns_lcm_op_occs
  • Leverages SOL005 Swagger Files for SO NFVO SOL005 NBI API Handler
  • Make SO-NFVO (so-etsi-nfvo) Pod is deployable in OOM
Yes

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



Create NS NBI
  • Preconditions: 
    • SOL007 NS packages are stored in ETSI Catalog Manager.
    • the Cli-based SO NFVO Client is ready to send the SOL005-compliant Create NS request
    • The SO-NFVO (so-etsi-nfvo) pod is ready
PlantUML Macro
typedot
@startuml

participant SO_NFVO_CLI
participant SOL005_NBI
participant NS_LCMGR

autonumber 

    SO_NFVO_CLI -> SOL005_NBI : Create NS (CreateNSRequest)
    SOL005_NBI -> NS_LCMGR : Create NS (CreateNSRequest)
    NS_LCMGR --> NS_LCMGR : Create NS (CreateNSRequest)
    NS_LCMGR -> SOL005_NBI : 201 Created (NSInstance)
    SOL005_NBI -> SO_NFVO_CLI : 201 Created (NSInstance)

Opt Notification will be handled by the separate user story
    NS_LCMGR -> SOL005_NBI : Send NsIdentifierCreationNotification
    SOL005_NBI -> SO_NFVO_CLI : Send NsIdentifierCreationNotification
end

@enduml
  • Support the SOL005-compliant Create NS API 
    • Supports Create NS request API: POST /api/nslcm/v1/ns_instances (CreateNsRequest)
    • Supports Create NS responses with NsInstance with 201 (for success) or an error
      • Returns a dummy 201 until the backend business logic is ready 
      • Only mandatory attributes of NsInstance will be set.
      • Support successful or error conditions
    • Sends NsIdentifierCreationNotification to the NFVO subscriber(s) (e.g., ONAP SO SOL005 Adapter)
      • Note: this will be handled by the separate user story: Sends NsIdentifierCreationNotification to the NFVO subscriber(s) (e.g., ONAP SO SOL005 Adapter)


  • Post conditions: the NS Instance is set as NOT_INSTANTIATED state
Yes

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



Instantiate NS NBI
  • Preconditions:
    • NS instance is NOT_INSTNANTIATED state
    • SOL007 NS packages are stored in ETSI Catalog Manager.
    • the Cli-based SO NFVO Client is ready to send the SOL005-compliant Instantiate NS request
    • The SO-NFVO (so-etsi-nfvo) pod is ready
PlantUML Macro
typedot
@startuml

participant SO_NFVO_CLI
participant SOL005_NBI
participant NS_LCMGR

autonumber 

    SO_NFVO_CLI -> SOL005_NBI : Instantiate NS (InstantiateNsRequest)
    SOL005_NBI -> NS_LCMGR : Instantiate NS (InstantiateNsRequest)
    NS_LCMGR --> NS_LCMGR : Instantiate NS Lifecycle Operation Occurrence resource
    NS_LCMGR -> SOL005_NBI : 202 Accepted()
    SOL005_NBI -> SO_NFVO_CLI : 202 Accepted

    NS_LCMGR -> SOL005_NBI : Send NsLcmOperationOccurrenceNotification(start)
    SOL005_NBI -> SO_NFVO_CLI :  Send NsLcmOperationOccurrenceNotification(start)
	NS_LCMGR --> NS_LCMGR : Performs Instantiate NS operations
    NS_LCMGR -> SOL005_NBI : Send NsLcmOperationOccurrenceNotification(result)
    SOL005_NBI -> SO_NFVO_CLI :  Send NsLcmOperationOccurrenceNotification(result)
opt GET individual NS LCM operation occurrence
	SO_NFVO_CLI -> SOL005_NBI : GET .../ns_lcm_op_occs/{nsLcmOpOccId}
	SOL005_NBI -> NS_LCMGR : GET .../ns_lcm_op_occs/{nsLcmOpOccId}
	NS_LCMGR -> SOL005_NBI : 200 OK (NsLcmOpOcc:operationStatus=PROCESSING or COMPLETED)
	SOL005_NBI -> SO_NFVO_CLI
end

@enduml
  • Supports the SOL005-compliant Instantiate NS API 
    • Supports Instantiate NS request API: POST /api/nslcm/v1/ns_instances/{nsInstanceId}/instantiate (InstantiateNsRequest)
    • Supports responses 202 Accepted with an empty payload body
      • Returns a dummy 202 until the backend business logic is ready 
    • Supports NS Lifecycle Operation Occurrence Notification
      • Use 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}
      • Supports the Sends nsLcmOperationOccurrenceNotifiation (start, result) notification operation until the result status becomes COMPLETED
    • Optionally, Instantiate NS operations uses the GET individual NS LCM operation occurrence request and response
    • Error handling: if the operation is failed, error information is provided in the notification message


  • Post conditions: the NS Instance is as the INSTANTIATED state
Yes

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



Terminate NS NBI
  • Precondition: NS instance is INSTANTIATED state
  • SOL007 NS packages are stored in ETSI Catalog Manager.
  • the Cli-based SO NFVO Client is ready to send the SOL005-compliant Terminate NS request
  • The SO-NFVO (so-etsi-nfvo) pod is ready
PlantUML Macro
typedot
@startuml

participant SO_NFVO_CLI
participant SOL005_NBI
participant NS_LCMGR

autonumber 

    SO_NFVO_CLI -> SOL005_NBI : Terminate NS (InstantiateNsRequest)
    SOL005_NBI -> NS_LCMGR : Terminate NS (InstantiateNsRequest)
    NS_LCMGR --> NS_LCMGR : Terminate NS Lifecycle Operation Occurrence resource
    NS_LCMGR -> SOL005_NBI : 202 Accepted()
    SOL005_NBI -> SO_NFVO_CLI : 202 Accepted

    NS_LCMGR -> SOL005_NBI : Send NsLcmOperationOccurrenceNotification(start)
    SOL005_NBI -> SO_NFVO_CLI :  Send NsLcmOperationOccurrenceNotification(start)
	NS_LCMGR --> NS_LCMGR : Performs Instantiate NS operations
    NS_LCMGR -> SOL005_NBI : Send NsLcmOperationOccurrenceNotification(result)
    SOL005_NBI -> SO_NFVO_CLI :  Send NsLcmOperationOccurrenceNotification(result)
opt GET individual NS LCM operation occurrence
	SO_NFVO_CLI -> SOL005_NBI : GET .../ns_lcm_op_occs/{nsLcmOpOccId}
	SOL005_NBI -> NS_LCMGR : GET .../ns_lcm_op_occs/{nsLcmOpOccId}
	NS_LCMGR -> SOL005_NBI : 200 OK (NsLcmOpOcc:operationStatus=PROCESSING or COMPLETED)
	SOL005_NBI -> SO_NFVO_CLI
end

@enduml
  • Supports the SOL005-compliant Terminate NS API
    • Supports Terminate NS request API: POST /api/nslcm/v1/ns_instances/{nsInstanceId}/terminate (TerminateNsRequest)
    • Supports responses 202 Accepted with an empty payload body
      • Returns a dummy 202 until the backend business logic is ready 
      • Use 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}
    • Supports the Sends nsLcmOperationOccurrenceNotifiation with nsLcmOpOccId, notificationStatus (start, result) until the result status becomes COMPLETED 
    • Optionally, Terminate NS operations uses the GET individual NS LCM operation occurrence request and response
  • Error handling: if the operation is failed, error information is provided in the notification message


  • Post conditions: the NS Instance is set as the TERMINATED state
Yes

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



Delete NS NBI
  • Precondition: NS instance in NOT_INSTANTIATED state
  • SOL007 NS packages are stored in ETSI Catalog Manager.
  • the Cli-based SO NFVO Client is ready to send the SOL005-compliant Create NS request
  • The SO-NFVO (so-etsi-nfvo) pod is ready
PlantUML Macro
typedot
@startuml

participant SO_NFVO_CLI
participant SOL005_NBI
participant NS_LCMGR

autonumber 

    SO_NFVO_CLI -> SOL005_NBI : Delete NS (DeleteNSRequest)
    SOL005_NBI -> NS_LCMGR : Delete NS (DeleteNSRequest)
    NS_LCMGR --> NS_LCMGR : Delete NS (DeleteNSRequest)
    NS_LCMGR -> SOL005_NBI : 204 No Content
    SOL005_NBI -> SO_NFVO_CLI : 204 No Content

Opt Notification will be handled by the separate user story
    NS_LCMGR -> SOL005_NBI : Send NsIdentifierDeletionNotification
    SOL005_NBI -> SO_NFVO_CLI : Send NsIdentifierDeletionNotification
end

@enduml
  • Supports the SOL005-compliant Delete NS API
    • Supports Delete NS request API: DELETE /api/nslcm/v1/ns_instances/{nsInstanceId}
    • Supports the Sends 204 No Content with an empty payload body
      • Returns a dummy 204 until the business logic is ready
    • Sends NsIdentifierDeletionNotification to the NFVO subscriber(s) (e.g., ONAP SO SOL005 Adapter)
      • Note: this will be handled by the separate user story: Sends NsIdentifierCreationNotification to the NFVO subscriber(s) (e.g., ONAP SO SOL005 Adapter)
  • Error handling: if the individual NS instance is not in NOT_INSTANTIATED state, it rejects the deletion request


  • Postconditions: the resource representing the NS instance has been removed from the list of NS instance resources
Yes

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



Get NS Operation Status NBI
  • Supports the SOL005-compliant GET NS LCM operation occurrences API 
    • Supports multiple NS LCM operation occurrences request API: GET / api/nslcm/v1/ns_lcm_op_occs
    • Supports responses for multiple NS LCM operation occurrences with 200 OK (NsLcmOpOcc[])
    • Supports individual NS LCM operation occurrence reqeust API: GET /api/nslcm/v1/ns_lcm_op_occs/{nsLcmOpOccId}
      • nsLcmOpOccId is an attribute in the NsLcmOperationOccurrenceNotification
    • Supports responses for the individual NS LCM operation occurrence with 200 OK (NsLcmOpOcc), where its opeationStatus=PROCESSING, COMPLETED)

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

Yes

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


<NFVO.R4> Support for SOL005 NBI Subscription APIs

Supports SOL005-compliant Restful Northbound Subscription and Notification APIs for SO/SOL005 Adapter

  • Supports the Subscription (POST ”/subscriptions”) API
  • Supports sending the Notification to SOL005 Adapter by using the SO SOL005 Adapter client-provided interface);
    • POST notification based on the callbackUrl from the subscription) 
Yes

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



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

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



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

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



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

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



Send NS Notifications (As a Client)
  • As a client, supports the 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)
  • Supports the 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

Supports NS LCM and Workflows in SO NFVO(P1)

  • Provides Builds the NS LCM Manager component in SO NFVO which manages to manage the following NS orchestration operations by leveraging NS workflows and business logic.
    • CreateNS
    • InstantiateNS
    • TerminateNS
    • DeleteNS 
  • Provides Builds default the following NS workflows and business logic with embedded Camunda Process instance(s) in SO NFVOProvides default NS workflows (part of SO NFVO)
    • 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)
  • Note: it has a dependency on SO dynamic BPMN. If SO dynamic BPMN is not supported in Guilin, the NS LCM manager will embed Camunda instance with the default NS workflows and business logic.
  • 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 NS RIM Manager for Granting and other VIM resource management
  • Invokes Catalog DB Adapter (access to ETSI Catalog Manager)
  • Invokes NS Inventory Adapter (access to AAI)
  • Invokes MultiCloud Adapter (for VLs)
  • Invokes Notification Manager (not for Guilin)
  • Invoke Notification Adapter (not for Guilin)
  • Invokes Configuration Manager (not for Guilin)
  • Invokes Policy Adapter (not for Guilin)
  • Invokes OOF Adapter (not for Guilin)
  • Invokes FM/PM Event Adapter (not for Guilin)
  • Invoke K8S Adapter (not for Guilin)
  • NS workflows and business will be packaged as a war and deployed on Camunda engine.
    • see the user story "Package and deploy NS LCM Workflows with business logic"
  • NS Workflows Invoke Camunda 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

  • when ONAP Dynamic BPMN is available, follow the "Package and deploy NS LCM Workflows with business logic" use case.
Yes

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




Create NS 

Supports the Create NS backend operations and workflows which do the following sequence:

<Create NS: note: the following workflow is a template, and it can be enhanced as needed.>

Image Added

  • Supports SOL005-compliant CreateNSRequest request and parameters
    • For AAI, supports global_customer_id and service_type as part of HTTP header
      • This is not SOL005 standards, but for AAI, these parameters would be necessary.
      • Note: if there is an alternative way, please propose.
  • Supports getting NS Package from ETSI Catalog Manager
    • Query
Create NS 

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

<Create NS>

Image Removed

  • 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 Supports NSD Validation check:
    • check if the NSD package exists in the ETSI Catalog Manager DB; otherwise generates errors
    Check if
  • Supports check of an existing NS Instance (with the ns_name as the key) exists in the NS Instance DB (NFVO_NSINST DB table)
    • If an existing NS instance is found, it is an error condition. Returns a proper error.
    • else 
      • Creates NS Instance in the
    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)
      • Creates a unique ns instance id (uuid)
      • Stores NS instance attribute data into the NS Instance DB.
        • e.g.,
      store
        • ns_instance_id, ns_name, ns_package_id, nsd_id, nsd_invariant_id, description, lastuptime, global_customer_id, service_type
        • Adds additional attributes as needed
  • Create an NS instance in AAI: store
    • Stores an NS instance
    data
    • to the AAI Service Instance with required attributes as follows.
      • Note: shares the AAI Service Instance with the NetworkService type and role.
      • service-instance-id = ns_inst_id
      • service-instance-name = ns-name
      • service-type = SERVICE_TYPE (NetworkService)
      • service-role = SERVICE_ROLE (NetworkService)
  • get nsInstance For the response, gets the nsInstance data from GetNSInfoService
    • collect Collects only the NS related mandatory information, not VnfInstance VnfInstance, VlInstance, or else
    • Note: CreateVNF and InstantiateVNF happen during the InstantiateNS InstantiateNS, not part of Create NS
  • Supports return of return 201 Created with the NsInstance (with NS related mandatory information)
  • Send NsIdentifierCreationNotification
    • Note: this will be handeld by the separate subscription and notification user stories.


Yes

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



Instantiate NS

NS LCM invokes Supports the Instantiate NS backend operations and workflows which do the following sequence:

<Instantiate NS> NS

LCM Mgr

: note: the following workflow is a template, and it can be enhanced as needed.>

Image Added


  • Supports SOL005-compliant InstantiateNSRequest request and parameters
  • Creates BPMN workflows and business logic for the following Instantiate NS operations
    • Create a Job Id
      • Updates NS_Instance Status to INSTANTIATING to the NFVO NS Instance database table
      • Handles input parameters from the InstantiateNsRequest
        • additionalParamsForNs
        • additionalParamsForVnf
        • pseudo logic:
          • 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
          • get job id and occ id from the NS LCM Mgr
      • Gets VNF VIM from the location_constraints
      • Gets NSD from ETSI Catalog Manager and parses NSD (by using either SDC parser or ETSI Catalog Manager parser)
      • If ETSI Catalog Manage parser is used
  • 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
    • Image Removedcreate an occ id for the ns instance id
    • return 202 Accepted with occ id
  • 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
    • get job id and occ id from the NS LCM Mgr
  • 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)
    • for NSD parsing
      • , use the following ETSI Catalog Manager API:

curl -X POST /api/parser/v1/parsernsd' \

-H 'Content-Type: application/json' \

--data-raw '{

    "csarId": "csarid",

    "packageType": "ns",

    "inputs": "[]"

}'

  • Update Updates NFVO_INST db to modify nsd model (dst_plan)
    • Gets VNFs from the NSD
    • For each VNF, invokes the SOL003 Adapter with SOL003-compliant requests
        • SOL003 Adapter gets
    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
        • SOL003 Adapter selects VNFM by leveraging AAI ESR
        • Follow the SOL003 Adapter process sequences
        • For Granting VNF, provides VNF granting based on the existing SOL003 Adapter.
    • Supports VirtualLink connections between VNFs
      • Supports createVLs (call MultiCloud through MultiCloud Adapter)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
    • Updates NFVO_NSINST db table: 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
  • Create BPMN workflows for Instantiate NS
    • Sets job status = NS Instantiate ends
    • Updates NsLcmOpOCC to COMPLETED
    • Sends nsLcmOperationOccurrenceNotification
      • Note: this notification will be handled by a separate notification and subscription user story.
    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)
      • createVLs (call MultiCloud through MultiCloud Adapter)
      • createVNFs (and Instantiate VNFs) (call SVNFMs through SOL003 Adapter)
        • SOL003 Adapter CreateVNF NBI handle both CreateVNF and InstantiateVNF
      • createSFC (Service Function Chain)
      • createPNFs (and Instantiate PNFs)


Yes

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



<NFVO.R3>

<NFVO.R8>

<NFVO.R9>

Terminate NS

NS LCM invokes Supports the Terminate NS backend operations and workflows which do the following sequence:

<Terminate NS>

Image Removed

NS: note: the following workflow is a template, and it can be enhanced as needed.>


Image Added
  • Supports SOL005-compliant TerminateNSRequest request and parameters
  • Creates BPMN workflows and business logic for the following Terminate NS operations
    • Supports input parameter handling
          • 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
        • Checks if the NS instance
        in NS_INST DB:
        • already exists
          • if there no matching
        ns_inst_id
          • NS instance from the NFVO_NSINT database table, consider there is nothing to terminate, and return
        Set
          • (not an error, but log that there is no matching NS instance)
        • Sets Job Status to Starting: set job status as "Starting terminate..."
        update the ns_inst_id row from cancel
        • Updates 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}
        • Cancels VNF list (through SOL003 Adapter)
            get vnf inst list array from
            • Gets a VNF instance list from the NFVO_NFINST
              • for each vnf inst
                • delete_vnf (nf_instid)
                  • POST /api/nslcm/v1/ns/terminateVnf/{instId} to the SOL003 Adapter
          cancel
          • Cancels VL list (through MultiCloud Adapter)
            • get VL Inst array
            • for each VL inst
              • DELETE /api/nslcm/v1/ns/vls/{instId}
          cancel
          • Cancels PNF list (TBD)
            • get pnf inst array
            • for each pnf inst 
              • DELETE /api/nslcm/v1/pnfs/{instId}
          modify the ns_inst_id row state from
          • Modifies the NFVO_NSINST database table
          modify NFVO_NSINST status
          • , status = NOT_INSTANTIATED
          set
          • Sets job status = NS terminate ends
          Update
          • Updates NsLcmOpOCC to COMPLETED
          • Send nsLcmOperationOccurrenceNotification
            • Note: this notification will be handled by a separate notification and subscription user story.



    Yes

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


    <NFVO.R3>


    Delete NS

    NS LCM invokes Supports the Delete NS backend operations and workflows which do the following sequence:

    <Delete NS>

    Image Removed

    NS: note: the following workflow is a template, and it can be enhanced as needed.>

    Image Added

    • Supports SOL005-compliant DeleteNS operation with nsInstanceId
    • Creates BPMN workflows and business logic for the following Delete NS operations
      • Supports input parameter handling
        • Initialize Parameters: get ns_inst_id
      delete
      • Deletes ns instance in AAI
          get
          • Gets ns_instances from NFVO_NSINST database table
          • if there are ns_instances, 
              query
              • Queries AAI for global_customer_id, service_type, ns_inst_id
              invoke
              • Invokes delete_ns_aai with global_customer_id, service_type, ns_inst_id, resource_version
                  formulate
                  • Formulates the resource url with parameters
                  • Invoke AAI Rest API: call_aaI (resource, "DELETE")
            delete
            • Deletes ns_inst_id row from the NFVO_NSINST database table
            delete
            • Deletes ns_inst_id row from the t_lcm_inputparam_mapping database table
            delete
            • Deletes ns_inst_id row from the t_lcm_defPackage_mapping database table
            delete
            • Deletes ns_inst_id row from the t_lcm_servicebaseinfo database table
            return
            • Returns 204 No Content
            • Send NsIdentifierDeletionNotification
              • Note: this notification will be handled by a separate notification and subscription user story.


    Yes

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



    Get NS Operation Status

    NS LCM invokes Supports the Get NS Operation Status operation and workflows which do the following sequence:

    <Get NS Operation Status: note: the following workflow is a template, and it can be enhanced as needed.>

    • Supports SOL005-compliant Get NS Operation Status operation
    • Supports input parameters handling:
      • Initialize Parameters: set lcm_op_occ_id, parameter
    • if the nsLcmOpOccId pareameter is presentexists
      • Query Queries NSLCMOPOCCS DB for the nsLcmOpOccId
      • return Returns NsLcmOpOcc
    • else
      • Query NSLCMOPOCCS Queries NSLCMOPOCCS DB for all
      • return Returns NsLcmOpOcc[]
    Yes

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



    Create NS Subscription

    NS LCM invokes Supports the Create NS Subscription operation and workflows which do the following sequence:

    <Create NS Subscription: note: the following workflow is a template, and it can be enhanced as needed.>


    • Supports SOL005-compliant Create NS Subscription operation
    • Supports input parameters handling:
      • 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
    NS LCM invokes

    Supports the Get NS Subscription operation and workflows which do the following sequence:

    <Get NS Subscription: note: the following workflow is a template, and it can be enhanced as needed.>

    • Supports SOL005-compliant Get NS Subscription operation
    • Supports input parameters handling:
      • Initialize Parameter: set subscription_id, params
    • if there is no param, 
      • query Queries NFVO_SUBSCRIPTION DB for all
      • return Returns LccSubscription[]
    • else if there is param, subscriptionId,
      • query Queries NFVO_SUBSCRIPTION DB for the subscriptionId
      • return Returns LccSubscription


    Yes

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



    Delete NS Subscription

    NS LCM invokes Supports the Delete NS Subscription operation and workflows which do the following sequence:

    <Delete NS Subscription: note: the following workflow is a template, and it can be enhanced as needed.>

    • Supports SOL005-compliant Delete NS Subscription operation
    • Supports input parameters handling:
      • Initialize Parameters: set subscriptonId
    • Delete Deletes 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

    Supports the Send NS Notification operation and workflows which do the following sequence:

    <Send NS Notification: note: the following workflow is a template, and it can be enhanced as needed.>

    Image Added

    NS LCM sends notifications to SOL005 NBI Handler as the following:

    Image Removed

    • Supports SOL005-compliant Send NS Notification operation
    • Supports input parameters handling:
          • Initialize Parameter:
            • query NFVO_SUBSCRIPTION DB for the given key
            • get the callback URI from the return subscription 
        • Formulate Formulates 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 

      Supports the Create VLs operation and workflows which do the following sequence:

      • Note: Create VLs operations are called as part of the Instantiate NS.
      Creates NS invokes Create VLs
      • Supports SOL005-compliant Create VLs operation
        • Supports input parameters handling:
      • Saves VL to
          • Initializes Parameters: set VL data
        • Creates VL to VIM through the MultiCloud Adapter
      • Creates VL to RIM Manager 
        • Saves VL to NFVO_VLINST database
        Create Network
        • Creates Network AAI
      • Yes

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

      2886



      Support for Delete VLs

      Supports the Delete VLs operation and workflows which do the following sequence:

      • Note: Delete VLs operations are called as part of the Delete NS.
      • Supports SOL005-compliant Delete VLs operation
        • Gets

      Deletes NS invokes Delete VLs

      • gets
        • VL info from the NFVO_VLINST DB for the vl_inst_id
        gets
        • Gets ns_inst_id from the VL info ownerid
        gets
        • Gets vim_id from the VL info vimid
        gets
        • Gets subnet_id_list from the VL info relatedsubnetworkid
        gets
        • Gets network_id
        invokes invokes
        • Invokes delete_vl_from_vim (vim_id, subnetwork_id_list, network_id) thru the MultiCloud Adapter
      • invokes delete_vl_from_RIM mgr()
        • Invokes delete_network_and_subnet_in_aai()
          • delete_network_aai
        invokes
        • 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<NFVO.R6>

      Supports the Get VLs operation and workflows which do the following sequence:

      • Note: Get VLs operations are called as part of the Instantiate and Delete NS.


      • Supports SOL005-compliant Get VLs operation
        • Queries VL info for the given vl_inst_id
        queries
        • Queries NFVO_VLINST DB for the vl_inst_id
        return
        • Returns a record for the vl_inst_id


      Yes

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



      Support for granting VNF (non OOF-based one)

      Support for Supports the granting VNF (non OOF-based one) operation and workflows which do the following sequence:

      • When SOL003 Adapter requests for VNF granting, it provides granting decisions
      • Migrate the current SOL003 Adapter granting logic to here.
      Yes

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








      Package and deploy NS LCM Workflows with business logic

      <NFVO.R3>


      When ONAP SO support Dynamic BPMN..., package and deploy NS LCM workflows with business logic as a WAR file.

      • Packages and deploys Package and deploy NS LCM workflows with business logic for NS LCM as a WAR file
        • contains default NS LCM workflows and business logic
        • deploys the WAR file before or while ONAP SO is running
      • This feature tests ONAP SO custom Allows custom NS workflows deployment (Hot deployment) for NS 
        • 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 Infra Management  (RIM) Manager (P1 partial)

      <NFVO.R5>


      • 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
      No

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



      Support for OOF-based Granting 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
      No

      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
      No

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


      Support for NS Catalog DB Adapter (P1) <NFVO.R3>
      • 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 (could be updated for v2.7.1):


      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 (could be updated for v2.7.1):

      View file
      nameetsicatalog.swagger.notification.json
      height250


      Yes

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


      Support for NS Inventory Adapter (P1) <NFVO.R3>
      • 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)
      Yes

      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 Adapter (P2)
      • Provides APPC and or CDS access
      • Refactoring of the current APPC and CDS connection
      No

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


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

      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
      No

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


      Supports for Notification Manager (P2)
      • Provides general-purpose notification service for events from:
        • NS LCM
        • FM & PM
        • VNF LCM
      • Delivers notifications to external components through SOL005 NBI
      No

      Support for FM/PM Event Adapter (P3)
      • Provides access to DCAE
      No

      Support for K8S client (P3)
      • Provides access to K8S
      • When we support CNF, it will be done, not for Guilin
      No

      Support for SOL005 Adapter to interface to/from ONAP SO NFVO (P1)

      SOL005 Adapter supports interfaces to/from ONAP SO NFVO

      • Using UUI / CLI, the E2E request will be sent to SO. Make SO handles the E2E request
        • from UUI, selects NFVO
        • If CLI is used, pass the selected NFVO in the request
      • Make/enhance SO Workflows to extract NSDs from the E2E
      • For each NSD, make SO to invoke the SOL005 Adapter
      • SOL005 Adapter sends SOL005 requests to the ONAP SO NFVO, as one of the choices (SO NFVO, VFC, External NFVO)
        • Chooses the SO NFVO based on the selected NFVO in the request 
        • SOL005 Adapter sends CRUD SOL005-compliant NS requests which include multiple VNFs and VLs.
      • 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


      Note: assign to Verizon

      Yes

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














      ...