From 7a8e49a16020f7d04724803659f365236987c5ed Mon Sep 17 00:00:00 2001 From: liamfallon Date: Thu, 19 Dec 2019 21:42:34 -0600 Subject: Update vCPE example to use Avro schemas THis change updates the vCPE example to show how the example can work towards the APPC using Avro schemas only. This means that Policies can be adapted to changes in controller APIs using Avro alone. This example works with the old and new format policy-models. Issue-ID: POLICY-2043 Change-Id: I42ac0eac5203eaa37316cf6c460c67f7e8d6deb2 Signed-off-by: liamfallon --- examples/examples-onap-vcpe/pom.xml | 41 ++- .../config/ONAPvCPEStandalone/ApexConfig.json | 168 ++++++++++ .../config/ONAPvCPEStandalone/ApexConfig_Sim.json | 184 +++++++++++ .../ONAPvCPEStandalone/ApexConfig_Sim_StdIO.json | 100 ++++++ .../events/ONAPvCPEStandalone/CLAbatedEvent.json | 31 ++ .../events/ONAPvCPEStandalone/CLOnsetEvent.json | 31 ++ .../ConfigureBlackWhiteLists.json | 48 +++ .../ONAPvCPEStandalone/ControllerActionEvent.json | 22 ++ .../ControllerResponseNOKEvent.json | 27 ++ .../ControllerResponseOKEvent.json | 27 ++ .../events/ONAPvCPEStandalone/MultiEvents.json | 124 +++++++ .../src/main/resources/logic/AAILookupTask.js | 85 ----- .../resources/logic/APPCRestartVNFRequestTask.js | 67 ---- .../resources/logic/APPCRestartVNFResponseTask.js | 88 ----- .../src/main/resources/logic/AbatedTask.js | 41 --- .../src/main/resources/logic/ControlLoopLogTask.js | 72 ---- .../src/main/resources/logic/DeniedTask.js | 32 -- .../src/main/resources/logic/GetVCPEStateTask.js | 149 --------- .../src/main/resources/logic/GuardRequestTask.js | 44 --- .../src/main/resources/logic/GuardResponseTask.js | 50 --- .../src/main/resources/logic/NoAAILookupTask.js | 26 -- .../main/resources/logic/OnsetOrAbatedStateTSL.js | 51 --- .../RestartAPPCRequestPolicyPermitOrDenyTSL.js | 37 --- .../resources/logic/definitive/AAILookupTask.js | 85 +++++ .../logic/definitive/APPCRestartVNFRequestTask.js | 67 ++++ .../logic/definitive/APPCRestartVNFResponseTask.js | 88 +++++ .../main/resources/logic/definitive/AbatedTask.js | 41 +++ .../logic/definitive/ControlLoopLogTask.js | 73 ++++ .../main/resources/logic/definitive/DeniedTask.js | 32 ++ .../resources/logic/definitive/GetVCPEStateTask.js | 149 +++++++++ .../resources/logic/definitive/GuardRequestTask.js | 44 +++ .../logic/definitive/GuardResponseTask.js | 50 +++ .../resources/logic/definitive/NoAAILookupTask.js | 26 ++ .../logic/definitive/OnsetOrAbatedStateTSL.js | 51 +++ .../RestartAPPCRequestPolicyPermitOrDenyTSL.js | 37 +++ .../logic/standalone/CheckServiceIdTask.js | 46 +++ .../resources/logic/standalone/CheckVNFIdTask.js | 45 +++ .../logic/standalone/CheckVServerIdTask.js | 46 +++ .../standalone/ConfigureBlackWhiteListTask.js | 49 +++ .../logic/standalone/ControlLoopLogTask.js | 75 +++++ .../logic/standalone/ControllerRequestTask.js | 71 ++++ .../logic/standalone/ControllerResponseTask.js | 90 +++++ .../standalone/DoControllerRequestActionTask.js | 27 ++ .../resources/logic/standalone/DoLogActionTask.js | 28 ++ .../ExecuteActionsPolicyActionStateTSL.js | 33 ++ .../logic/standalone/GetEntityStateTask.js | 157 +++++++++ .../logic/standalone/InitiateActionsTask.js | 54 +++ .../ReceiveEventPolicyExecuteOrLogStateTSL.js | 55 +++ .../resources/logic/standalone/StopAndLogTask.js | 47 +++ .../main/resources/policy/ONAPvCPEPolicyModel.apex | 29 +- .../policy/ONAPvCPEPolicyModelStandalone.apex | 368 +++++++++++++++++++++ .../schemas/GuardDecisionAttributesType.avsc | 23 -- .../schemas/VCPEClosedLoopStatusType.avsc | 128 ------- .../definitive/GuardDecisionAttributesType.avsc | 23 ++ .../definitive/VCPEClosedLoopStatusType.avsc | 128 +++++++ .../schemas/standalone/ControlLoopStatusType.avsc | 128 +++++++ .../schemas/standalone/ControllerRequestType.avsc | 90 +++++ .../schemas/standalone/ControllerResponseType.avsc | 101 ++++++ .../standalone/VirtualControlLoopEventType.avsc | 76 +++++ .../VirtualControlLoopNotificationType.avsc | 77 +++++ .../domains/onap/vcpe/AppcResponseCreator.java | 23 +- .../domains/onap/vcpe/OnapVCpeSimEndpoint.java | 117 +++++-- .../onap/vcpe/OnapVcpeStandaloneRunner.java | 68 ++++ .../src/test/resources/etc/Notes.txt | 21 ++ 64 files changed, 3569 insertions(+), 942 deletions(-) create mode 100644 examples/examples-onap-vcpe/src/main/resources/examples/config/ONAPvCPEStandalone/ApexConfig.json create mode 100644 examples/examples-onap-vcpe/src/main/resources/examples/config/ONAPvCPEStandalone/ApexConfig_Sim.json create mode 100644 examples/examples-onap-vcpe/src/main/resources/examples/config/ONAPvCPEStandalone/ApexConfig_Sim_StdIO.json create mode 100644 examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/CLAbatedEvent.json create mode 100644 examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/CLOnsetEvent.json create mode 100644 examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/ConfigureBlackWhiteLists.json create mode 100644 examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/ControllerActionEvent.json create mode 100644 examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/ControllerResponseNOKEvent.json create mode 100644 examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/ControllerResponseOKEvent.json create mode 100644 examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/MultiEvents.json delete mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/AAILookupTask.js delete mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/APPCRestartVNFRequestTask.js delete mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/APPCRestartVNFResponseTask.js delete mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/AbatedTask.js delete mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/ControlLoopLogTask.js delete mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/DeniedTask.js delete mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/GetVCPEStateTask.js delete mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/GuardRequestTask.js delete mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/GuardResponseTask.js delete mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/NoAAILookupTask.js delete mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/OnsetOrAbatedStateTSL.js delete mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/RestartAPPCRequestPolicyPermitOrDenyTSL.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/definitive/AAILookupTask.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/definitive/APPCRestartVNFRequestTask.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/definitive/APPCRestartVNFResponseTask.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/definitive/AbatedTask.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/definitive/ControlLoopLogTask.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/definitive/DeniedTask.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/definitive/GetVCPEStateTask.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/definitive/GuardRequestTask.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/definitive/GuardResponseTask.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/definitive/NoAAILookupTask.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/definitive/OnsetOrAbatedStateTSL.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/definitive/RestartAPPCRequestPolicyPermitOrDenyTSL.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/standalone/CheckServiceIdTask.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/standalone/CheckVNFIdTask.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/standalone/CheckVServerIdTask.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/standalone/ConfigureBlackWhiteListTask.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/standalone/ControlLoopLogTask.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/standalone/ControllerRequestTask.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/standalone/ControllerResponseTask.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/standalone/DoControllerRequestActionTask.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/standalone/DoLogActionTask.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/standalone/ExecuteActionsPolicyActionStateTSL.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/standalone/GetEntityStateTask.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/standalone/InitiateActionsTask.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/standalone/ReceiveEventPolicyExecuteOrLogStateTSL.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/standalone/StopAndLogTask.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/policy/ONAPvCPEPolicyModelStandalone.apex delete mode 100644 examples/examples-onap-vcpe/src/main/resources/schemas/GuardDecisionAttributesType.avsc delete mode 100644 examples/examples-onap-vcpe/src/main/resources/schemas/VCPEClosedLoopStatusType.avsc create mode 100644 examples/examples-onap-vcpe/src/main/resources/schemas/definitive/GuardDecisionAttributesType.avsc create mode 100644 examples/examples-onap-vcpe/src/main/resources/schemas/definitive/VCPEClosedLoopStatusType.avsc create mode 100644 examples/examples-onap-vcpe/src/main/resources/schemas/standalone/ControlLoopStatusType.avsc create mode 100644 examples/examples-onap-vcpe/src/main/resources/schemas/standalone/ControllerRequestType.avsc create mode 100644 examples/examples-onap-vcpe/src/main/resources/schemas/standalone/ControllerResponseType.avsc create mode 100644 examples/examples-onap-vcpe/src/main/resources/schemas/standalone/VirtualControlLoopEventType.avsc create mode 100644 examples/examples-onap-vcpe/src/main/resources/schemas/standalone/VirtualControlLoopNotificationType.avsc create mode 100644 examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/OnapVcpeStandaloneRunner.java (limited to 'examples/examples-onap-vcpe') diff --git a/examples/examples-onap-vcpe/pom.xml b/examples/examples-onap-vcpe/pom.xml index 9f6c285c4..e6917ef2f 100644 --- a/examples/examples-onap-vcpe/pom.xml +++ b/examples/examples-onap-vcpe/pom.xml @@ -1,7 +1,7 @@ + + generate-standalone-policy + compile + + java + + + org.onap.policy.apex.auth.clieditor.ApexCommandLineEditorMain + compile + + --command-file=${project.basedir}/src/main/resources/policy/${policymodelstandalone.name}.apex + --output-model-file=${project.build.directory}/classes/${policymodelstandalone.name}.json + --log-file=${project.build.directory}/${policymodelstandalone.name}_policygeneration.log + --working-dir=${project.basedir} + + + + + + generate-standalone-tosca-policy + compile + + java + + + org.onap.policy.apex.auth.clieditor.tosca.ApexCliToscaEditorMain + compile + + --command-file=${project.basedir}/src/main/resources/policy/${policymodelstandalone.name}.apex + --output-tosca-file=${project.build.directory}/classes/${toscapolicystandalone.name}.json + --log-file=${project.build.directory}/${policymodelstandalone.name}_policygeneration.log + --apex-config-file=${project.basedir}/src/main/resources/examples/config/ONAPvCPEStandalone/ApexConfig.json + --tosca-template-file=${project.basedir}/src/main/resources/tosca/ToscaTemplate.json + + + diff --git a/examples/examples-onap-vcpe/src/main/resources/examples/config/ONAPvCPEStandalone/ApexConfig.json b/examples/examples-onap-vcpe/src/main/resources/examples/config/ONAPvCPEStandalone/ApexConfig.json new file mode 100644 index 000000000..e82be89a8 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/examples/config/ONAPvCPEStandalone/ApexConfig.json @@ -0,0 +1,168 @@ +{ + "engineServiceParameters": { + "name": "MyApexEngine", + "version": "0.0.1", + "id": 45, + "instanceCount": 4, + "deploymentPort": 12561, + "policyModelFileName": "examples/models/ONAPvCPE/ONAPvCPEPolicyModel.json", + "engineParameters": { + "executorParameters": { + "JAVASCRIPT": { + "parameterClassName": "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters" + } + }, + "contextParameters": { + "parameterClassName": "org.onap.policy.apex.context.parameters.ContextParameters", + "schemaParameters": { + "Avro": { + "parameterClassName": "org.onap.policy.apex.plugins.context.schema.avro.AvroSchemaHelperParameters" + }, + "Java": { + "parameterClassName": "org.onap.policy.apex.context.impl.schema.java.JavaSchemaHelperParameters", + "jsonAdapters": { + "Instant": { + "adaptedClass": "java.time.Instant", + "adaptorClass": "org.onap.policy.controlloop.util.Serialization$GsonInstantAdapter" + } + } + } + } + } + } + }, + "eventInputParameters": { + "ConfigureBlackWhiteListConsumer": { + "carrierTechnologyParameters": { + "carrierTechnology": "RESTCLIENT", + "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters", + "parameters": { + "url": "http://10.2.0.13:30227/events/BLACK-WHITE-LIST-READ/APEX/1?timeout=60000" + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON" + } + }, + "AnalyticsConsumer": { + "carrierTechnologyParameters": { + "carrierTechnology": "RESTCLIENT", + "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters", + "parameters": { + "url": "http://10.2.0.13:30227/events/unauthenticated.DCAE_CL_OUTPUT/APEX/1?timeout=60000" + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON", + "parameters": { + "pojoField": "VirtualControlLoopEvent", + "sourceAlias": "from" + } + }, + "eventName": "VirtualControlLoopEvent" + }, + "ControllerConsumer": { + "carrierTechnologyParameters": { + "carrierTechnology": "RESTCLIENT", + "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters", + "parameters": { + "url": "http://10.2.0.13:30227/events/APPC-LCM-WRITE/APEX/1?timeout=60000" + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON", + "parameters": { + "versionAlias": "version", + "pojoField": "ControllerResponse" + } + }, + "eventName": "ControllerResponseEvent" + }, + "ActionInitConsumer": { + "carrierTechnologyParameters": { + "carrierTechnology": "EVENT_REQUESTOR" + }, + "eventProtocolParameters": { + "eventProtocol": "APEX" + }, + "eventNameFilter": "ActionEvent", + "requestorMode": true, + "requestorPeer": "ActionInitProducer", + "requestorTimeout": 500 + } + }, + "eventOutputParameters": { + "ConfigureBlackWhiteListProducer": { + "carrierTechnologyParameters": { + "carrierTechnology": "RESTCLIENT", + "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters", + "parameters": { + "url": "http://10.2.0.13:30227/events/BLACK-WHITE-LIST-WRITE" + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON" + }, + "eventNameFilter": "ConfigureBlackWhiteListResultEvent" + }, + "ActionInitProducer": { + "carrierTechnologyParameters": { + "carrierTechnology": "EVENT_REQUESTOR" + }, + "eventProtocolParameters": { + "eventProtocol": "APEX" + }, + "eventNameFilter": "ActionEventListEvent", + "requestorMode": true, + "requestorPeer": "ActionInitConsumer", + "requestorTimeout": 500 + }, + "logProducer": { + "carrierTechnologyParameters": { + "carrierTechnology": "FILE", + "parameters": { + "fileName": "/tmp/ControlLoopEventsOut.json" + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON" + } + }, + "ControllerProducer": { + "carrierTechnologyParameters": { + "carrierTechnology": "RESTCLIENT", + "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters", + "parameters": { + "url": "http://10.2.0.13:30227/events/APPC-LCM-READ" + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON", + "parameters": { + "versionAlias": "version", + "sourceAlias": "from", + "pojoField": "ControllerRequest" + } + }, + "eventNameFilter": "ControllerRequestEvent" + }, + "PolicyLogProducer": { + "carrierTechnologyParameters": { + "carrierTechnology": "RESTCLIENT", + "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters", + "parameters": { + "url": "http://10.2.0.13:30227/events/POLICY-CL-MGT" + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON", + "parameters": { + "versionAlias": "version", + "sourceAlias": "from", + "pojoField": "VirtualControlLoopNotification" + } + }, + "eventNameFilter": "ControlLoopLogEvent" + } + } +} diff --git a/examples/examples-onap-vcpe/src/main/resources/examples/config/ONAPvCPEStandalone/ApexConfig_Sim.json b/examples/examples-onap-vcpe/src/main/resources/examples/config/ONAPvCPEStandalone/ApexConfig_Sim.json new file mode 100644 index 000000000..081cc999f --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/examples/config/ONAPvCPEStandalone/ApexConfig_Sim.json @@ -0,0 +1,184 @@ +{ + "engineServiceParameters": { + "name": "MyApexEngine", + "version": "0.0.1", + "id": 45, + "instanceCount": 4, + "deploymentPort": 12561, + "policyModelFileName": "examples/models/ONAPvCPE/ONAPvCPEPolicyModel.json", + "engineParameters": { + "executorParameters": { + "JAVASCRIPT": { + "parameterClassName": "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters" + } + }, + "contextParameters": { + "parameterClassName": "org.onap.policy.apex.context.parameters.ContextParameters", + "schemaParameters": { + "Avro": { + "parameterClassName": "org.onap.policy.apex.plugins.context.schema.avro.AvroSchemaHelperParameters" + }, + "Java": { + "parameterClassName": "org.onap.policy.apex.context.impl.schema.java.JavaSchemaHelperParameters", + "jsonAdapters": { + "Instant": { + "adaptedClass": "java.time.Instant", + "adaptorClass": "org.onap.policy.controlloop.util.Serialization$GsonInstantAdapter" + } + } + } + } + } + } + }, + "eventInputParameters": { + "ConfigureBlackWhiteListConsumer": { + "carrierTechnologyParameters": { + "carrierTechnology": "FILE", + "parameters": { + "fileName": "examples/events/ONAPvCPEStandalone/ConfigureBlackWhiteLists.json" + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON" + } + }, + "AnalyticsPreloadConsumer": { + "carrierTechnologyParameters": { + "carrierTechnology": "FILE", + "parameters": { + "fileName": "examples/events/ONAPvCPEStandalone/MultiEvents.json" + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON", + "parameters": { + "pojoField": "VirtualControlLoopEvent", + "sourceAlias": "from" + } + }, + "eventName": "VirtualControlLoopEvent" + }, + "AnalyticsConsumer": { + "carrierTechnologyParameters": { + "carrierTechnology": "RESTCLIENT", + "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters", + "parameters": { + "url": "http://localhost:54321/OnapVCpeSim/sim/events/unauthenticated.DCAE_CL_OUTPUT/APEX/1?timeout=30000" + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON", + "parameters": { + "pojoField": "VirtualControlLoopEvent", + "sourceAlias": "from" + } + }, + "eventName": "VirtualControlLoopEvent" + }, + "ControllerConsumer": { + "carrierTechnologyParameters": { + "carrierTechnology": "RESTCLIENT", + "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters", + "parameters": { + "url": "http://localhost:54321/OnapVCpeSim/sim/events/APPC_LCM_WRITE/APEX/1?timeout=60000" + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON", + "parameters": { + "versionAlias": "version", + "pojoField": "ControllerResponse" + } + }, + "eventName": "ControllerResponseEvent", + "eventNameFilter": "ControllerResponseEvent" + }, + "ActionInitConsumer": { + "carrierTechnologyParameters": { + "carrierTechnology": "EVENT_REQUESTOR" + }, + "eventProtocolParameters": { + "eventProtocol": "APEX" + }, + "eventNameFilter": "ActionEvent", + "requestorMode": true, + "requestorPeer": "ActionInitProducer", + "requestorTimeout": 500 + } + }, + "eventOutputParameters": { + "ConfigureBlackWhiteListProducer": { + "carrierTechnologyParameters": { + "carrierTechnology": "RESTCLIENT", + "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters", + "parameters": { + "url": "http://localhost:54321/OnapVCpeSim/sim/events/BLACK-WHITE-LIST-READ" + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON" + }, + "eventNameFilter": "ConfigureBlackWhiteListResultEvent" + }, + "ActionInitProducer": { + "carrierTechnologyParameters": { + "carrierTechnology": "EVENT_REQUESTOR" + }, + "eventProtocolParameters": { + "eventProtocol": "APEX" + }, + "eventNameFilter": "ActionEventListEvent", + "requestorMode": true, + "requestorPeer": "ActionInitConsumer", + "requestorTimeout": 500 + }, + "logProducer": { + "carrierTechnologyParameters": { + "carrierTechnology": "FILE", + "parameters": { + "fileName": "/tmp/ControlLoopEventsOut.json" + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON" + } + }, + "ControllerProducer": { + "carrierTechnologyParameters": { + "carrierTechnology": "RESTCLIENT", + "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters", + "parameters": { + "url": "http://localhost:54321/OnapVCpeSim/sim/events/APPC-LCM-READ" + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON", + "parameters": { + "versionAlias": "version", + "sourceAlias": "from", + "pojoField": "ControllerRequest" + } + }, + "eventNameFilter": "ControllerRequestEvent" + }, + "PolicyLogProducer": { + "carrierTechnologyParameters": { + "carrierTechnology": "RESTCLIENT", + "parameterClassName": "org.onap.policy.apex.plugins.event.carrier.restclient.RestClientCarrierTechnologyParameters", + "parameters": { + "url": "http://localhost:54321/OnapVCpeSim/sim/events/POLICY_CL_MGT" + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON", + "parameters": { + "versionAlias": "version", + "sourceAlias": "from", + "pojoField": "VirtualControlLoopNotification" + } + }, + "eventNameFilter": "ControlLoopLogEvent" + } + } +} diff --git a/examples/examples-onap-vcpe/src/main/resources/examples/config/ONAPvCPEStandalone/ApexConfig_Sim_StdIO.json b/examples/examples-onap-vcpe/src/main/resources/examples/config/ONAPvCPEStandalone/ApexConfig_Sim_StdIO.json new file mode 100644 index 000000000..d6b6555ce --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/examples/config/ONAPvCPEStandalone/ApexConfig_Sim_StdIO.json @@ -0,0 +1,100 @@ +{ + "engineServiceParameters": { + "name": "MyApexEngine", + "version": "0.0.1", + "id": 45, + "instanceCount": 4, + "deploymentPort": 12561, + "policyModelFileName": "examples/models/ONAPvCPE/ONAPvCPEPolicyModel.json", + "engineParameters": { + "executorParameters": { + "JAVASCRIPT": { + "parameterClassName": "org.onap.policy.apex.plugins.executor.javascript.JavascriptExecutorParameters" + } + }, + "contextParameters": { + "parameterClassName": "org.onap.policy.apex.context.parameters.ContextParameters", + "schemaParameters": { + "Avro": { + "parameterClassName": "org.onap.policy.apex.plugins.context.schema.avro.AvroSchemaHelperParameters" + }, + "Java": { + "parameterClassName": "org.onap.policy.apex.context.impl.schema.java.JavaSchemaHelperParameters", + "jsonAdapters": { + "Instant": { + "adaptedClass": "java.time.Instant", + "adaptorClass": "org.onap.policy.controlloop.util.Serialization$GsonInstantAdapter" + } + } + } + } + } + } + }, + "eventInputParameters": { + "ConfigureBlackWhiteListConsumer": { + "carrierTechnologyParameters": { + "carrierTechnology": "FILE", + "parameters": { + "fileName": "examples/events/ONAPvCPEStandalone/ConfigureBlackWhiteLists.json" + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON" + } + }, + "AnalyticsConsumer": { + "carrierTechnologyParameters": { + "carrierTechnology": "FILE", + "parameters": { + "standardIo": true + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON", + "parameters": { + "pojoField": "VirtualControlLoopEvent", + "sourceAlias": "from" + } + }, + "eventName": "VirtualControlLoopEvent" + }, + "ActionInitConsumer": { + "carrierTechnologyParameters": { + "carrierTechnology": "EVENT_REQUESTOR" + }, + "eventProtocolParameters": { + "eventProtocol": "APEX" + }, + "eventNameFilter": "ActionEvent", + "requestorMode": true, + "requestorPeer": "ActionInitProducer", + "requestorTimeout": 500 + } + }, + "eventOutputParameters": { + "ActionInitProducer": { + "carrierTechnologyParameters": { + "carrierTechnology": "EVENT_REQUESTOR" + }, + "eventProtocolParameters": { + "eventProtocol": "APEX" + }, + "eventNameFilter": "ActionEventListEvent", + "requestorMode": true, + "requestorPeer": "ActionInitConsumer", + "requestorTimeout": 500 + }, + "logProducer": { + "carrierTechnologyParameters": { + "carrierTechnology": "FILE", + "parameters": { + "standardIo": true + } + }, + "eventProtocolParameters": { + "eventProtocol": "JSON" + } + } + } +} diff --git a/examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/CLAbatedEvent.json b/examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/CLAbatedEvent.json new file mode 100644 index 000000000..bee240319 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/CLAbatedEvent.json @@ -0,0 +1,31 @@ +{ + "closedLoopControlName": "ControlLoop-vCPE-85317438-861d-42a9-979e-9d96dc0a9ef1", + "closedLoopAlarmStart": 1519638001326, + "closedLoopAlarmEnd": 1519638197324, + "closedLoopEventClient": "DCAE_INSTANCE_ID.dcae-tca", + "closedLoopEventStatus": "ABATED", + "requestID": "4a68f8a5-0db9-4070-a132-adede51e3d5c", + "target_type": "VNF", + "target": "generic-vnf.vnf-id", + "version": "1.0.2", + "from": "DCAE", + "policyScope": "ControlLoop", + "policyName": "ONAPvCPEStandalone", + "policyVersion": "1.0.0", + "additionalEventParams": {}, + "payload": "", + "AAI": { + "generic-vnf.vnf-id": "b4fe00ac-1da6-4b00-ac0d-8e8300db39e1", + "generic-vnf.resource-version": "1", + "generic-vnf.vnf-name": "vCPEInfraVNF13", + "generic-vnf.prov-status": "PREPROV", + "generic-vnf.is-closed-loop-disabled": "false", + "generic-vnf.orchestration-status": "Created", + "generic-vnf.vnf-type": "cCPEInfraService10/vCPEInfraService10 0", + "generic-vnf.in-maint": "false", + "generic-vnf.service-id": "5585fd2c-ad0d-4050-b0cf-dfe4a03bd01f", + "vserver.is-closed-loop-disabled": "false", + "vserver.prov-status": "ACTIVE", + "vserver.vserver-name": "vserverName" + } +} diff --git a/examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/CLOnsetEvent.json b/examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/CLOnsetEvent.json new file mode 100644 index 000000000..105120dfe --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/CLOnsetEvent.json @@ -0,0 +1,31 @@ +{ + "closedLoopControlName": "ControlLoop-vCPE-85317438-861d-42a9-979e-9d96dc0a9ef1", + "closedLoopAlarmStart": 1519638197324, + "closedLoopAlarmEnd": 0, + "closedLoopEventClient": "DCAE_INSTANCE_ID.dcae-tca", + "closedLoopEventStatus": "ONSET", + "requestID": "4a68f8a5-0db9-4070-a132-adede51e3d5c", + "target_type": "VNF", + "target": "generic-vnf.vnf-id", + "version": "1.0.2", + "from": "DCAE", + "policyScope": "ControlLoop", + "policyName": "ONAPvCPEStandalone", + "policyVersion": "1.0.0", + "additionalEventParams": {}, + "payload": "", + "AAI": { + "generic-vnf.resource-version": "1", + "generic-vnf.vnf-name": "vCPEInfraVNF13", + "generic-vnf.prov-status": "PREPROV", + "generic-vnf.is-closed-loop-disabled": "false", + "generic-vnf.orchestration-status": "Created", + "generic-vnf.vnf-type": "vCPEInfraService10/vCPEInfraService10 0", + "generic-vnf.in-maint": "false", + "generic-vnf.service-id": "5585fd2c-ad0d-4050-b0cf-dfe4a03bd01f", + "generic-vnf.vnf-id": "b4fe00ac-1da6-4b00-ac0d-8e8300db39e1", + "vserver.is-closed-loop-disabled": "false", + "vserver.prov-status": "ACTIVE", + "vserver.vserver-name": "vserverName" + } +} diff --git a/examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/ConfigureBlackWhiteLists.json b/examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/ConfigureBlackWhiteLists.json new file mode 100644 index 000000000..d9edab528 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/ConfigureBlackWhiteLists.json @@ -0,0 +1,48 @@ +{ + "nameSpace": "org.onap.policy.apex.onap.vcpe", + "name": "ConfigureBlackWhiteListEvent", + "version": "0.0.1", + "targetType": "VNF", + "target": "b4fe00ac-1da6-4b00-ac0d-8e8300db39e1", + "black": false +} +{ + "nameSpace": "org.onap.policy.apex.onap.vcpe", + "name": "ConfigureBlackWhiteListEvent", + "version": "0.0.1", + "targetType": "VNF", + "target": "b4fe00ac-1da6-4b00-ac0d-8e8300db39e2", + "black": true +} +{ + "nameSpace": "org.onap.policy.apex.onap.vcpe", + "name": "ConfigureBlackWhiteListEvent", + "version": "0.0.1", + "targetType": "Service", + "target": "5585fd2c-ad0d-4050-b0cf-dfe4a03bd01f", + "black": false +} +{ + "nameSpace": "org.onap.policy.apex.onap.vcpe", + "name": "ConfigureBlackWhiteListEvent", + "version": "0.0.1", + "targetType": "Service", + "target": "5585fd2c-ad0d-4050-b0cf-dfe4a03bd020", + "black": true +} +{ + "nameSpace": "org.onap.policy.apex.onap.vcpe", + "name": "ConfigureBlackWhiteListEvent", + "version": "0.0.1", + "targetType": "VServer", + "target": "vserverName", + "black": false +} +{ + "nameSpace": "org.onap.policy.apex.onap.vcpe", + "name": "ConfigureBlackWhiteListEvent", + "version": "0.0.1", + "targetType": "VServer", + "target": "vserverNameBlack", + "black": true +} diff --git a/examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/ControllerActionEvent.json b/examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/ControllerActionEvent.json new file mode 100644 index 000000000..6e18a91b0 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/ControllerActionEvent.json @@ -0,0 +1,22 @@ +{ + "rpc-name": "restart", + "version": "2.0", + "correlation-id": "4a68f8a5-0db9-4070-a132-adede51e3d5c", + "type": "request", + "body": { + "input": { + "common-header": { + "timestamp": "2018-02-26T10:23:41.97Z", + "api-ver": "2.15", + "originator-id": "4a68f8a5-0db9-4070-a132-adede51e3d5c", + "request-id": "4a68f8a5-0db9-4070-a132-adede51e3d5c", + "sub-request-id": "1", + "flags": {} + }, + "action": "Restart", + "action-identifiers": { + "vnf-id": "b4fe00ac-1da6-4b00-ac0d-8e8300db39e1" + } + } + } +} \ No newline at end of file diff --git a/examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/ControllerResponseNOKEvent.json b/examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/ControllerResponseNOKEvent.json new file mode 100644 index 000000000..da7d1f52b --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/ControllerResponseNOKEvent.json @@ -0,0 +1,27 @@ +{ + "rpc-name": "restart", + "version": "0.0.1", + "correlation-id": "4a68f8a5-0db9-4070-a132-adede51e3d5c", + "type": "request", + "body": { + "output": { + "common-header": { + "timestamp": 1578052403357, + "api-ver": "2.00", + "originator-id": "4a68f8a5-0db9-4070-a132-adede51e3d5c", + "request-id": "4a68f8a5-0db9-4070-a132-adede51e3d5c", + "sub-request-id": "1", + "flags": { + "mode": "EXCLUSIVE", + "force": "TRUE", + "ttl": "10000" + } + }, + "status": { + "code": 200, + "message": "Restart Failed" + }, + "payload": "" + } + } +} diff --git a/examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/ControllerResponseOKEvent.json b/examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/ControllerResponseOKEvent.json new file mode 100644 index 000000000..f2d3abe01 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/ControllerResponseOKEvent.json @@ -0,0 +1,27 @@ +{ + "rpc-name": "restart", + "version": "2.0.0", + "correlation-id": "4a68f8a5-0db9-4070-a132-adede51e3d5c", + "type": "request", + "body": { + "output": { + "common-header": { + "timestamp": 1578052403357, + "api-ver": "2.00", + "originator-id": "4a68f8a5-0db9-4070-a132-adede51e3d5c", + "request-id": "4a68f8a5-0db9-4070-a132-adede51e3d5c", + "sub-request-id": "1", + "flags": { + "mode": "EXCLUSIVE", + "force": "TRUE", + "ttl": "10000" + } + }, + "status": { + "code": 400, + "message": "Restart Successful" + }, + "payload": "" + } + } +} diff --git a/examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/MultiEvents.json b/examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/MultiEvents.json new file mode 100644 index 000000000..030cbf789 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/examples/events/ONAPvCPEStandalone/MultiEvents.json @@ -0,0 +1,124 @@ +{ + "closedLoopControlName": "ControlLoop-vCPE-85317438-861d-42a9-979e-9d96dc0a9ef1", + "closedLoopAlarmStart": 1519638197324, + "closedLoopAlarmEnd": 0, + "closedLoopEventClient": "DCAE_INSTANCE_ID.dcae-tca", + "closedLoopEventStatus": "ONSET", + "requestID": "4a68f8a5-0db9-4070-a132-adede51e0000", + "target_type": "VNF", + "target": "generic-vnf.vnf-id", + "version": "1.0.2", + "from": "DCAE", + "policyScope": "ControlLoop", + "policyName": "ONAPvCPEStandalone", + "policyVersion": "1.0.0", + "additionalEventParams": {}, + "payload": "", + "AAI": { + "generic-vnf.resource-version": "1", + "generic-vnf.vnf-name": "vCPEInfraVNF0000", + "generic-vnf.prov-status": "PREPROV", + "generic-vnf.is-closed-loop-disabled": "false", + "generic-vnf.orchestration-status": "Created", + "generic-vnf.vnf-type": "vCPEInfraService10/vCPEInfraService10 0", + "generic-vnf.in-maint": "false", + "generic-vnf.service-id": "5585fd2c-ad0d-4050-b0cf-dfe4a03bd01f", + "generic-vnf.vnf-id": "00000000-0000-0000-0000-000000000000", + "vserver.is-closed-loop-disabled": "false", + "vserver.prov-status": "ACTIVE", + "vserver.vserver-name": "Ete_vCPECLvCPESNK_7ba1fbde_0" + } +} +{ + "closedLoopControlName": "ControlLoop-vCPE-85317438-861d-42a9-979e-9d96dc0a9ef1", + "closedLoopAlarmStart": 1519638197324, + "closedLoopAlarmEnd": 0, + "closedLoopEventClient": "DCAE_INSTANCE_ID.dcae-tca", + "closedLoopEventStatus": "ONSET", + "requestID": "4a68f8a5-0db9-4070-a132-adede51e0001", + "target_type": "VNF", + "target": "generic-vnf.vnf-id", + "version": "1.0.2", + "from": "DCAE", + "policyScope": "ControlLoop", + "policyName": "ONAPvCPEStandalone", + "policyVersion": "1.0.0", + "additionalEventParams": {}, + "payload": "", + "AAI": { + "generic-vnf.resource-version": "1", + "generic-vnf.vnf-name": "vCPEInfraVNF0001", + "generic-vnf.prov-status": "PREPROV", + "generic-vnf.is-closed-loop-disabled": "false", + "generic-vnf.orchestration-status": "Created", + "generic-vnf.vnf-type": "vCPEInfraService10/vCPEInfraService10 0", + "generic-vnf.in-maint": "false", + "generic-vnf.service-id": "5585fd2c-ad0d-4050-b0cf-dfe4a03bd01f", + "generic-vnf.vnf-id": "00000000-0000-0000-0000-000000000001", + "vserver.is-closed-loop-disabled": "false", + "vserver.prov-status": "ACTIVE", + "vserver.vserver-name": "Ete_vCPECLvCPESNK_7ba1fbde_1" + } +} +{ + "closedLoopControlName": "ControlLoop-vCPE-85317438-861d-42a9-979e-9d96dc0a9ef1", + "closedLoopAlarmStart": 1519638001326, + "closedLoopAlarmEnd": 1519638197324, + "closedLoopEventClient": "DCAE_INSTANCE_ID.dcae-tca", + "closedLoopEventStatus": "ABATED", + "requestID": "4a68f8a5-0db9-4070-a132-adede51e0005", + "target_type": "VNF", + "target": "generic-vnf.vnf-id", + "version": "1.0.2", + "from": "DCAE", + "policyScope": "ControlLoop", + "policyName": "ONAPvCPEStandalone", + "policyVersion": "1.0.0", + "additionalEventParams": {}, + "payload": "", + "AAI": { + "generic-vnf.vnf-id": "00000000-0000-0000-0000-000000000005", + "generic-vnf.resource-version": "1", + "generic-vnf.vnf-name": "vCPEInfraVNF0005", + "generic-vnf.prov-status": "PREPROV", + "generic-vnf.is-closed-loop-disabled": "false", + "generic-vnf.orchestration-status": "Created", + "generic-vnf.vnf-type": "cCPEInfraService10/vCPEInfraService10 0", + "generic-vnf.in-maint": "false", + "generic-vnf.service-id": "5585fd2c-ad0d-4050-b0cf-dfe4a03b0005", + "vserver.is-closed-loop-disabled": "false", + "vserver.prov-status": "ACTIVE", + "vserver.vserver-name": "Ete_vCPECLvCPESNK_7ba1fbde_4" + } +} +{ + "closedLoopControlName": "ControlLoop-vCPE-85317438-861d-42a9-979e-9d96dc0a9ef1", + "closedLoopAlarmStart": 1519638001326, + "closedLoopAlarmEnd": 1519638197324, + "closedLoopEventClient": "DCAE_INSTANCE_ID.dcae-tca", + "closedLoopEventStatus": "ABATED", + "requestID": "4a68f8a5-0db9-4070-a132-adede51e0006", + "target_type": "VNF", + "target": "generic-vnf.vnf-id", + "version": "1.0.2", + "from": "DCAE", + "policyScope": "ControlLoop", + "policyName": "ONAPvCPEStandalone", + "policyVersion": "1.0.0", + "additionalEventParams": {}, + "payload": "", + "AAI": { + "generic-vnf.vnf-id": "00000000-0000-0000-0000-000000000006", + "generic-vnf.resource-version": "1", + "generic-vnf.vnf-name": "vCPEInfraVNF0006", + "generic-vnf.prov-status": "PREPROV", + "generic-vnf.is-closed-loop-disabled": "false", + "generic-vnf.orchestration-status": "Created", + "generic-vnf.vnf-type": "cCPEInfraService10/vCPEInfraService10 0", + "generic-vnf.in-maint": "false", + "generic-vnf.service-id": "5585fd2c-ad0d-4050-b0cf-dfe4a03b0006", + "vserver.is-closed-loop-disabled": "false", + "vserver.prov-status": "ACTIVE", + "vserver.vserver-name": "Ete_vCPECLvCPESNK_7ba1fbde_5" + } +} diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/AAILookupTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/AAILookupTask.js deleted file mode 100644 index fcb39052d..000000000 --- a/examples/examples-onap-vcpe/src/main/resources/logic/AAILookupTask.js +++ /dev/null @@ -1,85 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -executor.logger.info(executor.subject.id); -executor.logger.info(executor.inFields); - -var vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get( - executor.inFields.get("vnfID").toString()); - -executor.logger.info("Executing A&AI Lookup"); -executor.logger.info(vcpeClosedLoopStatus); - -var aaiInfo = vcpeClosedLoopStatus.get("AAI"); - -if (aaiInfo.get("vserverName") == null) { - executor.message = "the field vserver.vserver-name must exist in the onset control loop event"; - executor.logger.warn(executor.message); - var returnValue = executor.isFalse; -} -else if (aaiInfo.get("genericVnfVnfId") == null && aaiInfo.get("genericVnfVnfName") == null) { - executor.message = "either the field generic-vnf.vnf-id or generic-vnf.vnf-name must exist" - + " in the onset control loop event"; - executor.logger.warn(executor.message); - var returnValue = executor.isFalse; -} -else { - var restManager = new org.onap.policy.rest.RestManager; - var aaiManager = new org.onap.policy.aai.AaiManager(restManager); - - // We need to instantiate the type in order to trigger the static JAXB handling - // in the AaiCqResponse class - var aaiCqResponseType = Java.type("org.onap.policy.aai.AaiCqResponse"); - - var aaiResponse = aaiManager.getCustomQueryResponse( - "http://localhost:54321/OnapVCpeSim/sim", - "aai.username", - "aai.password", - executor.inFields.get("requestID"), - vcpeClosedLoopStatus.get("AAI").get("vserverName") - ); - - var genericVnf; - - if (aaiInfo.get("genericVnfVnfId") != null) { - genericVnf = aaiResponse.getGenericVnfByModelInvariantId(aaiInfo.get("genericVnfVnfId")); - } - else { - genericVnf = aaiResponse.getGenericVnfByVnfName(aaiInfo.get("genericVnfVnfId")); - } - - aaiInfo.put("genericVnfResourceVersion", genericVnf.getResourceVersion()); - aaiInfo.put("genericVnfVnfName", genericVnf.getVnfName()); - aaiInfo.put("genericVnfProvStatus", genericVnf.getProvStatus()); - aaiInfo.put("genericVnfIsClosedLoopDisabled", genericVnf.isIsClosedLoopDisabled().toString()); - aaiInfo.put("genericVnfVnfType", genericVnf.getVnfType()); - aaiInfo.put("genericVnfInMaint", genericVnf.isInMaint().toString()); - aaiInfo.put("genericVnfServiceId", genericVnf.getServiceId()); - aaiInfo.put("genericVnfVnfId", genericVnf.getVnfId()); - aaiInfo.put("genericVnfOrchestrationStatus", - genericVnf.getVfModules().getVfModule().get(0).getOrchestrationStatus()); - - executor.outFields.put("requestID", executor.inFields.get("requestID")); - executor.outFields.put("vnfID", executor.inFields.get("vnfID")); - - executor.logger.info(executor.outFields); - - var returnValue = executor.isTrue; -} diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/APPCRestartVNFRequestTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/APPCRestartVNFRequestTask.js deleted file mode 100644 index dd69dcb1d..000000000 --- a/examples/examples-onap-vcpe/src/main/resources/logic/APPCRestartVNFRequestTask.js +++ /dev/null @@ -1,67 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -executor.logger.info(executor.subject.id); -executor.logger.info(executor.inFields); - -var appcRequest = new org.onap.policy.appclcm.AppcLcmDmaapWrapper; -appcRequest.setBody(new org.onap.policy.appclcm.AppcLcmBody); -appcRequest.getBody().setInput(new org.onap.policy.appclcm.AppcLcmInput); -appcRequest.getBody().getInput().setCommonHeader( - new org.onap.policy.appclcm.AppcLcmCommonHeader); - -appcRequest.setVersion("2.0.0"); -appcRequest.setRpcName("restart"); -appcRequest.setCorrelationId(executor.inFields.get("requestID")); -appcRequest.setType("request"); - -var vcpeClosedLoopStatus = executor - .getContextAlbum("VCPEClosedLoopStatusAlbum").get( - executor.inFields.get("vnfID").toString()); - -appcRequest.getBody().getInput().getCommonHeader().setTimeStamp(java.time.Instant.now()); -appcRequest.getBody().getInput().getCommonHeader().setApiVer("2.00"); -appcRequest.getBody().getInput().getCommonHeader().setOriginatorId( - executor.inFields.get("requestID").toString()); -appcRequest.getBody().getInput().getCommonHeader().setRequestId( - executor.inFields.get("requestID")); -appcRequest.getBody().getInput().getCommonHeader().setSubRequestId("1"); -appcRequest.getBody().getInput().getCommonHeader().getFlags().put("ttl", "10000"); -appcRequest.getBody().getInput().getCommonHeader().getFlags().put("force", "TRUE"); -appcRequest.getBody().getInput().getCommonHeader().getFlags().put("mode", "EXCLUSIVE"); - -appcRequest.getBody().getInput().setAction("Restart"); -appcRequest.getBody().getInput().setActionIdentifiers(new java.util.HashMap()); -appcRequest.getBody().getInput().getActionIdentifiers().put("vnf-id", - executor.inFields.get("vnfID").toString()); - -executor.getContextAlbum("RequestIDVNFIDAlbum").put( - executor.inFields.get("requestID").toString(), - executor.inFields.get("vnfID")); - -vcpeClosedLoopStatus.put("notification", "OPERATION"); -vcpeClosedLoopStatus.put("notificationTime", java.lang.System - .currentTimeMillis()); - -executor.outFields.put("APPCLCMRequestEvent", appcRequest); - -executor.logger.info(executor.outFields); - -var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/APPCRestartVNFResponseTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/APPCRestartVNFResponseTask.js deleted file mode 100644 index 75ab6a3af..000000000 --- a/examples/examples-onap-vcpe/src/main/resources/logic/APPCRestartVNFResponseTask.js +++ /dev/null @@ -1,88 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * APPC LCM Response code: 100 ACCEPTED - * 200 ERROR UNEXPECTED ERROR means failure - * 312 REJECTED DUPLICATE REQUEST - * 400 SUCCESS - * - * Note: Sometimes the corelationId has a -1 at the tail, need to get rid of it when present. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -executor.logger.info(executor.subject.id); -executor.logger.info(executor.inFields); - -var appcResponse = executor.inFields.get("APPCLCMResponseEvent"); - -var requestIDString = appcResponse.getCorrelationId().substr(0, 36); -executor.logger.info("requestIDString = " + requestIDString); -var vnfID = executor.getContextAlbum("RequestIDVNFIDAlbum") - .get(requestIDString); -executor.logger.info("Size of RequestIDVNFIDAlbum = " - + executor.getContextAlbum("RequestIDVNFIDAlbum").size()); -executor.logger.info("vnfID = " + vnfID); - -var returnValue = executor.isTrue; - -if (vnfID != null) { - var vcpeClosedLoopStatus = executor.getContextAlbum( - "VCPEClosedLoopStatusAlbum").get(vnfID.toString()); - var requestId = java.util.UUID.fromString(vcpeClosedLoopStatus - .get("requestID")); - - vcpeClosedLoopStatus.put("notificationTime", java.lang.System - .currentTimeMillis()); - - executor.logger.info("Got from APPC code: " - + org.onap.policy.appclcm.AppcLcmResponseCode - .toResponseValue(appcResponse.getBody().getOutput() - .getStatus().getCode())); - - if (org.onap.policy.appclcm.AppcLcmResponseCode - .toResponseValue(appcResponse.getBody().getOutput().getStatus() - .getCode()) == org.onap.policy.appclcm.AppcLcmResponseCode.SUCCESS) { - vcpeClosedLoopStatus.put("notification", "OPERATION_SUCCESS"); - vcpeClosedLoopStatus.put("message", "vCPE restarted"); - executor.getContextAlbum("RequestIDVNFIDAlbum").remove(requestIDString); - } else if (org.onap.policy.appclcm.AppcLcmResponseCode - .toResponseValue(appcResponse.getBody().getOutput().getStatus() - .getCode()) == "ACCEPTED" - || org.onap.policy.appclcm.AppcLcmResponseCode - .toResponseValue(appcResponse.getBody().getOutput() - .getStatus().getCode()) == "REJECT") { - executor.logger - .info("Got ACCEPTED 100 or REJECT 312, keep the context, wait for next response. Code is: " - + org.onap.policy.appclcm.AppcLcmResponseCode - .toResponseValue(appcResponse.getBody() - .getOutput().getStatus().getCode())); - } else { - executor.getContextAlbum("RequestIDVNFIDAlbum").remove(requestIDString); - vcpeClosedLoopStatus.put("notification", "OPERATION_FAILURE"); - vcpeClosedLoopStatus.put("message", "vCPE restart failed"); - } - - executor.outFields.put("requestID", requestId); - executor.outFields.put("vnfID", vnfID); -} else { - executor.message = "VNF ID not found in context album for request ID " - + requestIDString; - returnValue = executor.isFalse; -} - -executor.logger.info(executor.outFields); diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/AbatedTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/AbatedTask.js deleted file mode 100644 index f37b6f1b5..000000000 --- a/examples/examples-onap-vcpe/src/main/resources/logic/AbatedTask.js +++ /dev/null @@ -1,41 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -executor.logger.info(executor.subject.id); -executor.logger.info(executor.inFields); - -var vcpeClosedLoopStatus = null; -if( executor.inFields.get("vnfID") == null) { - executor.logger.info("AbatedTask: vnfID is null"); - var vnfName = executor.inFields.get("vnfName"); - vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get( - executor.inFields.get("vnfName")); -} else { - vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get( - executor.inFields.get("vnfID").toString()); -} - -vcpeClosedLoopStatus.put("notification", "FINAL_SUCCESS"); -vcpeClosedLoopStatus.put("notificationTime", java.lang.System.currentTimeMillis()); -vcpeClosedLoopStatus.put("message", "situation has been abated"); - -executor.logger.info(executor.outFields); - -var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/ControlLoopLogTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/ControlLoopLogTask.js deleted file mode 100644 index aa816ca95..000000000 --- a/examples/examples-onap-vcpe/src/main/resources/logic/ControlLoopLogTask.js +++ /dev/null @@ -1,72 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -executor.logger.info(executor.subject.id); -executor.logger.info(executor.inFields); - -var vnfID = executor.inFields.get("vnfID"); -if(vnfID == null) { - vnfID = executor.inFields.get("vnfName"); -} -executor.logger.info("vnfID=" + vnfID); - -var vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get(vnfID.toString()); - -executor.logger.info("Logging context information for VNF \"" + vnfID + "\""); - -var clNotification = new org.onap.policy.controlloop.VirtualControlLoopNotification(); - -clNotification.setClosedLoopControlName(vcpeClosedLoopStatus.get("closedLoopControlName")); -clNotification.setClosedLoopAlarmStart(java.time.Instant.ofEpochMilli(vcpeClosedLoopStatus.get("closedLoopAlarmStart"))); -clNotification.setClosedLoopAlarmEnd(java.time.Instant.ofEpochMilli(vcpeClosedLoopStatus.get("closedLoopAlarmEnd"))); -clNotification.setClosedLoopEventClient(vcpeClosedLoopStatus.get("closedLoopEventClient")); -clNotification.setVersion(vcpeClosedLoopStatus.get("version")); -clNotification.setRequestId(java.util.UUID.fromString(vcpeClosedLoopStatus.get("requestID"))); -clNotification.setTargetType(vcpeClosedLoopStatus.get("target_type")); -clNotification.setTarget(org.onap.policy.controlloop.ControlLoopEventStatus.toStatus(vcpeClosedLoopStatus.get("target"))); -clNotification.setFrom(vcpeClosedLoopStatus.get("from")); -clNotification.setPolicyScope(vcpeClosedLoopStatus.get("policyScope")); -clNotification.setPolicyName(vcpeClosedLoopStatus.get("policyName")); -clNotification.setPolicyVersion(vcpeClosedLoopStatus.get("policyVersion")); -clNotification.setNotification(org.onap.policy.controlloop.ControlLoopNotificationType.toType(vcpeClosedLoopStatus.get("notification"))); -clNotification.setMessage(vcpeClosedLoopStatus.get("message")); - -var notificationInstant = java.time.Instant.ofEpochSecond(vcpeClosedLoopStatus.get("notificationTime")); -var notificationTime = java.time.ZonedDateTime.ofInstant(notificationInstant, java.time.ZoneOffset.UTC); -clNotification.setNotificationTime(notificationTime); - -var aaiInfo = vcpeClosedLoopStatus.get("AAI"); - -clNotification.getAai().put("generic-vnf.resource-version", aaiInfo.get("genericVnfResourceVersion")); -clNotification.getAai().put("generic-vnf.vnf-name", aaiInfo.get("genericVnfVnfName")); -clNotification.getAai().put("generic-vnf.prov-status", aaiInfo.get("genericVnfProvStatus")); -clNotification.getAai().put("generic-vnf.is-closed-loop-disabled", aaiInfo.get("genericVnfIsClosedLoopDisabled")); -clNotification.getAai().put("generic-vnf.orchestration-status", aaiInfo.get("genericVnfOrchestrationStatus")); -clNotification.getAai().put("generic-vnf.vnf-type", aaiInfo.get("genericVnfVnfType")); -clNotification.getAai().put("generic-vnf.in-maint", aaiInfo.get("genericVnfInMaint")); -clNotification.getAai().put("generic-vnf.service-id", aaiInfo.get("genericVnfServiceId")); -if(vnfID != null) { - clNotification.getAai().put("generic-vnf.vnf-id", aaiInfo.get("genericVnfVnfId")); -} -executor.outFields.put("VirtualControlLoopNotification", clNotification); - -executor.logger.info(executor.outFields); - -var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/DeniedTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/DeniedTask.js deleted file mode 100644 index 353c21ef6..000000000 --- a/examples/examples-onap-vcpe/src/main/resources/logic/DeniedTask.js +++ /dev/null @@ -1,32 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -executor.logger.info(executor.subject.id); -executor.logger.info(executor.inFields); - -var vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get( - executor.inFields.get("vnfID").toString()); - -vcpeClosedLoopStatus.put("notification", "REJECTED"); -vcpeClosedLoopStatus.put("notificationTime", java.lang.System.currentTimeMillis()); - -executor.logger.info(executor.outFields); - -var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/GetVCPEStateTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/GetVCPEStateTask.js deleted file mode 100644 index f4f6d908d..000000000 --- a/examples/examples-onap-vcpe/src/main/resources/logic/GetVCPEStateTask.js +++ /dev/null @@ -1,149 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Note: The incoming closedloop message can be ONSET with both VNF-name and VNF-ID - * or ABATED with only VNF-name. So need to handle differently. For ABATED case, - * since we still keep the RequireIDVNFID context album, we can get it from there. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -executor.logger.info(executor.subject.id); -executor.logger.info(executor.inFields); - -var clEventType = Java.type("org.onap.policy.controlloop.VirtualControlLoopEvent"); -var longType = Java.type("java.lang.Long"); -var uuidType = Java.type("java.util.UUID"); - -var clEvent = executor.inFields.get("VirtualControlLoopEvent"); - -executor.logger.info(clEvent.toString()); -executor.logger.info(clEvent.getClosedLoopControlName()); - -var requestID = clEvent.getRequestId(); -executor.logger.info("requestID = " + requestID); -var vnfID = null; -var vcpeClosedLoopStatus = null; - -if (clEvent.getAai().get("generic-vnf.vnf-id") != null) { - vnfID = uuidType.fromString(clEvent.getAai().get("generic-vnf.vnf-id")); - executor.logger.info("vnfID = " + vnfID); - vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get(vnfID); - - if (vcpeClosedLoopStatus == null) { - executor.logger.info("Creating context information for new vCPE VNF \"" + vnfID.toString() + "\""); - - vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").getSchemaHelper().createNewInstance(); - - vcpeClosedLoopStatus.put("closedLoopControlName", clEvent.getClosedLoopControlName()); - vcpeClosedLoopStatus.put("closedLoopAlarmStart", clEvent.getClosedLoopAlarmStart().toEpochMilli()); - vcpeClosedLoopStatus.put("closedLoopEventClient", clEvent.getClosedLoopEventClient()); - vcpeClosedLoopStatus.put("closedLoopEventStatus", clEvent.getClosedLoopEventStatus().toString()); - vcpeClosedLoopStatus.put("version", clEvent.getVersion()); - vcpeClosedLoopStatus.put("requestID", clEvent.getRequestId().toString()); - vcpeClosedLoopStatus.put("target_type", clEvent.getTargetType().toString()); - vcpeClosedLoopStatus.put("target", clEvent.getTarget()); - vcpeClosedLoopStatus.put("from", clEvent.getFrom()); - vcpeClosedLoopStatus.put("policyScope", "vCPE"); - vcpeClosedLoopStatus.put("policyName", "ONAPvCPEPolicyModel"); - vcpeClosedLoopStatus.put("policyVersion", "0.0.1"); - vcpeClosedLoopStatus.put("notification", "ACTIVE"); - vcpeClosedLoopStatus.put("notificationTime", java.lang.System.currentTimeMillis()); - vcpeClosedLoopStatus.put("message", ""); - - var aaiInfo = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").getSchemaHelper().createNewSubInstance("VCPE_AAI_Type"); - - aaiInfo.put("genericVnfResourceVersion", clEvent.getAai().get("generic-vnf.resource-version")); - aaiInfo.put("genericVnfVnfName", clEvent.getAai().get("generic-vnf.vnf-name")); - aaiInfo.put("genericVnfProvStatus", clEvent.getAai().get("generic-vnf.prov-status")); - aaiInfo.put("genericVnfIsClosedLoopDisabled", clEvent.getAai().get("generic-vnf.is-closed-loop-disabled")); - aaiInfo.put("genericVnfOrchestrationStatus", clEvent.getAai().get("generic-vnf.orchestration-status")); - aaiInfo.put("genericVnfVnfType", clEvent.getAai().get("generic-vnf.vnf-type")); - aaiInfo.put("genericVnfInMaint", clEvent.getAai().get("generic-vnf.in-maint")); - aaiInfo.put("genericVnfServiceId", clEvent.getAai().get("generic-vnf.service-id")); - aaiInfo.put("genericVnfVnfId", clEvent.getAai().get("generic-vnf.vnf-id")); - aaiInfo.put("vserverIsClosedLoopDisabled", clEvent.getAai().get("vserver.is-closed-loop-disabled")); - aaiInfo.put("vserverProvStatus", clEvent.getAai().get("vserver.prov-status")); - aaiInfo.put("vserverName", clEvent.getAai().get("vserver.vserver-name")); - - vcpeClosedLoopStatus.put("AAI", aaiInfo); - - if (clEvent.getClosedLoopAlarmEnd() != null) { - vcpeClosedLoopStatus.put("closedLoopAlarmEnd", clEvent.getClosedLoopAlarmEnd().toEpochMilli()); - } else { - vcpeClosedLoopStatus.put("closedLoopAlarmEnd", java.lang.Long.valueOf(0)); - } - - executor.getContextAlbum("VCPEClosedLoopStatusAlbum").put(vnfID.toString(), vcpeClosedLoopStatus); - - executor.logger.info("Created context information for new vCPE VNF \"" + vnfID.toString() + "\""); - } - - executor.outFields.put("requestID", requestID); - executor.outFields.put("vnfID", vnfID); - - executor.logger.info(executor.outFields); -} -else { - executor.logger.info("No vnf-id in VirtualControlLoopEvent, status:" + clEvent.getClosedLoopEventStatus().toString()); - var vnfName = clEvent.getAai().get("generic-vnf.vnf-name"); - executor.logger.info("No vnf-id in VirtualControlLoopEvent for " + vnfName); - - vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get(vnfName.toString()); - - if (vcpeClosedLoopStatus == null) { - executor.logger.info("Creating context information for new vCPE VNF \"" + vnfName.toString() + "\""); - - vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").getSchemaHelper().createNewInstance(); - - vcpeClosedLoopStatus.put("closedLoopControlName", clEvent.getClosedLoopControlName()); - vcpeClosedLoopStatus.put("closedLoopAlarmStart", clEvent.getClosedLoopAlarmStart().toEpochMilli()); - vcpeClosedLoopStatus.put("closedLoopEventClient", clEvent.getClosedLoopEventClient()); - vcpeClosedLoopStatus.put("closedLoopEventStatus", clEvent.getClosedLoopEventStatus().toString()); - vcpeClosedLoopStatus.put("version", clEvent.getVersion()); - vcpeClosedLoopStatus.put("requestID", clEvent.getRequestId().toString()); - vcpeClosedLoopStatus.put("target_type", clEvent.getTargetType().toString()); - vcpeClosedLoopStatus.put("target", clEvent.getTarget()); - vcpeClosedLoopStatus.put("from", clEvent.getFrom()); - vcpeClosedLoopStatus.put("policyScope", "vCPE"); - vcpeClosedLoopStatus.put("policyName", "ONAPvCPEPolicyModel"); - vcpeClosedLoopStatus.put("policyVersion", "0.0.1"); - vcpeClosedLoopStatus.put("notification", "ACTIVE"); - vcpeClosedLoopStatus.put("notificationTime", java.lang.System.currentTimeMillis()); - vcpeClosedLoopStatus.put("message", ""); - - var aaiInfo = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").getSchemaHelper().createNewSubInstance("VCPE_AAI_Type"); - - aaiInfo.put("genericVnfVnfName", clEvent.getAai().get("generic-vnf.vnf-name")); - vcpeClosedLoopStatus.put("AAI", aaiInfo); - - if (clEvent.getClosedLoopAlarmEnd() != null) { - vcpeClosedLoopStatus.put("closedLoopAlarmEnd", clEvent.getClosedLoopAlarmEnd().toEpochMilli()); - } else { - vcpeClosedLoopStatus.put("closedLoopAlarmEnd", java.lang.Long.valueOf(0)); - } - - executor.getContextAlbum("VCPEClosedLoopStatusAlbum").put(vnfName.toString(), vcpeClosedLoopStatus); - - executor.logger.info("Created context information for new vCPE VNF \"" + vnfName.toString() + "\""); - } - executor.outFields.put("requestID", requestID); - executor.outFields.put("vnfName", vnfName); - executor.logger.info(executor.outFields); -} - -returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/GuardRequestTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/GuardRequestTask.js deleted file mode 100644 index d247f8a65..000000000 --- a/examples/examples-onap-vcpe/src/main/resources/logic/GuardRequestTask.js +++ /dev/null @@ -1,44 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -executor.logger.info(executor.subject.id); -executor.logger.info(executor.inFields); - -var vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get( - executor.inFields.get("vnfID").toString()); - -var guardDecisionAttributes = executor.subject.getOutFieldSchemaHelper("decisionAttributes").createNewInstance(); - -guardDecisionAttributes.put("actor", "APPC"); -guardDecisionAttributes.put("recipe", "Restart"); -guardDecisionAttributes.put("target", executor.inFields.get("vnfID").toString()); -guardDecisionAttributes.put("clname", "APEXvCPEImplementation"); - -executor.logger.info(guardDecisionAttributes); - -executor.outFields.put("decisionAttributes", guardDecisionAttributes); -executor.outFields.put("onapName", "PDPD"); - -executor.getContextAlbum("ControlLoopExecutionIDAlbum").put(executor.executionId.toString(), - executor.inFields.get("vnfID")); - -executor.logger.info(executor.outFields); - -var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/GuardResponseTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/GuardResponseTask.js deleted file mode 100644 index 2a9100b7f..000000000 --- a/examples/examples-onap-vcpe/src/main/resources/logic/GuardResponseTask.js +++ /dev/null @@ -1,50 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -executor.logger.info(executor.subject.id); -executor.logger.info(executor.inFields); - -var vnfID = executor.getContextAlbum("ControlLoopExecutionIDAlbum").remove(executor.executionId.toString()); - -executor.logger.info("Continuing execution with VNF ID: " + vnfID); - -var vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get(vnfID.toString()); -executor.logger.info(vcpeClosedLoopStatus); - -var guardResult = executor.inFields.get("decision"); - -if (guardResult === "PERMIT") { - vcpeClosedLoopStatus.put("notification", "OPERATION: GUARD_PERMIT"); -} else if (guardResult === "DENY") { - vcpeClosedLoopStatus.put("notification", "OPERATION: GUARD_DENY"); -} else { - executor.message = "guard result must be either \"PERMIT\" or \"DENY\""; - returnValue = executor.FALSE; -} - -var uuidType = Java.type("java.util.UUID"); -var requestID = uuidType.fromString(vcpeClosedLoopStatus.get("requestID")); - -executor.outFields.put("requestID", requestID); -executor.outFields.put("vnfID", vnfID); - -executor.logger.info(executor.outFields); - -var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/NoAAILookupTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/NoAAILookupTask.js deleted file mode 100644 index ebc0e6387..000000000 --- a/examples/examples-onap-vcpe/src/main/resources/logic/NoAAILookupTask.js +++ /dev/null @@ -1,26 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -executor.logger.info(executor.subject.id); -executor.logger.info(executor.inFields); - -executor.logger.info(executor.outFields); - -var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/OnsetOrAbatedStateTSL.js b/examples/examples-onap-vcpe/src/main/resources/logic/OnsetOrAbatedStateTSL.js deleted file mode 100644 index c8a3bfba8..000000000 --- a/examples/examples-onap-vcpe/src/main/resources/logic/OnsetOrAbatedStateTSL.js +++ /dev/null @@ -1,51 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -executor.logger.info(executor.subject.id); -executor.logger.info(executor.inFields); - -var returnValue = executor.isTrue; -var status = null; - -if( executor.inFields.get("vnfID") == null) { - executor.logger.info("OnsetOrAbatedStateTSL: vnfID is null"); - var vnfName = executor.inFields.get("vnfName"); - var vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get( - executor.inFields.get("vnfName")); - status = vcpeClosedLoopStatus.get("closedLoopEventStatus").toString(); -} else { - var vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get( - executor.inFields.get("vnfID").toString()); - status = vcpeClosedLoopStatus.get("closedLoopEventStatus").toString(); -} - -var returnValue = executor.isTrue; - -if (status === "ONSET") { - executor.subject.getTaskKey("GuardRequestTask").copyTo(executor.selectedTask); -} else if (status === "ABATED") { - executor.subject.getTaskKey("AbatedTask").copyTo(executor.selectedTask); - onsetFlag = executor.isFalse; -} else { - executor.message = "closedLoopEventStatus is \"" + status + "\", it must be either \"ONSET\" or \"ABATED\""; - returnValue = executor.isFalse; -} - -executor.logger.info("ReceiveEventPolicyOnsetOrAbatedStateTSL State Selected Task:" + executor.selectedTask); diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/RestartAPPCRequestPolicyPermitOrDenyTSL.js b/examples/examples-onap-vcpe/src/main/resources/logic/RestartAPPCRequestPolicyPermitOrDenyTSL.js deleted file mode 100644 index a1bac6546..000000000 --- a/examples/examples-onap-vcpe/src/main/resources/logic/RestartAPPCRequestPolicyPermitOrDenyTSL.js +++ /dev/null @@ -1,37 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -executor.logger.info(executor.subject.id); -executor.logger.info(executor.inFields); - -var vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get( - executor.inFields.get("vnfID").toString()); - -var guardResult = vcpeClosedLoopStatus.get("notification"); - -if (guardResult === "OPERATION: GUARD_PERMIT") { - executor.subject.getTaskKey("APPCRestartVNFRequestTask").copyTo(executor.selectedTask); -} else { - executor.subject.getTaskKey("DeniedTask").copyTo(executor.selectedTask); -} - -executor.logger.info("RestartAPPCRequestPolicyPermitOrDenyTSL State Selected Task:" + executor.selectedTask); - -var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/definitive/AAILookupTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/definitive/AAILookupTask.js new file mode 100644 index 000000000..fcb39052d --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/definitive/AAILookupTask.js @@ -0,0 +1,85 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +var vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get( + executor.inFields.get("vnfID").toString()); + +executor.logger.info("Executing A&AI Lookup"); +executor.logger.info(vcpeClosedLoopStatus); + +var aaiInfo = vcpeClosedLoopStatus.get("AAI"); + +if (aaiInfo.get("vserverName") == null) { + executor.message = "the field vserver.vserver-name must exist in the onset control loop event"; + executor.logger.warn(executor.message); + var returnValue = executor.isFalse; +} +else if (aaiInfo.get("genericVnfVnfId") == null && aaiInfo.get("genericVnfVnfName") == null) { + executor.message = "either the field generic-vnf.vnf-id or generic-vnf.vnf-name must exist" + + " in the onset control loop event"; + executor.logger.warn(executor.message); + var returnValue = executor.isFalse; +} +else { + var restManager = new org.onap.policy.rest.RestManager; + var aaiManager = new org.onap.policy.aai.AaiManager(restManager); + + // We need to instantiate the type in order to trigger the static JAXB handling + // in the AaiCqResponse class + var aaiCqResponseType = Java.type("org.onap.policy.aai.AaiCqResponse"); + + var aaiResponse = aaiManager.getCustomQueryResponse( + "http://localhost:54321/OnapVCpeSim/sim", + "aai.username", + "aai.password", + executor.inFields.get("requestID"), + vcpeClosedLoopStatus.get("AAI").get("vserverName") + ); + + var genericVnf; + + if (aaiInfo.get("genericVnfVnfId") != null) { + genericVnf = aaiResponse.getGenericVnfByModelInvariantId(aaiInfo.get("genericVnfVnfId")); + } + else { + genericVnf = aaiResponse.getGenericVnfByVnfName(aaiInfo.get("genericVnfVnfId")); + } + + aaiInfo.put("genericVnfResourceVersion", genericVnf.getResourceVersion()); + aaiInfo.put("genericVnfVnfName", genericVnf.getVnfName()); + aaiInfo.put("genericVnfProvStatus", genericVnf.getProvStatus()); + aaiInfo.put("genericVnfIsClosedLoopDisabled", genericVnf.isIsClosedLoopDisabled().toString()); + aaiInfo.put("genericVnfVnfType", genericVnf.getVnfType()); + aaiInfo.put("genericVnfInMaint", genericVnf.isInMaint().toString()); + aaiInfo.put("genericVnfServiceId", genericVnf.getServiceId()); + aaiInfo.put("genericVnfVnfId", genericVnf.getVnfId()); + aaiInfo.put("genericVnfOrchestrationStatus", + genericVnf.getVfModules().getVfModule().get(0).getOrchestrationStatus()); + + executor.outFields.put("requestID", executor.inFields.get("requestID")); + executor.outFields.put("vnfID", executor.inFields.get("vnfID")); + + executor.logger.info(executor.outFields); + + var returnValue = executor.isTrue; +} diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/definitive/APPCRestartVNFRequestTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/definitive/APPCRestartVNFRequestTask.js new file mode 100644 index 000000000..dd69dcb1d --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/definitive/APPCRestartVNFRequestTask.js @@ -0,0 +1,67 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +var appcRequest = new org.onap.policy.appclcm.AppcLcmDmaapWrapper; +appcRequest.setBody(new org.onap.policy.appclcm.AppcLcmBody); +appcRequest.getBody().setInput(new org.onap.policy.appclcm.AppcLcmInput); +appcRequest.getBody().getInput().setCommonHeader( + new org.onap.policy.appclcm.AppcLcmCommonHeader); + +appcRequest.setVersion("2.0.0"); +appcRequest.setRpcName("restart"); +appcRequest.setCorrelationId(executor.inFields.get("requestID")); +appcRequest.setType("request"); + +var vcpeClosedLoopStatus = executor + .getContextAlbum("VCPEClosedLoopStatusAlbum").get( + executor.inFields.get("vnfID").toString()); + +appcRequest.getBody().getInput().getCommonHeader().setTimeStamp(java.time.Instant.now()); +appcRequest.getBody().getInput().getCommonHeader().setApiVer("2.00"); +appcRequest.getBody().getInput().getCommonHeader().setOriginatorId( + executor.inFields.get("requestID").toString()); +appcRequest.getBody().getInput().getCommonHeader().setRequestId( + executor.inFields.get("requestID")); +appcRequest.getBody().getInput().getCommonHeader().setSubRequestId("1"); +appcRequest.getBody().getInput().getCommonHeader().getFlags().put("ttl", "10000"); +appcRequest.getBody().getInput().getCommonHeader().getFlags().put("force", "TRUE"); +appcRequest.getBody().getInput().getCommonHeader().getFlags().put("mode", "EXCLUSIVE"); + +appcRequest.getBody().getInput().setAction("Restart"); +appcRequest.getBody().getInput().setActionIdentifiers(new java.util.HashMap()); +appcRequest.getBody().getInput().getActionIdentifiers().put("vnf-id", + executor.inFields.get("vnfID").toString()); + +executor.getContextAlbum("RequestIDVNFIDAlbum").put( + executor.inFields.get("requestID").toString(), + executor.inFields.get("vnfID")); + +vcpeClosedLoopStatus.put("notification", "OPERATION"); +vcpeClosedLoopStatus.put("notificationTime", java.lang.System + .currentTimeMillis()); + +executor.outFields.put("APPCLCMRequestEvent", appcRequest); + +executor.logger.info(executor.outFields); + +var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/definitive/APPCRestartVNFResponseTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/definitive/APPCRestartVNFResponseTask.js new file mode 100644 index 000000000..75ab6a3af --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/definitive/APPCRestartVNFResponseTask.js @@ -0,0 +1,88 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * APPC LCM Response code: 100 ACCEPTED + * 200 ERROR UNEXPECTED ERROR means failure + * 312 REJECTED DUPLICATE REQUEST + * 400 SUCCESS + * + * Note: Sometimes the corelationId has a -1 at the tail, need to get rid of it when present. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +var appcResponse = executor.inFields.get("APPCLCMResponseEvent"); + +var requestIDString = appcResponse.getCorrelationId().substr(0, 36); +executor.logger.info("requestIDString = " + requestIDString); +var vnfID = executor.getContextAlbum("RequestIDVNFIDAlbum") + .get(requestIDString); +executor.logger.info("Size of RequestIDVNFIDAlbum = " + + executor.getContextAlbum("RequestIDVNFIDAlbum").size()); +executor.logger.info("vnfID = " + vnfID); + +var returnValue = executor.isTrue; + +if (vnfID != null) { + var vcpeClosedLoopStatus = executor.getContextAlbum( + "VCPEClosedLoopStatusAlbum").get(vnfID.toString()); + var requestId = java.util.UUID.fromString(vcpeClosedLoopStatus + .get("requestID")); + + vcpeClosedLoopStatus.put("notificationTime", java.lang.System + .currentTimeMillis()); + + executor.logger.info("Got from APPC code: " + + org.onap.policy.appclcm.AppcLcmResponseCode + .toResponseValue(appcResponse.getBody().getOutput() + .getStatus().getCode())); + + if (org.onap.policy.appclcm.AppcLcmResponseCode + .toResponseValue(appcResponse.getBody().getOutput().getStatus() + .getCode()) == org.onap.policy.appclcm.AppcLcmResponseCode.SUCCESS) { + vcpeClosedLoopStatus.put("notification", "OPERATION_SUCCESS"); + vcpeClosedLoopStatus.put("message", "vCPE restarted"); + executor.getContextAlbum("RequestIDVNFIDAlbum").remove(requestIDString); + } else if (org.onap.policy.appclcm.AppcLcmResponseCode + .toResponseValue(appcResponse.getBody().getOutput().getStatus() + .getCode()) == "ACCEPTED" + || org.onap.policy.appclcm.AppcLcmResponseCode + .toResponseValue(appcResponse.getBody().getOutput() + .getStatus().getCode()) == "REJECT") { + executor.logger + .info("Got ACCEPTED 100 or REJECT 312, keep the context, wait for next response. Code is: " + + org.onap.policy.appclcm.AppcLcmResponseCode + .toResponseValue(appcResponse.getBody() + .getOutput().getStatus().getCode())); + } else { + executor.getContextAlbum("RequestIDVNFIDAlbum").remove(requestIDString); + vcpeClosedLoopStatus.put("notification", "OPERATION_FAILURE"); + vcpeClosedLoopStatus.put("message", "vCPE restart failed"); + } + + executor.outFields.put("requestID", requestId); + executor.outFields.put("vnfID", vnfID); +} else { + executor.message = "VNF ID not found in context album for request ID " + + requestIDString; + returnValue = executor.isFalse; +} + +executor.logger.info(executor.outFields); diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/definitive/AbatedTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/definitive/AbatedTask.js new file mode 100644 index 000000000..f37b6f1b5 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/definitive/AbatedTask.js @@ -0,0 +1,41 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +var vcpeClosedLoopStatus = null; +if( executor.inFields.get("vnfID") == null) { + executor.logger.info("AbatedTask: vnfID is null"); + var vnfName = executor.inFields.get("vnfName"); + vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get( + executor.inFields.get("vnfName")); +} else { + vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get( + executor.inFields.get("vnfID").toString()); +} + +vcpeClosedLoopStatus.put("notification", "FINAL_SUCCESS"); +vcpeClosedLoopStatus.put("notificationTime", java.lang.System.currentTimeMillis()); +vcpeClosedLoopStatus.put("message", "situation has been abated"); + +executor.logger.info(executor.outFields); + +var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/definitive/ControlLoopLogTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/definitive/ControlLoopLogTask.js new file mode 100644 index 000000000..a5a692cbc --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/definitive/ControlLoopLogTask.js @@ -0,0 +1,73 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * Modifications Copyright (C) 2020 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +var vnfID = executor.inFields.get("vnfID"); +if(vnfID == null) { + vnfID = executor.inFields.get("vnfName"); +} +executor.logger.info("vnfID=" + vnfID); + +var vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get(vnfID.toString()); + +executor.logger.info("Logging context information for VNF \"" + vnfID + "\""); + +var clNotification = new org.onap.policy.controlloop.VirtualControlLoopNotification(); + +clNotification.setClosedLoopControlName(vcpeClosedLoopStatus.get("closedLoopControlName")); +clNotification.setClosedLoopAlarmStart(java.time.Instant.ofEpochMilli(vcpeClosedLoopStatus.get("closedLoopAlarmStart"))); +clNotification.setClosedLoopAlarmEnd(java.time.Instant.ofEpochMilli(vcpeClosedLoopStatus.get("closedLoopAlarmEnd"))); +clNotification.setClosedLoopEventClient(vcpeClosedLoopStatus.get("closedLoopEventClient")); +clNotification.setVersion(vcpeClosedLoopStatus.get("version")); +clNotification.setRequestId(java.util.UUID.fromString(vcpeClosedLoopStatus.get("requestID"))); +clNotification.setTargetType(vcpeClosedLoopStatus.get("target_type")); +clNotification.setTarget(vcpeClosedLoopStatus.get("target")); +clNotification.setFrom(vcpeClosedLoopStatus.get("from")); +clNotification.setPolicyScope(vcpeClosedLoopStatus.get("policyScope")); +clNotification.setPolicyName(vcpeClosedLoopStatus.get("policyName")); +clNotification.setPolicyVersion(vcpeClosedLoopStatus.get("policyVersion")); +clNotification.setNotification(org.onap.policy.controlloop.ControlLoopNotificationType.toType(vcpeClosedLoopStatus.get("notification"))); +clNotification.setMessage(vcpeClosedLoopStatus.get("message")); + +var notificationInstant = java.time.Instant.ofEpochSecond(vcpeClosedLoopStatus.get("notificationTime")); +var notificationTime = java.time.ZonedDateTime.ofInstant(notificationInstant, java.time.ZoneOffset.UTC); +clNotification.setNotificationTime(notificationTime); + +var aaiInfo = vcpeClosedLoopStatus.get("AAI"); + +clNotification.getAai().put("generic-vnf.resource-version", aaiInfo.get("genericVnfResourceVersion")); +clNotification.getAai().put("generic-vnf.vnf-name", aaiInfo.get("genericVnfVnfName")); +clNotification.getAai().put("generic-vnf.prov-status", aaiInfo.get("genericVnfProvStatus")); +clNotification.getAai().put("generic-vnf.is-closed-loop-disabled", aaiInfo.get("genericVnfIsClosedLoopDisabled")); +clNotification.getAai().put("generic-vnf.orchestration-status", aaiInfo.get("genericVnfOrchestrationStatus")); +clNotification.getAai().put("generic-vnf.vnf-type", aaiInfo.get("genericVnfVnfType")); +clNotification.getAai().put("generic-vnf.in-maint", aaiInfo.get("genericVnfInMaint")); +clNotification.getAai().put("generic-vnf.service-id", aaiInfo.get("genericVnfServiceId")); +if(vnfID != null) { + clNotification.getAai().put("generic-vnf.vnf-id", aaiInfo.get("genericVnfVnfId")); +} +executor.outFields.put("VirtualControlLoopNotification", clNotification); + +executor.logger.info(executor.outFields); + +var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/definitive/DeniedTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/definitive/DeniedTask.js new file mode 100644 index 000000000..353c21ef6 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/definitive/DeniedTask.js @@ -0,0 +1,32 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +var vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get( + executor.inFields.get("vnfID").toString()); + +vcpeClosedLoopStatus.put("notification", "REJECTED"); +vcpeClosedLoopStatus.put("notificationTime", java.lang.System.currentTimeMillis()); + +executor.logger.info(executor.outFields); + +var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/definitive/GetVCPEStateTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/definitive/GetVCPEStateTask.js new file mode 100644 index 000000000..f4f6d908d --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/definitive/GetVCPEStateTask.js @@ -0,0 +1,149 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Note: The incoming closedloop message can be ONSET with both VNF-name and VNF-ID + * or ABATED with only VNF-name. So need to handle differently. For ABATED case, + * since we still keep the RequireIDVNFID context album, we can get it from there. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +var clEventType = Java.type("org.onap.policy.controlloop.VirtualControlLoopEvent"); +var longType = Java.type("java.lang.Long"); +var uuidType = Java.type("java.util.UUID"); + +var clEvent = executor.inFields.get("VirtualControlLoopEvent"); + +executor.logger.info(clEvent.toString()); +executor.logger.info(clEvent.getClosedLoopControlName()); + +var requestID = clEvent.getRequestId(); +executor.logger.info("requestID = " + requestID); +var vnfID = null; +var vcpeClosedLoopStatus = null; + +if (clEvent.getAai().get("generic-vnf.vnf-id") != null) { + vnfID = uuidType.fromString(clEvent.getAai().get("generic-vnf.vnf-id")); + executor.logger.info("vnfID = " + vnfID); + vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get(vnfID); + + if (vcpeClosedLoopStatus == null) { + executor.logger.info("Creating context information for new vCPE VNF \"" + vnfID.toString() + "\""); + + vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").getSchemaHelper().createNewInstance(); + + vcpeClosedLoopStatus.put("closedLoopControlName", clEvent.getClosedLoopControlName()); + vcpeClosedLoopStatus.put("closedLoopAlarmStart", clEvent.getClosedLoopAlarmStart().toEpochMilli()); + vcpeClosedLoopStatus.put("closedLoopEventClient", clEvent.getClosedLoopEventClient()); + vcpeClosedLoopStatus.put("closedLoopEventStatus", clEvent.getClosedLoopEventStatus().toString()); + vcpeClosedLoopStatus.put("version", clEvent.getVersion()); + vcpeClosedLoopStatus.put("requestID", clEvent.getRequestId().toString()); + vcpeClosedLoopStatus.put("target_type", clEvent.getTargetType().toString()); + vcpeClosedLoopStatus.put("target", clEvent.getTarget()); + vcpeClosedLoopStatus.put("from", clEvent.getFrom()); + vcpeClosedLoopStatus.put("policyScope", "vCPE"); + vcpeClosedLoopStatus.put("policyName", "ONAPvCPEPolicyModel"); + vcpeClosedLoopStatus.put("policyVersion", "0.0.1"); + vcpeClosedLoopStatus.put("notification", "ACTIVE"); + vcpeClosedLoopStatus.put("notificationTime", java.lang.System.currentTimeMillis()); + vcpeClosedLoopStatus.put("message", ""); + + var aaiInfo = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").getSchemaHelper().createNewSubInstance("VCPE_AAI_Type"); + + aaiInfo.put("genericVnfResourceVersion", clEvent.getAai().get("generic-vnf.resource-version")); + aaiInfo.put("genericVnfVnfName", clEvent.getAai().get("generic-vnf.vnf-name")); + aaiInfo.put("genericVnfProvStatus", clEvent.getAai().get("generic-vnf.prov-status")); + aaiInfo.put("genericVnfIsClosedLoopDisabled", clEvent.getAai().get("generic-vnf.is-closed-loop-disabled")); + aaiInfo.put("genericVnfOrchestrationStatus", clEvent.getAai().get("generic-vnf.orchestration-status")); + aaiInfo.put("genericVnfVnfType", clEvent.getAai().get("generic-vnf.vnf-type")); + aaiInfo.put("genericVnfInMaint", clEvent.getAai().get("generic-vnf.in-maint")); + aaiInfo.put("genericVnfServiceId", clEvent.getAai().get("generic-vnf.service-id")); + aaiInfo.put("genericVnfVnfId", clEvent.getAai().get("generic-vnf.vnf-id")); + aaiInfo.put("vserverIsClosedLoopDisabled", clEvent.getAai().get("vserver.is-closed-loop-disabled")); + aaiInfo.put("vserverProvStatus", clEvent.getAai().get("vserver.prov-status")); + aaiInfo.put("vserverName", clEvent.getAai().get("vserver.vserver-name")); + + vcpeClosedLoopStatus.put("AAI", aaiInfo); + + if (clEvent.getClosedLoopAlarmEnd() != null) { + vcpeClosedLoopStatus.put("closedLoopAlarmEnd", clEvent.getClosedLoopAlarmEnd().toEpochMilli()); + } else { + vcpeClosedLoopStatus.put("closedLoopAlarmEnd", java.lang.Long.valueOf(0)); + } + + executor.getContextAlbum("VCPEClosedLoopStatusAlbum").put(vnfID.toString(), vcpeClosedLoopStatus); + + executor.logger.info("Created context information for new vCPE VNF \"" + vnfID.toString() + "\""); + } + + executor.outFields.put("requestID", requestID); + executor.outFields.put("vnfID", vnfID); + + executor.logger.info(executor.outFields); +} +else { + executor.logger.info("No vnf-id in VirtualControlLoopEvent, status:" + clEvent.getClosedLoopEventStatus().toString()); + var vnfName = clEvent.getAai().get("generic-vnf.vnf-name"); + executor.logger.info("No vnf-id in VirtualControlLoopEvent for " + vnfName); + + vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get(vnfName.toString()); + + if (vcpeClosedLoopStatus == null) { + executor.logger.info("Creating context information for new vCPE VNF \"" + vnfName.toString() + "\""); + + vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").getSchemaHelper().createNewInstance(); + + vcpeClosedLoopStatus.put("closedLoopControlName", clEvent.getClosedLoopControlName()); + vcpeClosedLoopStatus.put("closedLoopAlarmStart", clEvent.getClosedLoopAlarmStart().toEpochMilli()); + vcpeClosedLoopStatus.put("closedLoopEventClient", clEvent.getClosedLoopEventClient()); + vcpeClosedLoopStatus.put("closedLoopEventStatus", clEvent.getClosedLoopEventStatus().toString()); + vcpeClosedLoopStatus.put("version", clEvent.getVersion()); + vcpeClosedLoopStatus.put("requestID", clEvent.getRequestId().toString()); + vcpeClosedLoopStatus.put("target_type", clEvent.getTargetType().toString()); + vcpeClosedLoopStatus.put("target", clEvent.getTarget()); + vcpeClosedLoopStatus.put("from", clEvent.getFrom()); + vcpeClosedLoopStatus.put("policyScope", "vCPE"); + vcpeClosedLoopStatus.put("policyName", "ONAPvCPEPolicyModel"); + vcpeClosedLoopStatus.put("policyVersion", "0.0.1"); + vcpeClosedLoopStatus.put("notification", "ACTIVE"); + vcpeClosedLoopStatus.put("notificationTime", java.lang.System.currentTimeMillis()); + vcpeClosedLoopStatus.put("message", ""); + + var aaiInfo = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").getSchemaHelper().createNewSubInstance("VCPE_AAI_Type"); + + aaiInfo.put("genericVnfVnfName", clEvent.getAai().get("generic-vnf.vnf-name")); + vcpeClosedLoopStatus.put("AAI", aaiInfo); + + if (clEvent.getClosedLoopAlarmEnd() != null) { + vcpeClosedLoopStatus.put("closedLoopAlarmEnd", clEvent.getClosedLoopAlarmEnd().toEpochMilli()); + } else { + vcpeClosedLoopStatus.put("closedLoopAlarmEnd", java.lang.Long.valueOf(0)); + } + + executor.getContextAlbum("VCPEClosedLoopStatusAlbum").put(vnfName.toString(), vcpeClosedLoopStatus); + + executor.logger.info("Created context information for new vCPE VNF \"" + vnfName.toString() + "\""); + } + executor.outFields.put("requestID", requestID); + executor.outFields.put("vnfName", vnfName); + executor.logger.info(executor.outFields); +} + +returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/definitive/GuardRequestTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/definitive/GuardRequestTask.js new file mode 100644 index 000000000..d247f8a65 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/definitive/GuardRequestTask.js @@ -0,0 +1,44 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +var vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get( + executor.inFields.get("vnfID").toString()); + +var guardDecisionAttributes = executor.subject.getOutFieldSchemaHelper("decisionAttributes").createNewInstance(); + +guardDecisionAttributes.put("actor", "APPC"); +guardDecisionAttributes.put("recipe", "Restart"); +guardDecisionAttributes.put("target", executor.inFields.get("vnfID").toString()); +guardDecisionAttributes.put("clname", "APEXvCPEImplementation"); + +executor.logger.info(guardDecisionAttributes); + +executor.outFields.put("decisionAttributes", guardDecisionAttributes); +executor.outFields.put("onapName", "PDPD"); + +executor.getContextAlbum("ControlLoopExecutionIDAlbum").put(executor.executionId.toString(), + executor.inFields.get("vnfID")); + +executor.logger.info(executor.outFields); + +var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/definitive/GuardResponseTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/definitive/GuardResponseTask.js new file mode 100644 index 000000000..2a9100b7f --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/definitive/GuardResponseTask.js @@ -0,0 +1,50 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +var vnfID = executor.getContextAlbum("ControlLoopExecutionIDAlbum").remove(executor.executionId.toString()); + +executor.logger.info("Continuing execution with VNF ID: " + vnfID); + +var vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get(vnfID.toString()); +executor.logger.info(vcpeClosedLoopStatus); + +var guardResult = executor.inFields.get("decision"); + +if (guardResult === "PERMIT") { + vcpeClosedLoopStatus.put("notification", "OPERATION: GUARD_PERMIT"); +} else if (guardResult === "DENY") { + vcpeClosedLoopStatus.put("notification", "OPERATION: GUARD_DENY"); +} else { + executor.message = "guard result must be either \"PERMIT\" or \"DENY\""; + returnValue = executor.FALSE; +} + +var uuidType = Java.type("java.util.UUID"); +var requestID = uuidType.fromString(vcpeClosedLoopStatus.get("requestID")); + +executor.outFields.put("requestID", requestID); +executor.outFields.put("vnfID", vnfID); + +executor.logger.info(executor.outFields); + +var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/definitive/NoAAILookupTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/definitive/NoAAILookupTask.js new file mode 100644 index 000000000..ebc0e6387 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/definitive/NoAAILookupTask.js @@ -0,0 +1,26 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +executor.logger.info(executor.outFields); + +var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/definitive/OnsetOrAbatedStateTSL.js b/examples/examples-onap-vcpe/src/main/resources/logic/definitive/OnsetOrAbatedStateTSL.js new file mode 100644 index 000000000..c8a3bfba8 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/definitive/OnsetOrAbatedStateTSL.js @@ -0,0 +1,51 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +var returnValue = executor.isTrue; +var status = null; + +if( executor.inFields.get("vnfID") == null) { + executor.logger.info("OnsetOrAbatedStateTSL: vnfID is null"); + var vnfName = executor.inFields.get("vnfName"); + var vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get( + executor.inFields.get("vnfName")); + status = vcpeClosedLoopStatus.get("closedLoopEventStatus").toString(); +} else { + var vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get( + executor.inFields.get("vnfID").toString()); + status = vcpeClosedLoopStatus.get("closedLoopEventStatus").toString(); +} + +var returnValue = executor.isTrue; + +if (status === "ONSET") { + executor.subject.getTaskKey("GuardRequestTask").copyTo(executor.selectedTask); +} else if (status === "ABATED") { + executor.subject.getTaskKey("AbatedTask").copyTo(executor.selectedTask); + onsetFlag = executor.isFalse; +} else { + executor.message = "closedLoopEventStatus is \"" + status + "\", it must be either \"ONSET\" or \"ABATED\""; + returnValue = executor.isFalse; +} + +executor.logger.info("ReceiveEventPolicyOnsetOrAbatedStateTSL State Selected Task:" + executor.selectedTask); diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/definitive/RestartAPPCRequestPolicyPermitOrDenyTSL.js b/examples/examples-onap-vcpe/src/main/resources/logic/definitive/RestartAPPCRequestPolicyPermitOrDenyTSL.js new file mode 100644 index 000000000..a1bac6546 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/definitive/RestartAPPCRequestPolicyPermitOrDenyTSL.js @@ -0,0 +1,37 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +var vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get( + executor.inFields.get("vnfID").toString()); + +var guardResult = vcpeClosedLoopStatus.get("notification"); + +if (guardResult === "OPERATION: GUARD_PERMIT") { + executor.subject.getTaskKey("APPCRestartVNFRequestTask").copyTo(executor.selectedTask); +} else { + executor.subject.getTaskKey("DeniedTask").copyTo(executor.selectedTask); +} + +executor.logger.info("RestartAPPCRequestPolicyPermitOrDenyTSL State Selected Task:" + executor.selectedTask); + +var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/standalone/CheckServiceIdTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/CheckServiceIdTask.js new file mode 100644 index 000000000..88bf72671 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/CheckServiceIdTask.js @@ -0,0 +1,46 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +var vnfId = executor.inFields.get("vnfID").toString(); +var vcpeClosedLoopStatus = executor.getContextAlbum("ControlLoopStatusAlbum").get(vnfId); +var serviceId = vcpeClosedLoopStatus.get("AAI").get("genericVnfServiceId"); +var blackFlag = executor.getContextAlbum("ServiceIdWhiteBlackListAlbum").get(serviceId.toString()); + +executor.logger.info("vnfId=" + vnfId + ", serviceId=" + serviceId + ", blackFlag=" + blackFlag); + +if (blackFlag != null && blackFlag === true) { + vcpeClosedLoopStatus.put("notificationTime", java.lang.System.currentTimeMillis()); + vcpeClosedLoopStatus.put("notification", "BLACKLIST"); + var message = vcpeClosedLoopStatus.get("message"); + + if (message != null) { + vcpeClosedLoopStatus.put("message", message + ":Service ID blacklisted"); + } + else { + vcpeClosedLoopStatus.put("message", "Service ID blacklisted"); + } +} + +executor.logger.info(executor.outFields); + +var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/standalone/CheckVNFIdTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/CheckVNFIdTask.js new file mode 100644 index 000000000..d4e3f30dc --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/CheckVNFIdTask.js @@ -0,0 +1,45 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +var vnfId = executor.inFields.get("vnfID").toString(); +var blackFlag = executor.getContextAlbum("VnfIdWhiteBlackListAlbum").get(vnfId); + +executor.logger.info("vnfId=" + vnfId + ", blackFlag=" + blackFlag); + +if (blackFlag != null && blackFlag === true) { + var vcpeClosedLoopStatus = executor.getContextAlbum("ControlLoopStatusAlbum").get(vnfId); + vcpeClosedLoopStatus.put("notificationTime", java.lang.System.currentTimeMillis()); + vcpeClosedLoopStatus.put("notification", "BLACKLIST"); + var message = vcpeClosedLoopStatus.get("message"); + + if (message != null) { + vcpeClosedLoopStatus.put("message", message + ":VNF ID blacklisted"); + } + else { + vcpeClosedLoopStatus.put("message", "VNF ID blacklisted"); + } +} + +executor.logger.info(executor.outFields); + +var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/standalone/CheckVServerIdTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/CheckVServerIdTask.js new file mode 100644 index 000000000..785d93f25 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/CheckVServerIdTask.js @@ -0,0 +1,46 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +var vnfId = executor.inFields.get("vnfID").toString(); +var vcpeClosedLoopStatus = executor.getContextAlbum("ControlLoopStatusAlbum").get(vnfId); +var vServerId = vcpeClosedLoopStatus.get("AAI").get("vserverName"); +var blackFlag = executor.getContextAlbum("VServerIdWhiteBlackListAlbum").get(vServerId.toString()); + +executor.logger.info("vnfId=" + vnfId + ", vServerId=" + vServerId + ", blackFlag=" + blackFlag); + +if (blackFlag != null && blackFlag === true) { + vcpeClosedLoopStatus.put("notificationTime", java.lang.System.currentTimeMillis()); + vcpeClosedLoopStatus.put("notification", "BLACKLIST"); + var message = vcpeClosedLoopStatus.get("message"); + + if (message != null) { + vcpeClosedLoopStatus.put("message", message + ":VServer ID blacklisted"); + } + else { + vcpeClosedLoopStatus.put("message", "VServer ID blacklisted"); + } +} + +executor.logger.info(executor.outFields); + +var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/standalone/ConfigureBlackWhiteListTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/ConfigureBlackWhiteListTask.js new file mode 100644 index 000000000..2d41e5f90 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/ConfigureBlackWhiteListTask.js @@ -0,0 +1,49 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +// Pass through to the log state + +executor.logger.info(executor.outFields); + +var targetType = executor.inFields.get("targetType"); +var target = executor.inFields.get("target"); +var black = executor.inFields.get("black"); + +var returnValue = executor.isTrue; + +if (targetType === "VNF") { + executor.getContextAlbum("VnfIdWhiteBlackListAlbum").put(target, black); + executor.logger.info("added VNF ID \"" + target + "\" with black flag \"" + black + "\" to VNF ID list"); +} +else if (targetType === "Service") { + executor.getContextAlbum("ServiceIdWhiteBlackListAlbum").put(target, black); + executor.logger.info("added Service ID \"" + target + "\" with black flag \"" + black + "\" to Service ID list"); +} +else if (targetType === "VServer") { + executor.getContextAlbum("VServerIdWhiteBlackListAlbum").put(target, black); + executor.logger.info("added VServer ID \"" + target + "\" with black flag \"" + black + "\" to VServer ID list"); +} +else { + executor.logger.warn("unknown target type \"" + targetType + "\" specified"); + returnValue = executor.isFalse; +} diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/standalone/ControlLoopLogTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/ControlLoopLogTask.js new file mode 100644 index 000000000..ca2166c75 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/ControlLoopLogTask.js @@ -0,0 +1,75 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +var vnfID = executor.inFields.get("vnfID"); +if (vnfID == null) { + vnfID = executor.inFields.get("vnfName"); +} +executor.logger.info("vnfID=" + vnfID); + +var controlLoopStatus = executor.getContextAlbum("ControlLoopStatusAlbum").get(vnfID.toString()); + +executor.logger.info("Logging context information for VNF \"" + vnfID + "\""); + +var clNotification = executor.subject.getOutFieldSchemaHelper("VirtualControlLoopNotification").createNewInstance(); + +clNotification.put("requestID", executor.inFields.get("requestID").toString()); +clNotification.put("closedLoopControlName", controlLoopStatus.get("closedLoopControlName")); +clNotification.put("closedLoopAlarmStart", controlLoopStatus.get("closedLoopAlarmStart")); +clNotification.put("closedLoopAlarmEnd", controlLoopStatus.get("closedLoopAlarmEnd")); +clNotification.put("closedLoopEventClient", controlLoopStatus.get("closedLoopEventClient")); +clNotification.put("version", controlLoopStatus.get("version")); +clNotification.put("targetType", controlLoopStatus.get("target_type")); +clNotification.put("target", controlLoopStatus.get("target")); +clNotification.put("from", controlLoopStatus.get("from")); +clNotification.put("policyScope", controlLoopStatus.get("policyScope")); +clNotification.put("policyName", controlLoopStatus.get("policyName")); +clNotification.put("policyVersion", controlLoopStatus.get("policyVersion")); +clNotification.put("notification", controlLoopStatus.get("notification")); +clNotification.put("message", controlLoopStatus.get("message")); +clNotification.put("notificationTime", controlLoopStatus.get("notificationTime")); +clNotification.put("opsClTimer", 0); + +var aaiInfo = controlLoopStatus.get("AAI"); + +var aaiInfoOut = new java.util.HashMap(); + +aaiInfoOut.put("generic-vnf.resource-version", aaiInfo.get("genericVnfResourceVersion")); +aaiInfoOut.put("generic-vnf.vnf-name", aaiInfo.get("genericVnfVnfName")); +aaiInfoOut.put("generic-vnf.prov-status", aaiInfo.get("genericVnfProvStatus")); +aaiInfoOut.put("generic-vnf.is-closed-loop-disabled", aaiInfo.get("genericVnfIsClosedLoopDisabled")); +aaiInfoOut.put("generic-vnf.orchestration-status", aaiInfo.get("genericVnfOrchestrationStatus")); +aaiInfoOut.put("generic-vnf.vnf-type", aaiInfo.get("genericVnfVnfType")); +aaiInfoOut.put("generic-vnf.in-maint", aaiInfo.get("genericVnfInMaint")); +aaiInfoOut.put("generic-vnf.service-id", aaiInfo.get("genericVnfServiceId")); +if (vnfID != null) { + aaiInfoOut.put("generic-vnf.vnf-id", aaiInfo.get("genericVnfVnfId")); +} + +clNotification.put("AAI", aaiInfoOut); + +executor.outFields.put("VirtualControlLoopNotification", clNotification); + +executor.logger.info(executor.outFields); + +var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/standalone/ControllerRequestTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/ControllerRequestTask.js new file mode 100644 index 000000000..b6d4cae38 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/ControllerRequestTask.js @@ -0,0 +1,71 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +var controllerRequest = executor.subject.getOutFieldSchemaHelper("ControllerRequest").createNewInstance(); + +var controllerRequestBody = executor.subject.getOutFieldSchemaHelper("ControllerRequest").createNewSubInstance( + "Controller_Body_Type"); + +var controllerRequestBodyInput = executor.subject.getOutFieldSchemaHelper("ControllerRequest").createNewSubInstance( + "Controller_Body_Type_Input"); + +var controllerRequestBodyInputCommonHeader = executor.subject.getOutFieldSchemaHelper("ControllerRequest") + .createNewSubInstance("Controller_Body_Type_Common_Header"); + +var vcpeClosedLoopStatus = executor.getContextAlbum("ControlLoopStatusAlbum").get( + executor.inFields.get("vnfID").toString()); + +controllerRequest.put("version", "2.0.0"); +controllerRequest.put("rpc_DasH_name", "restart"); +controllerRequest.put("correlation_DasH_id", executor.inFields.get("requestID").toString()); +controllerRequest.put("type", "request"); + +controllerRequestBodyInput.put("action", "Restart"); +controllerRequestBodyInput.put("action_DasH_identifiers", new java.util.HashMap()); +controllerRequestBodyInput.get("action_DasH_identifiers").put("vnf-id", executor.inFields.get("vnfID").toString()); + +controllerRequestBodyInputCommonHeader.put("timestamp", java.lang.System.currentTimeMillis()); +controllerRequestBodyInputCommonHeader.put("api_DasH_ver", "2.00"); +controllerRequestBodyInputCommonHeader.put("originator_DasH_id", executor.inFields.get("requestID").toString()); +controllerRequestBodyInputCommonHeader.put("request_DasH_id", executor.inFields.get("requestID").toString()); +controllerRequestBodyInputCommonHeader.put("sub_DasH_request_DasH_id", "1"); +controllerRequestBodyInputCommonHeader.put("flags", new java.util.HashMap()); +controllerRequestBodyInputCommonHeader.get("flags").put("ttl", "10000"); +controllerRequestBodyInputCommonHeader.get("flags").put("force", "TRUE"); +controllerRequestBodyInputCommonHeader.get("flags").put("mode", "EXCLUSIVE"); + +controllerRequestBodyInput.put("common_DasH_header", controllerRequestBodyInputCommonHeader); +controllerRequestBody.put("input", controllerRequestBodyInput); +controllerRequest.put("body", controllerRequestBody); + +executor.getContextAlbum("RequestIDVNFIDAlbum").put(executor.inFields.get("requestID").toString(), + executor.inFields.get("vnfID")); + +vcpeClosedLoopStatus.put("notification", "OPERATION"); +vcpeClosedLoopStatus.put("notificationTime", java.lang.System.currentTimeMillis()); + +executor.outFields.put("ControllerRequest", controllerRequest); + +executor.logger.info(executor.outFields); + +var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/standalone/ControllerResponseTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/ControllerResponseTask.js new file mode 100644 index 000000000..5a8703780 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/ControllerResponseTask.js @@ -0,0 +1,90 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * APPC LCM Response code: 100 ACCEPTED + * 200 ERROR UNEXPECTED ERROR means failure + * 312 REJECTED DUPLICATE REQUEST + * 400 SUCCESS + * + * Note: Sometimes the corelationId has a -1 at the tail, need to get rid of it when present. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +var controllerResponse = executor.inFields.get("ControllerResponse"); + +var requestIDString = new java.lang.String(controllerResponse.get("correlation_DasH_id")); +executor.logger.info("requestIDString =\"" + requestIDString + "\""); +var vnfID = executor.getContextAlbum("RequestIDVNFIDAlbum").get(requestIDString); +executor.logger.info("vnfID = " + vnfID); + +var returnValue = executor.isTrue; + +if (vnfID != null) { + var vcpeClosedLoopStatus = executor.getContextAlbum("ControlLoopStatusAlbum").get(vnfID.toString()); + var requestId = java.util.UUID.fromString(vcpeClosedLoopStatus.get("requestID")); + + vcpeClosedLoopStatus.put("notificationTime", java.lang.System.currentTimeMillis()); + + var returnedCode = controllerResponse.get("body").get("output").get("status").get("code"); + var responseStatus = null; + + if (returnedCode == 100) { + responseStatus = "ACCEPTED"; + } else if (returnedCode == 200) { + responseStatus = "ERROR"; + } else if (returnedCode >= 300 && returnedCode <= 316) { + responseStatus = "REJECT"; + } else if (returnedCode == 400) { + responseStatus = "SUCCESS"; + } else if (returnedCode == 450 || (returnedCode >= 401 && returnedCode <= 406)) { + responseStatus = "FAILURE"; + } else if (returnedCode == 500) { + responseStatus = "PARTIAL_SUCCESS"; + } else if (returnedCode >= 501 && returnedCode <= 599) { + responseStatus = "PARTIAL_FAILURE"; + } else { + responseStatus = "SYSTEM_ERROR"; + } + + executor.logger.info("Got from APPC code: " + responseStatus); + + if (responseStatus === "SUCCESS") { + vcpeClosedLoopStatus.put("notification", "OPERATION_SUCCESS"); + vcpeClosedLoopStatus.put("message", "vCPE restarted"); + executor.getContextAlbum("RequestIDVNFIDAlbum").remove(requestIDString); + } else if (responseStatus === "ACCEPTED" || responseStatus === "REJECT") { + executor.logger.info("Got ACCEPTED 100 or REJECT 312, keep the context, wait for next response. Code is: " + + responseStatus); + } else { + executor.getContextAlbum("RequestIDVNFIDAlbum").remove(requestIDString); + vcpeClosedLoopStatus.put("notification", "OPERATION_FAILURE"); + vcpeClosedLoopStatus.put("message", "vCPE restart failed, code is " + responseStatus + ", message is " + + controllerResponse.get("body").get("output").get("status").get("message")); + } + + executor.outFields.put("requestID", requestId); + executor.outFields.put("vnfID", vnfID); +} else { + executor.message = "VNF ID not found in context album for request ID " + requestIDString; + returnValue = executor.isFalse; +} + +executor.logger.info(executor.outFields); diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/standalone/DoControllerRequestActionTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/DoControllerRequestActionTask.js new file mode 100644 index 000000000..c24e76523 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/DoControllerRequestActionTask.js @@ -0,0 +1,27 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +// Pass through to the log state + +executor.logger.info(executor.outFields); + +var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/standalone/DoLogActionTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/DoLogActionTask.js new file mode 100644 index 000000000..003942e22 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/DoLogActionTask.js @@ -0,0 +1,28 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +// Pass through to the log state + +executor.logger.info(executor.outFields); + +var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/standalone/ExecuteActionsPolicyActionStateTSL.js b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/ExecuteActionsPolicyActionStateTSL.js new file mode 100644 index 000000000..a8bb40c80 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/ExecuteActionsPolicyActionStateTSL.js @@ -0,0 +1,33 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +var returnValue = executor.isTrue; +var status = null; + +if (executor.inFields.get("action") === "ControllerRequestAction") { + executor.subject.getTaskKey("DoControllerRequestActionTask").copyTo(executor.selectedTask); +} else { + executor.subject.getTaskKey("DoLogActionTask").copyTo(executor.selectedTask); +} + +executor.logger.info("ReceiveEventPolicyOnsetOrAbatedStateTSL State Selected Task:" + executor.selectedTask); diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/standalone/GetEntityStateTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/GetEntityStateTask.js new file mode 100644 index 000000000..1567608bb --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/GetEntityStateTask.js @@ -0,0 +1,157 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Note: The incoming closedloop message can be ONSET with both VNF-name and VNF-ID + * or ABATED with only VNF-name. So need to handle differently. For ABATED case, + * since we still keep the RequireIDVNFID context album, we can get it from there. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +var utf8Type = Java.type("org.apache.avro.util.Utf8"); +var uuidType = Java.type("java.util.UUID"); + +var clEvent = executor.inFields.get("VirtualControlLoopEvent"); + +executor.logger.info(clEvent.toString()); +executor.logger.info(clEvent.get("closedLoopControlName")); + +var requestID = uuidType.fromString(clEvent.get("requestID")); +executor.logger.info("requestID = " + requestID); +var vnfID = null; +var vcpeClosedLoopStatus = null; + +if (clEvent.get("AAI").get(new utf8Type("generic_DasH_vnf_DoT_vnf_DasH_id")) != null) { + vnfID = uuidType.fromString(clEvent.get("AAI").get(new utf8Type("generic_DasH_vnf_DoT_vnf_DasH_id"))); + executor.logger.info("vnfID = " + vnfID); + vcpeClosedLoopStatus = executor.getContextAlbum("ControlLoopStatusAlbum").get(vnfID); + + if (vcpeClosedLoopStatus == null) { + executor.logger.info("Creating context information for new vCPE VNF \"" + vnfID.toString() + "\""); + + vcpeClosedLoopStatus = executor.getContextAlbum("ControlLoopStatusAlbum").getSchemaHelper().createNewInstance(); + + vcpeClosedLoopStatus.put("closedLoopControlName", clEvent.get("closedLoopControlName")); + vcpeClosedLoopStatus.put("closedLoopAlarmStart", clEvent.get("closedLoopAlarmStart")); + vcpeClosedLoopStatus.put("closedLoopEventClient", clEvent.get("closedLoopEventClient")); + vcpeClosedLoopStatus.put("closedLoopEventStatus", clEvent.get("closedLoopEventStatus")); + vcpeClosedLoopStatus.put("version", clEvent.get("version")); + vcpeClosedLoopStatus.put("requestID", clEvent.get("requestID")); + vcpeClosedLoopStatus.put("target_type", clEvent.get("target_type")); + vcpeClosedLoopStatus.put("target", clEvent.get("target")); + vcpeClosedLoopStatus.put("from", clEvent.get("from")); + vcpeClosedLoopStatus.put("policyScope", "vCPE"); + vcpeClosedLoopStatus.put("policyName", "ONAPvCPEPolicyModel"); + vcpeClosedLoopStatus.put("policyVersion", "0.0.1"); + vcpeClosedLoopStatus.put("notification", "ACTIVE"); + vcpeClosedLoopStatus.put("notificationTime", java.lang.System.currentTimeMillis()); + vcpeClosedLoopStatus.put("message", ""); + + var aaiInfo = executor.getContextAlbum("ControlLoopStatusAlbum").getSchemaHelper().createNewSubInstance( + "VCPE_AAI_Type"); + + aaiInfo.put("genericVnfResourceVersion", clEvent.get("AAI").get( + new utf8Type("generic_DasH_vnf_DoT_resource_DasH_version"))); + aaiInfo.put("genericVnfVnfName", clEvent.get("AAI").get(new utf8Type("generic_DasH_vnf_DoT_vnf_DasH_name"))); + aaiInfo.put("genericVnfProvStatus", clEvent.get("AAI").get( + new utf8Type("generic_DasH_vnf_DoT_prov_DasH_status"))); + aaiInfo.put("genericVnfIsClosedLoopDisabled", clEvent.get("AAI").get( + new utf8Type("generic_DasH_vnf_DoT_is_DasH_closed_DasH_loop_DasH_disabled"))); + aaiInfo.put("genericVnfOrchestrationStatus", clEvent.get("AAI").get( + new utf8Type("generic_DasH_vnf_DoT_orchestration_DasH_status"))); + aaiInfo.put("genericVnfVnfType", clEvent.get("AAI").get(new utf8Type("generic_DasH_vnf_DoT_vnf_DasH_type"))); + aaiInfo.put("genericVnfInMaint", clEvent.get("AAI").get(new utf8Type("generic_DasH_vnf_DoT_in_DasH_maint"))); + aaiInfo + .put("genericVnfServiceId", clEvent.get("AAI") + .get(new utf8Type("generic_DasH_vnf_DoT_service_DasH_id"))); + aaiInfo.put("genericVnfVnfId", clEvent.get("AAI").get(new utf8Type("generic_DasH_vnf_DoT_vnf_DasH_id"))); + aaiInfo.put("vserverIsClosedLoopDisabled", clEvent.get("AAI").get( + new utf8Type("vserver_DoT_is_DasH_closed_DasH_loop_DasH_disabled"))); + aaiInfo.put("vserverProvStatus", clEvent.get("AAI").get(new utf8Type("vserver_DoT_prov_DasH_status"))); + aaiInfo.put("vserverName", clEvent.get("AAI").get(new utf8Type("vserver_DoT_vserver_DasH_name"))); + + vcpeClosedLoopStatus.put("AAI", aaiInfo); + + if (clEvent.get("closedLoopAlarmEnd") != null) { + vcpeClosedLoopStatus.put("closedLoopAlarmEnd", clEvent.get("closedLoopAlarmEnd")); + } else { + vcpeClosedLoopStatus.put("closedLoopAlarmEnd", java.lang.Long.valueOf(0)); + } + + executor.getContextAlbum("ControlLoopStatusAlbum").put(vnfID.toString(), vcpeClosedLoopStatus); + + executor.logger.info("Created context information for new vCPE VNF \"" + vnfID.toString() + "\""); + } + + executor.outFields.put("requestID", requestID); + executor.outFields.put("vnfID", vnfID); + + executor.logger.info(executor.outFields); +} else { + executor.logger.info("No vnf-id in VirtualControlLoopEvent, status:" + + clEvent.get("closedLoopEventStatus").toString()); + var vnfName = clEvent.get("AAI").get(new utf8Type("generic_DasH_vnf_DoT_vnf_DasH_name")); + executor.logger.info("No vnf-id in VirtualControlLoopEvent for " + vnfName); + + vcpeClosedLoopStatus = executor.getContextAlbum("ControlLoopStatusAlbum").get(vnfName); + + if (vcpeClosedLoopStatus == null) { + executor.logger.info("Creating context information for new vCPE VNF \"" + vnfName + "\""); + + vcpeClosedLoopStatus = executor.getContextAlbum("ControlLoopStatusAlbum").getSchemaHelper().createNewInstance(); + + vcpeClosedLoopStatus.put("closedLoopControlName", clEvent.get("closedLoopControlName")); + vcpeClosedLoopStatus.put("closedLoopAlarmStart", clEvent.get("closedLoopAlarmStart")); + vcpeClosedLoopStatus.put("closedLoopEventClient", clEvent.get("closedLoopEventClient")); + vcpeClosedLoopStatus.put("closedLoopEventStatus", clEvent.get("closedLoopEventStatus(")); + vcpeClosedLoopStatus.put("version", clEvent.get("version")); + vcpeClosedLoopStatus.put("requestID", clEvent.get("requestID")); + vcpeClosedLoopStatus.put("target_type", clEvent.get("targetType")); + vcpeClosedLoopStatus.put("target", clEvent.get("target")); + vcpeClosedLoopStatus.put("from", clEvent.get("from")); + vcpeClosedLoopStatus.put("policyScope", "vCPE"); + vcpeClosedLoopStatus.put("policyName", "ONAPvCPEPolicyModel"); + vcpeClosedLoopStatus.put("policyVersion", "0.0.1"); + vcpeClosedLoopStatus.put("notification", "ACTIVE"); + vcpeClosedLoopStatus.put("notificationTime", java.lang.System.currentTimeMillis()); + vcpeClosedLoopStatus.put("message", ""); + + var aaiInfo = executor.getContextAlbum("ControlLoopStatusAlbum").getSchemaHelper().createNewSubInstance( + "VCPE_AAI_Type"); + + aaiInfo.put("genericVnfVnfName", clEvent.get("AAI").get(new utf8Type("generic_DasH_vnf_DoT_vnf_DasH_name"))); + vcpeClosedLoopStatus.put("AAI", aaiInfo); + + if (clEvent.get("closedLoopAlarmEnd") != null) { + vcpeClosedLoopStatus.put("closedLoopAlarmEnd", clEvent.get("closedLoopAlarmEnd")); + } else { + vcpeClosedLoopStatus.put("closedLoopAlarmEnd", java.lang.Long.valueOf(0)); + } + + executor.getContextAlbum("ControlLoopStatusAlbum").put(vnfName, vcpeClosedLoopStatus); + + executor.logger.info("Created context information for new vCPE VNF \"" + vnfName + "\""); + } + executor.outFields.put("requestID", requestID); + executor.outFields.put("vnfName", vnfName); + executor.logger.info(executor.outFields); +} + +var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/standalone/InitiateActionsTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/InitiateActionsTask.js new file mode 100644 index 000000000..0303bc9a4 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/InitiateActionsTask.js @@ -0,0 +1,54 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +var vcpeClosedLoopStatus = executor.getContextAlbum("ControlLoopStatusAlbum").get( + executor.inFields.get("vnfID").toString()); + +var eventList = executor.subject.getOutFieldSchemaHelper("ActionEventList").createNewInstance(); + +var eventType = Java.type("org.onap.policy.apex.service.engine.event.ApexEvent"); + +var controllerRequestActionEvent = new eventType("ActionEvent", "0.0.1", "org.onap.policy.apex.onap.vcpe", "APEX", + "APEX"); + +controllerRequestActionEvent.put("action", "ControllerRequestAction"); +controllerRequestActionEvent.put("requestID", executor.inFields.get("requestID")); +controllerRequestActionEvent.put("vnfID", executor.inFields.get("vnfID")); +controllerRequestActionEvent.put("vnfName", executor.inFields.get("vnfName")); + +eventList.add(controllerRequestActionEvent); + +var logActionEvent = new eventType("ActionEvent", "0.0.1", "org.onap.policy.apex.onap.vcpe", "APEX", "APEX"); + +logActionEvent.put("action", "LogAction"); +logActionEvent.put("requestID", executor.inFields.get("requestID")); +logActionEvent.put("vnfID", executor.inFields.get("vnfID")); +logActionEvent.put("vnfName", executor.inFields.get("vnfName")); + +eventList.add(logActionEvent); + +executor.outFields.put("ActionEventList", eventList); + +executor.logger.info(executor.outFields); + +var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/standalone/ReceiveEventPolicyExecuteOrLogStateTSL.js b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/ReceiveEventPolicyExecuteOrLogStateTSL.js new file mode 100644 index 000000000..46a65add3 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/ReceiveEventPolicyExecuteOrLogStateTSL.js @@ -0,0 +1,55 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +var returnValue = executor.isTrue; + +if( executor.inFields.get("vnfID") == null) { + executor.logger.info("ControlLoopStatusAlbum: vnfID is null"); + var vnfName = executor.inFields.get("vnfName"); + var vcpeClosedLoopStatus = executor.getContextAlbum("ControlLoopStatusAlbum").get( + executor.inFields.get("vnfName")); +} else { + var vcpeClosedLoopStatus = executor.getContextAlbum("ControlLoopStatusAlbum").get( + executor.inFields.get("vnfID").toString()); +} + +var status = vcpeClosedLoopStatus.get("closedLoopEventStatus").toString(); +var notification = vcpeClosedLoopStatus.get("notification"); + +var returnValue = executor.isTrue; + +if (notification != null && notification === "BLACKLIST") { + executor.subject.getTaskKey("StopAndLogTask").copyTo(executor.selectedTask); +} +else { + if (status === "ONSET") { + executor.subject.getTaskKey("InitiateActionsTask").copyTo(executor.selectedTask); + } else if (status === "ABATED") { + executor.subject.getTaskKey("StopAndLogTask").copyTo(executor.selectedTask); + } else { + executor.message = "closedLoopEventStatus is \"" + status + "\", it must be either \"ONSET\" or \"ABATED\""; + returnValue = executor.isFalse; + } +} + +executor.logger.info("ReceiveEventPolicyOnsetOrAbatedStateTSL State Selected Task:" + executor.selectedTask); diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/standalone/StopAndLogTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/StopAndLogTask.js new file mode 100644 index 000000000..af57bf1f7 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/standalone/StopAndLogTask.js @@ -0,0 +1,47 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +executor.logger.info(executor.subject.id); +executor.logger.info(executor.inFields); + +var vcpeClosedLoopStatus = null; +if (executor.inFields.get("vnfID") == null) { + executor.logger.info("AbatedTask: vnfID is null"); + var vnfName = executor.inFields.get("vnfName"); + vcpeClosedLoopStatus = executor.getContextAlbum("ControlLoopStatusAlbum") + .get(executor.inFields.get("vnfName")); +} else { + vcpeClosedLoopStatus = executor.getContextAlbum("ControlLoopStatusAlbum") + .get(executor.inFields.get("vnfID").toString()); +} + +vcpeClosedLoopStatus.put("notificationTime", java.lang.System.currentTimeMillis()); + +var message = vcpeClosedLoopStatus.get("message"); +if (message == null || message === "") { + vcpeClosedLoopStatus.put("message", "situation has been abated"); +} +else { + vcpeClosedLoopStatus.put("notification", "FINAL_FAILURE"); +} + +executor.logger.info(executor.outFields); + +var returnValue = executor.isTrue; diff --git a/examples/examples-onap-vcpe/src/main/resources/policy/ONAPvCPEPolicyModel.apex b/examples/examples-onap-vcpe/src/main/resources/policy/ONAPvCPEPolicyModel.apex index 0748cbed1..241435e67 100644 --- a/examples/examples-onap-vcpe/src/main/resources/policy/ONAPvCPEPolicyModel.apex +++ b/examples/examples-onap-vcpe/src/main/resources/policy/ONAPvCPEPolicyModel.apex @@ -1,6 +1,7 @@ #------------------------------------------------------------------------------- # ============LICENSE_START======================================================= # Copyright (C) 2016-2018 Ericsson. All rights reserved. +# Modifications Copyright (C) 2019-2020 Nordix Foundation. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -32,11 +33,11 @@ schema create name=APPCLCMRequestType flavour=Java schema=org.onap.policy.appclc schema create name=APPCLCMResponseType flavour=Java schema=org.onap.policy.appclcm.AppcLcmDmaapWrapper schema create name=GuardDecisionAttributesType flavour=Avro schema=LS -#MACROFILE:"src/main/resources/schemas/GuardDecisionAttributesType.avsc" +#MACROFILE:"src/main/resources/schemas/definitive/GuardDecisionAttributesType.avsc" LE schema create name=VCPEClosedLoopStatusType flavour=Avro schema=LS -#MACROFILE:"src/main/resources/schemas/VCPEClosedLoopStatusType.avsc" +#MACROFILE:"src/main/resources/schemas/definitive/VCPEClosedLoopStatusType.avsc" LE album create name=VCPEClosedLoopStatusAlbum scope=policy writable=true schemaName=VCPEClosedLoopStatusType @@ -84,7 +85,7 @@ task contextref create name=GetVCPEStateTask albumName=VCPEClosedLoopStatusAlbum task contextref create name=GetVCPEStateTask albumName=RequestIDVNFIDAlbum task logic create name=GetVCPEStateTask logicFlavour=JAVASCRIPT logic=LS -#MACROFILE:"src/main/resources/logic/GetVCPEStateTask.js" +#MACROFILE:"src/main/resources/logic/definitive/GetVCPEStateTask.js" LE task create name=AbatedTask @@ -100,7 +101,7 @@ task outputfield create name=AbatedTask fieldName=vnfName schemaName=SimpleStr task contextref create name=AbatedTask albumName=VCPEClosedLoopStatusAlbum task logic create name=AbatedTask logicFlavour=JAVASCRIPT logic=LS -#MACROFILE:"src/main/resources/logic/AbatedTask.js" +#MACROFILE:"src/main/resources/logic/definitive/AbatedTask.js" LE task create name=GuardRequestTask @@ -115,7 +116,7 @@ task contextref create name=GuardRequestTask albumName=VCPEClosedLoopStatusAlbum task contextref create name=GuardRequestTask albumName=ControlLoopExecutionIDAlbum task logic create name=GuardRequestTask logicFlavour=JAVASCRIPT logic=LS -#MACROFILE:"src/main/resources/logic/GuardRequestTask.js" +#MACROFILE:"src/main/resources/logic/definitive/GuardRequestTask.js" LE task create name=GuardResponseTask @@ -130,7 +131,7 @@ task contextref create name=GuardResponseTask albumName=VCPEClosedLoopStatusAlbu task contextref create name=GuardResponseTask albumName=ControlLoopExecutionIDAlbum task logic create name=GuardResponseTask logicFlavour=JAVASCRIPT logic=LS -#MACROFILE:"src/main/resources/logic/GuardResponseTask.js" +#MACROFILE:"src/main/resources/logic/definitive/GuardResponseTask.js" LE task create name=DeniedTask @@ -144,7 +145,7 @@ task outputfield create name=DeniedTask fieldName=vnfID schemaName=UUIDType task contextref create name=DeniedTask albumName=VCPEClosedLoopStatusAlbum task logic create name=DeniedTask logicFlavour=JAVASCRIPT logic=LS -#MACROFILE:"src/main/resources/logic/DeniedTask.js" +#MACROFILE:"src/main/resources/logic/definitive/DeniedTask.js" LE task create name=APPCRestartVNFRequestTask @@ -158,7 +159,7 @@ task contextref create name=APPCRestartVNFRequestTask albumName=VCPEClosedLoopSt task contextref create name=APPCRestartVNFRequestTask albumName=RequestIDVNFIDAlbum task logic create name=APPCRestartVNFRequestTask logicFlavour=JAVASCRIPT logic=LS -#MACROFILE:"src/main/resources/logic/APPCRestartVNFRequestTask.js" +#MACROFILE:"src/main/resources/logic/definitive/APPCRestartVNFRequestTask.js" LE task create name=APPCRestartVNFResponseTask @@ -172,7 +173,7 @@ task contextref create name=APPCRestartVNFResponseTask albumName=VCPEClosedLoopS task contextref create name=APPCRestartVNFResponseTask albumName=RequestIDVNFIDAlbum task logic create name=APPCRestartVNFResponseTask logicFlavour=JAVASCRIPT logic=LS -#MACROFILE:"src/main/resources/logic/APPCRestartVNFResponseTask.js" +#MACROFILE:"src/main/resources/logic/definitive/APPCRestartVNFResponseTask.js" LE task create name=ControlLoopLogTask @@ -185,7 +186,7 @@ task outputfield create name=ControlLoopLogTask fieldName=VirtualControlLoopNoti task contextref create name=ControlLoopLogTask albumName=VCPEClosedLoopStatusAlbum task logic create name=ControlLoopLogTask logicFlavour=JAVASCRIPT logic=LS -#MACROFILE:"src/main/resources/logic/ControlLoopLogTask.js" +#MACROFILE:"src/main/resources/logic/definitive/ControlLoopLogTask.js" LE task create name=AAILookupTask @@ -199,7 +200,7 @@ task outputfield create name=AAILookupTask fieldName=vnfID schemaName=UUIDTy task contextref create name=AAILookupTask albumName=VCPEClosedLoopStatusAlbum task logic create name=AAILookupTask logicFlavour=JAVASCRIPT logic=LS -#MACROFILE:"src/main/resources/logic/AAILookupTask.js" +#MACROFILE:"src/main/resources/logic/definitive/AAILookupTask.js" LE task create name=NoAAILookupTask @@ -211,7 +212,7 @@ task outputfield create name=NoAAILookupTask fieldName=requestID schemaName=UUID task outputfield create name=NoAAILookupTask fieldName=vnfID schemaName=UUIDType task logic create name=NoAAILookupTask logicFlavour=JAVASCRIPT logic=LS -#MACROFILE:"src/main/resources/logic/NoAAILookupTask.js" +#MACROFILE:"src/main/resources/logic/definitive/NoAAILookupTask.js" LE # @@ -232,7 +233,7 @@ policy state taskref create name=ReceiveEventPolicy stateName=OnsetOrAbatedState policy state contextref create name=ReceiveEventPolicy stateName=OnsetOrAbatedState albumName=VCPEClosedLoopStatusAlbum policy state selecttasklogic create name=ReceiveEventPolicy stateName=OnsetOrAbatedState logicFlavour=JAVASCRIPT logic=LS -#MACROFILE:"src/main/resources/logic/OnsetOrAbatedStateTSL.js" +#MACROFILE:"src/main/resources/logic/definitive/OnsetOrAbatedStateTSL.js" LE policy state create name=ReceiveEventPolicy stateName=RequestAAIState triggerName=VCPEStateUpdatedEvent defaultTaskName=AAILookupTask @@ -267,7 +268,7 @@ policy state taskref create name=RestartAPPCRequestPolicy stateName=PolicyGuardR policy state contextref create name=RestartAPPCRequestPolicy stateName=PermitOrDenyState albumName=VCPEClosedLoopStatusAlbum policy state selecttasklogic create name=RestartAPPCRequestPolicy stateName=PermitOrDenyState logicFlavour=JAVASCRIPT logic=LS -#MACROFILE:"src/main/resources/logic/RestartAPPCRequestPolicyPermitOrDenyTSL.js" +#MACROFILE:"src/main/resources/logic/definitive/RestartAPPCRequestPolicyPermitOrDenyTSL.js" LE # diff --git a/examples/examples-onap-vcpe/src/main/resources/policy/ONAPvCPEPolicyModelStandalone.apex b/examples/examples-onap-vcpe/src/main/resources/policy/ONAPvCPEPolicyModelStandalone.apex new file mode 100644 index 000000000..b73565a00 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/policy/ONAPvCPEPolicyModelStandalone.apex @@ -0,0 +1,368 @@ +#------------------------------------------------------------------------------- +# ============LICENSE_START======================================================= +# Copyright (C) 2020 Nordix Foundation. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= +#------------------------------------------------------------------------------- + +model create name=ONAPvCPEPolicyModelStandalone + +schema create name=SimpleStringType flavour=Java schema=java.lang.String +schema create name=SimpleLongType flavour=Java schema=java.lang.Long +schema create name=SimpleBooleanType flavour=Java schema=java.lang.Boolean +schema create name=UUIDType flavour=Java schema=java.util.UUID + +schema create name=VirtualControlLoopEventType flavour=Avro schema=LS +#MACROFILE:"src/main/resources/schemas/standalone/VirtualControlLoopEventType.avsc" +LE + +schema create name=VirtualControlLoopNotificationType flavour=Avro schema=LS +#MACROFILE:"src/main/resources/schemas/standalone/VirtualControlLoopNotificationType.avsc" +LE + +schema create name=ControllerRequestType flavour=Avro schema=LS +#MACROFILE:"src/main/resources/schemas/standalone/ControllerRequestType.avsc" +LE + +schema create name=ControllerResponseType flavour=Avro schema=LS +#MACROFILE:"src/main/resources/schemas/standalone/ControllerResponseType.avsc" +LE + +schema create name=ControlLoopStatusType flavour=Avro schema=LS +#MACROFILE:"src/main/resources/schemas/standalone/ControlLoopStatusType.avsc" +LE + +schema create name=ActionEventListType flavour=Java schema=org.onap.policy.apex.service.engine.event.ApexEventList + +album create name=ControlLoopStatusAlbum scope=policy writable=true schemaName=ControlLoopStatusType + +album create name=RequestIDVNFIDAlbum scope=policy writable=true schemaName=UUIDType + +album create name=VnfIdWhiteBlackListAlbum scope=policy writable=true schemaName=SimpleBooleanType +album create name=ServiceIdWhiteBlackListAlbum scope=policy writable=true schemaName=SimpleBooleanType +album create name=VServerIdWhiteBlackListAlbum scope=policy writable=true schemaName=SimpleBooleanType + +event create name=VirtualControlLoopEvent version=1.0.2 nameSpace=org.onap.policy.apex.onap.vcpe source=Analytics target=APEX +event parameter create name=VirtualControlLoopEvent parName=VirtualControlLoopEvent schemaName=VirtualControlLoopEventType + +event create name=EntityStateUpdatedEvent nameSpace=org.onap.policy.apex.onap.vcpe source=APEX target=APEX +event parameter create name=EntityStateUpdatedEvent parName=requestID schemaName=UUIDType +event parameter create name=EntityStateUpdatedEvent parName=vnfID schemaName=UUIDType +event parameter create name=EntityStateUpdatedEvent parName=vnfName schemaName=SimpleStringType optional=true + +event create name=ActionEventListEvent nameSpace=org.onap.policy.apex.onap.vcpe source=APEX target=APEX +event parameter create name=ActionEventListEvent parName=ActionEventList schemaName=ActionEventListType + +event create name=ActionEvent nameSpace=org.onap.policy.apex.onap.vcpe source=APEX target=APEX +event parameter create name=ActionEvent parName=action schemaName=SimpleStringType +event parameter create name=ActionEvent parName=requestID schemaName=UUIDType +event parameter create name=ActionEvent parName=vnfID schemaName=UUIDType +event parameter create name=ActionEvent parName=vnfName schemaName=SimpleStringType optional=true + +event create name=ControllerRequestEvent version="2.0.0" nameSpace=org.onap.policy.apex.onap.vcpe source=APEX target=Controller +event parameter create name=ControllerRequestEvent parName=ControllerRequest schemaName=ControllerRequestType + +event create name=ControllerResponseEvent version="2.0.0" nameSpace=org.onap.policy.apex.onap.vcpe source=APEX target=APPC +event parameter create name=ControllerResponseEvent parName=ControllerResponse schemaName=ControllerResponseType + +event create name=ControlLoopLogEvent nameSpace=org.onap.policy.apex.onap.vcpe source=APEX target=APEX +event parameter create name=ControlLoopLogEvent parName=VirtualControlLoopNotification schemaName=VirtualControlLoopNotificationType + +event create name=ConfigureBlackWhiteListEvent nameSpace=org.onap.policy.apex.onap.vcpe source=APEX target=APEX +event parameter create name=ConfigureBlackWhiteListEvent parName=targetType schemaName=SimpleStringType +event parameter create name=ConfigureBlackWhiteListEvent parName=target schemaName=SimpleStringType +event parameter create name=ConfigureBlackWhiteListEvent parName=black schemaName=SimpleBooleanType + +event create name=ConfigureBlackWhiteListResultEvent nameSpace=org.onap.policy.apex.onap.vcpe source=APEX target=APEX +event parameter create name=ConfigureBlackWhiteListResultEvent parName=targetType schemaName=SimpleStringType +event parameter create name=ConfigureBlackWhiteListResultEvent parName=target schemaName=SimpleStringType +event parameter create name=ConfigureBlackWhiteListResultEvent parName=black schemaName=SimpleBooleanType + +task create name=GetEntityStateTask + +task inputfield create name=GetEntityStateTask fieldName=VirtualControlLoopEvent schemaName=VirtualControlLoopEventType + +task outputfield create name=GetEntityStateTask fieldName=requestID schemaName=UUIDType +task outputfield create name=GetEntityStateTask fieldName=vnfID schemaName=UUIDType +task outputfield create name=GetEntityStateTask fieldName=vnfName schemaName=SimpleStringType optional=true + +task contextref create name=GetEntityStateTask albumName=ControlLoopStatusAlbum +task contextref create name=GetEntityStateTask albumName=RequestIDVNFIDAlbum + +task logic create name=GetEntityStateTask logicFlavour=JAVASCRIPT logic=LS +#MACROFILE:"src/main/resources/logic/standalone/GetEntityStateTask.js" +LE + +task create name=CheckVNFIdTask + +task inputfield create name=CheckVNFIdTask fieldName=requestID schemaName=UUIDType +task inputfield create name=CheckVNFIdTask fieldName=vnfID schemaName=UUIDType +task inputfield create name=CheckVNFIdTask fieldName=vnfName schemaName=SimpleStringType optional=true + +task outputfield create name=CheckVNFIdTask fieldName=requestID schemaName=UUIDType +task outputfield create name=CheckVNFIdTask fieldName=vnfID schemaName=UUIDType +task outputfield create name=CheckVNFIdTask fieldName=vnfName schemaName=SimpleStringType optional=true + +task contextref create name=CheckVNFIdTask albumName=ControlLoopStatusAlbum +task contextref create name=CheckVNFIdTask albumName=VnfIdWhiteBlackListAlbum + +task logic create name=CheckVNFIdTask logicFlavour=JAVASCRIPT logic=LS +#MACROFILE:"src/main/resources/logic/standalone/CheckVNFIdTask.js" +LE + +task create name=CheckServiceIdTask + +task inputfield create name=CheckServiceIdTask fieldName=requestID schemaName=UUIDType +task inputfield create name=CheckServiceIdTask fieldName=vnfID schemaName=UUIDType +task inputfield create name=CheckServiceIdTask fieldName=vnfName schemaName=SimpleStringType optional=true + +task outputfield create name=CheckServiceIdTask fieldName=requestID schemaName=UUIDType +task outputfield create name=CheckServiceIdTask fieldName=vnfID schemaName=UUIDType +task outputfield create name=CheckServiceIdTask fieldName=vnfName schemaName=SimpleStringType optional=true + +task contextref create name=CheckServiceIdTask albumName=ControlLoopStatusAlbum +task contextref create name=CheckServiceIdTask albumName=ServiceIdWhiteBlackListAlbum + +task logic create name=CheckServiceIdTask logicFlavour=JAVASCRIPT logic=LS +#MACROFILE:"src/main/resources/logic/standalone/CheckServiceIdTask.js" +LE + +task create name=CheckVServerIdTask + +task inputfield create name=CheckVServerIdTask fieldName=requestID schemaName=UUIDType +task inputfield create name=CheckVServerIdTask fieldName=vnfID schemaName=UUIDType +task inputfield create name=CheckVServerIdTask fieldName=vnfName schemaName=SimpleStringType optional=true + +task outputfield create name=CheckVServerIdTask fieldName=requestID schemaName=UUIDType +task outputfield create name=CheckVServerIdTask fieldName=vnfID schemaName=UUIDType +task outputfield create name=CheckVServerIdTask fieldName=vnfName schemaName=SimpleStringType optional=true + +task contextref create name=CheckVServerIdTask albumName=ControlLoopStatusAlbum +task contextref create name=CheckVServerIdTask albumName=VServerIdWhiteBlackListAlbum + +task logic create name=CheckVServerIdTask logicFlavour=JAVASCRIPT logic=LS +#MACROFILE:"src/main/resources/logic/standalone/CheckVServerIdTask.js" +LE + +task create name=StopAndLogTask + +task inputfield create name=StopAndLogTask fieldName=requestID schemaName=UUIDType +task inputfield create name=StopAndLogTask fieldName=vnfID schemaName=UUIDType +task inputfield create name=StopAndLogTask fieldName=vnfName schemaName=SimpleStringType optional=true + +task outputfield create name=StopAndLogTask fieldName=requestID schemaName=UUIDType +task outputfield create name=StopAndLogTask fieldName=vnfID schemaName=UUIDType +task outputfield create name=StopAndLogTask fieldName=vnfName schemaName=SimpleStringType optional=true + +task contextref create name=StopAndLogTask albumName=ControlLoopStatusAlbum + +task logic create name=StopAndLogTask logicFlavour=JAVASCRIPT logic=LS +#MACROFILE:"src/main/resources/logic/standalone/StopAndLogTask.js" +LE + +task create name=InitiateActionsTask + +task inputfield create name=InitiateActionsTask fieldName=requestID schemaName=UUIDType +task inputfield create name=InitiateActionsTask fieldName=vnfID schemaName=UUIDType + +task outputfield create name=InitiateActionsTask fieldName=ActionEventList schemaName=ActionEventListType + +task contextref create name=InitiateActionsTask albumName=ControlLoopStatusAlbum + +task logic create name=InitiateActionsTask logicFlavour=JAVASCRIPT logic=LS +#MACROFILE:"src/main/resources/logic/standalone/InitiateActionsTask.js" +LE + +task create name=DoControllerRequestActionTask + +task inputfield create name=DoControllerRequestActionTask fieldName=action schemaName=SimpleStringType +task inputfield create name=DoControllerRequestActionTask fieldName=requestID schemaName=UUIDType +task inputfield create name=DoControllerRequestActionTask fieldName=vnfID schemaName=UUIDType +task inputfield create name=DoControllerRequestActionTask fieldName=vnfName schemaName=SimpleStringType optional=true + +task outputfield create name=DoControllerRequestActionTask fieldName=requestID schemaName=UUIDType +task outputfield create name=DoControllerRequestActionTask fieldName=vnfID schemaName=UUIDType + +task contextref create name=DoControllerRequestActionTask albumName=ControlLoopStatusAlbum + +task logic create name=DoControllerRequestActionTask logicFlavour=JAVASCRIPT logic=LS +#MACROFILE:"src/main/resources/logic/standalone/DoControllerRequestActionTask.js" +LE + +task create name=DoLogActionTask + +task inputfield create name=DoLogActionTask fieldName=action schemaName=SimpleStringType +task inputfield create name=DoLogActionTask fieldName=requestID schemaName=UUIDType +task inputfield create name=DoLogActionTask fieldName=vnfID schemaName=UUIDType +task inputfield create name=DoLogActionTask fieldName=vnfName schemaName=SimpleStringType optional=true + +task outputfield create name=DoLogActionTask fieldName=requestID schemaName=UUIDType +task outputfield create name=DoLogActionTask fieldName=vnfID schemaName=UUIDType + +task contextref create name=DoLogActionTask albumName=ControlLoopStatusAlbum + +task logic create name=DoLogActionTask logicFlavour=JAVASCRIPT logic=LS +#MACROFILE:"src/main/resources/logic/standalone/DoLogActionTask.js" +LE + +task create name=ControllerRequestTask + +task inputfield create name=ControllerRequestTask fieldName=action schemaName=SimpleStringType +task inputfield create name=ControllerRequestTask fieldName=requestID schemaName=UUIDType +task inputfield create name=ControllerRequestTask fieldName=vnfID schemaName=UUIDType +task inputfield create name=ControllerRequestTask fieldName=vnfName schemaName=SimpleStringType optional=true + +task outputfield create name=ControllerRequestTask fieldName=ControllerRequest schemaName=ControllerRequestType + +task contextref create name=ControllerRequestTask albumName=ControlLoopStatusAlbum +task contextref create name=ControllerRequestTask albumName=RequestIDVNFIDAlbum + +task logic create name=ControllerRequestTask logicFlavour=JAVASCRIPT logic=LS +#MACROFILE:"src/main/resources/logic/standalone/ControllerRequestTask.js" +LE + +task create name=ControllerResponseTask + +task inputfield create name=ControllerResponseTask fieldName=ControllerResponse schemaName=ControllerResponseType + +task outputfield create name=ControllerResponseTask fieldName=requestID schemaName=UUIDType +task outputfield create name=ControllerResponseTask fieldName=vnfID schemaName=UUIDType + +task contextref create name=ControllerResponseTask albumName=ControlLoopStatusAlbum +task contextref create name=ControllerResponseTask albumName=RequestIDVNFIDAlbum + +task logic create name=ControllerResponseTask logicFlavour=JAVASCRIPT logic=LS +#MACROFILE:"src/main/resources/logic/standalone/ControllerResponseTask.js" +LE + +task create name=ControlLoopLogTask + +task inputfield create name=ControlLoopLogTask fieldName=requestID schemaName=UUIDType +task inputfield create name=ControlLoopLogTask fieldName=vnfID schemaName=UUIDType + +task outputfield create name=ControlLoopLogTask fieldName=VirtualControlLoopNotification schemaName=VirtualControlLoopNotificationType + +task contextref create name=ControlLoopLogTask albumName=ControlLoopStatusAlbum + +task logic create name=ControlLoopLogTask logicFlavour=JAVASCRIPT logic=LS +#MACROFILE:"src/main/resources/logic/standalone/ControlLoopLogTask.js" +LE + +task create name=ConfigureBlackWhiteListTask + +task inputfield create name=ConfigureBlackWhiteListTask fieldName=targetType schemaName=SimpleStringType +task inputfield create name=ConfigureBlackWhiteListTask fieldName=black schemaName=SimpleBooleanType +task inputfield create name=ConfigureBlackWhiteListTask fieldName=target schemaName=SimpleStringType + +task outputfield create name=ConfigureBlackWhiteListTask fieldName=targetType schemaName=SimpleStringType +task outputfield create name=ConfigureBlackWhiteListTask fieldName=black schemaName=SimpleBooleanType +task outputfield create name=ConfigureBlackWhiteListTask fieldName=target schemaName=SimpleStringType + +task contextref create name=ConfigureBlackWhiteListTask albumName=VnfIdWhiteBlackListAlbum +task contextref create name=ConfigureBlackWhiteListTask albumName=ServiceIdWhiteBlackListAlbum +task contextref create name=ConfigureBlackWhiteListTask albumName=VServerIdWhiteBlackListAlbum + +task logic create name=ConfigureBlackWhiteListTask logicFlavour=JAVASCRIPT logic=LS +#MACROFILE:"src/main/resources/logic/standalone/ConfigureBlackWhiteListTask.js" +LE + +# +# ReceiveEventPolicy +# +policy create name=ReceiveEventPolicy template=Freestyle firstState=GetEntityState + +policy state create name=ReceiveEventPolicy stateName=LogAndStopState triggerName=EntityStateUpdatedEvent defaultTaskName=ControlLoopLogTask +policy state output create name=ReceiveEventPolicy stateName=LogAndStopState outputName=AbatedOutput eventName=ControlLoopLogEvent +policy state taskref create name=ReceiveEventPolicy stateName=LogAndStopState taskName=ControlLoopLogTask outputType=DIRECT outputName=AbatedOutput + +policy state create name=ReceiveEventPolicy stateName=ExecuteOrLogState triggerName=EntityStateUpdatedEvent defaultTaskName=StopAndLogTask +policy state output create name=ReceiveEventPolicy stateName=ExecuteOrLogState outputName=ExecuteOutput eventName=ActionEventListEvent +policy state taskref create name=ReceiveEventPolicy stateName=ExecuteOrLogState taskName=InitiateActionsTask outputType=DIRECT outputName=ExecuteOutput +policy state output create name=ReceiveEventPolicy stateName=ExecuteOrLogState outputName=StopAndLogOutput eventName=EntityStateUpdatedEvent nextState=LogAndStopState +policy state taskref create name=ReceiveEventPolicy stateName=ExecuteOrLogState taskName=StopAndLogTask outputType=DIRECT outputName=StopAndLogOutput + +policy state contextref create name=ReceiveEventPolicy stateName=ExecuteOrLogState albumName=ControlLoopStatusAlbum + +policy state selecttasklogic create name=ReceiveEventPolicy stateName=ExecuteOrLogState logicFlavour=JAVASCRIPT logic=LS +#MACROFILE:"src/main/resources/logic/standalone/ReceiveEventPolicyExecuteOrLogStateTSL.js" +LE + +policy state create name=ReceiveEventPolicy stateName=CheckVNFIdState triggerName=EntityStateUpdatedEvent defaultTaskName=CheckVNFIdTask +policy state output create name=ReceiveEventPolicy stateName=CheckVNFIdState outputName=CheckVNFIdOutput eventName=EntityStateUpdatedEvent nextState=ExecuteOrLogState +policy state taskref create name=ReceiveEventPolicy stateName=CheckVNFIdState taskName=CheckVNFIdTask outputType=DIRECT outputName=CheckVNFIdOutput + +policy state create name=ReceiveEventPolicy stateName=CheckVServerIdState triggerName=EntityStateUpdatedEvent defaultTaskName=CheckVServerIdTask +policy state output create name=ReceiveEventPolicy stateName=CheckVServerIdState outputName=CheckVServerIdOutput eventName=EntityStateUpdatedEvent nextState=CheckVNFIdState +policy state taskref create name=ReceiveEventPolicy stateName=CheckVServerIdState taskName=CheckVServerIdTask outputType=DIRECT outputName=CheckVServerIdOutput + +policy state create name=ReceiveEventPolicy stateName=CheckServiceIdState triggerName=EntityStateUpdatedEvent defaultTaskName=CheckServiceIdTask +policy state output create name=ReceiveEventPolicy stateName=CheckServiceIdState outputName=CheckServiceIdOutput eventName=EntityStateUpdatedEvent nextState=CheckVServerIdState +policy state taskref create name=ReceiveEventPolicy stateName=CheckServiceIdState taskName=CheckServiceIdTask outputType=DIRECT outputName=CheckServiceIdOutput + +policy state create name=ReceiveEventPolicy stateName=GetEntityState triggerName=VirtualControlLoopEvent defaultTaskName=GetEntityStateTask +policy state output create name=ReceiveEventPolicy stateName=GetEntityState outputName=GetEntityStateOutput eventName=EntityStateUpdatedEvent nextState=CheckServiceIdState +policy state taskref create name=ReceiveEventPolicy stateName=GetEntityState taskName=GetEntityStateTask outputType=DIRECT outputName=GetEntityStateOutput + +policy state contextref create name=ReceiveEventPolicy stateName=GetEntityState albumName=ControlLoopStatusAlbum + +# +# ExecuteActionsPolicy +# +policy create name=ExecuteActionsPolicy template=Freestyle firstState=ActionState + +policy state create name=ExecuteActionsPolicy stateName=ControllerRequestActionState triggerName=ActionEvent defaultTaskName=ControllerRequestTask +policy state output create name=ExecuteActionsPolicy stateName=ControllerRequestActionState outputName=ControllerRequestOutput eventName=ControllerRequestEvent +policy state taskref create name=ExecuteActionsPolicy stateName=ControllerRequestActionState taskName=ControllerRequestTask outputType=DIRECT outputName=ControllerRequestOutput + +policy state create name=ExecuteActionsPolicy stateName=LogActionState triggerName=EntityStateUpdatedEvent defaultTaskName=ControlLoopLogTask +policy state output create name=ExecuteActionsPolicy stateName=LogActionState outputName=ResponseLogOutput eventName=ControlLoopLogEvent +policy state taskref create name=ExecuteActionsPolicy stateName=LogActionState taskName=ControlLoopLogTask outputType=DIRECT outputName=ResponseLogOutput + +policy state create name=ExecuteActionsPolicy stateName=ActionState triggerName=ActionEvent defaultTaskName=DoLogActionTask +policy state output create name=ExecuteActionsPolicy stateName=ActionState outputName=LogActionOutput eventName=EntityStateUpdatedEvent nextState=LogActionState +policy state taskref create name=ExecuteActionsPolicy stateName=ActionState taskName=DoLogActionTask outputType=DIRECT outputName=LogActionOutput +policy state output create name=ExecuteActionsPolicy stateName=ActionState outputName=ControllerRequestActionOutput eventName=ActionEvent nextState=ControllerRequestActionState +policy state taskref create name=ExecuteActionsPolicy stateName=ActionState taskName=DoControllerRequestActionTask outputType=DIRECT outputName=ControllerRequestActionOutput + +policy state contextref create name=ExecuteActionsPolicy stateName=ActionState albumName=ControlLoopStatusAlbum + +policy state selecttasklogic create name=ExecuteActionsPolicy stateName=ActionState logicFlavour=JAVASCRIPT logic=LS +#MACROFILE:"src/main/resources/logic/standalone/ExecuteActionsPolicyActionStateTSL.js" +LE + +# +# ControllerResponsePolicy +# +policy create name=ControllerResponsePolicy template=Freestyle firstState=ControllerResponseState + +policy state create name=ControllerResponsePolicy stateName=ResponseLogState triggerName=EntityStateUpdatedEvent defaultTaskName=ControlLoopLogTask +policy state output create name=ControllerResponsePolicy stateName=ResponseLogState outputName=ResponseLogOutput eventName=ControlLoopLogEvent +policy state taskref create name=ControllerResponsePolicy stateName=ResponseLogState taskName=ControlLoopLogTask outputType=DIRECT outputName=ResponseLogOutput + +policy state create name=ControllerResponsePolicy stateName=ControllerResponseState triggerName=ControllerResponseEvent defaultTaskName=ControllerResponseTask +policy state output create name=ControllerResponsePolicy stateName=ControllerResponseState outputName=ControllerResponseOutput eventName=EntityStateUpdatedEvent nextState=ResponseLogState +policy state taskref create name=ControllerResponsePolicy stateName=ControllerResponseState taskName=ControllerResponseTask outputType=DIRECT outputName=ControllerResponseOutput + +# +# ConfigureBlackWhiteListPolicy +# +policy create name=ConfigureBlackWhiteListPolicy template=Freestyle firstState=ConfigureBlackWhiteListState + +policy state create name=ConfigureBlackWhiteListPolicy stateName=ConfigureBlackWhiteListState triggerName=ConfigureBlackWhiteListEvent defaultTaskName=ConfigureBlackWhiteListTask +policy state output create name=ConfigureBlackWhiteListPolicy stateName=ConfigureBlackWhiteListState outputName=ConfigureBlackWhiteListOutput eventName=ConfigureBlackWhiteListResultEvent +policy state taskref create name=ConfigureBlackWhiteListPolicy stateName=ConfigureBlackWhiteListState taskName=ConfigureBlackWhiteListTask outputType=DIRECT outputName=ConfigureBlackWhiteListOutput + +validate diff --git a/examples/examples-onap-vcpe/src/main/resources/schemas/GuardDecisionAttributesType.avsc b/examples/examples-onap-vcpe/src/main/resources/schemas/GuardDecisionAttributesType.avsc deleted file mode 100644 index bc25955fa..000000000 --- a/examples/examples-onap-vcpe/src/main/resources/schemas/GuardDecisionAttributesType.avsc +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "record", - "name": "GuardDecisionAttributes_Type", - "namespace": "org.onap.policy.apex.onap.vcpe", - "fields": [ - { - "name": "actor", - "type": "string" - }, - { - "name": "recipe", - "type": "string" - }, - { - "name": "target", - "type": "string" - }, - { - "name": "clname", - "type": "string" - } - ] -} diff --git a/examples/examples-onap-vcpe/src/main/resources/schemas/VCPEClosedLoopStatusType.avsc b/examples/examples-onap-vcpe/src/main/resources/schemas/VCPEClosedLoopStatusType.avsc deleted file mode 100644 index b02287d2a..000000000 --- a/examples/examples-onap-vcpe/src/main/resources/schemas/VCPEClosedLoopStatusType.avsc +++ /dev/null @@ -1,128 +0,0 @@ -{ - "type": "record", - "name": "VCPEClosedLoopStatus", - "fields": [ - { - "name": "AAI", - "type": { - "type": "record", - "name": "VCPE_AAI_Type", - "namespace": "org.onap.policy.apex.onap.vcpe", - "fields": [ - { - "name": "genericVnfResourceVersion", - "type": "string" - }, - { - "name": "genericVnfVnfName", - "type": "string" - }, - { - "name": "genericVnfProvStatus", - "type": "string" - }, - { - "name": "genericVnfIsClosedLoopDisabled", - "type": "string" - }, - { - "name": "genericVnfOrchestrationStatus", - "type": "string" - }, - { - "name": "genericVnfVnfType", - "type": "string" - }, - { - "name": "genericVnfInMaint", - "type": "string" - }, - { - "name": "genericVnfServiceId", - "type": "string" - }, - { - "name": "genericVnfVnfId", - "type": "string" - }, - { - "name": "vserverIsClosedLoopDisabled", - "type": "string" - }, - { - "name": "vserverName", - "type": "string" - }, - { - "name": "vserverProvStatus", - "type": "string" - } - ] - } - }, - { - "name": "closedLoopAlarmStart", - "type": "long" - }, - { - "name": "closedLoopAlarmEnd", - "type": "long" - }, - { - "name": "closedLoopControlName", - "type": "string" - }, - { - "name": "version", - "type": "string" - }, - { - "name": "requestID", - "type": "string" - }, - { - "name": "closedLoopEventClient", - "type": "string" - }, - { - "name": "closedLoopEventStatus", - "type": "string" - }, - { - "name": "target_type", - "type": "string" - }, - { - "name": "target", - "type": "string" - }, - { - "name": "from", - "type": "string" - }, - { - "name": "policyScope", - "type": "string" - }, - { - "name": "policyName", - "type": "string" - }, - { - "name": "policyVersion", - "type": "string" - }, - { - "name": "notification", - "type": "string" - }, - { - "name": "notificationTime", - "type": "long" - }, - { - "name": "message", - "type": "string" - } - ] -} \ No newline at end of file diff --git a/examples/examples-onap-vcpe/src/main/resources/schemas/definitive/GuardDecisionAttributesType.avsc b/examples/examples-onap-vcpe/src/main/resources/schemas/definitive/GuardDecisionAttributesType.avsc new file mode 100644 index 000000000..bc25955fa --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/schemas/definitive/GuardDecisionAttributesType.avsc @@ -0,0 +1,23 @@ +{ + "type": "record", + "name": "GuardDecisionAttributes_Type", + "namespace": "org.onap.policy.apex.onap.vcpe", + "fields": [ + { + "name": "actor", + "type": "string" + }, + { + "name": "recipe", + "type": "string" + }, + { + "name": "target", + "type": "string" + }, + { + "name": "clname", + "type": "string" + } + ] +} diff --git a/examples/examples-onap-vcpe/src/main/resources/schemas/definitive/VCPEClosedLoopStatusType.avsc b/examples/examples-onap-vcpe/src/main/resources/schemas/definitive/VCPEClosedLoopStatusType.avsc new file mode 100644 index 000000000..b02287d2a --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/schemas/definitive/VCPEClosedLoopStatusType.avsc @@ -0,0 +1,128 @@ +{ + "type": "record", + "name": "VCPEClosedLoopStatus", + "fields": [ + { + "name": "AAI", + "type": { + "type": "record", + "name": "VCPE_AAI_Type", + "namespace": "org.onap.policy.apex.onap.vcpe", + "fields": [ + { + "name": "genericVnfResourceVersion", + "type": "string" + }, + { + "name": "genericVnfVnfName", + "type": "string" + }, + { + "name": "genericVnfProvStatus", + "type": "string" + }, + { + "name": "genericVnfIsClosedLoopDisabled", + "type": "string" + }, + { + "name": "genericVnfOrchestrationStatus", + "type": "string" + }, + { + "name": "genericVnfVnfType", + "type": "string" + }, + { + "name": "genericVnfInMaint", + "type": "string" + }, + { + "name": "genericVnfServiceId", + "type": "string" + }, + { + "name": "genericVnfVnfId", + "type": "string" + }, + { + "name": "vserverIsClosedLoopDisabled", + "type": "string" + }, + { + "name": "vserverName", + "type": "string" + }, + { + "name": "vserverProvStatus", + "type": "string" + } + ] + } + }, + { + "name": "closedLoopAlarmStart", + "type": "long" + }, + { + "name": "closedLoopAlarmEnd", + "type": "long" + }, + { + "name": "closedLoopControlName", + "type": "string" + }, + { + "name": "version", + "type": "string" + }, + { + "name": "requestID", + "type": "string" + }, + { + "name": "closedLoopEventClient", + "type": "string" + }, + { + "name": "closedLoopEventStatus", + "type": "string" + }, + { + "name": "target_type", + "type": "string" + }, + { + "name": "target", + "type": "string" + }, + { + "name": "from", + "type": "string" + }, + { + "name": "policyScope", + "type": "string" + }, + { + "name": "policyName", + "type": "string" + }, + { + "name": "policyVersion", + "type": "string" + }, + { + "name": "notification", + "type": "string" + }, + { + "name": "notificationTime", + "type": "long" + }, + { + "name": "message", + "type": "string" + } + ] +} \ No newline at end of file diff --git a/examples/examples-onap-vcpe/src/main/resources/schemas/standalone/ControlLoopStatusType.avsc b/examples/examples-onap-vcpe/src/main/resources/schemas/standalone/ControlLoopStatusType.avsc new file mode 100644 index 000000000..b02287d2a --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/schemas/standalone/ControlLoopStatusType.avsc @@ -0,0 +1,128 @@ +{ + "type": "record", + "name": "VCPEClosedLoopStatus", + "fields": [ + { + "name": "AAI", + "type": { + "type": "record", + "name": "VCPE_AAI_Type", + "namespace": "org.onap.policy.apex.onap.vcpe", + "fields": [ + { + "name": "genericVnfResourceVersion", + "type": "string" + }, + { + "name": "genericVnfVnfName", + "type": "string" + }, + { + "name": "genericVnfProvStatus", + "type": "string" + }, + { + "name": "genericVnfIsClosedLoopDisabled", + "type": "string" + }, + { + "name": "genericVnfOrchestrationStatus", + "type": "string" + }, + { + "name": "genericVnfVnfType", + "type": "string" + }, + { + "name": "genericVnfInMaint", + "type": "string" + }, + { + "name": "genericVnfServiceId", + "type": "string" + }, + { + "name": "genericVnfVnfId", + "type": "string" + }, + { + "name": "vserverIsClosedLoopDisabled", + "type": "string" + }, + { + "name": "vserverName", + "type": "string" + }, + { + "name": "vserverProvStatus", + "type": "string" + } + ] + } + }, + { + "name": "closedLoopAlarmStart", + "type": "long" + }, + { + "name": "closedLoopAlarmEnd", + "type": "long" + }, + { + "name": "closedLoopControlName", + "type": "string" + }, + { + "name": "version", + "type": "string" + }, + { + "name": "requestID", + "type": "string" + }, + { + "name": "closedLoopEventClient", + "type": "string" + }, + { + "name": "closedLoopEventStatus", + "type": "string" + }, + { + "name": "target_type", + "type": "string" + }, + { + "name": "target", + "type": "string" + }, + { + "name": "from", + "type": "string" + }, + { + "name": "policyScope", + "type": "string" + }, + { + "name": "policyName", + "type": "string" + }, + { + "name": "policyVersion", + "type": "string" + }, + { + "name": "notification", + "type": "string" + }, + { + "name": "notificationTime", + "type": "long" + }, + { + "name": "message", + "type": "string" + } + ] +} \ No newline at end of file diff --git a/examples/examples-onap-vcpe/src/main/resources/schemas/standalone/ControllerRequestType.avsc b/examples/examples-onap-vcpe/src/main/resources/schemas/standalone/ControllerRequestType.avsc new file mode 100644 index 000000000..41bbca4cb --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/schemas/standalone/ControllerRequestType.avsc @@ -0,0 +1,90 @@ +{ + "type": "record", + "name": "VCPEClosedLoopStatus", + "fields": [ + { + "name": "version", + "type": "string" + }, + { + "name": "rpc_DasH_name", + "type": "string" + }, + { + "name": "correlation_DasH_id", + "type": "string" + }, + { + "name": "type", + "type": "string" + }, + { + "name": "body", + "type": { + "type": "record", + "name": "Controller_Body_Type", + "namespace": "org.onap.policy.apex.onap.vcpe", + "fields": [ + { + "name": "input", + "type": { + "type": "record", + "name": "Controller_Body_Type_Input", + "namespace": "org.onap.policy.apex.onap.vcpe", + "fields": [ + { + "name": "action", + "type": "string" + }, + { + "name": "action_DasH_identifiers", + "type": { + "type": "map", + "values": "string" + } + }, + { + "name": "common_DasH_header", + "type": { + "type": "record", + "name": "Controller_Body_Type_Common_Header", + "namespace": "org.onap.policy.apex.onap.vcpe", + "fields": [ + { + "name": "timestamp", + "type": "long" + }, + { + "name": "api_DasH_ver", + "type": "string" + }, + { + "name": "originator_DasH_id", + "type": "string" + }, + { + "name": "request_DasH_id", + "type": "string" + }, + { + "name": "sub_DasH_request_DasH_id", + "type": "string" + }, + { + "name": "flags", + "type": { + "type": "map", + "values": "string" + } + } + ] + } + } + ] + } + } + ] + } + } + ] +} diff --git a/examples/examples-onap-vcpe/src/main/resources/schemas/standalone/ControllerResponseType.avsc b/examples/examples-onap-vcpe/src/main/resources/schemas/standalone/ControllerResponseType.avsc new file mode 100644 index 000000000..336c16143 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/schemas/standalone/ControllerResponseType.avsc @@ -0,0 +1,101 @@ +{ + "type": "record", + "name": "VCPEClosedLoopStatus", + "fields": [ + { + "name": "version", + "type": "string" + }, + { + "name": "rpc_DasH_name", + "type": "string" + }, + { + "name": "correlation_DasH_id", + "type": "string" + }, + { + "name": "type", + "type": "string" + }, + { + "name": "body", + "type": { + "type": "record", + "name": "Controller_Body_Type", + "namespace": "org.onap.policy.apex.onap.vcpe", + "fields": [ + { + "name": "output", + "type": { + "type": "record", + "name": "Controller_Body_Type_Output", + "namespace": "org.onap.policy.apex.onap.vcpe", + "fields": [ + { + "name": "payload", + "type": "string" + }, + { + "name": "common_DasH_header", + "type": { + "type": "record", + "name": "Controller_Body_Type_Common_Header", + "namespace": "org.onap.policy.apex.onap.vcpe", + "fields": [ + { + "name": "timestamp", + "type": "long" + }, + { + "name": "api_DasH_ver", + "type": "string" + }, + { + "name": "originator_DasH_id", + "type": "string" + }, + { + "name": "request_DasH_id", + "type": "string" + }, + { + "name": "sub_DasH_request_DasH_id", + "type": "string" + }, + { + "name": "flags", + "type": { + "type": "map", + "values": "string" + } + } + ] + } + }, + { + "name": "status", + "type": { + "type": "record", + "name": "Controller_Body_Type_Output_Status", + "namespace": "org.onap.policy.apex.onap.vcpe", + "fields": [ + { + "name": "code", + "type": "int" + }, + { + "name": "message", + "type": "string" + } + ] + } + } + ] + } + } + ] + } + } + ] +} diff --git a/examples/examples-onap-vcpe/src/main/resources/schemas/standalone/VirtualControlLoopEventType.avsc b/examples/examples-onap-vcpe/src/main/resources/schemas/standalone/VirtualControlLoopEventType.avsc new file mode 100644 index 000000000..e0e076483 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/schemas/standalone/VirtualControlLoopEventType.avsc @@ -0,0 +1,76 @@ +{ + "type": "record", + "name": "VirtualControlLoopEvent", + "fields": [ + { + "name": "requestID", + "type": "string" + }, + { + "name": "target_type", + "type": "string" + }, + { + "name": "closedLoopControlName", + "type": "string" + }, + { + "name": "version", + "type": "string" + }, + { + "name": "closedLoopEventClient", + "type": "string" + }, + { + "name": "target", + "type": "string" + }, + { + "name": "from", + "type": "string" + }, + { + "name": "policyScope", + "type": "string" + }, + { + "name": "policyName", + "type": "string" + }, + { + "name": "policyVersion", + "type": "string" + }, + { + "name": "closedLoopEventStatus", + "type": "string" + }, + { + "name": "additionalEventParams", + "type": { + "type": "map", + "values": "string" + } + }, + { + "name": "AAI", + "type": { + "type": "map", + "values": "string" + } + }, + { + "name": "payload", + "type": "string" + }, + { + "name": "closedLoopAlarmStart", + "type": "long" + }, + { + "name": "closedLoopAlarmEnd", + "type": "long" + } + ] +} diff --git a/examples/examples-onap-vcpe/src/main/resources/schemas/standalone/VirtualControlLoopNotificationType.avsc b/examples/examples-onap-vcpe/src/main/resources/schemas/standalone/VirtualControlLoopNotificationType.avsc new file mode 100644 index 000000000..0b7a80cb5 --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/schemas/standalone/VirtualControlLoopNotificationType.avsc @@ -0,0 +1,77 @@ +{ + "type": "record", + "name": "VirtualControlLoopNotification", + "fields": [ + { + "name": "closedLoopControlName", + "type": "string" + }, + { + "name": "version", + "type": "string" + }, + { + "name": "requestID", + "type": "string" + }, + { + "name": "closedLoopEventClient", + "type": "string" + }, + { + "name": "targetType", + "type": "string" + }, + { + "name": "target", + "type": "string" + }, + { + "name": "from", + "type": "string" + }, + { + "name": "policyScope", + "type": "string" + }, + { + "name": "policyName", + "type": "string" + }, + { + "name": "policyVersion", + "type": "string" + }, + { + "name": "notification", + "type": "string" + }, + { + "name": "message", + "type": "string" + }, + { + "name": "notificationTime", + "type": "long" + }, + { + "name": "opsClTimer", + "type": "int" + }, + { + "name": "AAI", + "type": { + "type": "map", + "values": "string" + } + }, + { + "name": "closedLoopAlarmStart", + "type": "long" + }, + { + "name": "closedLoopAlarmEnd", + "type": "long" + } + ] +} diff --git a/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/AppcResponseCreator.java b/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/AppcResponseCreator.java index d989ba361..63ca3cd26 100644 --- a/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/AppcResponseCreator.java +++ b/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/AppcResponseCreator.java @@ -1,6 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2018 Ericsson. All rights reserved. + * Modifications Copyright (C) 2019-2020 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -48,7 +49,9 @@ public class AppcResponseCreator { private final Timer appcTimer; private static final Gson gson = new GsonBuilder() - .registerTypeAdapter(Instant.class, new Serialization.GsonInstantAdapter()).create(); + .registerTypeAdapter(Instant.class, new Serialization.GsonInstantAdapter()).setPrettyPrinting().create(); + + private static Integer nextResponseCode = 400; /** * Respond to the given APPC request after the given amount of milliseconds. @@ -58,7 +61,7 @@ public class AppcResponseCreator { * @param milliSecondsToWait the number of milliseconds to wait */ public AppcResponseCreator(BlockingQueue appcResponseQueue, String jsonRequestString, - long milliSecondsToWait) { + long milliSecondsToWait) { this.jsonRequestString = jsonRequestString; this.appcResponseQueue = appcResponseQueue; @@ -79,8 +82,20 @@ public class AppcResponseCreator { AppcLcmInput request = requestWrapper.getBody().getInput(); AppcLcmOutput response = new AppcLcmOutput(request); - response.getStatus().setCode(400); - response.getStatus().setMessage("Restart Successful"); + + response.getStatus().setCode(nextResponseCode); + if (nextResponseCode == 400) { + response.getStatus().setMessage("Restart Successful"); + nextResponseCode = 100; + } else if (nextResponseCode == 100) { + response.getStatus().setMessage("Restart Request Accepted"); + nextResponseCode = 200; + } else { + response.getStatus().setMessage("Error in Restart Operation"); + nextResponseCode = 400; + } + + response.setPayload(""); AppcLcmDmaapWrapper responseWrapper = new AppcLcmDmaapWrapper(); responseWrapper.setBody(new AppcLcmBody()); diff --git a/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/OnapVCpeSimEndpoint.java b/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/OnapVCpeSimEndpoint.java index 5eb8fd338..8665f4a05 100644 --- a/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/OnapVCpeSimEndpoint.java +++ b/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/OnapVCpeSimEndpoint.java @@ -1,6 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2016-2018 Ericsson. All rights reserved. + * Modifications Copyright (C) 2019-2020 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,6 +26,8 @@ import static org.junit.Assert.assertTrue; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.google.gson.JsonElement; +import com.google.gson.JsonParser; import java.io.IOException; import java.time.Instant; @@ -63,10 +66,13 @@ public class OnapVCpeSimEndpoint { private static AtomicInteger statMessagesReceived = new AtomicInteger(); private static AtomicInteger getMessagesReceived = new AtomicInteger(); + private static final Random randomDelayInc = new Random(); + private static final Gson gson = new GsonBuilder() - .registerTypeAdapter(Instant.class, new Serialization.GsonInstantAdapter()).create(); + .registerTypeAdapter(Instant.class, new Serialization.GsonInstantAdapter()).setPrettyPrinting().create(); private static final AtomicInteger nextVnfId = new AtomicInteger(0); + private static Boolean nextControlLoopMessageIsOnset = true; /** * Service get stats. @@ -77,9 +83,10 @@ public class OnapVCpeSimEndpoint { @GET public Response serviceGetStats() { statMessagesReceived.incrementAndGet(); + String returnString = "{\"GET\": " + getMessagesReceived + ",\"STAT\": " + statMessagesReceived + ",\"POST\": " + + postMessagesReceived + ",\"PUT\": " + putMessagesReceived + "}"; - return Response.status(200).entity("{\"GET\": " + getMessagesReceived + ",\"STAT\": " + statMessagesReceived - + ",\"POST\": " + postMessagesReceived + ",\"PUT\": " + putMessagesReceived + "}").build(); + return Response.status(200).entity(prettifyJsonString(returnString)).build(); } /** @@ -106,8 +113,10 @@ public class OnapVCpeSimEndpoint { responseJsonString = "{\"decision\": \"DENY\", \"details\": \"Decision Denied. NOK :-(\"}"; } + responseJsonString = prettifyJsonString(responseJsonString); + LOGGER.info("\n*** GUARD RESPONSE START ***\n" + target + "\n" + responseJsonString - + "\n*** GUARD RESPONSE END ***"); + + "\n*** GUARD RESPONSE END ***"); return Response.status(200).entity(responseJsonString).build(); } @@ -124,19 +133,21 @@ public class OnapVCpeSimEndpoint { @Path("aai/v16/search/nodes-query") @GET public Response aaiNamedQuerySearchRequest(@QueryParam("search-node-type") final String searchNodeType, - @QueryParam("filter") final String filter) throws IOException { + @QueryParam("filter") final String filter) throws IOException { getMessagesReceived.incrementAndGet(); LOGGER.info("\n*** AAI NODE QUERY GET START ***\nsearchNodeType=" + searchNodeType + "\nfilter=" + filter - + "\n *** AAI REQUEST END ***"); + + "\n *** AAI REQUEST END ***"); - String adjustedVserverUuid = "b4fe00ac-1da6-4b00-ac0d-8e8300db" - + String.format("%04d", nextVnfId.getAndIncrement()); + String adjustedVserverUuid = + "b4fe00ac-1da6-4b00-ac0d-8e8300db" + String.format("%04d", nextVnfId.getAndIncrement()); - String responseJsonString = TextFileUtils - .getTextFileAsString("src/test/resources/aai/SearchNodeTypeResponse.json") + String responseJsonString = + TextFileUtils.getTextFileAsString("src/test/resources/aai/SearchNodeTypeResponse.json") .replaceAll("b4fe00ac-1da6-4b00-ac0d-8e8300db0007", adjustedVserverUuid); + responseJsonString = prettifyJsonString(responseJsonString); + LOGGER.info("\n*** AAI RESPONSE START ***\n" + responseJsonString + "\n *** AAI RESPONSE END ***"); return Response.status(200).entity(responseJsonString).build(); @@ -154,18 +165,20 @@ public class OnapVCpeSimEndpoint { @Path("aai/v16/query") @PUT public Response aaiNamedQueryResourceRequest(@QueryParam("format") final String format, final String jsonString) - throws IOException { + throws IOException { putMessagesReceived.incrementAndGet(); LOGGER.info("\n*** AAI NODE RESOURE POST QUERY START ***\\nformat=" + format + "\njson=" + jsonString - + "\n *** AAI REQUEST END ***"); + + "\n *** AAI REQUEST END ***"); - int beginIndex = jsonString.indexOf("b4fe00ac-1da6-4b00-ac0d-8e8300db") - + "b4fe00ac-1da6-4b00-ac0d-8e8300db".length(); + int beginIndex = + jsonString.indexOf("b4fe00ac-1da6-4b00-ac0d-8e8300db") + "b4fe00ac-1da6-4b00-ac0d-8e8300db".length(); String nextVnfIdUrlEnding = jsonString.substring(beginIndex, beginIndex + 4); String responseJsonString = TextFileUtils.getTextFileAsString("src/test/resources/aai/NodeQueryResponse.json") - .replaceAll("bbb3cefd-01c8-413c-9bdd-2b92f9ca3d38", - "00000000-0000-0000-0000-00000000" + nextVnfIdUrlEnding); + .replaceAll("bbb3cefd-01c8-413c-9bdd-2b92f9ca3d38", + "00000000-0000-0000-0000-00000000" + nextVnfIdUrlEnding); + + responseJsonString = prettifyJsonString(responseJsonString); LOGGER.info("\n*** AAI RESPONSE START ***\n" + responseJsonString + "\n *** AAI RESPONSE END ***"); @@ -177,15 +190,32 @@ public class OnapVCpeSimEndpoint { * * @param timeout the timeout to wait for * @return the response + * @throws IOException on I/O errors */ @Path("events/unauthenticated.DCAE_CL_OUTPUT/APEX/1") @GET - public Response dcaeClOutput(@QueryParam("timeout") final int timeout) { + public Response dcaeClOutput(@QueryParam("timeout") final int timeout) throws IOException { getMessagesReceived.incrementAndGet(); ThreadUtilities.sleep(timeout - 500); - return Response.status(200).build(); + if (nextControlLoopMessageIsOnset) { + nextControlLoopMessageIsOnset = false; + + String clOnsetEvent = TextFileUtils + .getTextFileAsString("src/main/resources/examples/events/ONAPvCPEStandalone/CLOnsetEvent.json"); + LOGGER.info("\n*** CONTROL LOOP ONSET START ***\n" + clOnsetEvent + "\n *** CONTROL LOOP ONSET END ***"); + + return Response.status(200).entity(clOnsetEvent).build(); + } else { + nextControlLoopMessageIsOnset = true; + + String clAbatedEvent = TextFileUtils + .getTextFileAsString("src/main/resources/examples/events/ONAPvCPEStandalone/CLAbatedEvent.json"); + LOGGER.info("\n*** CONTROL LOOP ABATED START ***\n" + clAbatedEvent + "\n *** CONTROL LOOP ABATED END ***"); + + return Response.status(200).entity(clAbatedEvent).build(); + } } /** @@ -206,9 +236,9 @@ public class OnapVCpeSimEndpoint { String appcResponse = appcResponseQueue.poll(100, TimeUnit.MILLISECONDS); if (appcResponse != null) { - LOGGER.info("\n*** APPC RESPONSE START ***"); + LOGGER.info("\n*** CONTROLLER RESPONSE START ***"); System.err.println(appcResponse); - LOGGER.info("\n*** APPC RESPONSE END ***"); + LOGGER.info("\n*** CONTROLLER RESPONSE END ***"); return Response.status(200).entity(appcResponse).build(); } @@ -230,7 +260,9 @@ public class OnapVCpeSimEndpoint { public Response policyLogRequest(final String jsonString) { postMessagesReceived.incrementAndGet(); - LOGGER.info("\n*** POLICY LOG ENTRY START ***\n" + jsonString + "\n *** POLICY LOG ENTRY END ***"); + String logJsonString = prettifyJsonString(jsonString); + + LOGGER.info("\n*** POLICY LOG ENTRY START ***\n" + logJsonString + "\n *** POLICY LOG ENTRY END ***"); return Response.status(200).build(); } @@ -246,9 +278,29 @@ public class OnapVCpeSimEndpoint { public Response appcRequest(final String jsonString) { postMessagesReceived.incrementAndGet(); - LOGGER.info("\n*** APPC REQUEST START ***\n" + jsonString + "\n *** APPC REQUEST END ***"); + String appcJsonString = prettifyJsonString(jsonString); + + LOGGER.info("\n*** CONTROLLER REQUEST START ***\n" + appcJsonString + "\n *** CONTROLLER REQUEST END ***"); - new AppcResponseCreator(appcResponseQueue, jsonString, 10000); + new AppcResponseCreator(appcResponseQueue, appcJsonString, 10000 + randomDelayInc.nextInt(10000)); + + return Response.status(200).build(); + } + + /** + * Post to BLACK WHITE LIST READ (Simulation of DMaaP). + * + * @param jsonString the json string + * @return the response + */ + @Path("/events/BLACK-WHITE-LIST-READ") + @POST + public Response blackWhiteListRead(final String jsonString) { + postMessagesReceived.incrementAndGet(); + + String bwJsonString = prettifyJsonString(jsonString); + + LOGGER.info("\n*** BLACK WHITE LIST START ***\n" + bwJsonString + "\n *** BLACK WHITE LIST END ***"); return Response.status(200).build(); } @@ -266,11 +318,10 @@ public class OnapVCpeSimEndpoint { final String nextEventName = "Event0" + rand.nextInt(2) + "00"; final String eventString = "{\n" + "\"nameSpace\": \"org.onap.policy.apex.sample.events\",\n" + "\"name\": \"" - + nextEventName + "\",\n" + "\"version\": \"0.0.1\",\n" + "\"source\": \"REST_" - + getMessagesReceived + "\",\n" + "\"target\": \"apex\",\n" - + "\"TestSlogan\": \"Test slogan for External Event0\",\n" + "\"TestMatchCase\": " - + nextMatchCase + ",\n" + "\"TestTimestamp\": " + System.currentTimeMillis() + ",\n" - + "\"TestTemperature\": 9080.866\n" + "}"; + + nextEventName + "\",\n" + "\"version\": \"0.0.1\",\n" + "\"source\": \"REST_" + getMessagesReceived + + "\",\n" + "\"target\": \"apex\",\n" + "\"TestSlogan\": \"Test slogan for External Event0\",\n" + + "\"TestMatchCase\": " + nextMatchCase + ",\n" + "\"TestTimestamp\": " + System.currentTimeMillis() + + ",\n" + "\"TestTemperature\": 9080.866\n" + "}"; getMessagesReceived.incrementAndGet(); @@ -319,7 +370,7 @@ public class OnapVCpeSimEndpoint { assertEquals("Outside", jsonMap.get("target")); return Response.status(200).entity("{\"GET\": , " + getMessagesReceived + ",\"STAT\": " + statMessagesReceived - + ",\"POST\": , " + postMessagesReceived + ",\"PUT\": " + putMessagesReceived + "}").build(); + + ",\"POST\": , " + postMessagesReceived + ",\"PUT\": " + putMessagesReceived + "}").build(); } /** @@ -354,6 +405,12 @@ public class OnapVCpeSimEndpoint { assertEquals("Outside", jsonMap.get("target")); return Response.status(200).entity("{\"GET\": , " + getMessagesReceived + ",\"STAT\": " + statMessagesReceived - + ",\"POST\": , " + postMessagesReceived + ",\"PUT\": " + putMessagesReceived + "}").build(); + + ",\"POST\": , " + postMessagesReceived + ",\"PUT\": " + putMessagesReceived + "}").build(); + } + + private static final String prettifyJsonString(final String uglyJsonString) { + JsonParser jp = new JsonParser(); + JsonElement je = jp.parse(uglyJsonString); + return gson.toJson(je); } } diff --git a/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/OnapVcpeStandaloneRunner.java b/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/OnapVcpeStandaloneRunner.java new file mode 100644 index 000000000..f3bf30837 --- /dev/null +++ b/examples/examples-onap-vcpe/src/test/java/org/onap/policy/apex/domains/onap/vcpe/OnapVcpeStandaloneRunner.java @@ -0,0 +1,68 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2020 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.apex.domains.onap.vcpe; + +import org.onap.policy.apex.auth.clieditor.ApexCommandLineEditorMain; +import org.onap.policy.apex.core.infrastructure.threading.ThreadUtilities; +import org.onap.policy.apex.model.basicmodel.concepts.ApexException; +import org.onap.policy.apex.service.engine.main.ApexMain; + +/** + * Test the ONAP vCPE use case. + */ +public class OnapVcpeStandaloneRunner { + + private OnapVcpeStandaloneRunner() throws ApexException { + + // @formatter:off + final String[] cliArgs = new String[] { + "-c", + "src/main/resources/policy/ONAPvCPEPolicyModelStandalone.apex", + "-l", + "target/ONAPvCPEPolicyModel.log", + "-o", + "target/classes/ONAPvCPEPolicyModelStandalone.json" + }; + // @formatter:on + + new ApexCommandLineEditorMain(cliArgs); + + // @formatter:off + final String[] apexArgs = { + "-rfr", + "target/classes", + "-c", + "src/main/resources/examples/config/ONAPvCPEStandalone/ApexConfig_Sim.json", + "-m", + "target/classes/ONAPvCPEPolicyModelStandalone.json" + }; + // @formatter:on + + final ApexMain apexMain = new ApexMain(apexArgs); + + ThreadUtilities.sleep(1000000); + apexMain.shutdown(); + } + + public static void main(String[] args) throws ApexException { + new OnapVcpeStandaloneRunner(); + } +} diff --git a/examples/examples-onap-vcpe/src/test/resources/etc/Notes.txt b/examples/examples-onap-vcpe/src/test/resources/etc/Notes.txt index 5db41a2a0..d0a5a698e 100644 --- a/examples/examples-onap-vcpe/src/test/resources/etc/Notes.txt +++ b/examples/examples-onap-vcpe/src/test/resources/etc/Notes.txt @@ -1,3 +1,24 @@ +#------------------------------------------------------------------------------- +# ============LICENSE_START======================================================= +# Copyright (C) 2016-2018 Ericsson. All rights reserved. +# Modifications Copyright (C) 2019-2020 Nordix Foundation. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= +#------------------------------------------------------------------------------- + Check out Draft Review Build the source -- cgit 1.2.3-korg