Table of Contents
This proposal conforms to the following ETSI v2.7.1 specifications.
Resource commitment:
Requirement:
Rationale
Many operators have their own ETSI-compliant NFVOs, and there is a strong desire for us to have both ETSI- and ONAP-compliant NFVO. So, we propose the ONAP SO NFVO "platform", which is based on ONAP and leveraging modular and extensible plugin-based microservice API management, such as an enhanced MSB, Gravitee, Kong or Kubernetes. Once we build this NFVO platform in ONAP, operators including us can focus on the proprietary development of truly differentiating value-added capabilities on top of the NFVO platform. We believe this approach provides cost saving over implementation of proprietary code, both for initial development, ongoing standardization support and enhancements.
Note: VFC would be still a valid NFVO reference implementation. And, we want to have this NFVO platform which provides modular and extensible capabilities.
Benefits
The following diagram depicts ONAP SO hierarchical orchestration architecture.
The following diagram depicts the NFVO component architecture
Note:
The following diagram diagram depicts ONAP SO NFVO Component for Guilin.
The following diagrams depict a deployment view of ONAP SO NFVO. There are Plan A and B. The Plan B provides a simpler deployment option and will support the NS Workflow BPMNs migration to the Stand-Alone shared Camunda engine (when ONAP SO support custom Workflow deployment).
In the Guilin, SO NFVO will consist of the following PODs:
TBD
The SOL003 Adapter registers itself in the OOM installation
[oom.git] / kubernetes / so / charts / so-vnfm-adapter / templates / service.yaml
1 # Copyright © 2019 Nordix Foundation
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14 apiVersion: v1
15 kind: Service
16 metadata:
17 name: {{ include "common.servicename" . }}
18 namespace: {{ include "common.namespace" . }}
19 labels:
20 app: {{ include "common.name" . }}
21 chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
22 release: {{ include "common.release" . }}
23 heritage: {{ .Release.Service }}
24 annotations:
25 msb.onap.org/service-info: '[
26 {
27 "serviceName": "{{ include "common.servicename" . }}",
28 "version": "v1",
29 "url": "/so/vnfm-adapter/v1",
30 "protocol": "REST",
31 "port": "{{.Values.service.externalPort}}",
32 "visualRange":"1"
33 }
34 ]'
35 spec:
36 type: {{ .Values.service.type }}
37 ports:
38 {{if eq .Values.service.type "NodePort" -}}
39 - port: {{ .Values.service.internalPort }}
40 nodePort: {{ .Values.global.nodePortPrefixExt | default .Values.nodePortPrefixExt }}{{ .Values.service.nodePort }}
41 name: {{ .Values.service.portName }}
42 {{- else -}}
43 - port: {{ .Values.service.externalPort }}
44 targetPort: {{ .Values.service.internalPort }}
45 name: {{ .Values.service.portName }}
46 {{- end}}
47 selector:
48 app: {{ include "common.name" . }}
49 release: {{ include "common.release" . }}
Also, it registers itself with MSB.
metadata:
name: {{ include "common.servicename" . }}
namespace: {{ include "common.namespace" . }}
labels:
app: {{ include "common.name" . }}
chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
release: {{ include "common.release" . }}
heritage: {{ .Release.Service }}
annotations:
{
"serviceName": "{{ include "common.servicename" . }}",
"version": "v1",
"url": "/so/vnfm-adapter/v1",
"protocol": "REST",
"port": "{{.Values.service.externalPort}}",
"visualRange":"1"
}
]'
The following diagram depicts component interfaces.
Note: the blue lines represent interfaces within SO NFVO, and the black lines represent NFVO component interfaces with other ONAP components.
ONAP Architecture Subcommittee approved this architecture on June 16th 2020.
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.
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.
Note:
For the ONAP SO NFVO, we plan to build:
1) the NFVO platform foundation,
2) SOL005 NBI (based on the forge.etsi.org SOL005 swagger files; we believe it is easy to upgrade for ETSI specification changes),
3) NS LCM Manager leveraging Camunda BPMN with custom workflows support (in the future, possibly design workflows from SDC and associate them with NS models – model-driven),
4) leveraging VFC NS Instance DB microservice and NS LCM business logic, and
5) CNF support hook. Since ONAP SO already has the SOL003 Adapter, for our project, at this time we don’t need VFC gVNFM and VNFM adapting mechanism.
P1: Phase 1 (for Guilin)
P2: Phase 2 (post Guilin)
P3: Phase 3 (future release)
Requirement # | Requirement | Component | Phase |
---|---|---|---|
NFVO.R1 | Provides a NFVO function Microservice plugin framework for hosting NFVO function components by configuration. 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. Note: the engine choice is under discussion
| Microservice Plugin Framework (configuration) | P1 |
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
| SOL005 NBI | P1 |
NFVO.R3 | Supports the ETSI-compliant NS LCM. In Guilin, the following operations will be supported
| NS LCM | P1 |
NFVO.R4 | Sends SOL005-compliant NS LCM notifications to its subscriber, such as ONAP SO or SOL005-compliant clients
| SOL005 NBI | P1 |
NFVO.R5 | Manages (as a client) virtualized resources via interfaces (Or-Vi) exposed by the VIM
| NS RIM Manager | P1 |
NFVO.R6 | Supports Virtual Links and VNF-FG - NS LCM
| NS LCM | P1 |
NFVO.R7 | Manages (as a client) virtualized resource management interfaces (SOL003) thru the existing SOL003 Adapter
| NS LCM, SOL003 Adapter | P1 |
NFVO.R8 | Supports VNF Granting interfaces (SOL003) to the SOL003 Adapter
| NS LCM, NS RIM Manager, SOL003 Adapter | P1 |
NFVO.R9 | Supports VNF lifecycle management (LCM) notifications (SOL003) to the SOL003 Adapter
| NS LCM, SOL003 Adapter | P1 |
NFVO.R10 | Interfaces with ETSI Catalog Manager for SOL004 VNF/PNF and SOL007 NS packages
| NS LCM | P1 |
NFVO.R11 | Supports package management notification interfaces to ETSI Catalog Manager
| NS LCM | |
NFVO.R12 | Supports Communication Security, conforming SOL005 specification
| NS LCM, SOL005 NBI | P1 |
Requirement # | Requirement | Component | Phase |
---|---|---|---|
SOL005.A.R1 | Sends SOL005 requests to the ONAP SO NFVO, as one of the choices (SO NFVO, VFC, External NFVO) | SOL005 Adapter | P1 |
SOL005.A.R2 | Subscribes to ONAP SO NFVO for notifications
| SOL003 Adapter | P1 |
SOL005.A.R3 | Provides notification endpoint(s) to receive notifications
| SOL003 Adapter | P1 |
Requirement # | Requirement | Component | Phase |
---|---|---|---|
SOL003.A.R1 | SOL003 Adapter will be invoked by SO NFVO | SOL003 Adapter, NS LCM | P1 |
Note:
|
Requirement # | Requirement | Component | Phase |
---|---|---|---|
Note:
|
Requirement # | Requirement | Component | Phase |
---|---|---|---|
ETSI.CATALOG.R1 | ETSI Catalog Manager supports ETSI v.2.7.1 specification
| ETSI Catalog Manager | P1 |
The following features are out of scope from Guilin:
Container Image Management (P2)
Virtualized Resources Capacity Management (P2)
Virtualized Resources Change Management (P2)
Virtualized Resource Quota Management (P2)
Virtualized Resource Fault Management (P2)
Epic | User Story | Task | Description | In Guilin? | JIRA | Size |
---|---|---|---|---|---|---|
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 | ||||
Support for NFVO Microservice Plugin Framework (P1) <NFVO.R1> | Provides a NFVO function Microservice plugin framework for hosting NFVO function components by configuration 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. Note: the engine choice is under discussion
| Yes | ||||
<requirements for each SO-NFVO Microservice>
| Support for NFVO Service Registration | Supports NFVO Micro-Service Registration for plugging in microservices
| Yes | |||
<requirements for finding SO-NFVO sub-microservices>
| Support for NFVO Service Discovery | Supports NFVO Micro-Service Discovery with version control
| Yes | |||
<requirements for communication between SO-NFVO sub-microservices>
| Support for NFVO Inter-Service Communication | Supports for NFVO Inter-Service Communication
| Yes | |||
Support for SOL005 NBI API Handler <NFVO.R2> | Provides SOL005-compliant Restful Northbound APIs for SO/SOL005 Adapter (P1)
| Yes | ||||
Create NS NBI |
| Yes | ||||
Instantiate NS NBI |
| Yes | ||||
Terminate NS NBI |
| Yes | ||||
Delete NS NBI |
| Yes | ||||
Get NS Operation Status NBI |
Note: Instantiate NS and Terminate NS use the individual NS LCM operation occurrence | Yes | ||||
<NFVO.R4> Support for SOL005 NBI Subscription APIs | Provides SOL005-compliant Restful Northbound Subscription and Notification APIs for SO/SOL005 Adapter
| Yes | ||||
Create NS Subscription NBI |
| Yes | ||||
Get NS Subscription NBI |
| Yes | ||||
Delete NS Subscription NBI |
| Yes | ||||
Send NS Notifications (As a Client) |
| Yes | ||||
Supports for NS LCM and Workflows (P1) <NFVO.R3> | Support for NS LCM and Workflows (P1)
| Yes | ||||
<NFVO.R3> | Create NS | NS LCM invokes the Create NS workflows which do the following: <Create NS>
| Yes | |||
<NFVO.R3> <NFVO.R8> <NFVO.R9> | Instantiate NS | NS LCM invokes the Instantiate NS workflows which do the following: <Instantiate NS>
curl -X POST /api/parser/v1/parsernsd' \ -H 'Content-Type: application/json' \ --data-raw '{ "csarId": "csarid", "packageType": "ns", "inputs": "[]" }'
| Yes | |||
<NFVO.R3> <NFVO.R8> <NFVO.R9> | Terminate NS | NS LCM invokes the Terminate NS workflows which do the following: <Terminate NS>
| Yes | |||
<NFVO.R3> | Delete NS | NS LCM invokes the Delete NS workflows which do the following: <Delete NS>
| Yes | |||
Get NS Operation Status | NS LCM invokes the Get NS Operation Status workflows which do the following:
| Yes | ||||
Create NS Subscription | NS LCM invokes the Create NS Subscription workflows which do the following:
| Yes | ||||
Get NS Subscription | NS LCM invokes the Get NS Subscription workflows which do the following:
| Yes | ||||
Delete NS Subscription | NS LCM invokes the Delete NS Subscription workflows which do the following:
| Yes | ||||
Send NS Notifications | NS LCM sends notifications to SOL005 NBI Handler as the following:
| Yes | ||||
<NFVO.R6> | Support for Create VLs | Creates NS invokes Create VLs
| Yes | |||
<NFVO.R6> | Support for Delete VLs | Deletes NS invokes Delete VLs
| Yes | |||
<NFVO.R6> | Support for Get VLs | Queries VL info for the given vl_inst_id
| Yes | |||
Support for granting VNF (non OOF-based one) | Support for granting VNF (non OOF-based one)
| Yes | ||||
Package and deploy NS LCM Workflows with business logic <NFVO.R3> | When ONAP SO support Dynamic BPMN...
| Yes | ||||
Package and deploy default NS LCM workflows with business logic |
| Yes | ||||
Support for UI and REST interfaces for custom workflow war deployment |
| Yes | ||||
Support for NS Resource Infra Management (RIM) Manager (P1 partial) <NFVO.R5> |
| No | ||||
Support for OOF-based Granting VNF |
| No | ||||
Support for Software Image Management |
| No | ||||
Support for NS Catalog DB Adapter (P1) <NFVO.R3> |
| Yes | ||||
Support for queries for VNF/PNF/NS package management |
| Yes | ||||
Support for notification endpoint for ETSI Catalog Manager notification |
| Yes | ||||
Support for NS Inventory Adapter (P1) <NFVO.R3> |
| Yes | ||||
Support for NS AAI APIs (CRUD) |
| Yes | ||||
Support for Network AAI APIs (CRUD) |
| Yes | ||||
Support for VNF AAI APIs (CRUD) |
| Yes | ||||
Support for Vserver AAI APIs (CRUD) |
| Yes | ||||
Support for Customer AAI APIs (CRUD) |
| |||||
Support for NS LCM Database Management |
| Yes | ||||
Create NS LCM Database tables and provide CRUD | creates NS LCM Database tables and provides CRUD
id = models.CharField(db_column='ID', primary_key=True, max_length=200)
nfinstid = models.CharField(db_column='NFINSTID', max_length=200, primary_key=True)
vlinstanceid = models.CharField(db_column='VLINSTANCEID', max_length=255, primary_key=True)
jobid = models.CharField(db_column='JOBID', primary_key=True, max_length=255)
request_id = models.CharField(db_column='REQUESTID', max_length=255)
subscription_id = models.CharField(db_column='SUBSCRIPTIONID', max_length=255, primary_key=True)
id = models.CharField(db_column='ID', max_length=255, primary_key=True)
pnfId = models.CharField(db_column='PNFID', primary_key=True, max_length=255)
service_id = models.CharField(db_column='serviceId', max_length=255, primary_key=True)
service_id = models.CharField(db_column='serviceId', max_length=255)
service_id = models.CharField(db_column='serviceId', max_length=255, primary_key=True) | Yes | ||||
Support for MultiCloud Adapter (P1) |
| Yes | ||||
Support for Create Network to VIM API |
| Yes | ||||
Support for Delete Network (VL) from VIM API |
| Yes | ||||
Support for Configuration Adapter (P2) |
| No | ||||
Support for Policy Adapter (P2) |
| No | ||||
Support for OOF Adapter (P1) |
| No | ||||
Supports for Notification Manager (P2) |
| No | ||||
Support for FM/PM Event Adapter (P3) |
| No | ||||
Support for K8S client (P3) |
| No | ||||
Support for SOL005 Adapter to interface to/from ONAP SO NFVO (P1) | SOL005 Adapter supports interfaces to/from ONAP SO NFVO
Note: assign to Verizon | Yes | ||||
The following SOL005-based Operation sequence flow depicts the SO NFVO invocation architecture.
The following diagram depicts the Create/Instantiate NS.
@startuml participant SO participant SOL005_Adapter participant SOL005_NBI participant NS_LCMGR participant RIM_Mgr participant MultiCloud_Adapter participant OOF participant Catalog_DB_Adapter participant ETSI_Catalog_Mgr participant NFVO_NS_DB participant Inventory_DB_Adapter participant AAI participant SOL003_Adapter participant VIM participant VNFM autonumber group Create NS SO -> SOL005_Adapter : Create NS SOL005_Adapter -> SOL005_NBI : Create NS SOL005_NBI -> NS_LCMGR : Create NS NS_LCMGR -> NFVO_NS_DB : Create NS instance in NS INST DB NFVO_NS_DB -> NS_LCMGR : Response for Create NS instance record NS_LCMGR -> Inventory_DB_Adapter : Create NS record Inventory_DB_Adapter -> AAI : Create NS record AAI --> AAI : Create NS record AAI -> Inventory_DB_Adapter : Response for Create NS record Inventory_DB_Adapter -> NS_LCMGR: Response for Create NS record NS_LCMGR -> SOL005_NBI : Response for Create NS record SOL005_NBI -> SOL005_Adapter : Response with NS Instance Id SOL005_Adapter -> SO : Response with NsInstance\n(including NS Instance Id) NS_LCMGR -> SOL005_NBI : Send\nNsIdentifierCreationNotification SOL005_NBI -> SOL005_Adapter : Send\nNsIdentifierCreationNotification SOL005_Adapter -> SO : Send\nNsIdentifierCreationNotification end group Instantiate NS NS_LCMGR -> Catalog_DB_Adapter : Read NS descriptor Catalog_DB_Adapter -> ETSI_Catalog_Mgr : Read NS descriptor ETSI_Catalog_Mgr -> Catalog_DB_Adapter : Return NS descriptor Catalog_DB_Adapter -> NS_LCMGR : Return NS descriptor NS_LCMGR --> NS_LCMGR : Parse & Decompose NS descriptor NS_LCMGR --> NS_LCMGR : Instantiate NS NS_LCMGR --> NS_LCMGR : Instantiate VLs between VNFs NS_LCMGR -> MultiCloud_Adapter : Create Network MultiCloud_Adapter -> VIM : Create Network VIM -> MultiCloud_Adapter : Response for Create Network MultiCloud_Adapter -> NS_LCMGR : Response for Create Network NS_LCMGR -> Inventory_DB_Adapter : Create VL record Inventory_DB_Adapter -> AAI : Create VL record AAI --> AAI : Create VL record AAI -> Inventory_DB_Adapter : Response for Create VL record Inventory_DB_Adapter -> NS_LCMGR : Response for Create VL record NS_LCMGR -> RIM_Mgr : Request Homing Information\nfor Network Service RIM_Mgr -> OOF : Requests Homing Information\nfor Network Service OOF -> RIM_Mgr : Response with Homing Information\nfor Network Service RIM_Mgr --> RIM_Mgr : Persist Homing Information\nfor Network Service loop Go through each VNF NS_LCMGR -> SOL003_Adapter : Request for Instantiate VNF SOL003_Adapter -> VNFM : Request for Instantiate VNF VNFM -> SOL003_Adapter : Request Grant VNF resource SOL003_Adapter -> NS_LCMGR : Request Grant VNF resource NS_LCMGR -> RIM_Mgr : Request Homing Information RIM_Mgr -> NS_LCMGR : Return with Homing Information\nfor the VNF NS_LCMGR --> NS_LCMGR : Make a Grant decision NS_LCMGR -> SOL003_Adapter : Return with a Grant decision SOL003_Adapter -> VNFM: Return with a Grant decision VNFM --> VNFM : Instantiate VNF VNFM -> SOL003_Adapter : Notify the changes\nof VNF/VDUs/CPs SOL003_Adapter -> NS_LCMGR : Notify the changes\nof VNF/VUD/CPs end NS_LCMGR -> SOL005_NBI : Send\nnsLcmOperationOccurrenceNotification SOL005_NBI -> SOL005_Adapter : Send\nnsLcmOperationOccurrenceNotification SOL005_Adapter -> SO : Send\nnsLcmOperationOccurrenceNotification end @enduml |
createNetworkService()
Map<String, String> requestHeader = new HashMap<>();
requestHeader.put("GLOBALCUSTOMERID", segInput.getNsOperationKey().getGlobalSubscriberId());
requestHeader.put("SERVICETYPE", segInput.getNsOperationKey().getServiceType());
instantiateNetworkService()
Populate String reqBody ="""{
"nsServiceName":"${nsServiceName}",
"nsServiceDescription":"${nsServiceDescription}",
"nsOperationKey":${nsOperationKey},
"nsParameters":${nsParameters}
}"""
Send a request to vfcAdapter/SOL005 Adapter
Map<String, String> requestHeader = new HashMap<>();
requestHeader.put("GLOBALCUSTOMERID", segInput.getNsOperationKey().getGlobalSubscriberId());
requestHeader.put("SERVICETYPE", segInput.getNsOperationKey().getServiceType());
The following diagram depicts the Terminate / Delete NS.
@startuml participant SO participant SOL005_Adapter participant SOL005_NBI participant NS_LCMGR participant RIM_Mgr participant MultiCloud_Adapter participant OOF participant Catalog_DB_Adapter participant ETSI_Catalog_Mgr participant Inventory_DB_Adapter participant AAI participant SOL003_Adapter participant VIM participant VNFM autonumber group Terminate NS SO -> SOL005_Adapter : Terminate NS SOL005_Adapter -> SOL005_NBI : Terminate NS SOL005_NBI -> NS_LCMGR : Terminate NS NS_LCMGR -> Inventory_DB_Adapter : Query all instances related to NS Inventory_DB_Adapter -> AAI : Query all instances related to NS AAI -> Inventory_DB_Adapter : Return all instances for NS Inventory_DB_Adapter -> NS_LCMGR : Return all instances for NS NS_LCMGR --> NS_LCMGR : Start Delete NS instances NS_LCMGR -> RIM_Mgr : Request Homing Information\nfor Network Service RIM_Mgr -> OOF : Requests Homing Information\nfor Network Service OOF -> RIM_Mgr : Response with Homing Information\nfor Network Service RIM_Mgr --> RIM_Mgr : Persist Homing Information\nfor Network Service loop Go thru each VNF NS_LCMGR -> SOL003_Adapter : Delete VNF SOL003_Adapter -> VNFM : Delete VNF VNFM -> SOL003_Adapter : Request Grant resource for deletion SOL003_Adapter -> NS_LCMGR : Request Grant resource for deletion VNFM -> SOL003_Adapter : Request Grant VNF resource SOL003_Adapter -> NS_LCMGR : Request Grant VNF resource NS_LCMGR -> RIM_Mgr : Request Homing Information RIM_Mgr -> OOF : Request Homing Information OOF -> RIM_Mgr : Return with Homing Information\nfor the VNF RIM_Mgr -> NS_LCMGR : Return with Homing Information\nfor the VNF NS_LCMGR --> NS_LCMGR : Make a Grant decision NS_LCMGR -> SOL003_Adapter : Return with a Grant decision SOL003_Adapter -> VNFM: Return with a Grant decision VNFM --> VNFM : Delete Resources VNFM -> SOL003_Adapter : Notify changes of VNF/VDUs/CPs SOL003_Adapter -> NS_LCMGR : Notify changes of VNF/VDUs/CPs NS_LCMGR -> Inventory_DB_Adapter : Update records for Delete VNF/VDUs/CPs Inventory_DB_Adapter -> AAI : Update records for Delete VNF/VDUs/CPs AAI --> AAI : Update records for Delete VNF/VDUs/CPs AAI -> Inventory_DB_Adapter : Return with Delete VNF/VDUs/CPs Inventory_DB_Adapter -> NS_LCMGR : Return with Delete VNF/VDUs/CPs end NS_LCMGR -> MultiCloud_Adapter : Request for Delete VLs (if needed) MultiCloud_Adapter -> VIM : Request for Delete VLs VIM --> VIM : Delete VLs NS_LCMGR -> Inventory_DB_Adapter : Update records for Delete VLs Inventory_DB_Adapter -> AAI : Update records for Delete VLs AAI --> AAI : Update records for Delete VLs AAI -> Inventory_DB_Adapter : Return with Delete VLs Inventory_DB_Adapter -> NS_LCMGR : Return with Delete VLs NS_LCMGR -> SOL005_NBI : Send\nnsLcmOperationOccurrenceNotification SOL005_NBI -> SOL005_Adapter : Send\nnsLcmOperationOccurrenceNotification SOL005_Adapter -> SO : Send\nnsLcmOperationOccurrenceNotification end @enduml |
String nsOperationKey = """{
"globalSubscriberId":"${globalSubscriberId}",
"serviceType":"${serviceType}",
"serviceId":"${serviceId}",
"operationId":"${operationId}",
"nodeTemplateUUID":"${nodeTemplateUUID}"
}"""
deleteNetworkService()
Send a request to vfcAdapter/SOL005 Adapter
For the Create NS, the CreateNsRequest is sent to SO NFVO.
Also, the current SOL005 Adapter passes the following attributes through HTTP header. This is a workaround, not part of ETSI specification. Maybe, ETSI SOL005 specification needs to be enhanced to allow additional parameters?
For the Instantiate NS, the InstantiateNsRequest is sent to SO NFVO. As part of the InstantiateNsRequest, additionalParamsForNs is passed, but additionalParamsForVnf is NOT passed from the SOL005 Adapter to NFVO. According to ETSI SOL005 specification, multiple additionalParamsForVnf (data type: ParamsForVnf) can be passed. It seems that currently the additionalParams for VNF is constructed based on the vnf properties in NSD.
====================================================================================================================================================================================
The following diagram depicts the NFVO component architecture
Support NS Performance Management APIs (stretch goal)
Allows hot deployment of custom workflow packages while ONAP NFVO is running
Collects Homing information from OOF and provides the information to other NFVO components
Container Image Management (P2)
Virtualized Resources Capacity Management (P2)
Virtualized Resources Change Management (P2)
Virtualized Resource Quota Management (P2)
Virtualized Resource Fault Management (P2)
TBD
Descriptions | |
---|---|
Existing SO E2E Business Logic for VFC/SOL005 Adapter |
|
New ONAP SO NFVO Path |
|
Note: to analyze the following further (extracting NS-related operations)
ONAP SO | NFVO |
---|---|
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 Adapter |
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 Adapter |
The following diagram depicts the Create/Instantiate NS.
@startuml participant SO participant SOL005_Adapter participant SOL005_NBI participant NS_LCMGR participant RIM_Mgr participant MultiCloud_Adapter participant OOF participant Catalog_DB_Adapter participant ETSI_Catalog_Mgr participant Inventory_DB_Adapter participant AAI participant SOL003_Adapter participant VIM participant VNFM autonumber group Create NS SO -> SOL005_Adapter : Create NS SOL005_Adapter -> SOL005_NBI : Create NS SOL005_NBI -> NS_LCMGR : Create NS NS_LCMGR -> Inventory_DB_Adapter : Create NS record Inventory_DB_Adapter -> AAI : Create NS record AAI --> AAI : Create NS record AAI -> Inventory_DB_Adapter : Response for Create NS record Inventory_DB_Adapter -> NS_LCMGR: Response for Create NS record NS_LCMGR -> SOL005_NBI : Response for Create NS record SOL005_NBI -> SOL005_Adapter : Response with NS Instance Id SOL005_Adapter -> SO : Response with NsInstance\n(including NS Instance Id) NS_LCMGR -> SOL005_NBI : Send\nNsIdentifierCreationNotification SOL005_NBI -> SOL005_Adapter : Send\nNsIdentifierCreationNotification SOL005_Adapter -> SO : Send\nNsIdentifierCreationNotification end group Instantiate NS NS_LCMGR -> Catalog_DB_Adapter : Read NS descriptor Catalog_DB_Adapter -> ETSI_Catalog_Mgr : Read NS descriptor ETSI_Catalog_Mgr -> Catalog_DB_Adapter : Return NS descriptor Catalog_DB_Adapter -> NS_LCMGR : Return NS descriptor NS_LCMGR --> NS_LCMGR : Parse & Decompose NS descriptor NS_LCMGR --> NS_LCMGR : Instantiate NS NS_LCMGR --> NS_LCMGR : Instantiate VLs between VNFs NS_LCMGR -> MultiCloud_Adapter : Create Network MultiCloud_Adapter -> VIM : Create Network VIM -> MultiCloud_Adapter : Response for Create Network MultiCloud_Adapter -> NS_LCMGR : Response for Create Network NS_LCMGR -> Inventory_DB_Adapter : Create VL record Inventory_DB_Adapter -> AAI : Create VL record AAI --> AAI : Create VL record AAI -> Inventory_DB_Adapter : Response for Create VL record Inventory_DB_Adapter -> NS_LCMGR : Response for Create VL record NS_LCMGR -> RIM_Mgr : Request Homing Information\nfor Network Service RIM_Mgr -> OOF : Requests Homing Information\nfor Network Service OOF -> RIM_MGR : Response with Homing Information\nfor Network Service RIM_Mgr --> RIM_Mgr : Persist Homing Information\nfor Network Service loop Go through each VNF NS_LCMGR -> SOL003_Adapter : Request for Instantiate VNF SOL003_Adapter -> VNFM : Request for Instantiate VNF VNFM -> SOL003_Adapter : Request Grant VNF resource SOL003_Adapter -> NS_LCMGR : Request Grant VNF resource NS_LCMGR -> RIM_Mgr : Request Homing Information RIM_Mgr -> NS_LCMGR : Return with Homing Information\nfor the VNF NS_LCMGR --> NS_LCMGR : Make a Grant decision NS_LCMGR -> SOL003_Adapter : Return with a Grant decision SOL003_Adapter -> VNFM: Return with a Grant decision VNFM --> VNFM : Instantiate VNF VNFM -> SOL003_Adapter : Notify the changes\nof VNF/VDUs/CPs SOL003_Adapter -> NS_LCMGR : Notify the changes\nof VNF/VUD/CPs end NS_LCMGR -> SOL005_NBI : Send\nnsLcmOperationOccurrenceNotification SOL005_NBI -> SOL005_Adapter : Send\nnsLcmOperationOccurrenceNotification SOL005_Adapter -> SO : Send\nnsLcmOperationOccurrenceNotification end @enduml |
CreateNsRequest
NsInstance
VFC design
get nsdId, nsName and nsDescription, context (globalCustomerId, serivceType) parameters
Proposal
The following diagram depicts the Create NS procedure.
InstantiateRequest
201 Accepted
NsLcmOperationOccurrenceNotification (Start/Processing/Completed)
VFC Design
Proposal
The following diagram depicts the Instantiate NS.
The following diagram depicts the Terminate / Delete NS.
@startuml participant SO participant SOL005_Adapter participant SOL005_NBI participant NS_LCMGR participant RIM_Mgr participant MultiCloud_Adapter participant OOF participant Catalog_DB_Adapter participant ETSI_Catalog_Mgr participant Inventory_DB_Adapter participant AAI participant SOL003_Adapter participant VIM participant VNFM autonumber group Terminate NS SO -> SOL005_Adapter : Terminate NS SOL005_Adapter -> SOL005_NBI : Terminate NS SOL005_NBI -> NS_LCMGR : Terminate NS NS_LCMGR -> Inventory_DB_Adapter : Query all instances related to NS Inventory_DB_Adapter -> AAI : Query all instances related to NS AAI -> Inventory_DB_Adapter : Return all instances for NS Inventory_DB_Adapter -> NS_LCMGR : Return all instances for NS NS_LCMGR --> NS_LCMGR : Start Delete NS instances NS_LCMGR -> RIM_Mgr : Request Homing Information\nfor Network Service RIM_Mgr -> OOF : Requests Homing Information\nfor Network Service OOF -> RIM_Mgr : Response with Homing Information\nfor Network Service RIM_Mgr --> RIM_Mgr : Persist Homing Information\nfor Network Service loop Go thru each VNF NS_LCMGR -> SOL003_Adapter : Delete VNF SOL003_Adapter -> VNFM : Delete VNF VNFM -> SOL003_Adapter : Request Grant resource for deletion SOL003_Adapter -> NS_LCMGR : Request Grant resource for deletion VNFM -> SOL003_Adapter : Request Grant VNF resource SOL003_Adapter -> NS_LCMGR : Request Grant VNF resource NS_LCMGR -> RIM_Mgr : Request Homing Information RIM_Mgr -> OOF : Request Homing Information OOF -> RIM_Mgr : Return with Homing Information\nfor the VNF RIM_Mgr -> NS_LCMGR : Return with Homing Information\nfor the VNF NS_LCMGR --> NS_LCMGR : Make a Grant decision NS_LCMGR -> SOL003_Adapter : Return with a Grant decision SOL003_Adapter -> VNFM: Return with a Grant decision VNFM --> VNFM : Delete Resources VNFM -> SOL003_Adapter : Notify changes of VNF/VDUs/CPs SOL003_Adapter -> NS_LCMGR : Notify changes of VNF/VDUs/CPs NS_LCMGR -> Inventory_DB_Adapter : Update records for Delete VNF/VDUs/CPs Inventory_DB_Adapter -> AAI : Update records for Delete VNF/VDUs/CPs AAI --> AAI : Update records for Delete VNF/VDUs/CPs AAI -> Inventory_DB_Adapter : Return with Delete VNF/VDUs/CPs Inventory_DB_Adapter -> NS_LCMGR : Return with Delete VNF/VDUs/CPs end NS_LCMGR -> MultiCloud_Adapter : Request for Delete VLs (if needed) MultiCloud_Adapter -> VIM : Request for Delete VLs VIM --> VIM : Delete VLs NS_LCMGR -> Inventory_DB_Adapter : Update records for Delete VLs Inventory_DB_Adapter -> AAI : Update records for Delete VLs AAI --> AAI : Update records for Delete VLs AAI -> Inventory_DB_Adapter : Return with Delete VLs Inventory_DB_Adapter -> NS_LCMGR : Return with Delete VLs NS_LCMGR -> SOL005_NBI : Send\nnsLcmOperationOccurrenceNotification SOL005_NBI -> SOL005_Adapter : Send\nnsLcmOperationOccurrenceNotification SOL005_Adapter -> SO : Send\nnsLcmOperationOccurrenceNotification end @enduml |
TerminateNsRequest
201 Accepted
NsLcmOperationOccurrenceNotification (Start/Processing/Completed)
VFC Design
Proposal
The following diagram depicts the Terminate NS.
VFC_Design
Proposal
The following diagram depicts the Delete NS.
@startuml participant SO participant SOL005_Adapter participant SOL005_NBI participant NS_LCMGR autonumber group Create Subscription NS SO -> SOL005_Adapter : Create Subscription NS SOL005_Adapter -> SOL005_NBI : Create Subscription NS SOL005_NBI -> NS_LCMGR : Create Subscription NS NS_LCMGR --> NS_LCMGR : Check Subscription Filter NS_LCMGR -> NS_LCMGR : Test subscription\nnotification (callbackUrl) endpoint NS_LCMGR --> NS_LCMGR : Save Subscription to Database NS_LCMGR -> SOL005_NBI : Response with LccnSubscription end group Delete Subscription NS SO -> SOL005_Adapter : Delete Subscription NS SOL005_Adapter -> SOL005_NBI : Delete Subscription NS SOL005_NBI -> NS_LCMGR : Delete Subscription NS NS_LCMGR --> NS_LCMGR : Delete Subscription NS NS_LCMGR -> SOL005_NBI : Response with 204 No Content SOL005_NBI -> SOL005_Adapter : Response for Delete Subscription NS SOL005_Adapter -> SO : Response for Delete Subscription NS end @enduml |
The following table describes the Subscription filter request.
attribute name | data type | cardinality | description |
---|---|---|---|
nsdIds | Identifier | 0..N | If present, match NS instances that were created based on an NSD identified by one of the nsdId values listed in this attribute. See note 1. |
vnfdIds | Identifier | 0..N | If present, match NS instances that contain VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute. See note 1. |
pnfdIds | Identifier | 0..N | If present, match NS instances that contain PNFs that are represented by a PNFD identified by one of the pnfdId values listed in this attribute. See note 1. |
nsInstanceId | Identifier | 0..N | If present, match NS instances with an instance identifier listed in this attribute. See note 2. |
nsInstanceNames | String | 0..N | If present, match NS instances with an NS Instance Name listed in this attribute. See note 2. |
NOTE 1: The attributes "nsdIds", "vnfdIds" and "pnfdIds" are alternatives to reference to NS instances that are created based on certain NSDs, or contain VNF instances that are based on certain VNFDs, or contain PNFs that are based on certain PNFDs in a filter. They should not be used together in the same filter instance, but one alternative should be chosen. NOTE 2: The attributes "nsInstanceIds" and "nsInstanceNames" are alternatives to reference to particular NS Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen. |
VFC Design
Proposal
The following diagram depicts the Subscription NS.