From cfe2c6e071f5e43ad01f470a3c87230dd1e1fe13 Mon Sep 17 00:00:00 2001 From: SwapnilPathak Date: Wed, 21 Feb 2018 16:56:27 +0530 Subject: Support vDNS scale out for multiple times Generation of Unique values for attribute vf-module-name for every scale out operation Change-Id: I5274361c2f5a4136020a384dbe4a4009607f589a Issue-ID: POLICY-610 Signed-off-by: SwapnilPathak --- .../actor/so/SOActorServiceProvider.java | 35 +++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) (limited to 'controlloop/common/actors/actor.so/src') diff --git a/controlloop/common/actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SOActorServiceProvider.java b/controlloop/common/actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SOActorServiceProvider.java index 543114cad..4385ce272 100644 --- a/controlloop/common/actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SOActorServiceProvider.java +++ b/controlloop/common/actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SOActorServiceProvider.java @@ -196,7 +196,22 @@ public class SOActorServiceProvider implements Actor { // // requestInfo // - request.getRequestDetails().getRequestInfo().setInstanceName(vnfItem.getItems().getInventoryResponseItems().get(baseIndex).getVfModule().getVfModuleName().replace("Vfmodule", "vDNS")); + String instanceName = vnfItem.getItems().getInventoryResponseItems().get(baseIndex).getVfModule() + .getVfModuleName().replace("Vfmodule", "vDNS"); + int numberOfNonBaseModules = findNonBaseModules(vnfItem.getItems().getInventoryResponseItems()); + // Code to create unique VF Module names across the invocations. + if (numberOfNonBaseModules == 1) { + int instanceNumber = 1; + instanceName = instanceName.concat("-").concat(String.valueOf(instanceNumber)); + request.getRequestDetails().getRequestInfo().setInstanceName(instanceName); + } else if (numberOfNonBaseModules > 1) { + int instanceNumber = numberOfNonBaseModules + 1; + instanceName = instanceName.concat("-").concat(String.valueOf(instanceNumber)); + request.getRequestDetails().getRequestInfo().setInstanceName(instanceName); + } else { + request.getRequestDetails().getRequestInfo().setInstanceName(vnfItem.getItems().getInventoryResponseItems() + .get(baseIndex).getVfModule().getVfModuleName().replace("Vfmodule", "vDNS")); + } request.getRequestDetails().getRequestInfo().setSource("POLICY"); request.getRequestDetails().getRequestInfo().setSuppressRollback(false); request.getRequestDetails().getRequestInfo().setRequestorId("policy"); @@ -324,6 +339,24 @@ public class SOActorServiceProvider implements Actor { return -1; } + + /** + * Find the number of non base modules present in API response object. + * + * @param inventoryResponseItems + * @return number of non base index modules + */ + + private int findNonBaseModules(List inventoryResponseItems) { + int nonBaseModuleCount = 0; + for (AAINQInventoryResponseItem invenoryResponseItem : inventoryResponseItems) { + if (invenoryResponseItem.getVfModule() != null + && (!invenoryResponseItem.getVfModule().getIsBaseVfModule())) { + nonBaseModuleCount++; + } + } + return nonBaseModuleCount; + } /** * This method is called to remember the last service instance ID and VNF Item VNF ID. Note these fields are static, beware for multithreaded deployments -- cgit 1.2.3-korg