Process query of Network Policies from A&AI 28/78528/1
authorBenjamin, Max (mb388a) <mb388a@us.att.com>
Thu, 14 Feb 2019 23:14:00 +0000 (18:14 -0500)
committerBenjamin, Max (mb388a) <mb388a@us.att.com>
Thu, 14 Feb 2019 23:16:44 +0000 (18:16 -0500)
Process query of Network Policies from A&AI as a NetworkPolicies object.

Change-Id: I01b4c00e3732a5518ddc21d08740c0684de86d5e
Issue-ID: SO-1511
Signed-off-by: Benjamin, Max (mb388a) <mb388a@us.att.com>
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIDeleteTasks.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/AAINetworkResources.java
bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAIDeleteTasksTest.java
bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/orchestration/AAINetworkResourcesTest.java
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/queryAaiNetworkPolicies.json [new file with mode: 0644]
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/queryAaiNetworkPoliciesForDelete0.json [new file with mode: 0644]
bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/queryAaiNetworkPoliciesForDelete1.json [new file with mode: 0644]

index 8f0334e..0d9aeed 100644 (file)
 package org.onap.so.bpmn.infrastructure.aai.tasks;
 
 
+import java.util.List;
 import java.util.Optional;
-import java.util.UUID;
 
+import org.onap.aai.domain.yang.NetworkPolicies;
+import org.onap.aai.domain.yang.NetworkPolicy;
 import org.onap.so.bpmn.common.BuildingBlockExecution;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
-import org.onap.so.bpmn.servicedecomposition.bbobjects.NetworkPolicy;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
@@ -169,18 +170,22 @@ public class AAIDeleteTasks {
                                                String fqdn = fqdnList[i];
                                                AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.NETWORK_POLICY);
                                                uri.queryParam(NETWORK_POLICY_FQDN_PARAM, fqdn);
-                                               Optional<org.onap.aai.domain.yang.NetworkPolicy> oNetPolicy = aaiNetworkResources.getNetworkPolicy(uri);
-                                               if(oNetPolicy.isPresent()) {
-                                                       String networkPolicyId = oNetPolicy.get().getNetworkPolicyId();
-                                                       msoLogger.debug("Deleting network-policy with network-policy-id " + networkPolicyId);                                                   
-                                                       
-                                                       aaiNetworkResources.deleteNetworkPolicy(networkPolicyId);
+                                               Optional<NetworkPolicies> oNetPolicies = aaiNetworkResources.getNetworkPolicies(uri);
+                                               if(oNetPolicies.isPresent()) {
+                                                       NetworkPolicies networkPolicies = oNetPolicies.get();
+                                                       List<NetworkPolicy> networkPolicyList = networkPolicies.getNetworkPolicy();
+                                                       if (networkPolicyList != null && !networkPolicyList.isEmpty()) {
+                                                               NetworkPolicy networkPolicy = networkPolicyList.get(0);
+                                                               String networkPolicyId = networkPolicy.getNetworkPolicyId();
+                                                               msoLogger.debug("Deleting network-policy with network-policy-id " + networkPolicyId);                                                           
+                                                               aaiNetworkResources.deleteNetworkPolicy(networkPolicyId);                                                               
+                                                       }                                                       
                                                }
                                        }
                                }
                        }                       
                } catch (Exception ex) {
                        exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
-               }               
+               }       
        }
 }
index 4ca3f2a..7283c99 100644 (file)
@@ -22,6 +22,7 @@ package org.onap.so.client.orchestration;
 
 import java.util.Optional;
 
+import org.onap.aai.domain.yang.NetworkPolicies;
 import org.onap.aai.domain.yang.NetworkPolicy;
 import org.onap.aai.domain.yang.RouteTableReference;
 import org.onap.aai.domain.yang.VpnBinding;
@@ -86,6 +87,10 @@ public class AAINetworkResources {
                return injectionHelper.getAaiClient().get(netPolicyUri).asBean(NetworkPolicy.class);
        }
        
