Versions Compared

Key

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


Table of Contents
outlinetrue

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 and Re-registration Flow

Gliffy Diagram
nameBBS PNF Registration and Re-registration Notification
pagePin9

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

    1. 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

    1. The determination if this event is a registration or registration for starts or if the PNF has already registered with ONAP. 
    2.  If the ONT/PNF is re-registered,  a pnfUpdate event with pnf-id and PON UNI is produced by PRH onto DMAAP.

30) For the PNF re-registration, the UpdateServiceMSvc

      30.1) consumes pnfEvent from DMAAP,

      30.2) looks up the service-instance-id by the pnd-id (ont-SN) ,

      30.3) produces a Nomadic ONT event with service-instance-id and PON UNI, OLT (??) to50 DMAAP

40) Policy consumes the Nomadic ONT event and calls SDNC API  with input of the service-instance-id along with the new PON UNI/OLT, etc.

50) SDNC API conducts the service resource re-provisioning upon the ONT location change.

60) 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
languagetext
firstline1
titlepnfRegistration Event
linenumberstrue
collapsetrue
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:
		oltName: <OLT name>
		oltPONSlot: <OLT PON Slot>
		oltPONPort: <OLT PON Port>




















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
languagetext
firstline1
titlePNF Update Event
linenumberstrue
collapsetrue

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
languagetext
firstline1
titleDCAE Control Loop Event
linenumberstrue
collapsetrue
{
    "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_Event OUTPUT event from DMAAP and call the SDNC Rest API to take resource re-provisioning actions.

PDP-A Configuration (JSON)

Code Block
languagetext
firstline1
titleApexConfig.json
collapsetrue
{
      "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.

Code Block
languagetext
firstline1
titleNomadicONTPolicyModel.apex
linenumberstrue
collapsetrue
 #-------------------------------------------------------------------------------
 # ============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/APPCOutputBodyType.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=SDNCResourceUpdatenameSpace=org.onap.policy.apex.onap.bbs source=APEX target=SDNC
 
 event parameter create name=SDNCResourceUpdate parName=body                schemaName=APPCOutputBodyType
 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
 
 200 task create name=APPCRestartVNFRequestTask
 201 
 202 task inputfield create name=APPCRestartVNFRequestTask fieldName=requestID schemaName=UUIDType
 203 task inputfield create name=APPCRestartVNFRequestTask fieldName=vnfID     schemaName=UUIDType
 204 
 205 task outputfield create name=APPCRestartVNFRequestTask fieldName=body           schemaName=APPCInputBodyType
 206 task outputfield create name=APPCRestartVNFRequestTask fieldName=version        schemaName=SimpleStringType
 207 task outputfield create name=APPCRestartVNFRequestTask fieldName=rpc-name       schemaName=SimpleStringType
 208 task outputfield create name=APPCRestartVNFRequestTask fieldName=correlation-id schemaName=SimpleStringType
 209 task outputfield create name=APPCRestartVNFRequestTask fieldName=type           schemaName=SimpleStringType
 210 
 211 task contextref create name=APPCRestartVNFRequestTask albumName=VCPEClosedLoopStatusAlbum
 212 task contextref create name=APPCRestartVNFRequestTask albumName=RequestIDVNFIDAlbum
 213 
 214 task logic create name=APPCRestartVNFRequestTask logicFlavour=JAVASCRIPT logic=LS
 215 #MACROFILE:"src/main/resources/logic/APPCRestartVNFRequestTask.js"
 216 LE
 217 
 218 task create name=APPCRestartVNFResponseTask
 219 
 220 task inputfield create name=APPCRestartVNFResponseTask fieldName=body           schemaName=APPCOutputBodyType
 221 task inputfield create name=APPCRestartVNFResponseTask fieldName=version        schemaName=SimpleStringType
 222 task inputfield create name=APPCRestartVNFResponseTask fieldName=rpc-name       schemaName=SimpleStringType
 223 task inputfield create name=APPCRestartVNFResponseTask fieldName=correlation-id schemaName=SimpleStringType
 224 task inputfield create name=APPCRestartVNFResponseTask fieldName=type           schemaName=SimpleStringType
 225 
 226 task outputfield create name=APPCRestartVNFResponseTask fieldName=requestID schemaName=UUIDType
 227 task outputfield create name=APPCRestartVNFResponseTask fieldName=vnfID     schemaName=UUIDType
 228 
 229 task contextref create name=APPCRestartVNFResponseTask albumName=VCPEClosedLoopStatusAlbum
 230 task contextref create name=APPCRestartVNFResponseTask albumName=RequestIDVNFIDAlbum
 231 
 232 task logic create name=APPCRestartVNFResponseTask logicFlavour=JAVASCRIPT logic=LS
 233 #MACROFILE:"src/main/resources/logic/APPCRestartVNFResponseTask.js"
 234 LE
 235 
 236 task create name=ControlLoopLogTask
 237 
 238 task inputfield create name=ControlLoopLogTask fieldName=requestID schemaName=UUIDType
 239 task inputfield create name=ControlLoopLogTask fieldName=vnfID     schemaName=UUIDType
 240 
 241 task outputfield create name=ControlLoopLogTask fieldName=AAI                   schemaName=VCPEAAIInfoType
 242 task outputfield create name=ControlLoopLogTask fieldName=closedLoopControlName schemaName=SimpleStringType
 243 task outputfield create name=ControlLoopLogTask fieldName=closedLoopAlarmStart  schemaName=SimpleLongType
 244 task outputfield create name=ControlLoopLogTask fieldName=closedLoopAlarmEnd    schemaName=SimpleLongType   optional=true
 245 task outputfield create name=ControlLoopLogTask fieldName=closedLoopEventClient schemaName=SimpleStringType
 246 task outputfield create name=ControlLoopLogTask fieldName=closedLoopEventStatus schemaName=SimpleStringType
 247 task outputfield create name=ControlLoopLogTask fieldName=requestID             schemaName=SimpleStringType
 248 task outputfield create name=ControlLoopLogTask fieldName=version               schemaName=SimpleStringType
 249 task outputfield create name=ControlLoopLogTask fieldName=target_type           schemaName=SimpleStringType
 250 task outputfield create name=ControlLoopLogTask fieldName=target                schemaName=SimpleStringType
 251 task outputfield create name=ControlLoopLogTask fieldName=from                  schemaName=SimpleStringType
 252 task outputfield create name=ControlLoopLogTask fieldName=policyScope           schemaName=SimpleStringType
 253 task outputfield create name=ControlLoopLogTask fieldName=policyName            schemaName=SimpleStringType
 254 task outputfield create name=ControlLoopLogTask fieldName=policyVersion         schemaName=SimpleStringType
 255 task outputfield create name=ControlLoopLogTask fieldName=notification          schemaName=SimpleStringType
 256 task outputfield create name=ControlLoopLogTask fieldName=message               schemaName=SimpleStringType
 257 task outputfield create name=ControlLoopLogTask fieldName=notificationTime      schemaName=SimpleStringType
 258 
 259 task contextref create name=ControlLoopLogTask albumName=VCPEClosedLoopStatusAlbum
 260 
 261 task logic create name=ControlLoopLogTask logicFlavour=JAVASCRIPT logic=LS
 262 #MACROFILE:"src/main/resources/logic/ControlLoopLogTask.js"
 263 LE
 264 
 265 policy create name=ReceiveEventPolicy template=Freestyle firstState=GetVCPEState
 266 
 267 policy state create name=ReceiveEventPolicy stateName=AbatedState triggerName=VCPEStateUpdatedEvent defaultTaskName=ControlLoopLogTask
 268 policy state output create name=ReceiveEventPolicy stateName=AbatedState outputName=AbatedOutput eventName=ControlLoopLogEvent
 269 policy state taskref create name=ReceiveEventPolicy stateName=AbatedState taskName=ControlLoopLogTask outputType=DIRECT outputName=AbatedOutput
 270 
 271 policy state create name=ReceiveEventPolicy 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=ReceiveEventPolicy stateName=OnsetOrAbatedState taskName=GuardRequestTask outputType=DIRECT outputName=OnsetOutput
 274 policy state output create name=ReceiveEventPolicy stateName=OnsetOrAbatedState outputName=AbatedOutput eventName=VCPEStateUpdatedEvent nextState=AbatedState
 275 policy state taskref create name=ReceiveEventPolicy stateName=OnsetOrAbatedState taskName=AbatedTask outputType=DIRECT outputName=AbatedOutput
 276 
 277 policy state contextref create name=ReceiveEventPolicy stateName=OnsetOrAbatedState albumName=VCPEClosedLoopStatusAlbum
 278 
 279 policy state selecttasklogic create name=ReceiveEventPolicy stateName=OnsetOrAbatedState logicFlavour=JAVASCRIPT logic=LS
 280 #MACROFILE:"src/main/resources/logic/ReceiveEventPolicyOnsetOrAbatedStateTSL.js"
 281 LE
 282 
 283 policy state create name=ReceiveEventPolicy stateName=GetVCPEState triggerName=ControlLoop-vCPE-85317438-861d-42a9-979e-9d96dc0a9ef1 defaultTaskName=GetVCPEStateTask
 284 policy state output create name=ReceiveEventPolicy stateName=GetVCPEState outputName=GetVCPEStateOutput eventName=VCPEStateUpdatedEvent nextState=OnsetOrAbatedState
 285 policy state taskref create name=ReceiveEventPolicy stateName=GetVCPEState taskName=GetVCPEStateTask outputType=DIRECT outputName=GetVCPEStateOutput
 286 
 287 policy create name=RestartAPPCRequestPolicy template=Freestyle firstState=PolicyGuardResponseState
 288 
 289 policy state create name=RestartAPPCRequestPolicy stateName=DeniedState triggerName=VCPEStateUpdatedEvent defaultTaskName=ControlLoopLogTask
 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 
 293 policy state create name=RestartAPPCRequestPolicy stateName=PermitOrDenyState triggerName=VCPEStateUpdatedEvent defaultTaskName=DeniedTask
 294 policy state output create name=RestartAPPCRequestPolicy stateName=PermitOrDenyState outputName=PermitOutput eventName=APPCRestartVNFRequestEvent
 295 policy state taskref create name=RestartAPPCRequestPolicy stateName=PermitOrDenyState taskName=APPCRestartVNFRequestTask outputType=DIRECT outputName=PermitOutput
 296 policy state output create name=RestartAPPCRequestPolicy stateName=PermitOrDenyState outputName=DenyOutput eventName=VCPEStateUpdatedEvent nextState=DeniedState
 297 policy state taskref create name=RestartAPPCRequestPolicy stateName=PermitOrDenyState taskName=DeniedTask outputType=DIRECT outputName=DenyOutput
 298 
 299 policy state 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 



Logic Artifacts

Code Block
languagetext
firstline1
titleNomadic ONT Apex Policy
linenumberstrue
collapsetrue

Schema

Code Block
languagetext
firstline1
titleSchema Aritifacts
linenumberstrue
collapsetrue


Pdp-D Option

Operational Policy

Code Block
languagetext
firstline1
titleNomadic ONT Operation Policy
linenumberstrue
collapsetrue
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
languagetext
firstline1
titleSDNC API for BBS Nomadic ONT
linenumberstrue
collapsetrue


Design Time Artifacts

DCAE-DS

Micro-service Blueprints

Code Block
languagetext
firstline1
titleMS Blueprints
linenumberstrue
collapsetrue


CLAMP

Control Loop (Micro-service) Orchestration

There are basically 2 ways of CL creation and micro-service orchestration in BBS Nomadic ONT scenario.

  1.  Restconf collector + VES Mapper + PRH + Policy Engine
  2.  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.