From e47a29578a2287a96ae13d1867925feab53a6526 Mon Sep 17 00:00:00 2001 From: sebdet Date: Fri, 3 Apr 2020 11:54:33 +0200 Subject: [PATCH] Fix the pdp payload THe pdp payload was not good in some particular cases, when the pdp group was containing different subgroups Issue-ID: CLAMP-813 Signed-off-by: sebdet Change-Id: Ie3e53f42827ed90689ed83b4945151cb13f38c9c --- .../loop/components/external/PolicyComponent.java | 25 +++++++++++----------- .../org/onap/clamp/loop/PolicyComponentTest.java | 6 ++++++ .../resources/tosca/pdp-group-policy-payload.json | 10 +++++++++ 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/main/java/org/onap/clamp/loop/components/external/PolicyComponent.java b/src/main/java/org/onap/clamp/loop/components/external/PolicyComponent.java index f963e351..8270a96e 100644 --- a/src/main/java/org/onap/clamp/loop/components/external/PolicyComponent.java +++ b/src/main/java/org/onap/clamp/loop/components/external/PolicyComponent.java @@ -32,6 +32,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedList; import java.util.List; +import java.util.Map; import java.util.Map.Entry; import javax.persistence.Transient; import org.apache.camel.Exchange; @@ -53,7 +54,7 @@ public class PolicyComponent extends ExternalComponent { public static final ExternalComponentState SENT_AND_DEPLOYED = new ExternalComponentState("SENT_AND_DEPLOYED", "The policies defined have been created and deployed on the policy engine", 10); public static final ExternalComponentState UNKNOWN = new ExternalComponentState("UNKNOWN", - "The current status is not clear. Need to regresh the status to get the current status.", 0); + "The current status is not clear. Need to refresh the status to get the current status.", 0); /** * Default constructor. @@ -79,7 +80,7 @@ public class PolicyComponent extends ExternalComponent { * @return The json, payload to send */ public static String createPoliciesPayloadPdpGroup(Loop loop) { - HashMap>> pdpGroupMap = new HashMap<>(); + Map>> pdpGroupMap = new HashMap<>(); for (OperationalPolicy opPolicy : loop.getOperationalPolicies()) { updatePdpGroupMap(opPolicy.getPdpGroup(), opPolicy.getPdpSubgroup(), opPolicy.getName(), @@ -102,21 +103,21 @@ public class PolicyComponent extends ExternalComponent { String pdpSubGroup, String policyName, String policyModelVersion, - HashMap>> pdpGroupMap) { JsonObject policyJson = new JsonObject(); policyJson.addProperty("name", policyName); policyJson.addProperty("version", policyModelVersion); - HashMap> pdpSubGroupMap; + Map> pdpSubGroupMap; List policyList; if (pdpGroupMap.get(pdpGroup) == null) { - pdpSubGroupMap = new HashMap>(); - policyList = new LinkedList(); + pdpSubGroupMap = new HashMap<>(); + policyList = new LinkedList<>(); } else { pdpSubGroupMap = pdpGroupMap.get(pdpGroup); if (pdpSubGroupMap.get(pdpSubGroup) == null) { - policyList = new LinkedList(); + policyList = new LinkedList<>(); } else { policyList = (List) pdpSubGroupMap.get(pdpSubGroup); @@ -128,18 +129,17 @@ public class PolicyComponent extends ExternalComponent { } private static JsonObject generateActivatePdpGroupPayload( - HashMap>> pdpGroupMap) { + Map>> pdpGroupMap) { JsonArray payloadArray = new JsonArray(); - for (Entry>> pdpGroupInfo : pdpGroupMap.entrySet()) { + for (Entry>> pdpGroupInfo : pdpGroupMap.entrySet()) { JsonObject pdpGroupNode = new JsonObject(); JsonArray subPdpArray = new JsonArray(); pdpGroupNode.addProperty("name", pdpGroupInfo.getKey()); pdpGroupNode.add("deploymentSubgroups", subPdpArray); - JsonObject pdpSubGroupNode = new JsonObject(); - subPdpArray.add(pdpSubGroupNode); - for (Entry> pdpSubGroupInfo : pdpGroupInfo.getValue().entrySet()) { + JsonObject pdpSubGroupNode = new JsonObject(); + subPdpArray.add(pdpSubGroupNode); pdpSubGroupNode.addProperty("pdpType", pdpSubGroupInfo.getKey()); pdpSubGroupNode.addProperty("action", "POST"); @@ -172,6 +172,7 @@ public class PolicyComponent extends ExternalComponent { for (MicroServicePolicy microServicePolicy : loop.getMicroServicePolicies()) { policyNamesList.add(microServicePolicy.getName()); } + logger.info("Policies that will be removed from PDP: " + policyNamesList); return policyNamesList; } diff --git a/src/test/java/org/onap/clamp/loop/PolicyComponentTest.java b/src/test/java/org/onap/clamp/loop/PolicyComponentTest.java index 1c9b1018..432de606 100644 --- a/src/test/java/org/onap/clamp/loop/PolicyComponentTest.java +++ b/src/test/java/org/onap/clamp/loop/PolicyComponentTest.java @@ -263,6 +263,10 @@ public class PolicyComponentTest { new Gson().fromJson("{\"configtype\":\"json\"}", JsonObject.class), null, "pdpGroup1", "pdpSubgroup1"); loopTest.addMicroServicePolicy(microServicePolicy); + MicroServicePolicy microServicePolicy2 = new MicroServicePolicy("configPolicyTest2", policyModel1, true, + new Gson().fromJson("{\"configtype\":\"json\"}", JsonObject.class), null, "pdpGroup2", "pdpSubgroup1"); + loopTest.addMicroServicePolicy(microServicePolicy2); + PolicyModel policyModel2 = new PolicyModel("onap.policies.controlloop.Operational", null, "1.0.0"); OperationalPolicy opPolicy = new OperationalPolicy("opPolicy", new Gson().fromJson("{\"configtype\":\"json\"}", JsonObject.class), @@ -280,5 +284,7 @@ public class PolicyComponentTest { String expectedRes = ResourceFileUtil.getResourceAsString("tosca/pdp-group-policy-payload.json"); assertThat(payload).isEqualTo(expectedRes); + + assertThat(PolicyComponent.listPolicyNamesPdpGroup(loopTest)).containsExactlyInAnyOrder("opPolicy","configPolicyTest","configPolicyTest2"); } } diff --git a/src/test/resources/tosca/pdp-group-policy-payload.json b/src/test/resources/tosca/pdp-group-policy-payload.json index 4ea746de..c81440e7 100644 --- a/src/test/resources/tosca/pdp-group-policy-payload.json +++ b/src/test/resources/tosca/pdp-group-policy-payload.json @@ -27,6 +27,16 @@ "version": "1.0.0" } ] + }, + { + "pdpType": "pdpSubgroup1", + "action": "POST", + "policies": [ + { + "name": "configPolicyTest2", + "version": "1.0.0" + } + ] } ] } -- 2.16.6