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 Diagram | ||||
---|---|---|---|---|
|
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 event with the registration VES event is produced by PRH onto DMAAP.
30) For the PNF re-registration, the BBS uS
30.1) consumes PNFUpdateEvent from DMAAP,
30.2) looks up the service-instance-id by the pnf-name, checks PON UNI in VES message 'additionalFields' against PON UNI in service instance's Access Connectivity RFS.
30.3) looks up a list of resources to be updated
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.
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 completion
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: attachmentPoint: Format: "<oltName>/<oltSlot>/<oltPort>" <x> denotes element accessId: 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 pnfUpdate Event
This event is the output of PRH active service detection and is consumed by BBS MS.
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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
{ "closedLoopEventClient": "DCAE.BBS_mSInstance", "policyVersion": "1.0.0.5", "policyName": "Nomadic_ONT", "policyScope": "service=HSIAService,type=SampleType,closedLoopControlName=CL-NomadicONT-d925ed73-8231-4d02-9545-db4e101f88f8", "target_type": "VM", "AAI": { "service-information.service-instance-id" : "service-instance-id-example", "pnf.ontSN" : "ontSN-example" //...what ever this is }, "closedLoopAlarmStart": 1484677482204798, "closedLoopEventStatus": "ONSET", "closedLoopControlName": "ControlLoop-BBS-2179b738-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 .
PDP-A Configuration (JSON)
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": {
| ||||||||
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 "name": "MyApexEngine", } "version": "0.0.1", }, "id": 45, "eventProtocolParametersinstanceCount": {4, "deploymentPort": 12561, "eventProtocolpolicyModelFileName": "JSONpolicy/ONAPvCPEPolicyModel.json", "parametersengineParameters": { "nameAliasexecutorParameters": "closedLoopControlName", { "versionAliasJAVASCRIPT": "version",{ "sourceAliasparameterClassName": "fromorg.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters" } } }, "DCAEConsumer": { "carrierTechnologyParameterscontextParameters": { "carrierTechnologyparameterClassName": "RESTCLIENTorg.onap.policy.apex.context.parameters.ContextParameters", "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters", schemaParameters": { "parametersAvro": { "urlparameterClassName": "http://<MSB_IP>:3904/dmaap_port>/unauthenticated.DCAE_CL_OUTPUT/APEX/1?timeout=60000" org.onap.policy.apex.plugins.context.schema.avro.AvroSchemaHelperParameters" } } }, } "eventProtocolParameters": { } "eventProtocol": "JSON", } }, "parameterseventInputParameters": { "BBSInitConsumer": { "nameAliascarrierTechnologyParameters": "closedLoopControlName", { "versionAliascarrierTechnology": "versionFILE", "sourceAliasparameters": "from"{ } "fileName": "config/BBSInitiationEvent.json" // ... example event } } }, "eventOutputParameters": { "logProducer": {}, "carrierTechnologyParameterseventProtocolParameters": { "carrierTechnologyeventProtocol": "FILEJSON", "parameters": { "fileNamenameAlias": "/tmp/BBSEventsOut.json""closedLoopControlName", } "versionAlias": "version", }, "eventProtocolParameterssourceAlias": {"from" "eventProtocol": "JSON"} } }, "SDNCProducerDCAEConsumer": { "carrierTechnologyParameters": { "carrierTechnology": "RESTCLIENT", "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters", "parameters": { "url": "http://<MSB_IP>:<sdnc3904/dmaap_port>/<path-to-HSIA_Service-Resource-Update>" //... SDNC REST Call APIunauthenticated.DCAE_CL_OUTPUT/APEX/1?timeout=60000" } }, "eventProtocolParameters": { "eventProtocol": "JSON", "parameters": }{ }, "PolicyLogProducernameAlias": { "closedLoopControlName", "carrierTechnologyParametersversionAlias": { "version", "carrierTechnologysourceAlias": "RESTCLIENTfrom", "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters",} } "parameters": { } }, "eventOutputParameters": { "url": "http://<MSB_IP>:<dmaap_port>/events/POLICY_CL_MGT" "logProducer": { "carrierTechnologyParameters": { } }"carrierTechnology": "FILE", "eventProtocolParametersparameters": { "eventProtocolfileName": "JSON/tmp/BBSEventsOut.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 DublinThis is the Apex Policy state machine for Nomadic ONT.
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 schema create name=BBSAAIInfoType flavour=Avro schema=LS #MACROFILE:"src/main/resources/schemas/BBSAAIInfoType.avsc" LE schema create name=SDNCInputBodyType flavour=Avro schema=LS #MACROFILE:"src/main/resources/schemas/SDNCInputBodyType.avsc" LE schema create name=SDNCOutputBodyType flavour=Avro schema=LS #MACROFILE:"src/main/resources/schemas/SDNCOutputBodyType.avsc" LE schema 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 event create name=ControlLoop-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 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=requestID schemaName=SimpleStringType event parameter create name=ControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88b parName=target_type schemaName=SimpleStringType event parameter create name=ControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88b parName=target schemaName=SimpleStringType event parameter create name=ControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88b parName=from schemaName=SimpleStringType event parameter create name=ControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88b parName=version schemaName=SimpleStringType event parameter create name=ControlLoop-BBS-2179b738-fd36-4843-a71a-a8c24c70c88b parName=AAI schemaName=BBSAAIInfoType event create name=BBSStateUpdatedEvent nameSpace=org.onap.policy.apex.onap.bbs source=APEX target=APEX event parameter create name=BBSStateUpdatedEvent parName=requestID schemaName=UUIDType event parameter create name=BBSStateUpdatedEvent parName=vnfID schemaName=UUIDType event create name=SDNCResourceUpdate nameSpace=org.onap.policy.apex.onap.bbs source=APEX target=SDNC event parameter create name=SDNCResourceUpdate parName=body schemaName=SDNCInputBodyType 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=SDNCResourceUpdate nameSpace=org.onap.policy.apex.onap.bbs source=APEX target=SDNC event parameter create name=SDNCResourceUpdate parName=body schemaName=SDNCOutputBodyType 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=ControlLoopLogEvent nameSpace=org.onap.policy.apex.onap.bbs source=APEX target=APEX event parameter create name=ControlLoopLogEvent parName=AAI schemaName=VCPEAAIInfoType event parameter create name=ControlLoopLogEvent parName=closedLoopControlName schemaName=SimpleStringType event parameter create name=ControlLoopLogEvent parName=closedLoopAlarmStart schemaName=SimpleLongType event parameter create name=ControlLoopLogEvent parName=closedLoopAlarmEnd schemaName=SimpleLongType optional=true event parameter create name=ControlLoopLogEvent parName=closedLoopEventClient schemaName=SimpleStringType event parameter create name=ControlLoopLogEvent parName=closedLoopEventStatus schemaName=SimpleStringType event parameter create name=ControlLoopLogEvent parName=version schemaName=SimpleStringType event parameter create name=ControlLoopLogEvent parName=requestID schemaName=SimpleStringType event parameter create name=ControlLoopLogEvent parName=target_type schemaName=SimpleStringType event parameter create name=ControlLoopLogEvent parName=target schemaName=SimpleStringType event parameter create name=ControlLoopLogEvent parName=from schemaName=SimpleStringType event parameter create name=ControlLoopLogEvent parName=policyScope schemaName=SimpleStringType event parameter create name=ControlLoopLogEvent parName=policyName schemaName=SimpleStringType event parameter create name=ControlLoopLogEvent parName=policyVersion schemaName=SimpleStringType event parameter create name=ControlLoopLogEvent parName=notification schemaName=SimpleStringType event parameter create name=ControlLoopLogEvent parName=message schemaName=SimpleStringType event parameter create name=ControlLoopLogEvent parName=notificationTime schemaName=SimpleStringType task create name=GetBBSStateTask task inputfield create name=GetBBSStateTask fieldName=closedLoopControlName schemaName=SimpleStringType task inputfield create name=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 task inputfield create name=GetBBSStateTask fieldName=closedLoopEventStatus schemaName=SimpleStringType task inputfield create name=GetBBSStateTask fieldName=requestID schemaName=SimpleStringType task inputfield create name=GetBBSStateTask fieldName=target_type schemaName=SimpleStringType task inputfield create name=GetBBSStateTask fieldName=target schemaName=SimpleStringType task inputfield create name=GetBBSStateTask fieldName=from schemaName=SimpleStringType task inputfield create name=GetBBSStateTask fieldName=version schemaName=SimpleStringType task inputfield create name=GetBBSStateTask fieldName=AAI schemaName=BBSAAIInfoType task contextref create name=GetBBSStateTask albumName=BBSClosedLoopStatusAlbum task outputfield create name=GetBBSStateTask fieldName=requestID schemaName=UUIDType task outputfield create name=GetBBSStateTask fieldName=vnfID schemaName=UUIDType task logic create name=GetBBSStateTask logicFlavour=JAVASCRIPT logic=LS #MACROFILE:"src/main/resources/logic/GetBBSStateTask.js" LE task create name=SDNCResourceUpdateTask task inputfield create name=SDNCResourceUpdateTask fieldName=requestID schemaName=UUIDType task inputfield create name=SDNCResourceUpdateTask fieldName=vnfID schemaName=UUIDType task outputfield create name=SDNCResourceUpdateTask fieldName=body schemaName=SDNCInputBodyType task outputfield create name=SDNCResourceUpdateTask fieldName=version schemaName=SimpleStringType task outputfield create name=SDNCResourceUpdateTask fieldName=rpc-name schemaName=SimpleStringType task outputfield create name=SDNCResourceUpdateTask fieldName=correlation-id schemaName=SimpleStringType task outputfield create name=SDNCResourceUpdateTask fieldName=type schemaName=SimpleStringType task contextref create name=SDNCResourceUpdateTask albumName=VCPEClosedLoopStatusAlbum task contextref create name=SDNCResourceUpdateTask albumName=RequestIDVNFIDAlbum task logic create name=SDNCResourceUpdateTask logicFlavour=JAVASCRIPT logic=LS #MACROFILE:"src/main/resources/logic/SDNCResourceUpdateTask.js" LE task create name=SDNCResourceUpdateRepTask task inputfield create name=SDNCResourceUpdateRepTask fieldName=body schemaName=BBSOutputBodyType task inputfield create name=SDNCResourceUpdateRepTask fieldName=version schemaName=SimpleStringType task inputfield create name=SDNCResourceUpdateRepTask fieldName=rpc-name schemaName=SimpleStringType task inputfield create name=SDNCResourceUpdateRepTask fieldName=service-instance-id schemaName=SimpleStringType task outputfield create name=SDNCResourceUpdateRepTask fieldName=requestID schemaName=UUIDType task outputfield create name=SDNCResourceUpdateRepTask fieldName=pon-uni schemaName=UUIDType task contextref create name=SDNCResourceUpdateRepTask albumName=BBSClosedLoopStatusAlbum task contextref create name=SDNCResourceUpdateRepTask albumName=RequestIDVNFIDAlbum task logic create name=SDNCResourceUpdateRepTask logicFlavour=JAVASCRIPT logic=LS #MACROFILE:"src/main/resources/logic/SDNCResourceUpdateRepTask.js" LE task create name=ControlLoopLogTask task inputfield create name=ControlLoopLogTask fieldName=requestID schemaName=UUIDType task inputfield create name=ControlLoopLogTask fieldName=pon-uni schemaName=UUIDType task outputfield create name=ControlLoopLogTask fieldName=AAI schemaName=VCPEAAIInfoType task outputfield create name=ControlLoopLogTask fieldName=closedLoopControlName schemaName=SimpleStringType task outputfield create name=ControlLoopLogTask fieldName=closedLoopAlarmStart schemaName=SimpleLongType task outputfield create name=ControlLoopLogTask fieldName=closedLoopAlarmEnd schemaName=SimpleLongType optional=true task outputfield create name=ControlLoopLogTask fieldName=closedLoopEventClient schemaName=SimpleStringType task outputfield create name=ControlLoopLogTask fieldName=closedLoopEventStatus schemaName=SimpleStringType task outputfield create name=ControlLoopLogTask fieldName=requestID schemaName=SimpleStringType task outputfield create name=ControlLoopLogTask fieldName=version schemaName=SimpleStringType task outputfield create name=ControlLoopLogTask fieldName=target_type schemaName=SimpleStringType task outputfield create name=ControlLoopLogTask fieldName=target schemaName=SimpleStringType task outputfield create name=ControlLoopLogTask fieldName=from schemaName=SimpleStringType task outputfield create name=ControlLoopLogTask fieldName=policyScope schemaName=SimpleStringType task outputfield create name=ControlLoopLogTask fieldName=policyName schemaName=SimpleStringType task outputfield create name=ControlLoopLogTask fieldName=policyVersion schemaName=SimpleStringType task outputfield create name=ControlLoopLogTask fieldName=notification schemaName=SimpleStringType task outputfield create name=ControlLoopLogTask fieldName=message schemaName=SimpleStringType task outputfield create name=ControlLoopLogTask fieldName=notificationTime schemaName=SimpleStringType task contextref create name=ControlLoopLogTask albumNameschemaName=BBSClosedLoopStatusAlbum SimpleStringType task logicoutputfield create name=ControlLoopLogTask logicFlavour=JAVASCRIPT logic=LS #MACROFILE:"src/main/resources/logic/ControlLoopLogTask.js" LE policy create name=ReceiveEventPolicy template=Freestyle firstState=GetBBSState 267 policy state create name=ReceiveEventPolicy stateName=AbatedState triggerName=VCPEStateUpdatedEvent defaultTaskName=ControlLoopLogTask 268 policy state outputfieldName=message schemaName=SimpleStringType task outputfield create name=ReceiveEventPolicyControlLoopLogTask stateName=AbatedState outputName=AbatedOutput eventName=ControlLoopLogEvent 269 policy state taskreffieldName=notificationTime schemaName=SimpleStringType task contextref create name=ReceiveEventPolicy stateName=AbatedState taskName=ControlLoopLogTask outputType=DIRECT outputName=AbatedOutput 270albumName=BBSClosedLoopStatusAlbum 271task policy statelogic create name=ReceiveEventPolicyControlLoopLogTask stateNamelogicFlavour=OnsetOrAbatedStateJAVASCRIPT triggerName=VCPEStateUpdatedEvent defaultTaskName=AbatedTask 272 policy state outputlogic=LS #MACROFILE:"src/main/resources/logic/ControlLoopLogTask.js" LE policy create name=ReceiveEventPolicy stateNametemplate=OnsetOrAbatedStateFreestyle outputNamefirstState=OnsetOutput eventName=GuardRequestEventGetBBSState 273267 policy state taskref create name=ReceiveEventPolicy stateName=OnsetOrAbatedStateAbatedState taskNametriggerName=GuardRequestTask outputType=DIRECT outputName=OnsetOutputVCPEStateUpdatedEvent defaultTaskName=ControlLoopLogTask 274268 policy state output create name=ReceiveEventPolicy stateName=OnsetOrAbatedStateAbatedState outputName=AbatedOutput eventName=VCPEStateUpdatedEvent nextState=AbatedStateControlLoopLogEvent 275269 policy state taskref create name=ReceiveEventPolicy stateName=OnsetOrAbatedStateAbatedState taskName=AbatedTaskControlLoopLogTask outputType=DIRECT outputName=AbatedOutput 276270 277271 policy state contextref create name=ReceiveEventPolicy stateName=OnsetOrAbatedState albumNametriggerName=VCPEClosedLoopStatusAlbum 278 VCPEStateUpdatedEvent defaultTaskName=AbatedTask 279272 policy state selecttasklogicoutput create name=ReceiveEventPolicy stateName=OnsetOrAbatedState logicFlavouroutputName=JAVASCRIPTOnsetOutput logiceventName=LS 280 #MACROFILE:"src/main/resources/logic/ReceiveEventPolicyOnsetOrAbatedStateTSL.js" 281 LE 282 283GuardRequestEvent 273 policy state taskref create name=ReceiveEventPolicy stateName=GetVCPEStateOnsetOrAbatedState triggerName=ControlLoop-vCPE-85317438-861d-42a9-979e-9d96dc0a9ef1 defaultTaskName=GetVCPEStateTask 284taskName=GuardRequestTask outputType=DIRECT outputName=OnsetOutput 274 policy state output create name=ReceiveEventPolicy stateName=GetVCPEStateOnsetOrAbatedState outputName=GetVCPEStateOutputAbatedOutput eventName=VCPEStateUpdatedEvent nextState=OnsetOrAbatedStateAbatedState 285275 policy state taskref create name=ReceiveEventPolicy stateName=GetVCPEStateOnsetOrAbatedState taskName=GetVCPEStateTaskAbatedTask outputType=DIRECT outputName=GetVCPEStateOutput 286=AbatedOutput 276 277 policy state contextref create name=ReceiveEventPolicy stateName=OnsetOrAbatedState albumName=VCPEClosedLoopStatusAlbum 278 287279 policy state selecttasklogic create name=RestartAPPCRequestPolicy template=Freestyle firstState=PolicyGuardResponseState 288 289=ReceiveEventPolicy stateName=OnsetOrAbatedState logicFlavour=JAVASCRIPT logic=LS 280 #MACROFILE:"src/main/resources/logic/ReceiveEventPolicyOnsetOrAbatedStateTSL.js" 281 LE 282 283 policy state create name=RestartAPPCRequestPolicyReceiveEventPolicy stateName=DeniedStateGetVCPEState triggerName=VCPEStateUpdatedEventControlLoop-vCPE-85317438-861d-42a9-979e-9d96dc0a9ef1 defaultTaskName=ControlLoopLogTaskGetVCPEStateTask 290284 policy state output create name=RestartAPPCRequestPolicyReceiveEventPolicy stateName=DeniedStateGetVCPEState outputName=DeniedOutputGetVCPEStateOutput eventName=VCPEStateUpdatedEvent nextState=ControlLoopLogEventOnsetOrAbatedState 291285 policy state taskref create name=RestartAPPCRequestPolicyReceiveEventPolicy stateName=DeniedStateGetVCPEState taskName=ControlLoopLogTaskGetVCPEStateTask outputType=DIRECT outputName=DeniedOutputGetVCPEStateOutput 292286 293287 policy state create name=RestartAPPCRequestPolicy stateNametemplate=PermitOrDenyStateFreestyle triggerName=VCPEStateUpdatedEvent defaultTaskName=DeniedTask 294 policy state output create name=RestartAPPCRequestPolicy stateName=PermitOrDenyState outputName=PermitOutput eventName=APPCRestartVNFRequestEvent 295firstState=PolicyGuardResponseState 288 289 policy state taskref create name=RestartAPPCRequestPolicy stateName=PermitOrDenyStateDeniedState taskNametriggerName=APPCRestartVNFRequestTaskVCPEStateUpdatedEvent outputType=DIRECT outputName=PermitOutputdefaultTaskName=ControlLoopLogTask 296290 policy state output create name=RestartAPPCRequestPolicy stateName=PermitOrDenyStateDeniedState outputName=DenyOutputDeniedOutput eventName=VCPEStateUpdatedEvent nextState=DeniedStateControlLoopLogEvent 297291 policy state taskref create name=RestartAPPCRequestPolicy stateName=PermitOrDenyStateDeniedState taskName=DeniedTaskControlLoopLogTask outputType=DIRECT outputName=DenyOutputDeniedOutput 298292 299293 policy state create name=RestartAPPCRequestPolicy stateName=PolicyGuardResponseStatePermitOrDenyState triggerName=GuardResponseEventVCPEStateUpdatedEvent defaultTaskName=GuardResponseTaskDeniedTask 300294 policy state output create name=RestartAPPCRequestPolicy stateName=PolicyGuardResponseStatePermitOrDenyState outputName=GuardResponseOutputPermitOutput eventName=VCPEStateUpdatedEvent nextState=PermitOrDenyStateAPPCRestartVNFRequestEvent 301295 policy state taskref create name=RestartAPPCRequestPolicy stateName=PolicyGuardResponseStatePermitOrDenyState taskName=GuardResponseTaskAPPCRestartVNFRequestTask outputType=DIRECT outputName=GuardResponseOutput 302 303PermitOutput 296 policy state output create name=RestartAPPCRequestPolicy stateName=PermitOrDenyState outputName=DenyOutput eventName=VCPEStateUpdatedEvent nextState=DeniedState 297 policy state contextreftaskref create name=RestartAPPCRequestPolicy stateName=PermitOrDenyState albumName=VCPEClosedLoopStatusAlbum 304 taskName=DeniedTask outputType=DIRECT outputName=DenyOutput 298 305299 policy state selecttasklogic create name=RestartAPPCRequestPolicy stateName=PermitOrDenyStatePolicyGuardResponseState logicFlavourtriggerName=JAVASCRIPTGuardResponseEvent logicdefaultTaskName=LSGuardResponseTask 306 #MACROFILE:"src/main/resources/logic/RestartAPPCRequestPolicyPermitOrDenyTSL.js" 307 LE 308 309 policy300 policy state output create name=RestartAPPCResponsePolicyRestartAPPCRequestPolicy templatestateName=FreestylePolicyGuardResponseState firstStateoutputName=RestartAPPCResponseState 310 GuardResponseOutput eventName=VCPEStateUpdatedEvent nextState=PermitOrDenyState 311301 policy state taskref create name=RestartAPPCResponsePolicy stateName=ResponseLogState triggerName=VCPEStateUpdatedEvent defaultTaskName=ControlLoopLogTask 312=RestartAPPCRequestPolicy stateName=PolicyGuardResponseState taskName=GuardResponseTask outputType=DIRECT outputName=GuardResponseOutput 302 303 policy state outputcontextref create name=RestartAPPCResponsePolicyRestartAPPCRequestPolicy stateName=ResponseLogStatePermitOrDenyState outputName=ResponseLogOutput eventName=ControlLoopLogEventalbumName=VCPEClosedLoopStatusAlbum 304 313305 policy state taskrefselecttasklogic create name=RestartAPPCResponsePolicyRestartAPPCRequestPolicy stateName=ResponseLogStatePermitOrDenyState taskNamelogicFlavour=ControlLoopLogTaskJAVASCRIPT outputType=DIRECT outputName=ResponseLogOutput 314 315 policy statelogic=LS 306 #MACROFILE:"src/main/resources/logic/RestartAPPCRequestPolicyPermitOrDenyTSL.js" 307 LE 308 309 policy create name=RestartAPPCResponsePolicy template=Freestyle stateNamefirstState=RestartAPPCResponseState triggerName=APPCRestartVNFResponseEvent defaultTaskName=APPCRestartVNFResponseTask310 316311 policy state output create name=RestartAPPCResponsePolicy stateName=RestartAPPCResponseState outputName=APPCRestartVNFResponseOutput eventNameResponseLogState triggerName=VCPEStateUpdatedEvent nextStatedefaultTaskName=ResponseLogStateControlLoopLogTask 317312 policy state taskrefoutput create name=RestartAPPCResponsePolicy stateName=RestartAPPCResponseStateResponseLogState taskNameoutputName=APPCRestartVNFResponseTask outputType=DIRECT outputName=APPCRestartVNFResponseOutput 318 319 validate 320 |
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 |
Logic Artifacts
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
Schema
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
Pdp-D Option
Operational Policy
A simple open loop operation policy to support the completeness of BBS control loop.
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:
|
language | text |
---|---|
firstline | 1 |
title | Nomadic ONT Apex Policy |
linenumbers | true |
collapse | true |
Schema
language | text |
---|---|
firstline | 1 |
title | Schema Aritifacts |
linenumbers | true |
collapse | true |
Pdp-D Option
Operational Policy
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
ontrolLoop:
version: 2.0.0
controlLoopName: ControlLoop-BBS-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... |
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.