4 "name": "PCVS-VpnSla_Policies",
11 "name": "CustomerContextPolicy",
16 "name": "CustomerContextPolicy",
19 "template": "FREEFORM",
23 "key": "CustomerContextState",
26 "parentKeyName": "CustomerContextPolicy",
27 "parentKeyVersion": "1.0.0",
28 "parentLocalName": "NULL",
29 "localName": "CustomerContextState"
32 "name": "CustomerContextEventIn",
38 "key": "CustomerContextState_Output_Direct",
41 "parentKeyName": "CustomerContextPolicy",
42 "parentKeyVersion": "1.0.0",
43 "parentLocalName": "CustomerContextState",
44 "localName": "CustomerContextState_Output_Direct"
50 "outgoingEventReference": [
57 "parentKeyName": "NULL",
58 "parentKeyVersion": "0.0.0",
59 "parentLocalName": "NULL",
66 "contextAlbumReference": [],
67 "taskSelectionLogic": {
69 "parentKeyName": "NULL",
70 "parentKeyVersion": "0.0.0",
71 "parentLocalName": "NULL",
74 "logicFlavour": "UNDEFINED",
77 "stateFinalizerLogicMap": {
81 "name": "CustomerContextTask",
88 "name": "CustomerContextTask",
93 "parentKeyName": "CustomerContextPolicy",
94 "parentKeyVersion": "1.0.0",
95 "parentLocalName": "CustomerContextState",
96 "localName": "doContext"
98 "outputType": "DIRECT",
100 "parentKeyName": "CustomerContextPolicy",
101 "parentKeyVersion": "1.0.0",
102 "parentLocalName": "CustomerContextState",
103 "localName": "CustomerContextState_Output_Direct"
113 "firstState": "CustomerContextState"
118 "name": "EdgeContextPolicy",
123 "name": "EdgeContextPolicy",
126 "template": "FREEFORM",
130 "key": "EdgeContextState",
133 "parentKeyName": "EdgeContextPolicy",
134 "parentKeyVersion": "1.0.0",
135 "parentLocalName": "NULL",
136 "localName": "EdgeContextState"
139 "name": "EdgeContextEventIn",
145 "key": "EdgeContextState_Output_Direct",
148 "parentKeyName": "EdgeContextPolicy",
149 "parentKeyVersion": "1.0.0",
150 "parentLocalName": "EdgeContextState",
151 "localName": "EdgeContextState_Output_Direct"
157 "outgoingEventReference": [
164 "parentKeyName": "NULL",
165 "parentKeyVersion": "0.0.0",
166 "parentLocalName": "NULL",
173 "contextAlbumReference": [],
174 "taskSelectionLogic": {
176 "parentKeyName": "NULL",
177 "parentKeyVersion": "0.0.0",
178 "parentLocalName": "NULL",
181 "logicFlavour": "UNDEFINED",
184 "stateFinalizerLogicMap": {
188 "name": "EdgeContextTask",
195 "name": "EdgeContextTask",
200 "parentKeyName": "EdgeContextPolicy",
201 "parentKeyVersion": "1.0.0",
202 "parentLocalName": "EdgeContextState",
203 "localName": "doContext"
205 "outputType": "DIRECT",
207 "parentKeyName": "EdgeContextPolicy",
208 "parentKeyVersion": "1.0.0",
209 "parentLocalName": "EdgeContextState",
210 "localName": "EdgeContextState_Output_Direct"
220 "firstState": "EdgeContextState"
225 "name": "NodeContextPolicy",
230 "name": "NodeContextPolicy",
233 "template": "FREEFORM",
237 "key": "NodeContextState",
240 "parentKeyName": "NodeContextPolicy",
241 "parentKeyVersion": "1.0.0",
242 "parentLocalName": "NULL",
243 "localName": "NodeContextState"
246 "name": "NodeContextEventIn",
252 "key": "NodeContextState_Output_Direct",
255 "parentKeyName": "NodeContextPolicy",
256 "parentKeyVersion": "1.0.0",
257 "parentLocalName": "NodeContextState",
258 "localName": "NodeContextState_Output_Direct"
264 "outgoingEventReference": [
271 "parentKeyName": "NULL",
272 "parentKeyVersion": "0.0.0",
273 "parentLocalName": "NULL",
280 "contextAlbumReference": [],
281 "taskSelectionLogic": {
283 "parentKeyName": "NULL",
284 "parentKeyVersion": "0.0.0",
285 "parentLocalName": "NULL",
288 "logicFlavour": "UNDEFINED",
291 "stateFinalizerLogicMap": {
295 "name": "NodeContextTask",
302 "name": "NodeContextTask",
307 "parentKeyName": "NodeContextPolicy",
308 "parentKeyVersion": "1.0.0",
309 "parentLocalName": "NodeContextState",
310 "localName": "doContext"
312 "outputType": "DIRECT",
314 "parentKeyName": "NodeContextPolicy",
315 "parentKeyVersion": "1.0.0",
316 "parentLocalName": "NodeContextState",
317 "localName": "NodeContextState_Output_Direct"
327 "firstState": "NodeContextState"
332 "name": "VpnSlaPolicy",
337 "name": "VpnSlaPolicy",
340 "template": "FREEFORM",
344 "key": "VpmSlaPolicyEstablishState",
347 "parentKeyName": "VpnSlaPolicy",
348 "parentKeyVersion": "1.0.0",
349 "parentLocalName": "NULL",
350 "localName": "VpmSlaPolicyEstablishState"
353 "name": "VpnSlaMatchOut",
359 "key": "VpnSlaPolicyEstablish_Output_Direct",
362 "parentKeyName": "VpnSlaPolicy",
363 "parentKeyVersion": "1.0.0",
364 "parentLocalName": "VpmSlaPolicyEstablishState",
365 "localName": "VpnSlaPolicyEstablish_Output_Direct"
368 "name": "VpnSlaEstablishOut",
371 "outgoingEventReference": [
373 "name": "VpnSlaEstablishOut",
378 "parentKeyName": "VpnSlaPolicy",
379 "parentKeyVersion": "1.0.0",
380 "parentLocalName": "NULL",
381 "localName": "VpnSlaPolicyDecideState"
387 "contextAlbumReference": [],
388 "taskSelectionLogic": {
390 "parentKeyName": "NULL",
391 "parentKeyVersion": "0.0.0",
392 "parentLocalName": "NULL",
395 "logicFlavour": "UNDEFINED",
398 "stateFinalizerLogicMap": {
402 "name": "VpnSlaPolicyEstablishTask",
409 "name": "VpnSlaPolicyEstablishTask",
414 "parentKeyName": "VpnSlaPolicy",
415 "parentKeyVersion": "1.0.0",
416 "parentLocalName": "VpmSlaPolicyEstablishState",
417 "localName": "establish"
419 "outputType": "DIRECT",
421 "parentKeyName": "VpnSlaPolicy",
422 "parentKeyVersion": "1.0.0",
423 "parentLocalName": "VpmSlaPolicyEstablishState",
424 "localName": "VpnSlaPolicyEstablish_Output_Direct"
433 "key": "VpnSlaPolicyActState",
436 "parentKeyName": "VpnSlaPolicy",
437 "parentKeyVersion": "1.0.0",
438 "parentLocalName": "NULL",
439 "localName": "VpnSlaPolicyActState"
442 "name": "VpnSlaDecideOut",
448 "key": "SlaPolicyAct_Output_Direct",
451 "parentKeyName": "VpnSlaPolicy",
452 "parentKeyVersion": "1.0.0",
453 "parentLocalName": "VpnSlaPolicyActState",
454 "localName": "SlaPolicyAct_Output_Direct"
457 "name": "VpnSlaActOut",
460 "outgoingEventReference": [
462 "name": "VpnSlaActOut",
467 "parentKeyName": "NULL",
468 "parentKeyVersion": "0.0.0",
469 "parentLocalName": "NULL",
476 "contextAlbumReference": [],
477 "taskSelectionLogic": {
479 "parentKeyName": "NULL",
480 "parentKeyVersion": "0.0.0",
481 "parentLocalName": "NULL",
484 "logicFlavour": "UNDEFINED",
487 "stateFinalizerLogicMap": {
491 "name": "VpnSlaPolicyActTask",
498 "name": "VpnSlaPolicyActTask",
503 "parentKeyName": "VpnSlaPolicy",
504 "parentKeyVersion": "1.0.0",
505 "parentLocalName": "VpnSlaPolicyActState",
508 "outputType": "DIRECT",
510 "parentKeyName": "VpnSlaPolicy",
511 "parentKeyVersion": "1.0.0",
512 "parentLocalName": "VpnSlaPolicyActState",
513 "localName": "SlaPolicyAct_Output_Direct"
522 "key": "VpnSlaPolicyDecideState",
525 "parentKeyName": "VpnSlaPolicy",
526 "parentKeyVersion": "1.0.0",
527 "parentLocalName": "NULL",
528 "localName": "VpnSlaPolicyDecideState"
531 "name": "VpnSlaEstablishOut",
537 "key": "VpnSlaPolicyDecide_Output_Direct",
540 "parentKeyName": "VpnSlaPolicy",
541 "parentKeyVersion": "1.0.0",
542 "parentLocalName": "VpnSlaPolicyDecideState",
543 "localName": "VpnSlaPolicyDecide_Output_Direct"
546 "name": "VpnSlaDecideOut",
549 "outgoingEventReference": [
551 "name": "VpnSlaDecideOut",
556 "parentKeyName": "VpnSlaPolicy",
557 "parentKeyVersion": "1.0.0",
558 "parentLocalName": "NULL",
559 "localName": "VpnSlaPolicyActState"
565 "contextAlbumReference": [
567 "name": "albumProblemMap",
571 "taskSelectionLogic": {
573 "parentKeyName": "VpnSlaPolicy",
574 "parentKeyVersion": "1.0.0",
575 "parentLocalName": "VpnSlaPolicyDecideState",
576 "localName": "TaskSelectionLogic"
578 "logicFlavour": "JAVASCRIPT",
579 "logic": "/*\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003dLICENSE_START\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Copyright (C) 2016-2018 Ericsson. All rights reserved.\n * Modifications Copyright (C) 2020 Nordix Foundation.\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003dLICENSE_END\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n */\n\nimportClass(org.slf4j.LoggerFactory);\n\nvar logger \u003d executor.logger;\nlogger.trace(\"start: \" + executor.subject.id + \" - TSL\");\n\nvar rootLogger \u003d LoggerFactory.getLogger(logger.ROOT_LOGGER_NAME);\n\nvar ifSituation \u003d executor.inFields[\"situation\"];\n\nvar albumProblemMap \u003d executor.getContextAlbum(\"albumProblemMap\");\n\nvar returnValue \u003d true;\nif (ifSituation.get(\"problemID\") \u003d\u003d \"NONE\") {\n logger.trace(\"-- situation has no problem, selecting \u003cVpnSlaPolicyDecideNoneTask\u003e\");\n executor.subject.getTaskKey(\"VpnSlaPolicyDecideNoneTask\").copyTo(executor.selectedTask);\n} else if (albumProblemMap.get(ifSituation.get(\"problemID\")).get(\"status\") \u003d\u003d \"SOLVED\") {\n logger.trace(\"-- situation is solved, selecting \u003cVpnSlaPolicyDecideSolvedTask\u003e\");\n executor.subject.getTaskKey(\"VpnSlaPolicyDecideSolvedTask\").copyTo(executor.selectedTask);\n} else if (ifSituation.get(\"violatedSLAs\") !\u003d null \u0026\u0026 ifSituation.get(\"violatedSLAs\").size() \u003e 0) {\n logger.trace(\"-- situation is problem with violations, selecting \u003cVpnSlaPolicyDecidePriorityTask\u003e\");\n executor.subject.getTaskKey(\"VpnSlaPolicyDecidePriorityTask\").copyTo(executor.selectedTask);\n} else if (ifSituation.get(\"violatedSLAs\") !\u003d null \u0026\u0026 ifSituation.get(\"violatedSLAs\").size() \u003d\u003d 0) {\n logger.trace(\"-- situation is problem without violations, selecting \u003cVpnSlaPolicyDecideSlaTask\u003e\");\n executor.subject.getTaskKey(\"VpnSlaPolicyDecideSlaTask\").copyTo(executor.selectedTask);\n} else {\n logger.error(\"-- detected unknown decision for situation \u003c\" + ifSituation.get(\"problemID\") + \"\u003e\");\n rootLogger.error(executor.subject.id + \" \" + \"-- detected unknown decision for situation \u003c\"\n + ifSituation.get(\"problemID\") + \"\u003e\");\n returnValue \u003d false;\n}\n\nlogger.trace(\"finished: \" + executor.subject.id);\nlogger.debug(\".d-tsl\");\n\nreturnValue;"
581 "stateFinalizerLogicMap": {
585 "name": "VpnSlaPolicyDecideSlaTask",
592 "name": "VpnSlaPolicyDecideNoneTask",
597 "parentKeyName": "VpnSlaPolicy",
598 "parentKeyVersion": "1.0.0",
599 "parentLocalName": "VpnSlaPolicyDecideState",
600 "localName": "decideNone"
602 "outputType": "DIRECT",
604 "parentKeyName": "VpnSlaPolicy",
605 "parentKeyVersion": "1.0.0",
606 "parentLocalName": "VpnSlaPolicyDecideState",
607 "localName": "VpnSlaPolicyDecide_Output_Direct"
613 "name": "VpnSlaPolicyDecidePriorityTask",
618 "parentKeyName": "VpnSlaPolicy",
619 "parentKeyVersion": "1.0.0",
620 "parentLocalName": "VpnSlaPolicyDecideState",
621 "localName": "decidePriority"
623 "outputType": "DIRECT",
625 "parentKeyName": "VpnSlaPolicy",
626 "parentKeyVersion": "1.0.0",
627 "parentLocalName": "VpnSlaPolicyDecideState",
628 "localName": "VpnSlaPolicyDecide_Output_Direct"
634 "name": "VpnSlaPolicyDecideSlaTask",
639 "parentKeyName": "VpnSlaPolicy",
640 "parentKeyVersion": "1.0.0",
641 "parentLocalName": "VpnSlaPolicyDecideState",
642 "localName": "decideSla"
644 "outputType": "DIRECT",
646 "parentKeyName": "VpnSlaPolicy",
647 "parentKeyVersion": "1.0.0",
648 "parentLocalName": "VpnSlaPolicyDecideState",
649 "localName": "VpnSlaPolicyDecide_Output_Direct"
655 "name": "VpnSlaPolicyDecideSolvedTask",
660 "parentKeyName": "VpnSlaPolicy",
661 "parentKeyVersion": "1.0.0",
662 "parentLocalName": "VpnSlaPolicyDecideState",
663 "localName": "decideNone"
665 "outputType": "DIRECT",
667 "parentKeyName": "VpnSlaPolicy",
668 "parentKeyVersion": "1.0.0",
669 "parentLocalName": "VpnSlaPolicyDecideState",
670 "localName": "VpnSlaPolicyDecide_Output_Direct"
679 "key": "VpnSlaPolicyMatchState",
682 "parentKeyName": "VpnSlaPolicy",
683 "parentKeyVersion": "1.0.0",
684 "parentLocalName": "NULL",
685 "localName": "VpnSlaPolicyMatchState"
688 "name": "VpnSlaTrigger",
694 "key": "VpnSlaPolicyMatch_Output_Direct",
697 "parentKeyName": "VpnSlaPolicy",
698 "parentKeyVersion": "1.0.0",
699 "parentLocalName": "VpnSlaPolicyMatchState",
700 "localName": "VpnSlaPolicyMatch_Output_Direct"
703 "name": "VpnSlaMatchOut",
706 "outgoingEventReference": [
708 "name": "VpnSlaMatchOut",
713 "parentKeyName": "VpnSlaPolicy",
714 "parentKeyVersion": "1.0.0",
715 "parentLocalName": "NULL",
716 "localName": "VpmSlaPolicyEstablishState"
722 "contextAlbumReference": [],
723 "taskSelectionLogic": {
725 "parentKeyName": "NULL",
726 "parentKeyVersion": "0.0.0",
727 "parentLocalName": "NULL",
730 "logicFlavour": "UNDEFINED",
733 "stateFinalizerLogicMap": {
737 "name": "VpnSlaPolicyMatchTask",
744 "name": "VpnSlaPolicyMatchTask",
749 "parentKeyName": "VpnSlaPolicy",
750 "parentKeyVersion": "1.0.0",
751 "parentLocalName": "VpnSlaPolicyMatchState",
754 "outputType": "DIRECT",
756 "parentKeyName": "VpnSlaPolicy",
757 "parentKeyVersion": "1.0.0",
758 "parentLocalName": "VpnSlaPolicyMatchState",
759 "localName": "VpnSlaPolicyMatch_Output_Direct"
769 "firstState": "VpnSlaPolicyMatchState"
777 "name": "PCVS-VpnSla_Tasks",
784 "name": "CustomerContextTask",
789 "name": "CustomerContextTask",
794 "name": "CustomerContextEventIn",
797 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
798 "source": "CtxtManagement",
803 "key": "customerName",
806 "parentKeyName": "CustomerContextEventIn",
807 "parentKeyVersion": "1.0.0",
808 "parentLocalName": "NULL",
809 "localName": "customerName"
812 "name": "ctxtCustomerNameDecl",
822 "parentKeyName": "CustomerContextEventIn",
823 "parentKeyVersion": "1.0.0",
824 "parentLocalName": "NULL",
828 "name": "ctxtCustomerDowntimeSLADecl",
838 "parentKeyName": "CustomerContextEventIn",
839 "parentKeyVersion": "1.0.0",
840 "parentLocalName": "NULL",
844 "name": "ctxtCustomerDowntimeYTDDecl",
854 "parentKeyName": "CustomerContextEventIn",
855 "parentKeyVersion": "1.0.0",
856 "parentLocalName": "NULL",
860 "name": "ctxtCustomerLinksDecl",
870 "parentKeyName": "CustomerContextEventIn",
871 "parentKeyVersion": "1.0.0",
872 "parentLocalName": "NULL",
873 "localName": "priority"
876 "name": "ctxtCustomerPriorityDecl",
883 "key": "satisfaction",
886 "parentKeyName": "CustomerContextEventIn",
887 "parentKeyVersion": "1.0.0",
888 "parentLocalName": "NULL",
889 "localName": "satisfaction"
892 "name": "ctxtCustomerSatisfactionDecl",
900 "toscaPolicyState": ""
911 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
913 "target": "CtxtManagement",
920 "parentKeyName": "ReportOut",
921 "parentKeyVersion": "1.0.0",
922 "parentLocalName": "NULL",
923 "localName": "report"
926 "name": "reportDecl",
934 "toscaPolicyState": ""
942 "contextAlbumReference": [
944 "name": "albumCustomerMap",
948 "name": "albumTopoEdges",
954 "parentKeyName": "CustomerContextTask",
955 "parentKeyVersion": "1.0.0",
956 "parentLocalName": "NULL",
957 "localName": "TaskLogic"
959 "logicFlavour": "JAVASCRIPT",
960 "logic": "/*\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003dLICENSE_START\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Copyright (C) 2016-2018 Ericsson. All rights reserved.\n * Modifications Copyright (C) 2020 Nordix Foundation.\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003dLICENSE_END\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n */\n\nvar logger \u003d executor.logger;\nlogger.trace(\"start: \" + executor.subject.id);\nlogger.trace(\"-- infields: \" + executor.inFields);\n\nvar ifCustomerName \u003d executor.inFields[\"customerName\"];\nvar ifLinks \u003d executor.inFields[\"links\"];\n\nlogger.trace(\"-- got infields, testing existing customer\");\nvar ctxtCustomer \u003d executor.getContextAlbum(\"albumCustomerMap\").get(ifCustomerName);\nif (ctxtCustomer !\u003d null) {\n executor.getContextAlbum(\"albumCustomerMap\").remove(ifCustomerName);\n logger.trace(\"-- removed customer: \u003c\" + ifCustomerName + \"\u003e\");\n}\n\nlogger.trace(\"-- creating customer: \u003c\" + ifCustomerName + \"\u003e\");\nvar links \u003d new Array();\nfor (var i \u003d 0; i \u003c ifLinks.split(\" \").length; i++) {\n var link \u003d executor.getContextAlbum(\"albumTopoEdges\").get(ifLinks.split(\" \")[i]);\n if (link !\u003d null) {\n logger.trace(\"-- link: \u003c\" + ifLinks.split(\" \")[i] + \"\u003e\");\n links.push(ifLinks.split(\" \")[i]);\n } else {\n logger.trace(\"-- unknown link: \u003c\" + ifLinks.split(\" \")[i] + \"\u003e for customer \u003c\" + ifCustomerName + \"\u003e\");\n }\n}\nlogger.trace(\"-- links: \u003c\" + links + \"\u003e\");\nctxtCustomer \u003d \"{customerName:\" + ifCustomerName + \", dtSLA:\" + executor.inFields[\"dtSLA\"] + \", dtYTD:\"\n + executor.inFields[\"dtYTD\"] + \", priority:\" + executor.inFields[\"priority\"] + \", satisfaction:\"\n + executor.inFields[\"satisfaction\"] + \", links:[\" + links + \"]}\";\n\nexecutor.getContextAlbum(\"albumCustomerMap\").put(ifCustomerName, ctxtCustomer);\n\nif (logger.isTraceEnabled()) {\n logger.trace(\" \u003e\u003e *** Customers ***\");\n if (executor.getContextAlbum(\"albumCustomerMap\") !\u003d null) {\n for (var i \u003d 0; i \u003c executor.getContextAlbum(\"albumCustomerMap\").values().size(); i++) {\n logger.trace(\" \u003e\u003e \u003e\u003e \" + executor.getContextAlbum(\"albumCustomerMap\").values().get(i).get(\"customerName\")\n + \" : \" + \"dtSLA\u003d\" + executor.getContextAlbum(\"albumCustomerMap\").values().get(i).get(\"dtSLA\")\n + \" : \" + \"dtYTD\u003d\" + executor.getContextAlbum(\"albumCustomerMap\").values().get(i).get(\"dtYTD\")\n + \" : \" + \"links\u003d\" + executor.getContextAlbum(\"albumCustomerMap\").values().get(i).get(\"links\")\n + \" : \" + \"priority\u003d\"\n + executor.getContextAlbum(\"albumCustomerMap\").values().get(i).get(\"priority\") + \" : \"\n + \"satisfaction\u003d\"\n + executor.getContextAlbum(\"albumCustomerMap\").values().get(i).get(\"satisfaction\"));\n }\n } else {\n logger.trace(\" \u003e\u003e \u003e\u003e customer album is null\");\n }\n}\n\nexecutor.outFields[\"report\"] \u003d \"customer ctxt :: added customer: \" + ifCustomerName;\n\nlogger.info(\"vpnsla: ctxt added customer \" + ifCustomerName);\n\nlogger.trace(\"finished: \" + executor.subject.id);\nlogger.debug(\".\");\n\ntrue;"
966 "name": "EdgeContextTask",
971 "name": "EdgeContextTask",
976 "name": "EdgeContextEventIn",
979 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
980 "source": "CtxtManagement",
988 "parentKeyName": "EdgeContextEventIn",
989 "parentKeyVersion": "1.0.0",
990 "parentLocalName": "NULL",
991 "localName": "edgeName"
994 "name": "ctxtEdgeNameDecl",
1004 "parentKeyName": "EdgeContextEventIn",
1005 "parentKeyVersion": "1.0.0",
1006 "parentLocalName": "NULL",
1010 "name": "ctxtEdgeEndDecl",
1020 "parentKeyName": "EdgeContextEventIn",
1021 "parentKeyVersion": "1.0.0",
1022 "parentLocalName": "NULL",
1023 "localName": "start"
1026 "name": "ctxtEdgeStartDecl",
1036 "parentKeyName": "EdgeContextEventIn",
1037 "parentKeyVersion": "1.0.0",
1038 "parentLocalName": "NULL",
1039 "localName": "status"
1042 "name": "ctxtEdgeStatusDecl",
1050 "toscaPolicyState": ""
1058 "name": "ReportOut",
1061 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
1063 "target": "CtxtManagement",
1070 "parentKeyName": "ReportOut",
1071 "parentKeyVersion": "1.0.0",
1072 "parentLocalName": "NULL",
1073 "localName": "report"
1076 "name": "reportDecl",
1084 "toscaPolicyState": ""
1092 "contextAlbumReference": [
1094 "name": "albumTopoEdges",
1100 "parentKeyName": "EdgeContextTask",
1101 "parentKeyVersion": "1.0.0",
1102 "parentLocalName": "NULL",
1103 "localName": "TaskLogic"
1105 "logicFlavour": "JAVASCRIPT",
1106 "logic": "/*\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003dLICENSE_START\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Copyright (C) 2016-2018 Ericsson. All rights reserved.\n * Modifications Copyright (C) 2020 Nordix Foundation.\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003dLICENSE_END\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n */\n\nvar logger \u003d executor.logger;\nlogger.trace(\"start: \" + executor.subject.id);\nlogger.trace(\"-- infields: \" + executor.inFields);\n\nvar ifEdgeName \u003d executor.inFields[\"edgeName\"];\nvar ifEdgeStatus \u003d executor.inFields[\"status\"];\n\nvar albumTopoEdges \u003d executor.getContextAlbum(\"albumTopoEdges\");\n\nlogger.trace(\"-- got infields, testing existing edge\");\n\nvar ctxtEdge \u003d albumTopoEdges.get(ifEdgeName);\nif (ctxtEdge !\u003d null) {\n albumTopoEdges.remove(ifEdgeName);\n logger.trace(\"-- removed edge: \u003c\" + ifEdgeName + \"\u003e\");\n}\n\nlogger.trace(\"-- creating edge: \u003c\" + ifEdgeName + \"\u003e\");\nctxtEdge \u003d \"{name:\" + ifEdgeName + \", start:\" + executor.inFields[\"start\"] + \", end:\" + executor.inFields[\"end\"]\n + \", active:\" + ifEdgeStatus + \"}\";\nalbumTopoEdges.put(ifEdgeName, ctxtEdge);\n\nif (logger.isTraceEnabled()) {\n logger.trace(\" \u003e\u003e *** Edges ***\");\n if (albumTopoEdges !\u003d null) {\n for (var i \u003d 0; i \u003c albumTopoEdges.values().size(); i++) {\n logger.trace(\" \u003e\u003e \u003e\u003e \" + albumTopoEdges.values().get(i).get(\"name\") + \" \\t \"\n + albumTopoEdges.values().get(i).get(\"start\") + \" --\u003e \" + albumTopoEdges.values().get(i).get(\"end\")\n + \" \\t \" + albumTopoEdges.values().get(i).get(\"active\"));\n }\n } else {\n logger.trace(\" \u003e\u003e \u003e\u003e edge album is null\");\n }\n}\n\nexecutor.outFields[\"report\"] \u003d \"edge ctxt :: added edge \" + ifEdgeName;\n\nlogger.info(\"vpnsla: ctxt added edge \" + ifEdgeName);\n\nlogger.trace(\"finished: \" + executor.subject.id);\nlogger.debug(\".\");\n\ntrue;"
1112 "name": "NodeContextTask",
1117 "name": "NodeContextTask",
1122 "name": "NodeContextEventIn",
1125 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
1126 "source": "CtxtManagement",
1131 "key": "mininetName",
1134 "parentKeyName": "NodeContextEventIn",
1135 "parentKeyVersion": "1.0.0",
1136 "parentLocalName": "NULL",
1137 "localName": "mininetName"
1140 "name": "ctxtNodeMininetNameDecl",
1150 "parentKeyName": "NodeContextEventIn",
1151 "parentKeyVersion": "1.0.0",
1152 "parentLocalName": "NULL",
1153 "localName": "nodeName"
1156 "name": "ctxtNodeNameDecl",
1164 "toscaPolicyState": ""
1172 "name": "ReportOut",
1175 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
1177 "target": "CtxtManagement",
1184 "parentKeyName": "ReportOut",
1185 "parentKeyVersion": "1.0.0",
1186 "parentLocalName": "NULL",
1187 "localName": "report"
1190 "name": "reportDecl",
1198 "toscaPolicyState": ""
1206 "contextAlbumReference": [
1208 "name": "albumTopoNodes",
1214 "parentKeyName": "NodeContextTask",
1215 "parentKeyVersion": "1.0.0",
1216 "parentLocalName": "NULL",
1217 "localName": "TaskLogic"
1219 "logicFlavour": "JAVASCRIPT",
1220 "logic": "/*\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003dLICENSE_START\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Copyright (C) 2016-2018 Ericsson. All rights reserved.\n * Modifications Copyright (C) 2020 Nordix Foundation.\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003dLICENSE_END\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n */\n\nvar logger \u003d executor.logger;\nlogger.trace(\"start: \" + executor.subject.id);\nlogger.trace(\"-- infields: \" + executor.inFields);\n\nvar ifNodeName \u003d executor.inFields[\"nodeName\"];\nvar ifMininetName \u003d executor.inFields[\"mininetName\"];\n\nvar albumTopoNodes \u003d executor.getContextAlbum(\"albumTopoNodes\");\n\nlogger.trace(\"-- got infields, testing existing node\");\n\nvar ctxtNode \u003d albumTopoNodes.get(ifNodeName);\nif (ctxtNode !\u003d null) {\n albumTopoNodes.remove(ifNodeName);\n logger.trace(\"-- removed node: \u003c\" + ifNodeName + \"\u003e\");\n}\n\nlogger.trace(\"-- creating node: \u003c\" + ifNodeName + \"\u003e\");\nctxtNode \u003d \"{name:\" + ifNodeName + \", mnname:\" + ifMininetName + \"}\";\nalbumTopoNodes.put(ifNodeName, ctxtNode);\n\nif (logger.isTraceEnabled()) {\n logger.trace(\" \u003e\u003e *** Nodes ***\");\n if (albumTopoNodes !\u003d null) {\n for (var i \u003d 0; i \u003c albumTopoNodes.values().size(); i++) {\n logger.trace(\" \u003e\u003e \u003e\u003e \" + albumTopoNodes.values().get(i).get(\"name\") + \" : \"\n + albumTopoNodes.values().get(i).get(\"mnname\"));\n }\n } else {\n logger.trace(\" \u003e\u003e \u003e\u003e node album is null\");\n }\n}\n\nexecutor.outFields[\"report\"] \u003d \"node ctxt :: added node \" + ifNodeName;\n\nlogger.info(\"vpnsla: ctxt added node \" + ifNodeName);\n\nlogger.trace(\"finished: \" + executor.subject.id);\nlogger.debug(\".\");\n\ntrue;"
1226 "name": "VpnSlaPolicyActTask",
1231 "name": "VpnSlaPolicyActTask",
1236 "name": "VpnSlaDecideOut",
1239 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
1240 "source": "SlaDecide",
1248 "parentKeyName": "VpnSlaDecideOut",
1249 "parentKeyVersion": "1.0.0",
1250 "parentLocalName": "NULL",
1251 "localName": "decision"
1254 "name": "decideDecisionDecl",
1261 "key": "matchStart",
1264 "parentKeyName": "VpnSlaDecideOut",
1265 "parentKeyVersion": "1.0.0",
1266 "parentLocalName": "NULL",
1267 "localName": "matchStart"
1270 "name": "timestampDecl",
1278 "toscaPolicyState": ""
1283 "key": "VpnSlaActOut",
1286 "name": "VpnSlaActOut",
1289 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
1291 "target": "ActioningSystem",
1298 "parentKeyName": "VpnSlaActOut",
1299 "parentKeyVersion": "1.0.0",
1300 "parentLocalName": "NULL",
1301 "localName": "action"
1304 "name": "actionDecl",
1314 "parentKeyName": "VpnSlaActOut",
1315 "parentKeyVersion": "1.0.0",
1316 "parentLocalName": "NULL",
1317 "localName": "edgeName"
1320 "name": "edgeNameDecl",
1328 "toscaPolicyState": ""
1336 "contextAlbumReference": [
1338 "name": "albumCustomerMap",
1342 "name": "albumProblemMap",
1348 "parentKeyName": "VpnSlaPolicyActTask",
1349 "parentKeyVersion": "1.0.0",
1350 "parentLocalName": "NULL",
1351 "localName": "TaskLogic"
1353 "logicFlavour": "JAVASCRIPT",
1354 "logic": "/*\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003dLICENSE_START\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Copyright (C) 2016-2018 Ericsson. All rights reserved.\n * Modifications Copyright (C) 2020 Nordix Foundation.\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003dLICENSE_END\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n */\n\nvar logger \u003d executor.logger;\nlogger.trace(\"start: \" + executor.subject.id);\nlogger.trace(\"-- infields: \" + executor.inFields);\n\nvar ifDecision \u003d executor.inFields[\"decision\"];\nvar ifMatchStart \u003d executor.inFields[\"matchStart\"];\n\nvar albumCustomerMap \u003d executor.getContextAlbum(\"albumCustomerMap\");\nvar albumProblemMap \u003d executor.getContextAlbum(\"albumProblemMap\");\n\nswitch (ifDecision.get(\"decision\").toString()) {\ncase \"NONE\":\n executor.outFields[\"edgeName\"] \u003d \"\";\n executor.outFields[\"action\"] \u003d \"\";\n break;\ncase \"IMPEDE\":\n for (var i \u003d 0; i \u003c ifDecision.get(\"customers\").size(); i++) {\n customer \u003d albumCustomerMap.get(ifDecision.get(\"customers\").get(i).toString());\n executor.outFields[\"edgeName\"] \u003d customer.get(\"links\").get(0);\n executor.outFields[\"action\"] \u003d \"firewall\";\n }\n break;\ncase \"REBUILD\":\n // finally solved, remove problem\n albumProblemMap.remove(ifDecision.get(\"problemID\"));\n executor.outFields[\"edgeName\"] \u003d \"L10\"; // this is ###static###\n executor.outFields[\"action\"] \u003d \"rebuild\"; // this is ###static###\n break;\ndefault:\n\n}\n\nif (executor.outFields[\"action\"] !\u003d \"\") {\n logger.info(\"vpnsla: action is to \" + executor.outFields[\"action\"] + \" \" + executor.outFields[\"edgeName\"]);\n} else {\n logger.info(\"vpnsla: no action required\");\n}\n\nlogger.trace(\"-- outfields: \" + executor.outFields);\nlogger.trace(\"finished: \" + executor.subject.id);\nlogger.debug(\".a\");\n\nvar now \u003d new Date().getTime();\nlogger.info(\"VPN SLA finished in \" + (now - ifMatchStart) + \" ms\");\n\ntrue;"
1360 "name": "VpnSlaPolicyDecideNoneTask",
1365 "name": "VpnSlaPolicyDecideNoneTask",
1370 "name": "VpnSlaEstablishOut",
1373 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
1374 "source": "SlaEstablish",
1375 "target": "SlaDecide",
1379 "key": "matchStart",
1382 "parentKeyName": "VpnSlaEstablishOut",
1383 "parentKeyVersion": "1.0.0",
1384 "parentLocalName": "NULL",
1385 "localName": "matchStart"
1388 "name": "timestampDecl",
1398 "parentKeyName": "VpnSlaEstablishOut",
1399 "parentKeyVersion": "1.0.0",
1400 "parentLocalName": "NULL",
1401 "localName": "situation"
1404 "name": "establishSituationDecl",
1412 "toscaPolicyState": ""
1417 "key": "VpnSlaDecideOut",
1420 "name": "VpnSlaDecideOut",
1423 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
1424 "source": "SlaDecide",
1432 "parentKeyName": "VpnSlaDecideOut",
1433 "parentKeyVersion": "1.0.0",
1434 "parentLocalName": "NULL",
1435 "localName": "decision"
1438 "name": "decideDecisionDecl",
1445 "key": "matchStart",
1448 "parentKeyName": "VpnSlaDecideOut",
1449 "parentKeyVersion": "1.0.0",
1450 "parentLocalName": "NULL",
1451 "localName": "matchStart"
1454 "name": "timestampDecl",
1462 "toscaPolicyState": ""
1470 "contextAlbumReference": [],
1473 "parentKeyName": "VpnSlaPolicyDecideNoneTask",
1474 "parentKeyVersion": "1.0.0",
1475 "parentLocalName": "NULL",
1476 "localName": "TaskLogic"
1478 "logicFlavour": "JAVASCRIPT",
1479 "logic": "/*\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003dLICENSE_START\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Copyright (C) 2016-2018 Ericsson. All rights reserved.\n * Modifications Copyright (C) 2020 Nordix Foundation.\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003dLICENSE_END\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n */\n\nimportClass(org.slf4j.LoggerFactory);\n\nimportClass(java.util.ArrayList);\n\nimportClass(org.apache.avro.generic.GenericData.Array);\nimportClass(org.apache.avro.generic.GenericRecord);\nimportClass(org.apache.avro.Schema);\n\nvar logger \u003d executor.logger;\nlogger.trace(\"start: \" + executor.subject.id);\nlogger.trace(\"-- infields: \" + executor.inFields);\n\nvar rootLogger \u003d LoggerFactory.getLogger(logger.ROOT_LOGGER_NAME);\n\nvar ifSituation \u003d executor.inFields[\"situation\"];\n\n// create outfiled for decision\nvar decision \u003d executor.subject.getOutFieldSchemaHelper(\"decision\").createNewInstance();\ndecision.put(\"description\", \"None, everything is ok\");\ndecision.put(\"decision\", \"NONE\");\ndecision.put(\"customers\", new ArrayList());\n\nvar returnValue \u003d true;\nif (ifSituation.get(\"problemID\") \u003d\u003d \"NONE\") {\n logger.trace(\"-- no problem, everything ok\");\n} else {\n logger.trace(\"-- wrong problemID \u003c\" + problemID + \"\u003e for NONE task, we should not be here\");\n rootLogger.error(executor.subject.id + \" \" + \"-- wrong problemID \u003c\" + problemID\n + \"\u003e for NONE task, we should not be here\");\n returnValue \u003d false;\n}\n\nexecutor.outFields[\"decision\"] \u003d decision;\n\nlogger.trace(\"finished: \" + executor.subject.id);\nlogger.debug(\".d-non\");\n\nreturnValue;"
1485 "name": "VpnSlaPolicyDecidePriorityTask",
1490 "name": "VpnSlaPolicyDecidePriorityTask",
1495 "name": "VpnSlaEstablishOut",
1498 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
1499 "source": "SlaEstablish",
1500 "target": "SlaDecide",
1504 "key": "matchStart",
1507 "parentKeyName": "VpnSlaEstablishOut",
1508 "parentKeyVersion": "1.0.0",
1509 "parentLocalName": "NULL",
1510 "localName": "matchStart"
1513 "name": "timestampDecl",
1523 "parentKeyName": "VpnSlaEstablishOut",
1524 "parentKeyVersion": "1.0.0",
1525 "parentLocalName": "NULL",
1526 "localName": "situation"
1529 "name": "establishSituationDecl",
1537 "toscaPolicyState": ""
1542 "key": "VpnSlaDecideOut",
1545 "name": "VpnSlaDecideOut",
1548 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
1549 "source": "SlaDecide",
1557 "parentKeyName": "VpnSlaDecideOut",
1558 "parentKeyVersion": "1.0.0",
1559 "parentLocalName": "NULL",
1560 "localName": "decision"
1563 "name": "decideDecisionDecl",
1570 "key": "matchStart",
1573 "parentKeyName": "VpnSlaDecideOut",
1574 "parentKeyVersion": "1.0.0",
1575 "parentLocalName": "NULL",
1576 "localName": "matchStart"
1579 "name": "timestampDecl",
1587 "toscaPolicyState": ""
1595 "contextAlbumReference": [
1597 "name": "albumCustomerMap",
1601 "name": "albumProblemMap",
1607 "parentKeyName": "VpnSlaPolicyDecidePriorityTask",
1608 "parentKeyVersion": "1.0.0",
1609 "parentLocalName": "NULL",
1610 "localName": "TaskLogic"
1612 "logicFlavour": "JAVASCRIPT",
1613 "logic": "/*\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003dLICENSE_START\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Copyright (C) 2016-2018 Ericsson. All rights reserved.\n * Modifications Copyright (C) 2020 Nordix Foundation.\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003dLICENSE_END\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n */\n\nimportClass(org.slf4j.LoggerFactory);\n\nimportClass(java.util.ArrayList);\n\nimportClass(org.apache.avro.generic.GenericData.Array);\nimportClass(org.apache.avro.generic.GenericRecord);\nimportClass(org.apache.avro.Schema);\n\nvar logger \u003d executor.logger;\nlogger.trace(\"start: \" + executor.subject.id);\nlogger.trace(\"-- infields: \" + executor.inFields);\n\nvar rootLogger \u003d LoggerFactory.getLogger(logger.ROOT_LOGGER_NAME);\n\nvar ifSituation \u003d executor.inFields[\"situation\"];\n\nvar albumCustomerMap \u003d executor.getContextAlbum(\"albumCustomerMap\");\nvar albumProblemMap \u003d executor.getContextAlbum(\"albumProblemMap\");\n\n// create outfiled for decision\nvar decision \u003d executor.subject.getOutFieldSchemaHelper(\"decision\").createNewInstance();\ndecision.put(\"description\", \"None, everything is ok\");\ndecision.put(\"decision\", \"IMPEDE\");\ndecision.put(\"problemID\", ifSituation.get(\"problemID\"));\ndecision.put(\"customers\", new ArrayList());\n\nvar problem \u003d albumProblemMap.get(ifSituation.get(\"problemID\"));\nvar returnValue \u003d true;\nif (problem !\u003d null \u0026\u0026 ifSituation.get(\"violatedSLAs\").size() \u003e 0) {\n logger.trace(\"-- impede by priority\");\n for (var i \u003d 0; i \u003c problem.get(\"edgeUsedBy\").size(); i++) {\n customerCtxt \u003d albumCustomerMap.get(problem.get(\"edgeUsedBy\").get(i).toString());\n if (customerCtxt.get(\"priority\") \u003d\u003d false) {\n decision.get(\"customers\").add(customerCtxt.get(\"customerName\"));\n }\n }\n} else {\n logger.trace(\"-- wrong problemID \u003c\" + ifSituation.get(\"problemID\") + \"\u003e for PRIORITY task, we should not be here\");\n rootLogger.error(executor.subject.id + \" \" + \"-- wrong problemID \u003c\" + ifSituation.get(\"problemID\")\n + \"\u003e for PRIORITY task, we should not be here\");\n returnValue \u003d false;\n}\n\n// set impededLast to decision[customers]\nproblem.get(\"impededLast\").clear();\nproblem.get(\"impededLast\").addAll(decision.get(\"customers\"));\n\nexecutor.outFields[\"decision\"] \u003d decision;\nlogger.trace(\"-- decision: \" + decision);\n\nlogger.info(\"vpnsla: priority, impeding customers \" + decision.get(\"customers\"));\n\nlogger.trace(\"finished: \" + executor.subject.id);\nlogger.debug(\".d-pri\");\n\nreturnValue;"
1619 "name": "VpnSlaPolicyDecideSlaTask",
1624 "name": "VpnSlaPolicyDecideSlaTask",
1629 "name": "VpnSlaEstablishOut",
1632 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
1633 "source": "SlaEstablish",
1634 "target": "SlaDecide",
1638 "key": "matchStart",
1641 "parentKeyName": "VpnSlaEstablishOut",
1642 "parentKeyVersion": "1.0.0",
1643 "parentLocalName": "NULL",
1644 "localName": "matchStart"
1647 "name": "timestampDecl",
1657 "parentKeyName": "VpnSlaEstablishOut",
1658 "parentKeyVersion": "1.0.0",
1659 "parentLocalName": "NULL",
1660 "localName": "situation"
1663 "name": "establishSituationDecl",
1671 "toscaPolicyState": ""
1676 "key": "VpnSlaDecideOut",
1679 "name": "VpnSlaDecideOut",
1682 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
1683 "source": "SlaDecide",
1691 "parentKeyName": "VpnSlaDecideOut",
1692 "parentKeyVersion": "1.0.0",
1693 "parentLocalName": "NULL",
1694 "localName": "decision"
1697 "name": "decideDecisionDecl",
1704 "key": "matchStart",
1707 "parentKeyName": "VpnSlaDecideOut",
1708 "parentKeyVersion": "1.0.0",
1709 "parentLocalName": "NULL",
1710 "localName": "matchStart"
1713 "name": "timestampDecl",
1721 "toscaPolicyState": ""
1729 "contextAlbumReference": [
1731 "name": "albumCustomerMap",
1735 "name": "albumProblemMap",
1741 "parentKeyName": "VpnSlaPolicyDecideSlaTask",
1742 "parentKeyVersion": "1.0.0",
1743 "parentLocalName": "NULL",
1744 "localName": "TaskLogic"
1746 "logicFlavour": "JAVASCRIPT",
1747 "logic": "/*\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003dLICENSE_START\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Copyright (C) 2016-2018 Ericsson. All rights reserved.\n * Modifications Copyright (C) 2020 Nordix Foundation.\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003dLICENSE_END\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n */\n\nimportClass(org.slf4j.LoggerFactory);\n\nimportClass(java.util.ArrayList);\n\nimportClass(org.apache.avro.generic.GenericData.Array);\nimportClass(org.apache.avro.generic.GenericRecord);\nimportClass(org.apache.avro.Schema);\n\nvar logger \u003d executor.logger;\nlogger.trace(\"start: \" + executor.subject.id);\nlogger.trace(\"-- infields: \" + executor.inFields);\n\nvar rootLogger \u003d LoggerFactory.getLogger(logger.ROOT_LOGGER_NAME);\n\nvar ifSituation \u003d executor.inFields[\"situation\"];\n\nvar albumCustomerMap \u003d executor.getContextAlbum(\"albumCustomerMap\");\nvar albumProblemMap \u003d executor.getContextAlbum(\"albumProblemMap\");\n\n// create outfiled for decision\nvar decision \u003d executor.subject.getOutFieldSchemaHelper(\"decision\").createNewInstance();\ndecision.put(\"description\", \"Impede given customers selected based on maximum SLA delta\");\ndecision.put(\"decision\", \"IMPEDE\");\ndecision.put(\"problemID\", ifSituation.get(\"problemID\"));\ndecision.put(\"customers\", new ArrayList());\n\nvar problem \u003d albumProblemMap.get(ifSituation.get(\"problemID\"));\nvar returnValue \u003d true;\nif (problem !\u003d null \u0026\u0026 ifSituation.get(\"violatedSLAs\").size() \u003d\u003d 0) {\n logger.trace(\"-- impede by maximum SLA\");\n var customer \u003d \"\";\n var customerSla \u003d 0;\n for (var i \u003d 0; i \u003c problem.get(\"edgeUsedBy\").size(); i++) {\n customerCtxt \u003d albumCustomerMap.get(problem.get(\"edgeUsedBy\").get(i).toString());\n if (customerSla \u003d\u003d 0) {\n customerSla \u003d customerCtxt.get(\"dtSLA\") - customerCtxt.get(\"dtYTD\");\n }\n if ((customerCtxt.get(\"dtSLA\") - customerCtxt.get(\"dtYTD\")) \u003e\u003d customerSla) {\n customer \u003d customerCtxt.get(\"customerName\");\n customerSla \u003d (customerCtxt.get(\"dtSLA\") - customerCtxt.get(\"dtYTD\"));\n }\n }\n decision.get(\"customers\").add(customer);\n} else {\n logger.trace(\"-- wrong problemID \u003c\" + ifSituation.get(\"problemID\") + \"\u003e for SLA task, we should not be here\");\n rootLogger.error(executor.subject.id + \" \" + \"-- wrong problemID \u003c\" + ifSituation.get(\"problemID\")\n + \"\u003e for SLA task, we should not be here\");\n returnValue \u003d false;\n}\n\n// set impededLast to decision[customers]\nproblem.get(\"impededLast\").clear();\nproblem.get(\"impededLast\").addAll(decision.get(\"customers\"));\n\nexecutor.outFields[\"decision\"] \u003d decision;\nlogger.trace(\"-- decision: \" + decision);\n\nlogger.info(\"vpnsla: sla balance, impeding customers \" + decision.get(\"customers\"));\n\nlogger.trace(\"finished: \" + executor.subject.id);\nlogger.debug(\".d-sla\");\n\nreturnValue;"
1753 "name": "VpnSlaPolicyDecideSolvedTask",
1758 "name": "VpnSlaPolicyDecideSolvedTask",
1763 "name": "VpnSlaEstablishOut",
1766 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
1767 "source": "SlaEstablish",
1768 "target": "SlaDecide",
1772 "key": "matchStart",
1775 "parentKeyName": "VpnSlaEstablishOut",
1776 "parentKeyVersion": "1.0.0",
1777 "parentLocalName": "NULL",
1778 "localName": "matchStart"
1781 "name": "timestampDecl",
1791 "parentKeyName": "VpnSlaEstablishOut",
1792 "parentKeyVersion": "1.0.0",
1793 "parentLocalName": "NULL",
1794 "localName": "situation"
1797 "name": "establishSituationDecl",
1805 "toscaPolicyState": ""
1810 "key": "VpnSlaDecideOut",
1813 "name": "VpnSlaDecideOut",
1816 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
1817 "source": "SlaDecide",
1825 "parentKeyName": "VpnSlaDecideOut",
1826 "parentKeyVersion": "1.0.0",
1827 "parentLocalName": "NULL",
1828 "localName": "decision"
1831 "name": "decideDecisionDecl",
1838 "key": "matchStart",
1841 "parentKeyName": "VpnSlaDecideOut",
1842 "parentKeyVersion": "1.0.0",
1843 "parentLocalName": "NULL",
1844 "localName": "matchStart"
1847 "name": "timestampDecl",
1855 "toscaPolicyState": ""
1863 "contextAlbumReference": [
1865 "name": "albumProblemMap",
1871 "parentKeyName": "VpnSlaPolicyDecideSolvedTask",
1872 "parentKeyVersion": "1.0.0",
1873 "parentLocalName": "NULL",
1874 "localName": "TaskLogic"
1876 "logicFlavour": "JAVASCRIPT",
1877 "logic": "/*\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003dLICENSE_START\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Copyright (C) 2016-2018 Ericsson. All rights reserved.\n * Modifications Copyright (C) 2020 Nordix Foundation.\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003dLICENSE_END\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n */\n\nimportClass(org.slf4j.LoggerFactory);\n\nimportClass(java.util.ArrayList);\n\nimportClass(org.apache.avro.generic.GenericData.Array);\nimportClass(org.apache.avro.generic.GenericRecord);\nimportClass(org.apache.avro.Schema);\n\nvar logger \u003d executor.logger;\nlogger.trace(\"start: \" + executor.subject.id);\nlogger.trace(\"-- infields: \" + executor.inFields);\n\nvar rootLogger \u003d LoggerFactory.getLogger(logger.ROOT_LOGGER_NAME);\n\nvar ifSituation \u003d executor.inFields[\"situation\"];\n\nvar albumProblemMap \u003d executor.getContextAlbum(\"albumProblemMap\");\n\n// create outfiled for decision\nvar decision \u003d executor.subject.getOutFieldSchemaHelper(\"decision\").createNewInstance();\ndecision.put(\"description\", \"None, everything is ok\");\ndecision.put(\"decision\", \"REBUILD\");\ndecision.put(\"customers\", new ArrayList());\ndecision.put(\"problemID\", ifSituation.get(\"problemID\"));\n\nvar returnValue \u003d true;\nif (albumProblemMap.get(ifSituation.get(\"problemID\")).get(\"status\") \u003d\u003d \"SOLVED\") {\n logger.trace(\"-- problem solved\");\n} else {\n logger.trace(\"-- wrong problemID \u003c\" + problemID + \"\u003e for SOLVED task, we should not be here\");\n rootLogger.error(executor.subject.id + \" \" + \"-- wrong problemID \u003c\" + problemID\n + \"\u003e for SOLVED task, we should not be here\");\n returnValue \u003d false;\n}\n\nexecutor.outFields[\"decision\"] \u003d decision;\n\nlogger.info(\"vpnsla: sla solved, problem solved\");\n\nlogger.trace(\"finished: \" + executor.subject.id);\nlogger.debug(\".d-non\");\n\nreturnValue;"
1883 "name": "VpnSlaPolicyEstablishTask",
1888 "name": "VpnSlaPolicyEstablishTask",
1893 "name": "VpnSlaMatchOut",
1896 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
1897 "source": "VpnSlaMatch",
1898 "target": "VpnSlaEstablish",
1905 "parentKeyName": "VpnSlaMatchOut",
1906 "parentKeyVersion": "1.0.0",
1907 "parentLocalName": "NULL",
1908 "localName": "edgeName"
1911 "name": "edgeNameDecl",
1918 "key": "hasChanged",
1921 "parentKeyName": "VpnSlaMatchOut",
1922 "parentKeyVersion": "1.0.0",
1923 "parentLocalName": "NULL",
1924 "localName": "hasChanged"
1927 "name": "edgeChangedDecl",
1934 "key": "matchStart",
1937 "parentKeyName": "VpnSlaMatchOut",
1938 "parentKeyVersion": "1.0.0",
1939 "parentLocalName": "NULL",
1940 "localName": "matchStart"
1943 "name": "timestampDecl",
1953 "parentKeyName": "VpnSlaMatchOut",
1954 "parentKeyVersion": "1.0.0",
1955 "parentLocalName": "NULL",
1956 "localName": "status"
1959 "name": "edgeStatusDecl",
1967 "toscaPolicyState": ""
1972 "key": "VpnSlaEstablishOut",
1975 "name": "VpnSlaEstablishOut",
1978 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
1979 "source": "SlaEstablish",
1980 "target": "SlaDecide",
1984 "key": "matchStart",
1987 "parentKeyName": "VpnSlaEstablishOut",
1988 "parentKeyVersion": "1.0.0",
1989 "parentLocalName": "NULL",
1990 "localName": "matchStart"
1993 "name": "timestampDecl",
2003 "parentKeyName": "VpnSlaEstablishOut",
2004 "parentKeyVersion": "1.0.0",
2005 "parentLocalName": "NULL",
2006 "localName": "situation"
2009 "name": "establishSituationDecl",
2017 "toscaPolicyState": ""
2025 "contextAlbumReference": [
2027 "name": "albumCustomerMap",
2031 "name": "albumProblemMap",
2037 "parentKeyName": "VpnSlaPolicyEstablishTask",
2038 "parentKeyVersion": "1.0.0",
2039 "parentLocalName": "NULL",
2040 "localName": "TaskLogic"
2042 "logicFlavour": "JAVASCRIPT",
2043 "logic": "/*\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003dLICENSE_START\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Copyright (C) 2016-2018 Ericsson. All rights reserved.\n * Modifications Copyright (C) 2020 Nordix Foundation.\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003dLICENSE_END\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n */\n\nimportClass(org.slf4j.LoggerFactory);\n\nimportClass(java.util.ArrayList);\n\nimportClass(org.apache.avro.generic.GenericData.Array);\nimportClass(org.apache.avro.generic.GenericRecord);\nimportClass(org.apache.avro.Schema);\n\nvar logger \u003d executor.logger;\nlogger.trace(\"start: \" + executor.subject.id);\nlogger.trace(\"-- infields: \" + executor.inFields);\n\nvar rootLogger \u003d LoggerFactory.getLogger(logger.ROOT_LOGGER_NAME);\n\nvar ifEdgeName \u003d executor.inFields[\"edgeName\"];\nvar ifEdgeStatus \u003d executor.inFields[\"status\"].toString();\nvar ifhasChanged \u003d executor.inFields[\"hasChanged\"];\nvar ifMatchStart \u003d executor.inFields[\"matchStart\"];\n\nvar albumCustomerMap \u003d executor.getContextAlbum(\"albumCustomerMap\");\nvar albumProblemMap \u003d executor.getContextAlbum(\"albumProblemMap\");\n\nvar linkProblem \u003d albumProblemMap.get(ifEdgeName);\n\n// create outfiled for situation\nvar situation \u003d executor.subject.getOutFieldSchemaHelper(\"situation\").createNewInstance();\nsituation.put(\"violatedSLAs\", new ArrayList());\n\n// create a string as states+hasChanged+linkProblem and switch over it\nvar switchTest \u003d ifEdgeStatus + \":\" + ifhasChanged + \":\" + (linkProblem \u003d\u003d null ? \"no\" : \"yes\");\nswitch (switchTest) {\ncase \"UP:false:no\":\n logger.trace(\"-- edge \u003c\" + ifEdgeName + \"\u003e UP:false:no \u003d\u003e everything ok\");\n logger.info(\"vpnsla: everything ok\");\n situation.put(\"problemID\", \"NONE\");\n break;\ncase \"UP:false:yes\":\n logger.trace(\"-- edge \u003c\" + ifEdgeName + \"\u003e UP:false:yes \u003d\u003d\u003e did we miss earlier up?, removing problem\");\n albumProblemMap.remove(ifEdgeName);\n linkProblem \u003d null;\n situation.put(\"problemID\", \"NONE\");\n break;\ncase \"UP:true:no\":\n logger.trace(\"-- edge \u003c\" + ifEdgeName + \"\u003e UP:true:no \u003d\u003d\u003e did we miss the earlier down?, creating new problem\");\n situation.put(\"problemID\", ifEdgeName);\n break;\ncase \"UP:true:yes\":\n logger.trace(\"-- edge \u003c\" + ifEdgeName + \"\u003e UP:true:yes \u003d\u003d\u003e detected solution, link up again\");\n logger.info(\"vpnsla: problem solved\");\n linkProblem.put(\"endTime\", ifMatchStart);\n linkProblem.put(\"status\", \"SOLVED\");\n situation.put(\"problemID\", \"NONE\");\n break;\ncase \"DOWN:false:no\":\n logger.trace(\"-- edge \u003c\" + ifEdgeName + \"\u003e DOWN:false:no \u003d\u003d\u003e did we miss an earlier down?, creating new problem\");\n situation.put(\"problemID\", ifEdgeName);\n break;\ncase \"DOWN:false:yes\":\n logger.trace(\"-- edge \u003c\" + ifEdgeName + \"\u003e DOWN:false:yes \u003d\u003d\u003e problem STILL exists\");\n logger.info(\"vpnsla: problem still exists\");\n linkProblem.put(\"status\", \"STILL\");\n situation.put(\"problemID\", ifEdgeName);\n break;\ncase \"DOWN:true:no\":\n logger.trace(\"-- edge \u003c\" + ifEdgeName + \"\u003e DOWN:true:no \u003d\u003d\u003e found NEW problem\");\n logger.info(\"vpnsla: this is a new problem\");\n situation.put(\"problemID\", ifEdgeName);\n break;\ncase \"DOWN:true:yes\":\n logger.trace(\"-- edge \u003c\" + ifEdgeName\n + \"\u003e DOWN:true:yes \u003d\u003d\u003e did we miss to remove an earlier problem?, remove and create new problem\");\n linkProblem \u003d null;\n situation.put(\"problemID\", ifEdgeName);\n break;\n\ndefault:\n logger.error(\"-- input wrong for edge\" + ifEdgeName + \": edge status \u003c\" + ifEdgeStatus\n + \"\u003e unknown or null on hasChanged \u003c\" + ifhasChanged + \"\u003e\");\n rootLogger.error(\"-- input wrong for edge\" + ifEdgeName + \": edge status \u003c\" + ifEdgeStatus\n + \"\u003e unknown or null on hasChanged \u003c\" + ifhasChanged + \"\u003e\");\n}\n\n// create new problem if situation requires it\nif (situation.get(\"problemID\").equals(ifEdgeName) \u0026\u0026 linkProblem \u003d\u003d null) {\n logger.trace(\"-- edge \u003c\" + ifEdgeName + \"\u003e creating new problem\");\n linkProblem \u003d albumProblemMap.getSchemaHelper().createNewInstance();\n linkProblem.put(\"edge\", ifEdgeName);\n linkProblem.put(\"startTime\", ifMatchStart);\n linkProblem.put(\"lastUpdate\", ifMatchStart);\n linkProblem.put(\"endTime\", 0);\n linkProblem.put(\"status\", \"NEW\");\n linkProblem.put(\"edgeUsedBy\", new ArrayList());\n linkProblem.put(\"impededLast\", new ArrayList());\n\n for (var i \u003d 0; i \u003c albumCustomerMap.values().size(); i++) {\n var customer \u003d albumCustomerMap.values().get(i);\n var customerLinks \u003d albumCustomerMap.values().get(i).get(\"links\");\n for (var k \u003d 0; k \u003c customerLinks.size(); k++) {\n if (customerLinks.get(k) \u003d\u003d ifEdgeName) {\n linkProblem.get(\"edgeUsedBy\").add(customer.get(\"customerName\"));\n }\n }\n }\n albumProblemMap.put(ifEdgeName, linkProblem);\n logger.trace(\"-- edge \u003c\" + ifEdgeName + \"\u003e problem created as \u003c\" + linkProblem + \"\u003e\");\n}\n\n// set dtYTD if situation requires it\nif (linkProblem !\u003d null \u0026\u0026 (linkProblem.get(\"status\") \u003d\u003d \"STILL\" || linkProblem.get(\"status\") \u003d\u003d \"SOLVED\")) {\n var linkDownTimeinSecs \u003d (ifMatchStart - linkProblem.get(\"lastUpdate\")) / 1000;\n logger.trace(\"-- edge \u003c\" + ifEdgeName + \"\u003e down time: \" + linkDownTimeinSecs + \" s\");\n for (var k \u003d 0; k \u003c linkProblem.get(\"impededLast\").size(); k++) {\n for (var i \u003d 0; i \u003c albumCustomerMap.values().size(); i++) {\n var customer \u003d albumCustomerMap.values().get(i);\n if (customer.get(\"customerName\").equals(linkProblem.get(\"impededLast\").get(k))) {\n logger.info(\"-- vpnsla: customer \" + customer.get(\"customerName\") + \" YDT downtime increased from \"\n + customer.get(\"dtYTD\") + \" to \" + (customer.get(\"dtYTD\") + linkDownTimeinSecs));\n customer.put(\"dtYTD\", (customer.get(\"dtYTD\") + linkDownTimeinSecs))\n }\n }\n }\n // set lastUpdate to this policy execution for next execution calculation\n linkProblem.put(\"lastUpdate\", ifMatchStart);\n}\n\n// check SLA violations if situation requires it\nif (linkProblem !\u003d null \u0026\u0026 linkProblem.get(\"status\") !\u003d \"SOLVED\") {\n logger.info(\"\u003ee\u003e customer\\tDT SLA\\tDT YTD\\tviolation\");\n for (var i \u003d 0; i \u003c albumCustomerMap.values().size(); i++) {\n var customer \u003d albumCustomerMap.values().get(i);\n if (customer.get(\"dtYTD\") \u003e customer.get(\"dtSLA\")) {\n situation.get(\"violatedSLAs\").add(customer.get(\"customerName\"));\n logger.info(\"\u003ee\u003e \" + customer.get(\"customerName\") + \"\\t\\t\" + customer.get(\"dtSLA\") + \"s\\t\"\n + customer.get(\"dtYTD\") + \"s\\t\" + \"!!\");\n } else {\n logger.info(\"\u003ee\u003e \" + customer.get(\"customerName\") + \"\\t\\t\" + customer.get(\"dtSLA\") + \"s\\t\"\n + customer.get(\"dtYTD\") + \"s\");\n }\n }\n}\n\nexecutor.outFields[\"situation\"] \u003d situation;\n\nlogger.trace(\"-- out fields \u003c\" + executor.outFields + \"\u003e\");\n\nlogger.trace(\"finished: \" + executor.subject.id);\nlogger.debug(\".e\");\n\ntrue;"
2049 "name": "VpnSlaPolicyMatchTask",
2054 "name": "VpnSlaPolicyMatchTask",
2059 "name": "VpnSlaTrigger",
2062 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
2063 "source": "TriggerSys",
2064 "target": "VpnSlaMatch",
2071 "parentKeyName": "VpnSlaTrigger",
2072 "parentKeyVersion": "1.0.0",
2073 "parentLocalName": "NULL",
2074 "localName": "edgeName"
2077 "name": "edgeNameDecl",
2087 "parentKeyName": "VpnSlaTrigger",
2088 "parentKeyVersion": "1.0.0",
2089 "parentLocalName": "NULL",
2090 "localName": "status"
2093 "name": "edgeStatusDecl",
2101 "toscaPolicyState": ""
2106 "key": "VpnSlaMatchOut",
2109 "name": "VpnSlaMatchOut",
2112 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
2113 "source": "VpnSlaMatch",
2114 "target": "VpnSlaEstablish",
2121 "parentKeyName": "VpnSlaMatchOut",
2122 "parentKeyVersion": "1.0.0",
2123 "parentLocalName": "NULL",
2124 "localName": "edgeName"
2127 "name": "edgeNameDecl",
2134 "key": "hasChanged",
2137 "parentKeyName": "VpnSlaMatchOut",
2138 "parentKeyVersion": "1.0.0",
2139 "parentLocalName": "NULL",
2140 "localName": "hasChanged"
2143 "name": "edgeChangedDecl",
2150 "key": "matchStart",
2153 "parentKeyName": "VpnSlaMatchOut",
2154 "parentKeyVersion": "1.0.0",
2155 "parentLocalName": "NULL",
2156 "localName": "matchStart"
2159 "name": "timestampDecl",
2169 "parentKeyName": "VpnSlaMatchOut",
2170 "parentKeyVersion": "1.0.0",
2171 "parentLocalName": "NULL",
2172 "localName": "status"
2175 "name": "edgeStatusDecl",
2183 "toscaPolicyState": ""
2191 "contextAlbumReference": [
2193 "name": "albumTopoEdges",
2199 "parentKeyName": "VpnSlaPolicyMatchTask",
2200 "parentKeyVersion": "1.0.0",
2201 "parentLocalName": "NULL",
2202 "localName": "TaskLogic"
2204 "logicFlavour": "JAVASCRIPT",
2205 "logic": "/*\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003dLICENSE_START\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Copyright (C) 2016-2018 Ericsson. All rights reserved.\n * Modifications Copyright (C) 2020 Nordix Foundation.\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * SPDX-License-Identifier: Apache-2.0\n * \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003dLICENSE_END\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n */\n\nvar now \u003d new Date().getTime();\nexecutor.outFields[\"matchStart\"] \u003d now;\n\nimportClass(org.slf4j.LoggerFactory);\n\nvar logger \u003d executor.logger;\nlogger.trace(\"start: \" + executor.subject.id);\nlogger.trace(\"-- infields: \" + executor.inFields);\n\nvar rootLogger \u003d LoggerFactory.getLogger(logger.ROOT_LOGGER_NAME);\n\nvar ifEdgeName \u003d executor.inFields[\"edgeName\"];\nvar ifLinkStatus \u003d executor.inFields[\"status\"];\n\nvar albumTopoEdges \u003d executor.getContextAlbum(\"albumTopoEdges\");\n\nlogger.trace(\"-- got infields, checking albumTopoEdges changes\");\n\nvar active \u003d false;\nswitch (ifLinkStatus.toString()) {\ncase \"UP\":\n active \u003d true;\n break;\ncase \"DOWN\":\n active \u003d false;\n break;\ndefault:\n active \u003d false;\n logger.error(\"-- trigger sent unknown link status \u003c\" + ifLinkStatus + \"\u003e for link \u003c\" + ifEdgeName + \"\u003e\");\n rootLogger.error(executor.subject.id + \" \" + \"-- trigger sent unknown link status \u003c\" + ifLinkStatus\n + \"\u003e for link \u003c\" + ifEdgeName + \"\u003e\");\n}\n\nvar link \u003d albumTopoEdges.get(ifEdgeName);\nif (link \u003d\u003d null) {\n logger.trace(\"-- link \u003c\" + ifEdgeName + \"\u003e not in albumTopoEdges\");\n} else {\n logger.trace(\"-- found link \u003c\" + link + \"\u003e in albumTopoEdges\");\n logger.trace(\"-- active \u003c\" + active + \"\u003e : link.active \u003c\" + link.get(\"active\") + \"\u003e\");\n if (active !\u003d link.get(\"active\")) {\n link.put(\"active\", active);\n logger.trace(\"-- link \u003c\" + ifEdgeName + \"\u003e status changed to \u003cactive:\" + link.get(\"active\") + \"\u003e\");\n executor.outFields[\"hasChanged\"] \u003d true;\n } else {\n logger.trace(\"-- link \u003c\" + ifEdgeName + \"\u003e status not changed \u003cactive:\" + link.get(\"active\") + \"\u003e\");\n executor.outFields[\"hasChanged\"] \u003d false;\n }\n}\n\nexecutor.outFields[\"edgeName\"] \u003d ifEdgeName;\nexecutor.outFields[\"status\"] \u003d ifLinkStatus;\n\nlogger.info(\"vpnsla: detected \" + ifEdgeName + \" as \" + ifLinkStatus);\n\nlogger.trace(\"finished: \" + executor.subject.id);\nlogger.debug(\".m\");\n\ntrue;"
2214 "name": "PCVS-VpnSla_Events",
2221 "name": "CustomerContextEventIn",
2226 "name": "CustomerContextEventIn",
2229 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
2230 "source": "CtxtManagement",
2235 "key": "customerName",
2238 "parentKeyName": "CustomerContextEventIn",
2239 "parentKeyVersion": "1.0.0",
2240 "parentLocalName": "NULL",
2241 "localName": "customerName"
2244 "name": "ctxtCustomerNameDecl",
2254 "parentKeyName": "CustomerContextEventIn",
2255 "parentKeyVersion": "1.0.0",
2256 "parentLocalName": "NULL",
2257 "localName": "dtSLA"
2260 "name": "ctxtCustomerDowntimeSLADecl",
2270 "parentKeyName": "CustomerContextEventIn",
2271 "parentKeyVersion": "1.0.0",
2272 "parentLocalName": "NULL",
2273 "localName": "dtYTD"
2276 "name": "ctxtCustomerDowntimeYTDDecl",
2286 "parentKeyName": "CustomerContextEventIn",
2287 "parentKeyVersion": "1.0.0",
2288 "parentLocalName": "NULL",
2289 "localName": "links"
2292 "name": "ctxtCustomerLinksDecl",
2302 "parentKeyName": "CustomerContextEventIn",
2303 "parentKeyVersion": "1.0.0",
2304 "parentLocalName": "NULL",
2305 "localName": "priority"
2308 "name": "ctxtCustomerPriorityDecl",
2315 "key": "satisfaction",
2318 "parentKeyName": "CustomerContextEventIn",
2319 "parentKeyVersion": "1.0.0",
2320 "parentLocalName": "NULL",
2321 "localName": "satisfaction"
2324 "name": "ctxtCustomerSatisfactionDecl",
2332 "toscaPolicyState": ""
2337 "name": "EdgeContextEventIn",
2342 "name": "EdgeContextEventIn",
2345 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
2346 "source": "CtxtManagement",
2354 "parentKeyName": "EdgeContextEventIn",
2355 "parentKeyVersion": "1.0.0",
2356 "parentLocalName": "NULL",
2357 "localName": "edgeName"
2360 "name": "ctxtEdgeNameDecl",
2370 "parentKeyName": "EdgeContextEventIn",
2371 "parentKeyVersion": "1.0.0",
2372 "parentLocalName": "NULL",
2376 "name": "ctxtEdgeEndDecl",
2386 "parentKeyName": "EdgeContextEventIn",
2387 "parentKeyVersion": "1.0.0",
2388 "parentLocalName": "NULL",
2389 "localName": "start"
2392 "name": "ctxtEdgeStartDecl",
2402 "parentKeyName": "EdgeContextEventIn",
2403 "parentKeyVersion": "1.0.0",
2404 "parentLocalName": "NULL",
2405 "localName": "status"
2408 "name": "ctxtEdgeStatusDecl",
2416 "toscaPolicyState": ""
2421 "name": "NodeContextEventIn",
2426 "name": "NodeContextEventIn",
2429 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
2430 "source": "CtxtManagement",
2435 "key": "mininetName",
2438 "parentKeyName": "NodeContextEventIn",
2439 "parentKeyVersion": "1.0.0",
2440 "parentLocalName": "NULL",
2441 "localName": "mininetName"
2444 "name": "ctxtNodeMininetNameDecl",
2454 "parentKeyName": "NodeContextEventIn",
2455 "parentKeyVersion": "1.0.0",
2456 "parentLocalName": "NULL",
2457 "localName": "nodeName"
2460 "name": "ctxtNodeNameDecl",
2468 "toscaPolicyState": ""
2473 "name": "ReportOut",
2478 "name": "ReportOut",
2481 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
2483 "target": "CtxtManagement",
2490 "parentKeyName": "ReportOut",
2491 "parentKeyVersion": "1.0.0",
2492 "parentLocalName": "NULL",
2493 "localName": "report"
2496 "name": "reportDecl",
2504 "toscaPolicyState": ""
2509 "name": "VpnSlaActOut",
2514 "name": "VpnSlaActOut",
2517 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
2519 "target": "ActioningSystem",
2526 "parentKeyName": "VpnSlaActOut",
2527 "parentKeyVersion": "1.0.0",
2528 "parentLocalName": "NULL",
2529 "localName": "action"
2532 "name": "actionDecl",
2542 "parentKeyName": "VpnSlaActOut",
2543 "parentKeyVersion": "1.0.0",
2544 "parentLocalName": "NULL",
2545 "localName": "edgeName"
2548 "name": "edgeNameDecl",
2556 "toscaPolicyState": ""
2561 "name": "VpnSlaDecideOut",
2566 "name": "VpnSlaDecideOut",
2569 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
2570 "source": "SlaDecide",
2578 "parentKeyName": "VpnSlaDecideOut",
2579 "parentKeyVersion": "1.0.0",
2580 "parentLocalName": "NULL",
2581 "localName": "decision"
2584 "name": "decideDecisionDecl",
2591 "key": "matchStart",
2594 "parentKeyName": "VpnSlaDecideOut",
2595 "parentKeyVersion": "1.0.0",
2596 "parentLocalName": "NULL",
2597 "localName": "matchStart"
2600 "name": "timestampDecl",
2608 "toscaPolicyState": ""
2613 "name": "VpnSlaEstablishOut",
2618 "name": "VpnSlaEstablishOut",
2621 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
2622 "source": "SlaEstablish",
2623 "target": "SlaDecide",
2627 "key": "matchStart",
2630 "parentKeyName": "VpnSlaEstablishOut",
2631 "parentKeyVersion": "1.0.0",
2632 "parentLocalName": "NULL",
2633 "localName": "matchStart"
2636 "name": "timestampDecl",
2646 "parentKeyName": "VpnSlaEstablishOut",
2647 "parentKeyVersion": "1.0.0",
2648 "parentLocalName": "NULL",
2649 "localName": "situation"
2652 "name": "establishSituationDecl",
2660 "toscaPolicyState": ""
2665 "name": "VpnSlaMatchOut",
2670 "name": "VpnSlaMatchOut",
2673 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
2674 "source": "VpnSlaMatch",
2675 "target": "VpnSlaEstablish",
2682 "parentKeyName": "VpnSlaMatchOut",
2683 "parentKeyVersion": "1.0.0",
2684 "parentLocalName": "NULL",
2685 "localName": "edgeName"
2688 "name": "edgeNameDecl",
2695 "key": "hasChanged",
2698 "parentKeyName": "VpnSlaMatchOut",
2699 "parentKeyVersion": "1.0.0",
2700 "parentLocalName": "NULL",
2701 "localName": "hasChanged"
2704 "name": "edgeChangedDecl",
2711 "key": "matchStart",
2714 "parentKeyName": "VpnSlaMatchOut",
2715 "parentKeyVersion": "1.0.0",
2716 "parentLocalName": "NULL",
2717 "localName": "matchStart"
2720 "name": "timestampDecl",
2730 "parentKeyName": "VpnSlaMatchOut",
2731 "parentKeyVersion": "1.0.0",
2732 "parentLocalName": "NULL",
2733 "localName": "status"
2736 "name": "edgeStatusDecl",
2744 "toscaPolicyState": ""
2749 "name": "VpnSlaTrigger",
2754 "name": "VpnSlaTrigger",
2757 "nameSpace": "org.onap.policy.apex.examples.pcvs.vpnsla",
2758 "source": "TriggerSys",
2759 "target": "VpnSlaMatch",
2766 "parentKeyName": "VpnSlaTrigger",
2767 "parentKeyVersion": "1.0.0",
2768 "parentLocalName": "NULL",
2769 "localName": "edgeName"
2772 "name": "edgeNameDecl",
2782 "parentKeyName": "VpnSlaTrigger",
2783 "parentKeyVersion": "1.0.0",
2784 "parentLocalName": "NULL",
2785 "localName": "status"
2788 "name": "edgeStatusDecl",
2796 "toscaPolicyState": ""
2804 "name": "PCVS-VpnSla_Albums",
2811 "name": "albumCustomerMap",
2816 "name": "albumCustomerMap",
2822 "name": "ctxtCustomerMapDecl",
2829 "name": "albumProblemMap",
2834 "name": "albumProblemMap",
2840 "name": "problemMapDecl",
2847 "name": "albumTopoEdges",
2852 "name": "albumTopoEdges",
2858 "name": "ctxtTopologyEdgesDecl",
2865 "name": "albumTopoNodes",
2870 "name": "albumTopoNodes",
2876 "name": "ctxtTopologyNodesDecl",
2886 "name": "PCVS-VpnSla_Schemas",
2893 "name": "actionDecl",
2898 "name": "actionDecl",
2901 "schemaFlavour": "Java",
2902 "schemaDefinition": "java.lang.String"
2907 "name": "ctxtCustomerDowntimeSLADecl",
2912 "name": "ctxtCustomerDowntimeSLADecl",
2915 "schemaFlavour": "Java",
2916 "schemaDefinition": "java.lang.Integer"
2921 "name": "ctxtCustomerDowntimeYTDDecl",
2926 "name": "ctxtCustomerDowntimeYTDDecl",
2929 "schemaFlavour": "Java",
2930 "schemaDefinition": "java.lang.Integer"
2935 "name": "ctxtCustomerLinksDecl",
2940 "name": "ctxtCustomerLinksDecl",
2943 "schemaFlavour": "Java",
2944 "schemaDefinition": "java.lang.String"
2949 "name": "ctxtCustomerMapDecl",
2954 "name": "ctxtCustomerMapDecl",
2957 "schemaFlavour": "Avro",
2958 "schemaDefinition": "{\n \"type\" : \"record\",\n \"name\" : \"Customer\",\n \"fields\" : [\n {\"name\" : \"customerName\", \"type\" : \"string\"},\n {\"name\" : \"dtSLA\" , \"type\" : \"int\"},\n {\"name\" : \"dtYTD\" , \"type\" : \"int\"},\n {\"name\" : \"priority\" , \"type\" : \"boolean\"},\n {\"name\" : \"satisfaction\", \"type\" : \"int\"},\n {\n \"name\": \"links\",\n \"doc\": \"Links used by this customer\",\n \"type\": {\"type\" : \"array\", \"items\" : \"string\"}\n }\n ]\n}"
2963 "name": "ctxtCustomerNameDecl",
2968 "name": "ctxtCustomerNameDecl",
2971 "schemaFlavour": "Java",
2972 "schemaDefinition": "java.lang.String"
2977 "name": "ctxtCustomerPriorityDecl",
2982 "name": "ctxtCustomerPriorityDecl",
2985 "schemaFlavour": "Java",
2986 "schemaDefinition": "java.lang.Boolean"
2991 "name": "ctxtCustomerSatisfactionDecl",
2996 "name": "ctxtCustomerSatisfactionDecl",
2999 "schemaFlavour": "Java",
3000 "schemaDefinition": "java.lang.Integer"
3005 "name": "ctxtEdgeEndDecl",
3010 "name": "ctxtEdgeEndDecl",
3013 "schemaFlavour": "Java",
3014 "schemaDefinition": "java.lang.String"
3019 "name": "ctxtEdgeNameDecl",
3024 "name": "ctxtEdgeNameDecl",
3027 "schemaFlavour": "Java",
3028 "schemaDefinition": "java.lang.String"
3033 "name": "ctxtEdgeStartDecl",
3038 "name": "ctxtEdgeStartDecl",
3041 "schemaFlavour": "Java",
3042 "schemaDefinition": "java.lang.String"
3047 "name": "ctxtEdgeStatusDecl",
3052 "name": "ctxtEdgeStatusDecl",
3055 "schemaFlavour": "Java",
3056 "schemaDefinition": "java.lang.Boolean"
3061 "name": "ctxtNodeMininetNameDecl",
3066 "name": "ctxtNodeMininetNameDecl",
3069 "schemaFlavour": "Java",
3070 "schemaDefinition": "java.lang.String"
3075 "name": "ctxtNodeNameDecl",
3080 "name": "ctxtNodeNameDecl",
3083 "schemaFlavour": "Java",
3084 "schemaDefinition": "java.lang.String"
3089 "name": "ctxtTopologyEdgesDecl",
3094 "name": "ctxtTopologyEdgesDecl",
3097 "schemaFlavour": "Avro",
3098 "schemaDefinition": "{\n \"type\" : \"record\",\n \"name\" : \"TopologyEdges\",\n \"fields\" : [\n {\"name\": \"name\", \"type\": \"string\", \"doc\": \"Name of the Edge, typically a link name\"},\n {\"name\": \"start\", \"type\": \"string\", \"doc\": \"Edge endpoint: start - a node name\"},\n {\"name\": \"end\", \"type\": \"string\", \"doc\": \"Edge endpoint: end - a node name\"},\n {\"name\": \"active\", \"type\": \"boolean\", \"doc\": \"Flag for active/inactive edges, inactive means a link is down\"}\n ]\n}"
3103 "name": "ctxtTopologyNodesDecl",
3108 "name": "ctxtTopologyNodesDecl",
3111 "schemaFlavour": "Avro",
3112 "schemaDefinition": "{\n \"type\" : \"record\",\n \"name\" : \"TopologyNodes\",\n \"fields\" : [\n {\"name\" : \"name\", \"type\" : \"string\", \"doc\": \"The name of the node\"},\n {\"name\" : \"mnname\", \"type\" : \"string\", \"doc\": \"The name of the node in Mininet\"}\n ]\n}"
3117 "name": "decideDecisionDecl",
3122 "name": "decideDecisionDecl",
3125 "schemaFlavour": "Avro",
3126 "schemaDefinition": "{\n \"type\" : \"record\",\n \"name\" : \"Situation\",\n \"fields\" : [\n {\"name\": \"description\", \"type\": \"string\", \"doc\": \"Description of the taken decision\"},\n {\n \"name\": \"decision\",\n \"doc\": \"taken decision\",\n \"type\": {\n \"type\": \"enum\",\n \"name\": \"decisionEnum\",\n \"symbols\" : [\n \"IMPEDE\",\n \"REBUILD\",\n \"NONE\"\n ]\n }\n },\n {\"name\": \"customers\", \"type\": {\"type\" : \"array\", \"items\" : \"string\"}, \"doc\": \"List of customers affected by the decision\"},\n {\"name\": \"problemID\", \"type\": \"string\", \"doc\": \"Identifier of the problem for lookup in problemMap\"}\n ]\n}"
3131 "name": "edgeChangedDecl",
3136 "name": "edgeChangedDecl",
3139 "schemaFlavour": "Java",
3140 "schemaDefinition": "java.lang.Boolean"
3145 "name": "edgeNameDecl",
3150 "name": "edgeNameDecl",
3153 "schemaFlavour": "Java",
3154 "schemaDefinition": "java.lang.String"
3159 "name": "edgeStatusDecl",
3164 "name": "edgeStatusDecl",
3167 "schemaFlavour": "Avro",
3168 "schemaDefinition": "{\n \"type\": \"enum\",\n \"name\": \"Status\",\n \"symbols\" : [\n \"UP\",\n \"DOWN\"\n ]\n}"
3173 "name": "establishSituationDecl",
3178 "name": "establishSituationDecl",
3181 "schemaFlavour": "Avro",
3182 "schemaDefinition": "{\n \"type\" : \"record\",\n \"name\" : \"Situation\",\n \"fields\" : [\n {\"name\": \"problemID\", \"type\": \"string\", \"doc\": \"Identifier of the problem for lookup in problemMap\"},\n {\"name\": \"violatedSLAs\", \"type\": {\"type\" : \"array\", \"items\" : \"string\"}, \"doc\": \"List of customers with SLA violations\"}\n ]\n}"
3187 "name": "problemMapDecl",
3192 "name": "problemMapDecl",
3195 "schemaFlavour": "Avro",
3196 "schemaDefinition": "{\n \"type\" : \"record\",\n \"name\" : \"Problem\",\n \"fields\" : [\n {\"name\": \"edge\", \"type\": \"string\"},\n {\"name\": \"startTime\", \"type\": \"long\"},\n {\"name\": \"lastUpdate\", \"type\": \"long\"},\n {\"name\": \"endTime\", \"type\": \"long\"},\n {\n \"name\": \"status\",\n \"doc\": \"problem status\",\n \"type\": {\n \"type\": \"enum\",\n \"name\": \"statusEnum\",\n \"symbols\" : [\n \"NONE\",\n \"STILL\",\n \"SOLVED\",\n \"NEW\"\n ]\n }\n },\n {\n \"name\": \"edgeUsedBy\",\n \"doc\": \"customers using the edge\",\n \"type\": {\"type\" : \"array\", \"items\" : \"string\"}\n },\n {\n \"name\": \"impededLast\",\n \"doc\": \"customers last impeded\",\n \"type\": {\"type\" : \"array\", \"items\" : \"string\"}\n }\n ]\n}"
3201 "name": "reportDecl",
3206 "name": "reportDecl",
3209 "schemaFlavour": "Java",
3210 "schemaDefinition": "java.lang.String"
3215 "name": "timestampDecl",
3220 "name": "timestampDecl",
3223 "schemaFlavour": "Java",
3224 "schemaDefinition": "java.lang.Long"
3231 "name": "PCVS-VpnSla",
3236 "name": "PCVS-VpnSla_KeyInfo",
3243 "name": "CustomerContextEventIn",
3248 "name": "CustomerContextEventIn",
3251 "UUID": "1ce15f63-7c90-3a13-96d9-e3964f76aa0e",
3252 "description": "Event to add Customers to engine Context"
3257 "name": "CustomerContextPolicy",
3262 "name": "CustomerContextPolicy",
3265 "UUID": "91854e6d-868b-3d1a-aff1-a9390173f144",
3266 "description": "Policy that adds Customer information to engine context"
3271 "name": "CustomerContextTask",
3276 "name": "CustomerContextTask",
3279 "UUID": "c43c4cdc-71ef-3e0e-90a2-e36f4f355e3e",
3280 "description": "This task adds event context to customer context"
3285 "name": "EdgeContextEventIn",
3290 "name": "EdgeContextEventIn",
3293 "UUID": "1817ee7e-d91a-33cb-b9e3-fa60e5c2f340",
3294 "description": "Event to add an Edge to engine Context"
3299 "name": "EdgeContextPolicy",
3304 "name": "EdgeContextPolicy",
3307 "UUID": "652dc1e9-1030-3fe1-8e6e-f7758c68959f",
3308 "description": "Policy that adds an edge to context"
3313 "name": "EdgeContextTask",
3318 "name": "EdgeContextTask",
3321 "UUID": "bb3dd70d-ab5c-3ea4-81ca-92f578e9808b",
3322 "description": "This task adds event context to edge context"
3327 "name": "NodeContextEventIn",
3332 "name": "NodeContextEventIn",
3335 "UUID": "38bb48b4-07fd-3e53-976d-651fd0bbf5e1",
3336 "description": "Event to add Node to engine Context"
3341 "name": "NodeContextPolicy",
3346 "name": "NodeContextPolicy",
3349 "UUID": "6dd58709-d4b7-31d6-8230-ab91e548985a",
3350 "description": "Policy that adds an node to context"
3355 "name": "NodeContextTask",
3360 "name": "NodeContextTask",
3363 "UUID": "32ffcbca-fee6-3cb4-b311-fa3ba6a3b9b7",
3364 "description": "This task adds event context to node context"
3369 "name": "PCVS-VpnSla",
3374 "name": "PCVS-VpnSla",
3377 "UUID": "fc0d1be0-fc4f-3758-b530-6435d279951e",
3378 "description": "Policies-Controlled Video Streaming, VPN SLA Policy Model"
3383 "name": "PCVS-VpnSla_Albums",
3388 "name": "PCVS-VpnSla_Albums",
3391 "UUID": "2e34f18e-37e6-35d2-ba11-e20f96e113d5",
3392 "description": "Generated description for concept referred to by key \"PCVS-VpnSla_Albums:1.0.0\""
3397 "name": "PCVS-VpnSla_Events",
3402 "name": "PCVS-VpnSla_Events",
3405 "UUID": "0c04d3b3-86aa-39c2-938e-b44224cb0798",
3406 "description": "Generated description for concept referred to by key \"PCVS-VpnSla_Events:1.0.0\""
3411 "name": "PCVS-VpnSla_KeyInfo",
3416 "name": "PCVS-VpnSla_KeyInfo",
3419 "UUID": "6f257a91-576d-3e49-92ca-9c9a92994cff",
3420 "description": "Generated description for concept referred to by key \"PCVS-VpnSla_KeyInfo:1.0.0\""
3425 "name": "PCVS-VpnSla_Policies",
3430 "name": "PCVS-VpnSla_Policies",
3433 "UUID": "af00d5d2-f584-37eb-a539-db10284828d8",
3434 "description": "Generated description for concept referred to by key \"PCVS-VpnSla_Policies:1.0.0\""
3439 "name": "PCVS-VpnSla_Schemas",
3444 "name": "PCVS-VpnSla_Schemas",
3447 "UUID": "390c3e62-0455-330c-8bdc-c835322cca9c",
3448 "description": "Generated description for concept referred to by key \"PCVS-VpnSla_Schemas:1.0.0\""
3453 "name": "PCVS-VpnSla_Tasks",
3458 "name": "PCVS-VpnSla_Tasks",
3461 "UUID": "5834101d-d5e7-323e-8bd2-595ed4618f07",
3462 "description": "Generated description for concept referred to by key \"PCVS-VpnSla_Tasks:1.0.0\""
3467 "name": "ReportOut",
3472 "name": "ReportOut",
3475 "UUID": "29b332dc-e8b6-390e-8b41-3edbba45da44",
3476 "description": "Report of a policy (issued by a task)"
3481 "name": "VpnSlaActOut",
3486 "name": "VpnSlaActOut",
3489 "UUID": "37d5dfba-d6e0-35a5-958b-21f77cb78a0c",
3490 "description": "Event action"
3495 "name": "VpnSlaDecideOut",
3500 "name": "VpnSlaDecideOut",
3503 "UUID": "8d4ea7ed-ed7a-3f34-8ecc-56f6f192357c",
3504 "description": "Event with a decision for the SLA policy"
3509 "name": "VpnSlaEstablishOut",
3514 "name": "VpnSlaEstablishOut",
3517 "UUID": "e3fde4f3-338a-3759-a2d8-f23c6fd390ac",
3518 "description": "Event with situation for the SLA policy"
3523 "name": "VpnSlaMatchOut",
3528 "name": "VpnSlaMatchOut",
3531 "UUID": "40aa223f-4689-3de1-bfb5-7889a07f6045",
3532 "description": "Event with matched trigger for the VPN SLA policy"
3537 "name": "VpnSlaPolicy",
3542 "name": "VpnSlaPolicy",
3545 "UUID": "cd75105c-4cdb-312d-9372-aa508f4c400c",
3546 "description": "Policy deciding customer treatment based on SLAs as MEDA policy"
3551 "name": "VpnSlaPolicyActTask",
3556 "name": "VpnSlaPolicyActTask",
3559 "UUID": "c6ff32e6-261b-35cc-a8e8-ba87ecf555e6",
3560 "description": "Task issueing an action for taken decision"
3565 "name": "VpnSlaPolicyDecideNoneTask",
3570 "name": "VpnSlaPolicyDecideNoneTask",
3573 "UUID": "360c7f52-0930-38e5-ab54-59e4f3930c1e",
3574 "description": "Decide task for a \u0027none\u0027 problem"
3579 "name": "VpnSlaPolicyDecidePriorityTask",
3584 "name": "VpnSlaPolicyDecidePriorityTask",
3587 "UUID": "f5226370-98b2-322d-9eb9-a17dfd834104",
3588 "description": "Decide task solving the problem by using customer priorities"
3593 "name": "VpnSlaPolicyDecideSlaTask",
3598 "name": "VpnSlaPolicyDecideSlaTask",
3601 "UUID": "c231c338-fda7-3cc3-b282-382c0ace4015",
3602 "description": "Decide task solving the problem by balancing SLAs"
3607 "name": "VpnSlaPolicyDecideSolvedTask",
3612 "name": "VpnSlaPolicyDecideSolvedTask",
3615 "UUID": "5e5b3951-a4c3-387d-9b75-ad1197372695",
3616 "description": "Decide task solving the problem by using customer priorities"
3621 "name": "VpnSlaPolicyEstablishTask",
3626 "name": "VpnSlaPolicyEstablishTask",
3629 "UUID": "83774c6c-73dd-3ce6-98ed-6c9295da9562",
3630 "description": "Task taking a match event and establishing a situation"
3635 "name": "VpnSlaPolicyMatchTask",
3640 "name": "VpnSlaPolicyMatchTask",
3643 "UUID": "bb6c7e85-b5de-3f02-96c6-34c85ae174e3",
3644 "description": "Pre-process an edge event"
3649 "name": "VpnSlaTrigger",
3654 "name": "VpnSlaTrigger",
3657 "UUID": "7224a6d5-02cf-3fa0-803e-f930120c14d3",
3658 "description": "Event triggering the VPN SLA policy"
3663 "name": "actionDecl",
3668 "name": "actionDecl",
3671 "UUID": "9818146b-f42c-378b-8818-519d5e16ea2b",
3672 "description": "An action for the actioning system"
3677 "name": "albumCustomerMap",
3682 "name": "albumCustomerMap",
3685 "UUID": "dde24214-9a5b-3995-a942-81e5c509af7d",
3686 "description": "Generated description for concept referred to by key \"albumCustomerMap:0.0.1\""
3691 "name": "albumProblemMap",
3696 "name": "albumProblemMap",
3699 "UUID": "681ed388-d70e-3a87-a322-a11813fb4cd5",
3700 "description": "Generated description for concept referred to by key \"albumProblemMap:0.0.1\""
3705 "name": "albumTopoEdges",
3710 "name": "albumTopoEdges",
3713 "UUID": "4ac38510-3a01-33cc-9015-334408041b53",
3714 "description": "Generated description for concept referred to by key \"albumTopoEdges:0.0.1\""
3719 "name": "albumTopoNodes",
3724 "name": "albumTopoNodes",
3727 "UUID": "0ca9d9c1-073f-3183-af0c-c5f02cbdb26b",
3728 "description": "Generated description for concept referred to by key \"albumTopoNodes:0.0.1\""
3733 "name": "ctxtCustomerDowntimeSLADecl",
3738 "name": "ctxtCustomerDowntimeSLADecl",
3741 "UUID": "dd0d2302-58f2-3904-a5b2-60e950c7db9f",
3742 "description": "Customer Context: contracted downtime as per SLA"
3747 "name": "ctxtCustomerDowntimeYTDDecl",
3752 "name": "ctxtCustomerDowntimeYTDDecl",
3755 "UUID": "dc75514e-19dc-307e-9de9-c07317197b17",
3756 "description": "Customer Context: year-to-date downtime experienced"
3761 "name": "ctxtCustomerLinksDecl",
3766 "name": "ctxtCustomerLinksDecl",
3769 "UUID": "49c6b6e3-d987-3612-a846-9305fc5369f2",
3770 "description": "Customer Context: links a customer uses (for events/task)"
3775 "name": "ctxtCustomerMapDecl",
3780 "name": "ctxtCustomerMapDecl",
3783 "UUID": "a32fe8e8-f626-3ad6-a979-6dc0897d0435",
3784 "description": "Map of customers with all known information"
3789 "name": "ctxtCustomerNameDecl",
3794 "name": "ctxtCustomerNameDecl",
3797 "UUID": "38151d46-be2d-354b-8142-994d880314a0",
3798 "description": "Customer Context: customer name"
3803 "name": "ctxtCustomerPriorityDecl",
3808 "name": "ctxtCustomerPriorityDecl",
3811 "UUID": "8c4d86b6-58fa-38a8-a86c-1498701a08fa",
3812 "description": "Customer Context: priority flag"
3817 "name": "ctxtCustomerSatisfactionDecl",
3822 "name": "ctxtCustomerSatisfactionDecl",
3825 "UUID": "5d995fbe-f60a-3e6a-b60e-ed46dba0fc28",
3826 "description": "Customer Context: satisfaction in percent"
3831 "name": "ctxtEdgeEndDecl",
3836 "name": "ctxtEdgeEndDecl",
3839 "UUID": "a68eab04-4297-369b-85ac-2968e418fcbd",
3840 "description": "Topology Edges: edge endpoint (end)"
3845 "name": "ctxtEdgeNameDecl",
3850 "name": "ctxtEdgeNameDecl",
3853 "UUID": "7688d4e1-bb1f-30f3-92a6-f3eef9816236",
3854 "description": "Topology Edges: edge (link) name"
3859 "name": "ctxtEdgeStartDecl",
3864 "name": "ctxtEdgeStartDecl",
3867 "UUID": "c20605f1-5b90-38a5-8782-d2d23309007a",
3868 "description": "Topology Edges: edge endpoint (start)"
3873 "name": "ctxtEdgeStatusDecl",
3878 "name": "ctxtEdgeStatusDecl",
3881 "UUID": "785e1b75-5389-35b6-b4a1-e9ec49891155",
3882 "description": "Topology Edges: edge status as up (true) or down (false)"
3887 "name": "ctxtNodeMininetNameDecl",
3892 "name": "ctxtNodeMininetNameDecl",
3895 "UUID": "ecfd3326-1425-3793-b4fb-54d5ca58324c",
3896 "description": "Topology Nodes: node name in Mininet"
3901 "name": "ctxtNodeNameDecl",
3906 "name": "ctxtNodeNameDecl",
3909 "UUID": "80654d36-82eb-3dc6-b411-1442341946fb",
3910 "description": "Topology Nodes: node name"
3915 "name": "ctxtTopologyEdgesDecl",
3920 "name": "ctxtTopologyEdgesDecl",
3923 "UUID": "d2561824-0bf1-3923-b779-89d2e527c507",
3924 "description": "Topology Edges Context Map"
3929 "name": "ctxtTopologyNodesDecl",
3934 "name": "ctxtTopologyNodesDecl",
3937 "UUID": "0ee08c50-b09e-36d5-8fb0-ec97c5be8b20",
3938 "description": "Topology Nodes Context Map"
3943 "name": "decideDecisionDecl",
3948 "name": "decideDecisionDecl",
3951 "UUID": "8f9a3a78-1807-3be5-b70a-e084d638f1f2",
3952 "description": "Decide: the taken decision"
3957 "name": "edgeChangedDecl",
3962 "name": "edgeChangedDecl",
3965 "UUID": "d21f8db2-1ac0-345a-b328-9227b47628fd",
3966 "description": "Status Change (true:change, false:no change)"
3971 "name": "edgeNameDecl",
3976 "name": "edgeNameDecl",
3979 "UUID": "bd8f33d8-b7a5-3fae-82b8-783b84bc7e17",
3980 "description": "Edge name"
3985 "name": "edgeStatusDecl",
3990 "name": "edgeStatusDecl",
3993 "UUID": "ba935212-80f1-3ac1-96d9-6e2519773b9c",
3994 "description": "Statuf of the edge (UP, DOWN)"
3999 "name": "establishSituationDecl",
4004 "name": "establishSituationDecl",
4007 "UUID": "206ffbd0-cb07-329a-93fe-990961e3f92c",
4008 "description": "Establish: the situation that was established"
4013 "name": "problemMapDecl",
4018 "name": "problemMapDecl",
4021 "UUID": "260c46a5-4e27-3575-9076-0ff72c9bf32a",
4022 "description": "Map of problems with all known Information"
4027 "name": "reportDecl",
4032 "name": "reportDecl",
4035 "UUID": "788e86c5-26d6-3af1-b1ab-2d530a0a45fb",
4036 "description": "Report of activities of a policy/task"
4041 "name": "timestampDecl",
4046 "name": "timestampDecl",
4049 "UUID": "4d385841-1db1-3ddc-bb7b-8b67b3c701ad",
4050 "description": "Timestamp"