From c226d61d3c1266f592fc3d785164aedb34a25ef6 Mon Sep 17 00:00:00 2001 From: daniel Date: Tue, 12 Sep 2017 09:44:59 -0500 Subject: Fix A&AI Named Query for vFW The vFW named query has now been verified with the A&AI simulator. Null checks were added to make the namedQuery method work properly. In addition, a recursive A&AI response parser was added to traverse the response to find the correct generic-vnf object with the target vnf-id. For now the simulator URL is hard coded and the UUID of the named query is hard coded. These should be configurable in future releases. Issue-ID: POLICY-104 Change-Id: I05a1a992ff68ca2c17fb6a578983e6b21626bf44 Signed-off-by: Daniel Cruz --- .../actor/appc/APPCActorServiceProvider.java | 10 ++++++++- .../actor/appc/AppcServiceProviderTest.java | 26 +++++++++++++++++++--- 2 files changed, 32 insertions(+), 4 deletions(-) (limited to 'controlloop/common/actors/actor.appc/src') diff --git a/controlloop/common/actors/actor.appc/src/main/java/org/onap/policy/controlloop/actor/appc/APPCActorServiceProvider.java b/controlloop/common/actors/actor.appc/src/main/java/org/onap/policy/controlloop/actor/appc/APPCActorServiceProvider.java index 2d2992106..9e63e467b 100644 --- a/controlloop/common/actors/actor.appc/src/main/java/org/onap/policy/controlloop/actor/appc/APPCActorServiceProvider.java +++ b/controlloop/common/actors/actor.appc/src/main/java/org/onap/policy/controlloop/actor/appc/APPCActorServiceProvider.java @@ -24,6 +24,7 @@ import java.util.Collections; import java.util.List; import org.onap.policy.controlloop.VirtualControlLoopEvent; +import org.onap.policy.controlloop.actor.appclcm.AppcLcmActorServiceProvider; import org.onap.policy.appc.CommonHeader; import org.onap.policy.appc.Request; import org.onap.policy.controlloop.ControlLoopOperation; @@ -100,7 +101,14 @@ public class APPCActorServiceProvider implements Actor { * specified in the yaml, the target vnf-id is retrieved by * a named query to A&AI. */ - String vnfId = "test"; + String vnfId; + if (onset.AAI.get("generic-vnf.vnf-id").equalsIgnoreCase(policy.getTarget().getResourceID())) { + vnfId = onset.AAI.get("generic-vnf.vnf-id"); + } + else { + vnfId = AppcLcmActorServiceProvider.vnfNamedQuery( + policy.getTarget().getResourceID(), onset.AAI.get("generic-vnf.vnf-id")); + } /* * For now Policy generates the PG Streams as a demo, in the diff --git a/controlloop/common/actors/actor.appc/src/test/java/org/onap/policy/controlloop/actor/appc/AppcServiceProviderTest.java b/controlloop/common/actors/actor.appc/src/test/java/org/onap/policy/controlloop/actor/appc/AppcServiceProviderTest.java index c8179992c..31bb5c8d2 100644 --- a/controlloop/common/actors/actor.appc/src/test/java/org/onap/policy/controlloop/actor/appc/AppcServiceProviderTest.java +++ b/controlloop/common/actors/actor.appc/src/test/java/org/onap/policy/controlloop/actor/appc/AppcServiceProviderTest.java @@ -26,6 +26,8 @@ import java.time.Instant; import java.util.HashMap; import java.util.UUID; +import org.junit.AfterClass; +import org.junit.BeforeClass; import org.junit.Test; import org.onap.policy.appc.Request; import org.onap.policy.appc.util.Serialization; @@ -36,6 +38,8 @@ import org.onap.policy.controlloop.VirtualControlLoopEvent; import org.onap.policy.controlloop.policy.Policy; import org.onap.policy.controlloop.policy.Target; import org.onap.policy.controlloop.policy.TargetType; +import org.onap.policy.drools.http.server.HttpServletServer; +import org.onap.policy.simulators.Util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -56,7 +60,7 @@ public class AppcServiceProviderTest { onsetEvent.closedLoopControlName = "closedLoopControlName-Test"; onsetEvent.requestID = UUID.randomUUID(); onsetEvent.closedLoopEventClient = "tca.instance00001"; - onsetEvent.target_type = ControlLoopTargetType.VF; + onsetEvent.target_type = ControlLoopTargetType.VNF; onsetEvent.target = "generic-vnf.vnf-id"; onsetEvent.from = "DCAE"; onsetEvent.closedLoopAlarmStart = Instant.now(); @@ -68,7 +72,7 @@ public class AppcServiceProviderTest { operation = new ControlLoopOperation(); operation.actor = "APPC"; operation.operation = "ModifyConfig"; - operation.target = "VM"; + operation.target = "VNF"; operation.end = Instant.now(); operation.subRequestId = "1"; @@ -77,7 +81,8 @@ public class AppcServiceProviderTest { policy.setName("Modify Packet Generation Config"); policy.setDescription("Upon getting the trigger event, modify packet gen config"); policy.setActor("APPC"); - policy.setTarget(new Target(TargetType.VM)); + policy.setTarget(new Target(TargetType.VNF)); + policy.getTarget().setResourceID("Eace933104d443b496b8.nodes.heat.vpg"); policy.setRecipe("ModifyConfig"); policy.setPayload(null); policy.setRetry(2); @@ -85,6 +90,20 @@ public class AppcServiceProviderTest { } + @BeforeClass + public static void setUpSimulator() { + try { + Util.buildAaiSim(); + } catch (InterruptedException e) { + fail(e.getMessage()); + } + } + + @AfterClass + public static void tearDownSimulator() { + HttpServletServer.factory.destroy(); + } + @Test public void constructModifyConfigRequestTest() { @@ -104,6 +123,7 @@ public class AppcServiceProviderTest { /* A payload is required and cannot be null */ assertNotNull(appcRequest.getPayload()); assertTrue(appcRequest.getPayload().containsKey("generic-vnf.vnf-id")); + assertNotNull(appcRequest.getPayload().get("generic-vnf.vnf-id")); assertTrue(appcRequest.getPayload().containsKey("pg-streams")); logger.debug("APPC Request: \n" + appcRequest.toString()); -- cgit 1.2.3-korg