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 and 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 for starts or if the PNF has already registered with ONAP.
- 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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
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_Event from DMAAP and call the SDNC Rest API to take resource re-provisioning actions.
PDP-A Configuration (JSON)
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.
Policy SchemaNomadicONT Policy Model (WIP)
This 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/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
83 event create name=APPCRestartVNFRequestEvent nameSpace=org.onap.policy.apex.onap.vcpe source=APEX target=APPC
84
85 event parameter create name=APPCRestartVNFRequestEvent parName=body schemaName=APPCInputBodyType
86 event parameter create name=APPCRestartVNFRequestEvent parName=version schemaName=SimpleStringType
87 event parameter create name=APPCRestartVNFRequestEvent parName=rpc-name schemaName=SimpleStringType
88 event parameter create name=APPCRestartVNFRequestEvent parName=correlation-id schemaName=SimpleStringType
89 event parameter create name=APPCRestartVNFRequestEvent parName=type schemaName=SimpleStringType
90
91 event create name=APPCRestartVNFResponseEvent nameSpace=org.onap.policy.apex.onap.vcpe source=APEX target=APPC
92
93 event parameter create name=APPCRestartVNFResponseEvent parName=body schemaName=APPCOutputBodyType
94 event parameter create name=APPCRestartVNFResponseEvent parName=version schemaName=SimpleStringType
95 event parameter create name=APPCRestartVNFResponseEvent parName=rpc-name schemaName=SimpleStringType
96 event parameter create name=APPCRestartVNFResponseEvent parName=correlation-id schemaName=SimpleStringType
97 event parameter create name=APPCRestartVNFResponseEvent parName=type schemaName=SimpleStringType
98
99 event create name=ControlLoopLogEvent nameSpace=org.onap.policy.apex.onap.vcpe source=APEX target=APEX
100
101 event parameter create name=ControlLoopLogEvent parName=AAI schemaName=VCPEAAIInfoType
102 event parameter create name=ControlLoopLogEvent parName=closedLoopControlName schemaName=SimpleStringType
103 event parameter create name=ControlLoopLogEvent parName=closedLoopAlarmStart schemaName=SimpleLongType
104 event parameter create name=ControlLoopLogEvent parName=closedLoopAlarmEnd schemaName=SimpleLongType optional=true
105 event parameter create name=ControlLoopLogEvent parName=closedLoopEventClient schemaName=SimpleStringType
106 event parameter create name=ControlLoopLogEvent parName=closedLoopEventStatus schemaName=SimpleStringType
107 event parameter create name=ControlLoopLogEvent parName=version schemaName=SimpleStringType
108 event parameter create name=ControlLoopLogEvent parName=requestID schemaName=SimpleStringType
109 event parameter create name=ControlLoopLogEvent parName=target_type schemaName=SimpleStringType
110 event parameter create name=ControlLoopLogEvent parName=target schemaName=SimpleStringType
111 event parameter create name=ControlLoopLogEvent parName=from schemaName=SimpleStringType
112 event parameter create name=ControlLoopLogEvent parName=policyScope schemaName=SimpleStringType
113 event parameter create name=ControlLoopLogEvent parName=policyName schemaName=SimpleStringType
114 event parameter create name=ControlLoopLogEvent parName=policyVersion schemaName=SimpleStringType
115 event parameter create name=ControlLoopLogEvent parName=notification schemaName=SimpleStringType
116 event parameter create name=ControlLoopLogEvent parName=message schemaName=SimpleStringType
117 event parameter create name=ControlLoopLogEvent parName=notificationTime schemaName=SimpleStringType
118
119 task create name=GetVCPEStateTask
120
121 task inputfield create name=GetVCPEStateTask fieldName=closedLoopControlName schemaName=SimpleStringType
122 task inputfield create name=GetVCPEStateTask fieldName=closedLoopAlarmStart schemaName=SimpleLongType
123 task inputfield create name=GetVCPEStateTask fieldName=closedLoopAlarmEnd schemaName=SimpleLongType optional=true
124 task inputfield create name=GetVCPEStateTask fieldName=closedLoopEventClient schemaName=SimpleStringType
125 task inputfield create name=GetVCPEStateTask fieldName=closedLoopEventStatus schemaName=SimpleStringType
126 task inputfield create name=GetVCPEStateTask fieldName=requestID schemaName=SimpleStringType
127 task inputfield create name=GetVCPEStateTask fieldName=target_type schemaName=SimpleStringType
128 task inputfield create name=GetVCPEStateTask fieldName=target schemaName=SimpleStringType
129 task inputfield create name=GetVCPEStateTask fieldName=from schemaName=SimpleStringType
130 task inputfield create name=GetVCPEStateTask fieldName=version schemaName=SimpleStringType
131 task inputfield create name=GetVCPEStateTask fieldName=AAI schemaName=VCPEAAIInfoType
132
133 task contextref create name=GetVCPEStateTask albumName=VCPEClosedLoopStatusAlbum
134
135 task outputfield create name=GetVCPEStateTask fieldName=requestID schemaName=UUIDType
136 task outputfield create name=GetVCPEStateTask fieldName=vnfID schemaName=UUIDType
137
138 task logic create name=GetVCPEStateTask logicFlavour=JAVASCRIPT logic=LS
139 #MACROFILE:"src/main/resources/logic/GetVCPEStateTask.js"
140 LE
141
142 task create name=AbatedTask
143
144 task inputfield create name=AbatedTask fieldName=requestID schemaName=UUIDType
145 task inputfield create name=AbatedTask fieldName=vnfID schemaName=UUIDType
146
147 task outputfield create name=AbatedTask fieldName=requestID schemaName=UUIDType
148 task outputfield create name=AbatedTask fieldName=vnfID schemaName=UUIDType
149
150 task contextref create name=AbatedTask albumName=VCPEClosedLoopStatusAlbum
151
152 task logic create name=AbatedTask logicFlavour=JAVASCRIPT logic=LS
153 #MACROFILE:"src/main/resources/logic/AbatedTask.js"
154 LE
155
156 task create name=GuardRequestTask
157
158 task inputfield create name=GuardRequestTask fieldName=requestID schemaName=UUIDType
159 task inputfield create name=GuardRequestTask fieldName=vnfID schemaName=UUIDType
160
161 task outputfield create name=GuardRequestTask fieldName=decisionAttributes schemaName=GuardDecisionAttributesType
162 task outputfield create name=GuardRequestTask fieldName=onapName schemaName=SimpleStringType
163
164 task contextref create name=GuardRequestTask albumName=VCPEClosedLoopStatusAlbum
165 task contextref create name=GuardRequestTask albumName=ControlLoopExecutionIDAlbum
166
167 task logic create name=GuardRequestTask logicFlavour=JAVASCRIPT logic=LS
168 #MACROFILE:"src/main/resources/logic/GuardRequestTask.js"
169 LE
170
171 task create name=GuardResponseTask
172
173 task inputfield create name=GuardResponseTask fieldName=decision schemaName=SimpleStringType
174 task inputfield create name=GuardResponseTask fieldName=details schemaName=SimpleStringType
175
176 task outputfield create name=GuardResponseTask fieldName=requestID schemaName=UUIDType
177 task outputfield create name=GuardResponseTask fieldName=vnfID schemaName=UUIDType
178
179 task contextref create name=GuardResponseTask albumName=VCPEClosedLoopStatusAlbum
180 task contextref create name=GuardResponseTask albumName=ControlLoopExecutionIDAlbum
181
182 task logic create name=GuardResponseTask logicFlavour=JAVASCRIPT logic=LS
183 #MACROFILE:"src/main/resources/logic/GuardResponseTask.js"
184 LE
185
186 task create name=DeniedTask
187
188 task inputfield create name=DeniedTask fieldName=requestID schemaName=UUIDType
189 task inputfield create name=DeniedTask fieldName=vnfID schemaName=UUIDType
190
191 task outputfield create name=DeniedTask fieldName=requestID schemaName=UUIDType
192 task outputfield create name=DeniedTask fieldName=vnfID schemaName=UUIDType
193
194 task contextref create name=DeniedTask albumName=VCPEClosedLoopStatusAlbum
195
196 task logic create name=DeniedTask logicFlavour=JAVASCRIPT logic=LS
197 #MACROFILE:"src/main/resources/logic/DeniedTask.js"
198 LE
199
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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
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.