+       public Optional<NetworkPolicies> getNetworkPolicies(AAIResourceUri netPoliciesUri) {
+               return injectionHelper.getAaiClient().get(netPoliciesUri).asBean(NetworkPolicies.class);
+       }
+       
        public Optional<org.onap.aai.domain.yang.Subnet> getSubnet(AAIResourceUri subnetUri) {
                return injectionHelper.getAaiClient().get(subnetUri).asBean(org.onap.aai.domain.yang.Subnet.class);
        }
index 5cb7751..4984b2f 100644 (file)
@@ -30,6 +30,8 @@ import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.Optional;
 
 import org.camunda.bpm.engine.delegate.BpmnError;
@@ -39,6 +41,7 @@ import org.mockito.ArgumentCaptor;
 import org.mockito.ArgumentMatchers;
 import org.mockito.Captor;
 import org.mockito.InjectMocks;
+import org.onap.aai.domain.yang.NetworkPolicies;
 import org.onap.aai.domain.yang.NetworkPolicy;
 import org.onap.so.bpmn.BaseTaskTest;
 import org.onap.so.bpmn.common.BuildingBlockExecution;
@@ -50,11 +53,13 @@ import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
+import org.onap.so.client.aai.entities.AAIResultWrapper;
 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
 import org.onap.so.client.exception.BBObjectNotFoundException;
 
 
 public class AAIDeleteTasksTest extends BaseTaskTest {
+       private final static String JSON_FILE_LOCATION = "src/test/resources/__files/BuildingBlocks/";
        
        @InjectMocks
        private AAIDeleteTasks aaiDeleteTasks = new AAIDeleteTasks();
@@ -191,11 +196,14 @@ public class AAIDeleteTasksTest extends BaseTaskTest {
        @Test
        public void deleteNetworkPolicyNeedToDeleteAllTest() throws Exception {         
                execution.setVariable("contrailNetworkPolicyFqdnList", "ABC123,DEF456");
-               NetworkPolicy networkPolicy0 = new NetworkPolicy();
-               networkPolicy0.setNetworkPolicyId("testNetworkPolicyId0");
-               NetworkPolicy networkPolicy1 = new NetworkPolicy();
-               networkPolicy1.setNetworkPolicyId("testNetworkPolicyId1");
-               doReturn(Optional.of(networkPolicy0),Optional.of(networkPolicy1)).when(aaiNetworkResources).getNetworkPolicy(any(AAIResourceUri.class));
+               final String content0 = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "queryAaiNetworkPoliciesForDelete0.json")));
+               AAIResultWrapper aaiResultWrapper0 = new AAIResultWrapper(content0);
+               NetworkPolicies networkPolicies0 = aaiResultWrapper0.asBean(NetworkPolicies.class).get();
+               final String content1 = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "queryAaiNetworkPoliciesForDelete1.json")));
+               AAIResultWrapper aaiResultWrapper1 = new AAIResultWrapper(content1);
+               NetworkPolicies networkPolicies1 = aaiResultWrapper1.asBean(NetworkPolicies.class).get();
+               
+               doReturn(Optional.of(networkPolicies0),Optional.of(networkPolicies1)).when(aaiNetworkResources).getNetworkPolicies(any(AAIResourceUri.class));
                doNothing().when(aaiNetworkResources).deleteNetworkPolicy(any(String.class));
                aaiDeleteTasks.deleteNetworkPolicies(execution);
                verify(aaiNetworkResources, times(2)).deleteNetworkPolicy(stringCaptor.capture());
@@ -206,8 +214,8 @@ public class AAIDeleteTasksTest extends BaseTaskTest {
        @Test
        public void deleteNetworkPolicyNeedToDeleteNoneTest() throws Exception {                
                execution.setVariable("contrailNetworkPolicyFqdnList", "ABC123");
-               Optional<NetworkPolicy> networkPolicy = Optional.empty();               
-               doReturn(networkPolicy).when(aaiNetworkResources).getNetworkPolicy(any(AAIResourceUri.class));
+               Optional<NetworkPolicies> networkPolicies = Optional.empty();           
+               doReturn(networkPolicies).when(aaiNetworkResources).getNetworkPolicies(any(AAIResourceUri.class));
                aaiDeleteTasks.deleteNetworkPolicies(execution);
                verify(aaiNetworkResources, times(0)).deleteNetworkPolicy(any(String.class));
        }
index 2e2cc5d..8632a6a 100644 (file)
@@ -56,6 +56,7 @@ import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.NetworkPolicy;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.Subnet;
+import org.onap.so.client.aai.AAIObjectPlurals;
 import org.onap.so.client.aai.AAIObjectType;
 import org.onap.so.client.aai.AAIResourcesClient;
 import org.onap.so.client.aai.entities.AAIEdgeLabel;
@@ -190,6 +191,22 @@ public class AAINetworkResourcesTest extends TestDataSetup{
                }
        }
        
