From b96fc5eb0980ce7bff21c61fe73f7e14b14b002b Mon Sep 17 00:00:00 2001 From: liamfallon Date: Fri, 22 Nov 2019 17:09:57 +0000 Subject: Update vCPE example for A&AI custom query The change in policy-models to use custom queries means that the named queries used in apex examples must be updated to use custom queries. This review is the second of two reviews to implement this change. This patch updates the policy and its associated tests to work with A&AI custom queries. Issue-ID: POLICY-2125 Change-Id: I6a5b90002e43272e3cf296158f09f91a0f6d6907 Signed-off-by: liamfallon --- .../main/resources/logic/AAILookupRequestTask.js | 51 ------------- .../main/resources/logic/AAILookupResponseTask.js | 69 ------------------ .../src/main/resources/logic/AAILookupTask.js | 85 ++++++++++++++++++++++ .../src/main/resources/logic/GetVCPEStateTask.js | 31 ++++---- .../logic/ReceiveEventPolicyRequestAAIStateTSL.js | 54 -------------- 5 files changed, 102 insertions(+), 188 deletions(-) delete mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/AAILookupRequestTask.js delete mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/AAILookupResponseTask.js create mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/AAILookupTask.js delete mode 100644 examples/examples-onap-vcpe/src/main/resources/logic/ReceiveEventPolicyRequestAAIStateTSL.js (limited to 'examples/examples-onap-vcpe/src/main/resources/logic') diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/AAILookupRequestTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/AAILookupRequestTask.js deleted file mode 100644 index cab75f6cd..000000000 --- a/examples/examples-onap-vcpe/src/main/resources/logic/AAILookupRequestTask.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 vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get( - executor.inFields.get("vnfID").toString()); - -var aaiRequest = new org.onap.policy.aai.AaiNqRequest; -aaiRequest.setQueryParameters(new org.onap.policy.aai.AaiNqQueryParameters); -aaiRequest.setInstanceFilters(new org.onap.policy.aai.AaiNqInstanceFilters); - -aaiRequest.getQueryParameters().setNamedQuery(new org.onap.policy.aai.AaiNqNamedQuery); -aaiRequest.getQueryParameters().getNamedQuery().setNamedQueryUuid(executor.inFields.get("requestID")); - -var genericVnfInstanceFilterMap = new java.util.HashMap(); -genericVnfInstanceFilterMap.put("vnf-id", vcpeClosedLoopStatus.get("AAI").get("genericVnfVnfId")); - -var genericVnfFilterMap = new java.util.HashMap(); -genericVnfFilterMap.put("generic-vnf", genericVnfInstanceFilterMap); - -aaiRequest.getInstanceFilters().getInstanceFilter().add(genericVnfFilterMap); - -executor.logger.info(aaiRequest); - -executor.outFields.put("AAINamedQueryRequest", aaiRequest); - -executor.getContextAlbum("ControlLoopExecutionIDAlbum").put(executor.executionId.toString(), - executor.inFields.get("vnfID")); - -executor.logger.info(executor.outFields); - -var returnValue = executor.isTrue; \ No newline at end of file diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/AAILookupResponseTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/AAILookupResponseTask.js deleted file mode 100644 index 50961c214..000000000 --- a/examples/examples-onap-vcpe/src/main/resources/logic/AAILookupResponseTask.js +++ /dev/null @@ -1,69 +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 aaiResponse = executor.inFields.get("AAINamedQueryResponse"); - -for (var iterator = aaiResponse.getInventoryResponseItems().iterator(); iterator.hasNext(); ) { - var responseItem = iterator.next(); - - if (responseItem.getModelName() != "vCPE") { - continue; - } - - var aaiInfo = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").getSchemaHelper().createNewSubInstance("VCPE_AAI_Type"); - - aaiInfo.put("genericVnfResourceVersion", responseItem.getGenericVnf().getResourceVersion()); - aaiInfo.put("genericVnfVnfName", responseItem.getGenericVnf().getVnfName()); - aaiInfo.put("genericVnfProvStatus", responseItem.getGenericVnf().getProvStatus()); - aaiInfo.put("genericVnfIsClosedLoopDisabled", responseItem.getGenericVnf().getIsClosedLoopDisabled().toString()); - aaiInfo.put("genericVnfVnfType", responseItem.getGenericVnf().getVnfType()); - aaiInfo.put("genericVnfInMaint", responseItem.getGenericVnf().getInMaint().toString()); - aaiInfo.put("genericVnfServiceId", responseItem.getGenericVnf().getServiceId()); - aaiInfo.put("genericVnfVnfId", responseItem.getGenericVnf().getVnfId()); - - aaiInfo.put("genericVnfOrchestrationStatus", responseItem.getVfModule().getOrchestrationStatus()); - - vcpeClosedLoopStatus.put("AAI", aaiInfo); - - break; -} - -// We should check here for the case where AAI returns an error or no data for the query - - -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/AAILookupTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/AAILookupTask.js new file mode 100644 index 000000000..fcb39052d --- /dev/null +++ b/examples/examples-onap-vcpe/src/main/resources/logic/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/GetVCPEStateTask.js b/examples/examples-onap-vcpe/src/main/resources/logic/GetVCPEStateTask.js index 0ba3c0985..f4f6d908d 100644 --- a/examples/examples-onap-vcpe/src/main/resources/logic/GetVCPEStateTask.js +++ b/examples/examples-onap-vcpe/src/main/resources/logic/GetVCPEStateTask.js @@ -5,15 +5,15 @@ * 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. @@ -76,7 +76,10 @@ if (clEvent.getAai().get("generic-vnf.vnf-id") != null) { 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) { @@ -99,14 +102,14 @@ 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()); @@ -122,24 +125,24 @@ else { 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.outFields.put("vnfName", vnfName); executor.logger.info(executor.outFields); } diff --git a/examples/examples-onap-vcpe/src/main/resources/logic/ReceiveEventPolicyRequestAAIStateTSL.js b/examples/examples-onap-vcpe/src/main/resources/logic/ReceiveEventPolicyRequestAAIStateTSL.js deleted file mode 100644 index b397a5f7c..000000000 --- a/examples/examples-onap-vcpe/src/main/resources/logic/ReceiveEventPolicyRequestAAIStateTSL.js +++ /dev/null @@ -1,54 +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; - -if( executor.inFields.get("vnfID") == null) { - executor.logger.info("ReceiveEventPolicyRequestAAIStateTSL: vnfID is null"); - var vnfName = executor.inFields.get("vnfName"); - var vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get( - executor.inFields.get("vnfName")); - executor.logger.info("CL event status: " + vcpeClosedLoopStatus.get("closedLoopEventStatus")); - executor.subject.getTaskKey("NoAAILookupTask").copyTo(executor.selectedTask); - } else { - var vcpeClosedLoopStatus = executor.getContextAlbum("VCPEClosedLoopStatusAlbum").get( - executor.inFields.get("vnfID").toString()); - var aaiInfo = vcpeClosedLoopStatus.get("AAI"); - - executor.logger.info(aaiInfo); - - if (aaiInfo.get("genericVnfResourceVersion") != null - && aaiInfo.get("genericVnfVnfName") != null - && aaiInfo.get("genericVnfProvStatus") != null - && aaiInfo.get("genericVnfIsClosedLoopDisabled") != null - && aaiInfo.get("genericVnfOrchestrationStatus") != null - && aaiInfo.get("genericVnfVnfType") != null - && aaiInfo.get("genericVnfInMaint") != null - && aaiInfo.get("genericVnfServiceId") != null - && aaiInfo.get("genericVnfVnfId") != null) { - executor.subject.getTaskKey("NoAAILookupTask").copyTo(executor.selectedTask); - } else { - executor.subject.getTaskKey("AAILookupRequestTask").copyTo(executor.selectedTask); - } -} -executor.logger.info("ReceiveEventPolicyOnsetOrAbatedStateTSL State Selected Task:" + executor.selectedTask); -- cgit 1.2.3-korg