Table of Contents | ||
---|---|---|
|
Introduction
The PNF Registration and Re-registration Notification is generated whenever the a CPE is plugged into the network either for the first time (registration) or whenever the CPE is plugged into a different interface of an access node in the network (re-registration).
Upon reception of the notification within ONAP by a DCAE collector, the notification is mapped into a VES event and placed on the DMaaP bus for processing by the DCAE/PRH uS.
BBS Flows Cross Reference
The PNF Registration notification is used within the following use case scenarios:
PNF Registration Flow
The PNF Registration Flow is documented here for the BBS use case.
PNF Re-registration Flow
Gliffy | ||||
---|---|---|---|---|
|
Figure 1. BBS PNF Registration and Re-registration Notification Flow Diagram
Here are the flow by steps (WIP):
10) Access SDN M&C reports the PNF registration event to DCAE/PRH
- This notification may be sent to the Restconf VES collector for translation and mapping into the PNF registration VES event as described here.
20) DCAE/PRH then processes the PNF registration event logic where PRH determines if the event is a registration or re-registration event.
- The determination if this event is a registration or registration is documented here.
- If the ONT/PNF is re-registered, a PNFUpdate PNF_UPDATE event with the additional fields from the VES registration VES event is produced by PRH onto DMAAP.
30) For the PNF re-registration, the BBS uS:
30.1) consumes PNFUpdateEvent PNF_UPDATE event from DMAAP,
30.2) looks up the service-instance-id by the pnf-name, checks PON UNI attachment point in VES message 'additionalFields' against PON UNI in service instance's Access Connectivity RFSthe attachment point in the PNF.
30.3) looks up a list of resources to be updated
30.4) triggers the Nomadic ONT policy
40) Updates the orchestration status of the CFS service instance in A&AI where an event is then emitted to indicates the resources of the service still need updated
50) SDNC API conducts the service resource re-provisioning upon the ONT location change. The PNF attachment point is updated upon successful provisioning.
60) Updates the orchestration status of the CFS service instance in A&AI where an event is then emitted to indicate the resources of the service have been updated
70) The PNF registration procedure continues from step 9 to completionNote: In this release steps 40-60 implement the Steps 9 to end of the PNF re-registration event.
DCAE
PNF Registration Event
The BBS Use uses the ONAP pnfRegisration event with additional fields to identify the Access Node UNI to which the CPE is attached.
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
This pnfRegistration Event definition can be found at link: https://wiki.onap.org/display/DW/5G+-+PNF+Plug+and+Play#id-5G-PNFPlugandPlay-STAGE3-PNFREGISTRATIONVESEVENT The field definitions use for the BBS Use case for ONT Registration: eventName: pnfRegistration_<vendorName>_cpe eventId: unique per CPE proxied – incremented as described sourceName: <PNF-name/PNF correlation ID>: Format string: <Manufacturer OUI>-<SerialNumber> or <Manufacturer OUI>-<Model>-<SerialNumber> reportingEntityName:<thirdparty-sdnc-id> from esr request additionalFields: attachmentPointattachment-point: Format: "<oltName>/<oltSlot>/<oltPort>" <x> denotes element accessIdremote-id: Format: string - This represents the Remote ID within the DHCP Option 82 (Optional) c-vlan: Format: int - This represents the Customer VLAN associated with the attachment point (Optional) s-vlan: Format: int - The represents the Service VLAN of network interface connected to the attachment point (Optional) |
PRH Extension
PNF Re-registration Detection
Refer to PNF Re-registration detection logic handled in 5G use case by extension of PRH micro-service.
PNF for ONT in A&AI
Refer to ONT/PNF definition in ONT modeling.
PNF
pnfUpdateunauthenticated.PNF_UPDATE Event
This event is the output of PRH active service detection and mS when it detects a PNF re-registration event. The event is consumed by the BBS MSmS.
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
Nomadic ONT Event/DCAE_CL_OUTPUT Event
This event triggers Policy engine to call SO API to modify the associated HSIA service.
DCAE_CL_OUTPUT Event
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
{ "closedLoopEventClientnf-role": "DCAE.BBS_mSInstancerole", "equip-type":"Equipment-Type-1", "equip-vendor":"Vendor", "policyVersionequip-model": "1.0.0.5E-model-1", "policyName"serial-number": "Nomadic_ONTSN1234", "policyScope"sw-version": "service=HSIAService,type=SampleType,closedLoopControlName=CL-NomadicONT-d925ed73-8231-4d02-9545-db4e101f88f8"SW-version-1", "target_type"correlationId": "VMPNF-correlation", "AAIadditionalFields": { "service-information.service-instance-id" "attachment-point": "serviceolt1-instance1-id-example1", "pnf.ontSN" "cvlan": "ontSN-example" //...what ever this is }, "closedLoopAlarmStart": 1484677482204798, "closedLoopEventStatus": "ONSET", "closedLoopControlName": "ControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88b1005", "svlan": "100", "remote-id": "some-remote-id" } } |
Nomadic ONT Event/DCAE_CL_OUTPUT Event
This event triggers Policy engine to call SO API to modify the associated HSIA service.
DCAE_CL_OUTPUT Event
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
{ "closedLoopEventClient": "DCAE.BBS_mSInstance", "versionpolicyVersion": "1.0.0.25", "targetpolicyName": "vserver.vserver-nameNomadic_ONT", "requestIDpolicyScope": "97964e10-686e-4790-8c45-bdfa61df770fservice=HSIAService,type=SampleType,closedLoopControlName=CL-NomadicONT-d925ed73-8231-4d02-9545-db4e101f88f8", "fromtarget_type": "DCAE" } |
The moving ONT associated (through pnfName) service ID is looked up in A&AI and enriched in the A&AI portion of the above DCAE_CL_OUTPUT Event which trigger the operational policy in the operational policy defined below.
Policy
There are two options to author and execute the Nomadic ONT policy - Apex PDP(Pdp-A) or Drools PDP(Pdp-D).
Apex Engine Triggering
Apex PDP engine is configured to consumes the Nomadic ONT event/DCAE-CL_OUTPUT event from DMAAP and call the SDNC Rest API to take resource re-provisioning actions in the original design in Dublin. Later on, a workaround approach is taken for the BBS MS to consume the pnfUpdate event produced by PRH and eventually calls SNDC API to proceed the service associated resource re-provisioning after certain A&AI query and update. Therefore, the policy engine configuration and policy definition becomes very simple for the time being. The only reason for now to keep a no action policy is for the completeness of the control loop so that to the BBS workflow it is actually an open loop so that a CL can be defined and managed by CLAMP through which DCAE micro-services, such as, Restconf Collector, VES Mapper, PRH as well as the BBS MS can be orchestrated centralized.
PDP-A Configuration (JSON)
Simplified Apex Configuration:
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{ "engineServiceParameters": { "name": "MyApexEngine", "version": "0.0.1", "id": 45, "instanceCount": 4, "deploymentPort": 12561, "policyModelFileName": "policy/ONAPvCPEPolicyModel.json", "engineParameters": { "executorParameters": { "JAVASCRIPT": { "parameterClassName": "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters" VM", "AAI": { "service-information.hsia-cfs-service-instance-id" : "service-instance-id-example", "attachmentPoint" : "olt1-1-1", "remoteId" : "some-remote-id", "cvlan" : "example cvlan-id", "svlan" : "example svlan-id" }, "closedLoopAlarmStart": 1484677482204798, "closedLoopEventStatus": "ONSET", "closedLoopControlName": "ControlLoop-NomadicONT-fd36-4843-a71a-a8c24c70c88b", "version": "1.0.2", "target": "vserver.vserver-name", "requestID": "97964e10-686e-4790-8c45-bdfa61df770f", "from": "DCAE" } |
A&AI Enrichment
The moving ONT associated (through pnfName) service ID is looked up in A&AI and enriched in the A&AI portion of the above DCAE_CL_OUTPUT Event which trigger the operational policy in the operational policy defined below.
Policy
There are two options to author and execute the Nomadic ONT policy - Apex PDP(Pdp-A) or Drools PDP(Pdp-D).
Apex Engine Triggering
Apex PDP engine is configured to consumes the Nomadic ONT event/DCAE-CL_OUTPUT event from DMAAP and call the SDNC Rest API to take resource re-provisioning actions in the original design in Dublin. Later on, a workaround approach is taken for the BBS MS to consume the pnfUpdate event produced by PRH and eventually calls SNDC API to proceed the service associated resource re-provisioning after certain A&AI query and update. Therefore, the policy engine configuration and policy definition becomes very simple for the time being. The only reason for now to keep a no action policy is for the completeness of the control loop so that to the BBS workflow it is actually an open loop so that a CL can be defined and managed by CLAMP through which DCAE micro-services, such as, Restconf Collector, VES Mapper, PRH as well as the BBS MS can be orchestrated centralized.
PDP-A Configuration (JSON)
Simplified Apex Configuration:
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
{ "engineServiceParameters": { "name": "MyApexEngine", "version": "0.0.1", "id": 45, "instanceCount": 4, "deploymentPort": 12561, "policyModelFileName": "policy/ONAPvCPEPolicyModel.json", "engineParameters": { "executorParameters": { "JAVASCRIPT": { "parameterClassName": "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters" } }, "contextParameters": { "parameterClassName": "org.onap.policy.apex.context.parameters.ContextParameters", "schemaParameters": { "Avro": { "parameterClassName": "org.onap.policy.apex.plugins.context.schema.avro.AvroSchemaHelperParameters" } } } } }, "eventInputParameters": { "BBSInitConsumer": { "carrierTechnologyParameters": { "carrierTechnology": "FILE", "parameters": { "fileName": "config/BBSInitiationEvent.json" // ... example event } }, "eventProtocolParameters": { "eventProtocol": "JSON", "parameters": { "nameAlias": "closedLoopControlName", "versionAlias": "version", "sourceAlias": "from" } } }, "DCAEConsumer": { "carrierTechnologyParameters": { "carrierTechnology": "RESTCLIENT", "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters", "parameters": { "url": "http://<MSB_IP>:3904/dmaap_port>/unauthenticated.DCAE_CL_OUTPUT/APEX/1?timeout=60000" } }, "eventProtocolParameters": { "eventProtocol": "JSON", "parameters": { "nameAlias": "closedLoopControlName", "versionAlias": "version", "sourceAlias": "from" } } } } } } }, "eventOutputParameters": { "logProducer": { "carrierTechnologyParameters": { "carrierTechnology": "FILE", "parameters": { "fileName": "/tmp/BBSEventsOut.json" } }, "eventProtocolParameters": { "eventProtocol": "JSON" } }, "SDNCProducer": { "carrierTechnologyParameters": { "carrierTechnology": "RESTCLIENT", "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters", "parameters": { "url": "http://<MSB_IP>:<sdnc_port>/<path-to-HSIA_Service-Resource-Update>" //... SDNC REST Call API } }, "eventProtocolParameters": { "eventProtocol": "JSON" } }, "PolicyLogProducer": { "carrierTechnologyParameters": { "carrierTechnology": "RESTCLIENT", "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters", "parameters": { "url": "http://<MSB_IP>:<dmaap_port>/events/POLICY_CL_MGT" } } }, "eventProtocolParameters": { "eventProtocol": "JSON" }, "eventNameFilter": "ControlLoopLogEvent" } } } } |
Apex Policy for Nomadic ONT is created as following. It can be on-board as part of the service Tosca module at design time, distributed to an Apex PDP engine by the policy distribution engine through SDC.
NomadicONT Policy Model (WIP)
This is the Apex Policy state machine for Nomadic ONT. An open loop operational policy is going to be defined here to support the completeness of control loop in BBS use case in Dublin.
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#------------------------------------------------------------------------------- # ============LICENSE_START======================================================= # Copyright (C) 2016-2019 Huawei. All rights reserved. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # SPDX-License-Identifier: Apache-2.0 # ============LICENSE_END========================================================= #------------------------------------------------------------------------------- model create name=NomadicONTPolicyModel schema create name=SimpleStringType flavour=Java schema=java.lang.String schema create name=SimpleLongType flavour=Java schema=java.lang.Long schema create name=SimpleBooleanType flavour=Java schema=java.lang.Boolean schema create name=UUIDType flavour=Java schema=java.util.UUID flavour=Java schema=java.util.UUID schema create name=BBSAAIInfoType flavour=Avro schema=LS #MACROFILE:"src/main/resources/schemas/BBSAAIInfoType.avsc" LE schema create name=BBSAAIInfoTypeSDNCInputBodyType flavour=Avro schema=LS #MACROFILE:"src/main/resources/schemas/BBSAAIInfoTypeSDNCInputBodyType.avsc" LE schema create name=SDNCInputBodyTypeSDNCOutputBodyType flavour=Avro schema=LS #MACROFILE:"src/main/resources/schemas/SDNCInputBodyTypeSDNCOutputBodyType.avsc" LE schema create name=SDNCOutputBodyTypeBBSClosedLoopStatusType flavour=Avro schema=LS #MACROFILE:"src/main/resources/schemas/SDNCOutputBodyType.avsc" LE/schemas/BBSClosedLoopStatusType.avsc" LE album create name=BBSClosedLoopStatusAlbum scope=policy writable=true schemaName=BBSClosedLoopStatusType album create name=ControlLoopExecutionIDAlbum scope=policy writable=true schemaName=UUIDType album create name=RequestIDVNFIDAlbum scope=policy writable=true schemaName=UUIDType schemaevent create name=BBSClosedLoopStatusType flavour=Avro schema=LS #MACROFILE:"src/main/resources/schemas/BBSClosedLoopStatusType.avsc" LE album create name=BBSClosedLoopStatusAlbum scope=policy writable=true schemaName=BBSClosedLoopStatusType album create name=ControlLoopExecutionIDAlbum scope=policy writable=true schemaName=UUIDType album create name=RequestIDVNFIDAlbum scope=policy writable=true schemaName=UUIDType eventControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88b version=1.0.2 nameSpace=org.onap.policy.apex.onap.bbs source=DCAE target=APEX event parameter create name=ControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88b parName=closedLoopControlName schemaName=SimpleStringType event parameter create name=ControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88b parName=closedLoopAlarmStart schemaName=SimpleLongType event parameter create name=ControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88b parName=closedLoopAlarmEnd schemaName=SimpleLongType optional=true event parameter create name=ControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88b parName=closedLoopEventClient version=1.0.2 nameSpace=org.onap.policy.apex.onap.bbs source=DCAE target=APEX schemaName=SimpleStringType event parameter create name=ControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88b parName=closedLoopEventStatus schemaName=SimpleStringType event parameter create name=ControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88b parName=closedLoopControlNamerequestID schemaName=SimpleStringType event parameter create name=ControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88b parName=closedLoopAlarmStarttarget_type schemaName=SimpleLongTypeSimpleStringType event parameter create name=ControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88b parName=closedLoopAlarmEndtarget schemaName=SimpleLongType optionalschemaName=trueSimpleStringType event parameter create name=ControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88b parName=closedLoopEventClientfrom schemaName=SimpleStringType event parameter create name=ControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88b parName=closedLoopEventStatusversion schemaName=SimpleStringType event parameter create name=ControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88b parName=requestIDAAI schemaName=SimpleStringTypeBBSAAIInfoType event parameter create name=ControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88b parName=target_type BBSStateUpdatedEvent nameSpace=org.onap.policy.apex.onap.bbs source=APEX target=APEX event parameter create name=BBSStateUpdatedEvent parName=requestID schemaName=SimpleStringTypeUUIDType event parameter create name=ControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88bBBSStateUpdatedEvent parName=targetvnfID schemaName=UUIDType event create name=SDNCResourceUpdate nameSpace=org.onap.policy.apex.onap.bbs source=APEX target=SDNC schemaName=SimpleStringType event parameter create name=ControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88bSDNCResourceUpdate parName=frombody schemaName=SimpleStringTypeSDNCInputBodyType event parameter create name=ControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88bSDNCResourceUpdate parName=version schemaName=SimpleStringType event parameter create name=ControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88bSDNCResourceUpdate parName=AAI rpc-name schemaName=BBSAAIInfoTypeSimpleStringType event parameter event create name=BBSStateUpdatedEvent nameSpace=org.onap.policy.apex.onap.bbs source=APEX target=APEX SDNCResourceUpdate parName=service-instance-id schemaName=SimpleStringType event parameter create name=BBSStateUpdatedEventSDNCResourceUpdate parName=requestIDpon-uni schemaName=UUIDTypeSimpleStringType event parameter create name=BBSStateUpdatedEventSDNCResourceUpdate parName=vnfIDolt-nni schemaName=UUIDTypeSimpleStringType event create name=SDNCResourceUpdate nameSpace=org.onap.policy.apex.onap.bbs source=APEX target=SDNC event parameter create name=SDNCResourceUpdate parName=body schemaName=SDNCInputBodyTypeSDNCOutputBodyType event parameter create name=SDNCResourceUpdate parName=version schemaName=SimpleStringType event parameter create name=SDNCResourceUpdate parName=rpc-name schemaName=SimpleStringType event parameter create name=SDNCResourceUpdate parName=service-instance-id schemaName=SimpleStringType event parameter create name=SDNCResourceUpdate parName=pon-uni schemaName=SimpleStringType event parameter create name=SDNCResourceUpdate parName=olt-nni schemaName=SimpleStringType event create name=SDNCResourceUpdateControlLoopLogEvent nameSpace=org.onap.policy.apex.onap.bbs source=APEX target=SDNCAPEX event parameter create name=SDNCResourceUpdateControlLoopLogEvent parName=bodyAAI schemaName=SDNCOutputBodyTypeVCPEAAIInfoType event parameter create name=SDNCResourceUpdateControlLoopLogEvent parName=versionclosedLoopControlName schemaName=SimpleStringType event parameter create name=ControlLoopLogEvent parName=closedLoopAlarmStart schemaName=SimpleStringTypeSimpleLongType event parameter create name=SDNCResourceUpdateControlLoopLogEvent parName=rpc-name closedLoopAlarmEnd schemaName=SimpleLongType optional=true event parameter create name=ControlLoopLogEvent parName=closedLoopEventClient schemaName=SimpleStringType event parameter create name=SDNCResourceUpdateControlLoopLogEvent parName=service-instance-idclosedLoopEventStatus schemaName=SimpleStringType event parameter create name=SDNCResourceUpdateControlLoopLogEvent parName=pon-universion schemaName=SimpleStringType event parameter create name=SDNCResourceUpdateControlLoopLogEvent parName=olt-nnirequestID schemaName=SimpleStringType event eventparameter create name=ControlLoopLogEvent nameSpace=org.onap.policy.apex.onap.bbs source=APEX target=APEX parName=target_type schemaName=SimpleStringType event parameter create name=ControlLoopLogEvent parName=AAI target schemaName=VCPEAAIInfoTypeSimpleStringType event parameter create name=ControlLoopLogEvent parName=closedLoopControlName schemaName=SimpleStringTypefrom event parameter create name=ControlLoopLogEvent parName=closedLoopAlarmStart schemaName=SimpleLongTypeSimpleStringType event parameter create name=ControlLoopLogEvent parName=closedLoopAlarmEndpolicyScope schemaName=SimpleLongType optionalschemaName=trueSimpleStringType event parameter create name=ControlLoopLogEvent parName=closedLoopEventClient schemaName=SimpleStringTypepolicyName event parameter create name=ControlLoopLogEvent parName=closedLoopEventStatus schemaName=SimpleStringType event parameter create name=ControlLoopLogEvent parName=versionpolicyVersion schemaName=SimpleStringType event parameter create name=ControlLoopLogEvent parName=requestID notification schemaName=SimpleStringType event parameter create name=ControlLoopLogEvent parName=target_typemessage schemaName=SimpleStringType event parameter create name=ControlLoopLogEvent parName=targetnotificationTime schemaName=SimpleStringType task create name=GetBBSStateTask task inputfield create name=GetBBSStateTask fieldName=closedLoopControlName schemaName=SimpleStringType eventtask parameterinputfield create name=ControlLoopLogEvent parName=from GetBBSStateTask fieldName=closedLoopAlarmStart schemaName=SimpleLongType task inputfield create name=GetBBSStateTask fieldName=closedLoopAlarmEnd schemaName=SimpleLongType optional=true task inputfield create name=GetBBSStateTask fieldName=closedLoopEventClient schemaName=SimpleStringType eventtask parameterinputfield create name=ControlLoopLogEventGetBBSStateTask parNamefieldName=policyScope closedLoopEventStatus schemaName=SimpleStringType eventtask parameterinputfield create name=ControlLoopLogEventGetBBSStateTask parNamefieldName=policyNamerequestID schemaName=SimpleStringType eventtask parameterinputfield create name=ControlLoopLogEventGetBBSStateTask parName=policyVersionfieldName=target_type schemaName=SimpleStringType eventtask parameterinputfield create name=ControlLoopLogEventGetBBSStateTask parName=notificationfieldName=target schemaName=SimpleStringType eventtask parameterinputfield create name=ControlLoopLogEventGetBBSStateTask parName=messagefieldName=from schemaName=SimpleStringType eventtask parameterinputfield create name=ControlLoopLogEvent parName=notificationTime=GetBBSStateTask fieldName=version schemaName=SimpleStringType task create nameschemaName=GetBBSStateTask SimpleStringType task inputfield create name=GetBBSStateTask fieldName=closedLoopControlName schemaName=SimpleStringTypeAAI task inputfield create name=GetBBSStateTask fieldName=closedLoopAlarmStart schemaName=SimpleLongTypeBBSAAIInfoType task inputfieldcontextref create name=GetBBSStateTask fieldNamealbumName=closedLoopAlarmEndBBSClosedLoopStatusAlbum schemaName=SimpleLongType optional=true task inputfieldoutputfield create name=GetBBSStateTask fieldName=closedLoopEventClientrequestID schemaName=SimpleStringTypeUUIDType task inputfieldoutputfield create name=GetBBSStateTask fieldName=closedLoopEventStatusvnfID schemaName=SimpleStringTypeUUIDType task inputfieldlogic create name=GetBBSStateTask fieldName=requestID logicFlavour=JAVASCRIPT logic=LS #MACROFILE:"src/main/resources/logic/GetBBSStateTask.js" LE task create name=SDNCResourceUpdateTask schemaName=SimpleStringType task inputfield create name=GetBBSStateTaskSDNCResourceUpdateTask fieldName=target_type requestID schemaName=SimpleStringTypeUUIDType task inputfield create name=GetBBSStateTaskSDNCResourceUpdateTask fieldName=targetvnfID schemaName=UUIDType schemaName=SimpleStringType task inputfieldoutputfield create name=GetBBSStateTaskSDNCResourceUpdateTask fieldName=frombody schemaName=SimpleStringTypeSDNCInputBodyType task inputfieldoutputfield create name=GetBBSStateTaskSDNCResourceUpdateTask fieldName=version schemaName=SimpleStringType task inputfieldoutputfield create name=GetBBSStateTaskSDNCResourceUpdateTask fieldName=AAIrpc-name schemaName=SimpleStringType task outputfield create name=SDNCResourceUpdateTask fieldName=correlation-id schemaName=BBSAAIInfoTypeSimpleStringType task contextrefoutputfield create name=GetBBSStateTaskSDNCResourceUpdateTask albumNamefieldName=BBSClosedLoopStatusAlbumtype task outputfield create name=GetBBSStateTask fieldName=requestID schemaName=UUIDTypeSimpleStringType task outputfieldcontextref create name=GetBBSStateTaskSDNCResourceUpdateTask fieldNamealbumName=vnfIDVCPEClosedLoopStatusAlbum task contextref create name=SDNCResourceUpdateTask schemaNamealbumName=UUIDTypeRequestIDVNFIDAlbum task logic create name=GetBBSStateTaskSDNCResourceUpdateTask logicFlavour=JAVASCRIPT logic=LS #MACROFILE:"src/main/resources/logic/GetBBSStateTaskSDNCResourceUpdateTask.js" LE task create name=SDNCResourceUpdateTaskSDNCResourceUpdateRepTask task inputfield create name=SDNCResourceUpdateTaskSDNCResourceUpdateRepTask fieldName=requestID schemaName=UUIDType task inputfield create name=SDNCResourceUpdateTask fieldName=vnfIDbody schemaName=UUIDType task outputfield create name=SDNCResourceUpdateTask fieldName=body schemaName=SDNCInputBodyTypeBBSOutputBodyType task outputfieldinputfield create name=SDNCResourceUpdateTaskSDNCResourceUpdateRepTask fieldName=version schemaName=SimpleStringType task outputfieldinputfield create name=SDNCResourceUpdateTaskSDNCResourceUpdateRepTask fieldName=rpc-name schemaName=SimpleStringType task outputfieldinputfield create name=SDNCResourceUpdateTaskSDNCResourceUpdateRepTask fieldName=correlationservice-instance-id schemaName=SimpleStringType task outputfield create name=SDNCResourceUpdateTaskSDNCResourceUpdateRepTask fieldName=typerequestID schemaName=UUIDType task outputfield create name=SDNCResourceUpdateRepTask fieldName=pon-uni schemaName=SimpleStringTypeUUIDType task contextref create name=SDNCResourceUpdateTaskSDNCResourceUpdateRepTask albumName=VCPEClosedLoopStatusAlbumBBSClosedLoopStatusAlbum task contextref create name=SDNCResourceUpdateTaskSDNCResourceUpdateRepTask albumName=RequestIDVNFIDAlbum task logic create name=SDNCResourceUpdateTaskSDNCResourceUpdateRepTask logicFlavour=JAVASCRIPT logic=LS #MACROFILE:"src/main/resources/logic/SDNCResourceUpdateTaskSDNCResourceUpdateRepTask.js" LE task create name=SDNCResourceUpdateRepTask task inputfield create name=SDNCResourceUpdateRepTask fieldName=body schemaName=BBSOutputBodyTypeControlLoopLogTask task inputfield create name=SDNCResourceUpdateRepTaskControlLoopLogTask fieldName=versionrequestID schemaName=UUIDType task inputfield create name=ControlLoopLogTask fieldName=pon-uni schemaName=SimpleStringTypeUUIDType task inputfieldoutputfield create name=SDNCResourceUpdateRepTaskControlLoopLogTask fieldName=rpc-nameAAI schemaName=SimpleStringTypeVCPEAAIInfoType task inputfieldoutputfield create name=SDNCResourceUpdateRepTaskControlLoopLogTask fieldName=service-instance-idclosedLoopControlName schemaName=SimpleStringType task outputfield create name=SDNCResourceUpdateRepTaskControlLoopLogTask fieldName=requestID closedLoopAlarmStart schemaName=UUIDTypeSimpleLongType task outputfield create name=SDNCResourceUpdateRepTaskControlLoopLogTask fieldName=pon-uni closedLoopAlarmEnd schemaName=UUIDType SimpleLongType optional=true task contextrefoutputfield create name=SDNCResourceUpdateRepTask albumName=BBSClosedLoopStatusAlbumControlLoopLogTask fieldName=closedLoopEventClient schemaName=SimpleStringType task contextrefoutputfield create name=ControlLoopLogTask fieldName=SDNCResourceUpdateRepTaskclosedLoopEventStatus albumNameschemaName=RequestIDVNFIDAlbum SimpleStringType task logicoutputfield create name=SDNCResourceUpdateRepTaskControlLoopLogTask logicFlavourfieldName=JAVASCRIPTrequestID logic=LS #MACROFILE:"src/main/resources/logic/SDNCResourceUpdateRepTask.js" LE task create name=ControlLoopLogTask schemaName=SimpleStringType task inputfieldoutputfield create name=ControlLoopLogTask fieldName=requestIDversion schemaName=UUIDTypeSimpleStringType task inputfieldoutputfield create name=ControlLoopLogTask fieldName=pon-unitarget_type schemaName=UUIDType SimpleStringType task outputfield create name=ControlLoopLogTask fieldName=AAI target schemaName=VCPEAAIInfoTypeSimpleStringType task outputfield create name=ControlLoopLogTask fieldName=closedLoopControlName schemaName=SimpleStringTypefrom task outputfield create name=ControlLoopLogTask fieldName=closedLoopAlarmStart schemaName=SimpleLongTypeSimpleStringType task outputfield create name=ControlLoopLogTask fieldName=closedLoopAlarmEndpolicyScope schemaName=SimpleLongType optionalschemaName=trueSimpleStringType task outputfield create name=ControlLoopLogTask fieldName=closedLoopEventClient schemaName=SimpleStringTypepolicyName task outputfield create name=ControlLoopLogTask fieldName=closedLoopEventStatus schemaName=SimpleStringType task outputfield create name=ControlLoopLogTask fieldName=requestIDpolicyVersion schemaName=SimpleStringType task outputfield create name=ControlLoopLogTask fieldName=version notification schemaName=SimpleStringType task outputfield create name=ControlLoopLogTask fieldName=target_typemessage schemaName=SimpleStringType task outputfield create name=ControlLoopLogTask fieldName=target notificationTime schemaName=SimpleStringType task outputfieldcontextref create name=ControlLoopLogTask fieldNamealbumName=fromBBSClosedLoopStatusAlbum task logic create name=ControlLoopLogTask logicFlavour=JAVASCRIPT logic=LS #MACROFILE:"src/main/resources/logic/ControlLoopLogTask.js" LE schemaName=SimpleStringType task outputfieldpolicy create name=ControlLoopLogTaskReceiveEventPolicy fieldNametemplate=policyScopeFreestyle firstState=GetBBSState 267 policy state create name=ReceiveEventPolicy schemaNamestateName=SimpleStringTypeAbatedState task outputfield create nametriggerName=VCPEStateUpdatedEvent defaultTaskName=ControlLoopLogTask fieldName=policyName 268 policy state output create name=ReceiveEventPolicy stateName=AbatedState outputName=AbatedOutput eventName=ControlLoopLogEvent 269 schemaName=SimpleStringTypepolicy state task outputfieldtaskref create name=ControlLoopLogTaskReceiveEventPolicy fieldNamestateName=policyVersionAbatedState taskName=ControlLoopLogTask outputType=DIRECT outputName=AbatedOutput 270 271 schemaName=SimpleStringType task outputfieldpolicy state create name=ControlLoopLogTask fieldName=notification schemaName=SimpleStringType task outputfieldReceiveEventPolicy stateName=OnsetOrAbatedState triggerName=VCPEStateUpdatedEvent defaultTaskName=AbatedTask 272 policy state output create name=ReceiveEventPolicy stateName=OnsetOrAbatedState outputName=OnsetOutput eventName=GuardRequestEvent 273 policy state taskref create name=ControlLoopLogTaskReceiveEventPolicy fieldNamestateName=messageOnsetOrAbatedState taskName=GuardRequestTask outputType=DIRECT outputName=OnsetOutput 274 policy state output create name=ReceiveEventPolicy stateName=OnsetOrAbatedState outputName=AbatedOutput eventName=VCPEStateUpdatedEvent nextState=AbatedState schemaName=SimpleStringType275 policy taskstate outputfieldtaskref create name=ControlLoopLogTaskReceiveEventPolicy fieldNamestateName=notificationTimeOnsetOrAbatedState taskName=AbatedTask outputType=DIRECT outputName=AbatedOutput 276 schemaName=SimpleStringType 277 policy taskstate contextref create name=ReceiveEventPolicy stateName=ControlLoopLogTaskOnsetOrAbatedState albumName=BBSClosedLoopStatusAlbumVCPEClosedLoopStatusAlbum 278 279 taskpolicy state logicselecttasklogic create name=ControlLoopLogTaskReceiveEventPolicy stateName=OnsetOrAbatedState logicFlavour=JAVASCRIPT logic=LS 280 #MACROFILE:"src/main/resources/logic/ControlLoopLogTaskReceiveEventPolicyOnsetOrAbatedStateTSL.js" 281 LE 282 283 policy state create name=ReceiveEventPolicy templatestateName=FreestyleGetVCPEState firstState=GetBBSState 267triggerName=ControlLoop-vCPE-85317438-861d-42a9-979e-9d96dc0a9ef1 defaultTaskName=GetVCPEStateTask 284 policy state output create name=ReceiveEventPolicy stateName=GetVCPEState outputName=AbatedStateGetVCPEStateOutput triggerNameeventName=VCPEStateUpdatedEvent defaultTaskNamenextState=ControlLoopLogTaskOnsetOrAbatedState 268285 policy state outputtaskref create name=ReceiveEventPolicy stateName=AbatedStateGetVCPEState taskName=GetVCPEStateTask outputType=DIRECT outputName=AbatedOutputGetVCPEStateOutput eventName=ControlLoopLogEvent 286 269 policy state287 taskrefpolicy create name=ReceiveEventPolicyRestartAPPCRequestPolicy stateNametemplate=AbatedStateFreestyle taskNamefirstState=ControlLoopLogTaskPolicyGuardResponseState outputType=DIRECT outputName=AbatedOutput 270 288 289 271 policy state create name=ReceiveEventPolicyRestartAPPCRequestPolicy stateName=OnsetOrAbatedStateDeniedState triggerName=VCPEStateUpdatedEvent defaultTaskName=AbatedTaskControlLoopLogTask 272290 policy state output create name=ReceiveEventPolicyRestartAPPCRequestPolicy stateName=OnsetOrAbatedStateDeniedState outputName=OnsetOutputDeniedOutput eventName=GuardRequestEventControlLoopLogEvent 273291 policy state taskref create name=ReceiveEventPolicyRestartAPPCRequestPolicy stateName=OnsetOrAbatedStateDeniedState taskName=GuardRequestTaskControlLoopLogTask outputType=DIRECT outputName=OnsetOutput 274=DeniedOutput 292 293 policy state create name=RestartAPPCRequestPolicy stateName=PermitOrDenyState triggerName=VCPEStateUpdatedEvent defaultTaskName=DeniedTask 294 policy state output create name=ReceiveEventPolicyRestartAPPCRequestPolicy stateName=OnsetOrAbatedStatePermitOrDenyState outputName=AbatedOutputPermitOutput eventName=VCPEStateUpdatedEvent nextState=AbatedStateAPPCRestartVNFRequestEvent 275295 policy state taskref create name=ReceiveEventPolicyRestartAPPCRequestPolicy stateName=OnsetOrAbatedStatePermitOrDenyState taskName=AbatedTaskAPPCRestartVNFRequestTask outputType=DIRECT outputName=AbatedOutputPermitOutput 276 277296 policy state contextrefoutput create name=ReceiveEventPolicyRestartAPPCRequestPolicy stateName=OnsetOrAbatedStatePermitOrDenyState albumNameoutputName=VCPEClosedLoopStatusAlbumDenyOutput 278eventName=VCPEStateUpdatedEvent nextState=DeniedState 279297 policy state selecttasklogictaskref create name=ReceiveEventPolicyRestartAPPCRequestPolicy stateName=OnsetOrAbatedStatePermitOrDenyState logicFlavourtaskName=JAVASCRIPTDeniedTask logicoutputType=LSDIRECT outputName=DenyOutput 280 #MACROFILE:"src/main/resources/logic/ReceiveEventPolicyOnsetOrAbatedStateTSL.js" 298 281 LE 282 283 299 policy state create name=ReceiveEventPolicyRestartAPPCRequestPolicy stateName=GetVCPEStatePolicyGuardResponseState triggerName=ControlLoop-vCPE-85317438-861d-42a9-979e-9d96dc0a9ef1GuardResponseEvent defaultTaskName=GetVCPEStateTaskGuardResponseTask 284300 policy state output create name=ReceiveEventPolicyRestartAPPCRequestPolicy stateName=GetVCPEStatePolicyGuardResponseState outputName=GetVCPEStateOutputGuardResponseOutput eventName=VCPEStateUpdatedEvent nextState=OnsetOrAbatedStatePermitOrDenyState 285301 policy state taskref create name=ReceiveEventPolicyRestartAPPCRequestPolicy stateName=GetVCPEStatePolicyGuardResponseState taskName=GetVCPEStateTaskGuardResponseTask outputType=DIRECT outputName=GetVCPEStateOutputGuardResponseOutput 286302 287303 policy state contextref create name=RestartAPPCRequestPolicy templatestateName=FreestylePermitOrDenyState firstStatealbumName=PolicyGuardResponseStateVCPEClosedLoopStatusAlbum 288304 289305 policy state selecttasklogic create name=RestartAPPCRequestPolicy stateName=DeniedStatePermitOrDenyState triggerNamelogicFlavour=VCPEStateUpdatedEventJAVASCRIPT defaultTaskNamelogic=ControlLoopLogTaskLS 290 policy state output create name=RestartAPPCRequestPolicy stateName=DeniedState outputName=DeniedOutput eventName=ControlLoopLogEvent 291 policy state taskref create name=RestartAPPCRequestPolicy stateName=DeniedState taskName=ControlLoopLogTask outputType=DIRECT outputName=DeniedOutput 292 293306 #MACROFILE:"src/main/resources/logic/RestartAPPCRequestPolicyPermitOrDenyTSL.js" 307 LE 308 309 policy create name=RestartAPPCResponsePolicy template=Freestyle firstState=RestartAPPCResponseState 310 311 policy state create name=RestartAPPCRequestPolicyRestartAPPCResponsePolicy stateName=PermitOrDenyStateResponseLogState triggerName=VCPEStateUpdatedEvent defaultTaskName=DeniedTaskControlLoopLogTask 294312 policy state output create name=RestartAPPCRequestPolicyRestartAPPCResponsePolicy stateName=PermitOrDenyStateResponseLogState outputName=PermitOutputResponseLogOutput eventName=APPCRestartVNFRequestEventControlLoopLogEvent 295313 policy state taskref create name=RestartAPPCRequestPolicyRestartAPPCResponsePolicy stateName=PermitOrDenyStateResponseLogState taskName=APPCRestartVNFRequestTaskControlLoopLogTask outputType=DIRECT outputName=PermitOutput 296ResponseLogOutput 314 315 policy state create name=RestartAPPCResponsePolicy stateName=RestartAPPCResponseState triggerName=APPCRestartVNFResponseEvent defaultTaskName=APPCRestartVNFResponseTask 316 policy state output create name=RestartAPPCRequestPolicyRestartAPPCResponsePolicy stateName=PermitOrDenyStateRestartAPPCResponseState outputName=DenyOutputAPPCRestartVNFResponseOutput eventName=VCPEStateUpdatedEvent nextState=DeniedStateResponseLogState 297317 policy state taskref create name=RestartAPPCRequestPolicyRestartAPPCResponsePolicy stateName=PermitOrDenyStateRestartAPPCResponseState taskName=DeniedTaskAPPCRestartVNFResponseTask outputType=DIRECT outputName=DenyOutputAPPCRestartVNFResponseOutput 298318 299319 policy statevalidate create name=RestartAPPCRequestPolicy stateName=PolicyGuardResponseState triggerName=GuardResponseEvent defaultTaskName=GuardResponseTask 300 policy state output create name=RestartAPPCRequestPolicy stateName=PolicyGuardResponseState outputName=GuardResponseOutput eventName=VCPEStateUpdatedEvent nextState=PermitOrDenyState 301 policy state taskref create name=RestartAPPCRequestPolicy stateName=PolicyGuardResponseState taskName=GuardResponseTask outputType=DIRECT outputName=GuardResponseOutput 302 303 policy state contextref create name=RestartAPPCRequestPolicy stateName=PermitOrDenyState albumName=VCPEClosedLoopStatusAlbum 304 305 policy state selecttasklogic create name=RestartAPPCRequestPolicy stateName=PermitOrDenyState logicFlavour=JAVASCRIPT logic=LS 306 #MACROFILE:"src/main/resources/logic/RestartAPPCRequestPolicyPermitOrDenyTSL.js" 307 LE 308 309 policy create name=RestartAPPCResponsePolicy template=Freestyle firstState=RestartAPPCResponseState 310 311 policy state create name=RestartAPPCResponsePolicy stateName=ResponseLogState triggerName=VCPEStateUpdatedEvent defaultTaskName=ControlLoopLogTask 312 policy state output create name=RestartAPPCResponsePolicy stateName=ResponseLogState outputName=ResponseLogOutput eventName=ControlLoopLogEvent 313 policy state taskref create name=RestartAPPCResponsePolicy stateName=ResponseLogState taskName=ControlLoopLogTask outputType=DIRECT outputName=ResponseLogOutput 314 315 policy state create name=RestartAPPCResponsePolicy stateName=RestartAPPCResponseState triggerName=APPCRestartVNFResponseEvent defaultTaskName=APPCRestartVNFResponseTask 316 policy state output create name=RestartAPPCResponsePolicy stateName=RestartAPPCResponseState outputName=APPCRestartVNFResponseOutput eventName=VCPEStateUpdatedEvent nextState=ResponseLogState 317 policy state taskref create name=RestartAPPCResponsePolicy stateName=RestartAPPCResponseState taskName=APPCRestartVNFResponseTask outputType=DIRECT outputName=APPCRestartVNFResponseOutput 318 319 validate 320 |
320 |
Logic Artifacts
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
Schema
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
Operational Policy High Level
Operational Policy
A simple open loop operation policy to support the completeness of BBS control loop.
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
controlLoop:
version: 2.0.0
controlLoopName: ControlLoop-Nomadic-ONT-2179b738-fd36-4843-a71a-a8c24c70c88b
trigger_policy: unique-policy-id-16-ServiceModify
timeout: 3600
abatement: false
policies:
- id: unique-policy-id-16-ResourceUpdate
name: Resource Update
description:
actor: SDNC
recipe: resourceUpdate
target:
type: VM
retry: 3
timeout: 1200
success: final_success
failure: final_failure
failure_timeout: final_failure_timeout
failure_retries: final_failure_retries
failure_exception: final_failure_exception
failure_guard: final_failure_guard
|
SDNC API/Recipe
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
# No supported in Dublin for now... |
A&AI APIs
A&AI APIs Called Directly By Operational Policy
API for updating the service-instance is the same as before and only this one need to be called twice during ONT Relocation Policy execution.
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
Schema
language | text |
---|---|
firstline | 1 |
title | Schema Aritifacts |
linenumbers | true |
collapse | true |
Pdp-D Option
Operational Policy
A simple open loop operation policy to support the completeness of BBS control loop.PUT
/business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id} |
A&AI APIs Called Indirectly Through SO/SDNC
To update the attachment point of the PNF, when the old logical-link object is deleted, it should be automatically removed from the pnf relationship-list, then create a new logical-link object and PUT it into the pnf relationship-list, e.g. as the following
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
ontrolLoop:
version: 2.0.0
controlLoopName: ControlLoop-BBS-Open-2179b738-fd36-4843-a71a-a8c24c70c88b
services:
- serviceName: service (or Swisscom BBS)
resources:
- resourceType: ONT
- resourceName: Huawei Access SDN M&C
trigger_policy: final_openloop
timeout: 0
policies:
|
PUT /network/pnfs/pnf/{pnf-name}/relationship-list/relationship |
To update the metadata on the service-instance, use the PUT on the metadatum objects. If there are new objects, then add them to the relationship-list on the cp/pnf/generic-vnf, etc, e.g. as the following
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
# No supported in Dublin for now...PUT /business/customers/customer/{global-customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances/service-instance/{service-instance-id}/metadata/metadatum/{metaname} PUT /network/generic-vnfs/generic-vnf/{vnf-id}/relationship-list/relationship |
Design Time Artifacts
DCAE-DS
Micro-service Blueprints
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
CLAMP
Control Loop (Micro-service) Orchestration
There are basically 2 ways of CL creation and micro-service orchestration in BBS Nomadic ONT scenario.
- Restconf collector + VES Mapper + PRH + Policy Engine
- VES Collector + PRH + Policy Engine
Notes:
Interestingly, this is the first case where DCAE/Policy seem playing roles together in a non-closed/loop or service assurance in sense of usage/solution in ONAP domain, However, this does not really matter in the sense of micro services since service is a service as long as it provides the functionality that meets the requirements in a solution, An argument could be that Policy engine does not have to be introduced in this case, However, the important functionality for policy engine is to decouple action takers from the trigger pullers and ultimately establish robust policy driving on this platform w/o code change.