+       @Test
+       public void getNetworkPoliciesTest() throws Exception {
+               final String content = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "queryAaiNetworkPolicies.json")));
+               AAIResultWrapper aaiResultWrapper = new AAIResultWrapper(content);
+               Optional<org.onap.aai.domain.yang.NetworkPolicies> oNetPolicies = Optional.empty();
+               AAIResourceUri netPoliciesUri = AAIUriFactory.createResourceUri(AAIObjectPlurals.NETWORK_POLICY);
+               
+               doReturn(aaiResultWrapper).when(MOCK_aaiResourcesClient).get(isA(AAIResourceUri.class));
+               oNetPolicies = aaiNetworkResources.getNetworkPolicies(netPoliciesUri);
+               verify(MOCK_aaiResourcesClient, times(1)).get(any(AAIResourceUri.class));               
+               if (oNetPolicies.isPresent()) {
+                       org.onap.aai.domain.yang.NetworkPolicies networkPolicies = oNetPolicies.get();
+                       assertThat(aaiResultWrapper.asBean(org.onap.aai.domain.yang.NetworkPolicies.class).get(), sameBeanAs(networkPolicies));
+               }
+       }
+       
        @Test
        public void getRouteTableTest() throws Exception {
                final String content = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "queryAaiNetworkTableRefs.json")));
diff --git a/bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/queryAaiNetworkPolicies.json b/bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/queryAaiNetworkPolicies.json
new file mode 100644 (file)
index 0000000..3bd60a7
--- /dev/null
@@ -0,0 +1,10 @@
+{"network-policy":
+       [
+               {
+                       "network-policy-id":"1ac71fb8-ad43-4e16-9459-c3f372b8236d",
+                       "network-policy-fqdn":"default-domain:enpx-26177-T-E2E-rdm6a:enpx-26177-T-E2E-rdm6a_TIPXH-DBEV-VIF-TDAT0_net_1",
+                       "heat-stack-id":"InfraMSO-vSAMP12_14_1.0-VF-Base-1902-est01-GR_API-021119-1/9a3be28f-115d-4693-9b17-9291b98b46de",
+                       "resource-version":"1550068250015"
+               }
+       ]
+}
\ No newline at end of file
diff --git a/bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/queryAaiNetworkPoliciesForDelete0.json b/bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/queryAaiNetworkPoliciesForDelete0.json
new file mode 100644 (file)
index 0000000..f60c6d9
--- /dev/null
@@ -0,0 +1,10 @@
+{"network-policy":
+       [
+               {
+                       "network-policy-id":"testNetworkPolicyId0",
+                       "network-policy-fqdn":"ABC123",
+                       "heat-stack-id":"InfraMSO-vSAMP12_14_1.0-VF-Base-1902-est01-GR_API-021119-1/9a3be28f-115d-4693-9b17-9291b98b46de",
+                       "resource-version":"1550068250015"
+               }
+       ]
+}
\ No newline at end of file
diff --git a/bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/queryAaiNetworkPoliciesForDelete1.json b/bpmn/so-bpmn-tasks/src/test/resources/__files/BuildingBlocks/queryAaiNetworkPoliciesForDelete1.json
new file mode 100644 (file)
index 0000000..6aaea8e
--- /dev/null
@@ -0,0 +1,10 @@
+{"network-policy":
+       [
+               {
+                       "network-policy-id":"testNetworkPolicyId1",
+                       "network-policy-fqdn":"DEF456",
+                       "heat-stack-id":"InfraMSO-vSAMP12_14_1.0-VF-Base-1902-est01-GR_API-021119-1/9a3be28f-115d-4693-9b17-9291b98b46de",
+                       "resource-version":"1550068250015"
+               }
+       ]
+}
\ No newline at end of file