modifications to create network to add lob 69/101069/1
authorSmokowski, Steven <steve.smokowski@att.com>
Mon, 3 Feb 2020 19:48:24 +0000 (14:48 -0500)
committerBenjamin, Max (mb388a) <mb388a@att.com>
Mon, 3 Feb 2020 19:48:26 +0000 (14:48 -0500)
Add platform and line of business to network
Update to split out network

Issue-ID: SO-2637
Signed-off-by: Benjamin, Max (mb388a) <mb388a@att.com>
Change-Id: I5cbc3bc77986b6d4d420d2158df46924fcd74c0b

bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/bbobjects/L3Network.java
bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetup.java
bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupTest.java
bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/AssignNetworkBB.bpmn
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/aai/tasks/AAICreateTasks.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/AAINetworkResources.java

index 6b3ad1d..554e987 100644 (file)
@@ -100,6 +100,10 @@ public class L3Network implements Serializable, ShallowCopy<L3Network> {
     private List<AggregateRoute> aggregateRoutes = new ArrayList<>();
     @JsonProperty("vpn-binding")
     private List<VpnBinding> vpnBindings = new ArrayList<>();
+    @JsonProperty("line-of-business")
+    private LineOfBusiness lineOfBusiness;
+    @JsonProperty("platform")
+    private Platform platform;
 
     public ModelInfoNetwork getModelInfoNetwork() {
         return modelInfoNetwork;
@@ -313,6 +317,22 @@ public class L3Network implements Serializable, ShallowCopy<L3Network> {
         return vpnBindings;
     }
 
+    public LineOfBusiness getLineOfBusiness() {
+        return lineOfBusiness;
+    }
+
+    public void setLineOfBusiness(LineOfBusiness lineOfBusiness) {
+        this.lineOfBusiness = lineOfBusiness;
+    }
+
+    public Platform getPlatform() {
+        return platform;
+    }
+
+    public void setPlatform(Platform platform) {
+        this.platform = platform;
+    }
+
     @Override
     public boolean equals(final Object other) {
         if (!(other instanceof L3Network)) {
index a479347..145d4c8 100644 (file)
@@ -915,7 +915,7 @@ public class BBInputSetup implements JavaDelegate {
         if (network == null && (parameter.getBbName().equalsIgnoreCase(AssignFlows.NETWORK_A_LA_CARTE.toString())
                 || parameter.getBbName().equalsIgnoreCase(AssignFlows.NETWORK_MACRO.toString()))) {
             network = createNetwork(parameter.getLookupKeyMap(), parameter.getInstanceName(), parameter.getResourceId(),
-                    parameter.getInstanceParams());
+                    parameter.getInstanceParams(), parameter);
             parameter.getServiceInstance().getNetworks().add(network);
         }
         if (network != null) {
@@ -924,12 +924,20 @@ public class BBInputSetup implements JavaDelegate {
     }
 
     protected L3Network createNetwork(Map<ResourceKey, String> lookupKeyMap, String instanceName, String networkId,
-            List<Map<String, String>> instanceParams) {
+            List<Map<String, String>> instanceParams, BBInputSetupParameter parameter) {
         lookupKeyMap.put(ResourceKey.NETWORK_ID, networkId);
         L3Network network = new L3Network();
         network.setNetworkId(networkId);
         network.setNetworkName(instanceName);
         network.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
+        if (parameter != null) {
+            if (parameter.getLineOfBusiness() != null) {
+                network.setLineOfBusiness(this.mapperLayer.mapRequestLineOfBusiness(parameter.getLineOfBusiness()));
+            }
+            if (parameter.getLineOfBusiness() != null) {
+                network.setPlatform(this.mapperLayer.mapRequestPlatform(parameter.getPlatform()));
+            }
+        }
         if (instanceParams != null) {
             for (Map<String, String> params : instanceParams) {
                 network.getCloudParams().putAll(params);
@@ -1284,7 +1292,7 @@ public class BBInputSetup implements JavaDelegate {
         if (collectionNetworkResourceCust != null) {
             if ((bbName.equalsIgnoreCase(AssignFlows.NETWORK_A_LA_CARTE.toString())
                     || bbName.equalsIgnoreCase(AssignFlows.NETWORK_MACRO.toString()))) {
-                L3Network network = createNetwork(lookupKeyMap, null, networkId, null);
+                L3Network network = createNetwork(lookupKeyMap, null, networkId, null, null);
                 serviceInstance.getNetworks().add(network);
                 return network;
             } else {
index a45e803..1acf4ed 100644 (file)
@@ -1262,7 +1262,7 @@ public class BBInputSetupTest {
         verify(SPY_bbInputSetup, times(1)).mapCatalogNetwork(network, modelInfo, service);
 
         instanceName = "networkName2";
-        L3Network network2 = SPY_bbInputSetup.createNetwork(lookupKeyMap, instanceName, resourceId, null);
+        L3Network network2 = SPY_bbInputSetup.createNetwork(lookupKeyMap, instanceName, resourceId, null, parameter);
         SPY_bbInputSetup.populateL3Network(parameter);
         verify(SPY_bbInputSetup, times(2)).mapCatalogNetwork(network2, modelInfo, service);
     }
@@ -2832,17 +2832,32 @@ public class BBInputSetupTest {
         expected.setNetworkId(networkId);
         expected.setNetworkName(instanceName);
         expected.setCloudParams(cloudParams);
+        Platform platform = new Platform();
+        platform.setPlatformName("platformName");
+        expected.setPlatform(platform);
+        LineOfBusiness lineOfBusiness = new LineOfBusiness();
+        lineOfBusiness.setLineOfBusinessName("lineOfBusiness");
+        expected.setLineOfBusiness(lineOfBusiness);
         expected.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
         Map<ResourceKey, String> lookupKeyMap = new HashMap<>();
         List<Map<String, String>> instanceParams = new ArrayList<>();
         instanceParams.add(cloudParams);
-        L3Network actual = SPY_bbInputSetup.createNetwork(lookupKeyMap, instanceName, networkId, instanceParams);
+        org.onap.so.serviceinstancebeans.Platform platformRequest = new org.onap.so.serviceinstancebeans.Platform();
+        org.onap.so.serviceinstancebeans.LineOfBusiness lineOfBusinessRequest =
+                new org.onap.so.serviceinstancebeans.LineOfBusiness();
+        lineOfBusinessRequest.setLineOfBusinessName("lineOfBusiness");
+        platformRequest.setPlatformName("platformName");
+        BBInputSetupParameter parameter = new BBInputSetupParameter.Builder().setRequestId(REQUEST_ID)
+                .setPlatform(platformRequest).setLineOfBusiness(lineOfBusinessRequest).build();
+        L3Network actual =
+                SPY_bbInputSetup.createNetwork(lookupKeyMap, instanceName, networkId, instanceParams, parameter);
 
         assertThat(actual, sameBeanAs(expected));
         assertEquals("LookupKeyMap is populated", networkId, lookupKeyMap.get(ResourceKey.NETWORK_ID));
 
         expected.getCloudParams().clear();
-        actual = SPY_bbInputSetup.createNetwork(lookupKeyMap, instanceName, networkId, null);
+
+        actual = SPY_bbInputSetup.createNetwork(lookupKeyMap, instanceName, networkId, null, parameter);
         assertThat(actual, sameBeanAs(expected));
     }
 
index 7c86e96..c48f8b4 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="1.8.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
+<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="_MagIIMOUEeW8asg-vCEgWQ" targetNamespace="http://camunda.org/schema/1.0/bpmn" exporter="Camunda Modeler" exporterVersion="3.1.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd">
   <bpmn2:process id="AssignNetworkBB" name="AssignNetworkBB" isExecutable="true">
     <bpmn2:startEvent id="AssignNetworkBB_start">
       <bpmn2:outgoing>SequenceFlow_11op1ih</bpmn2:outgoing>
@@ -21,7 +21,7 @@
       <bpmn2:outgoing>SequenceFlow_0988gld</bpmn2:outgoing>
     </bpmn2:serviceTask>
     <bpmn2:sequenceFlow id="SequenceFlow_017131q" name="Yes" sourceRef="networkFoundByName_ExclusiveGateway" targetRef="ExclusiveGateway_0vtj8n8">
-      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression"><![CDATA[#{AssignNetwork.networkFoundByName(execution.getVariable("gBuildingBlockExecution")) == true}]]></bpmn2:conditionExpression>
+      <bpmn2:conditionExpression xsi:type="bpmn2:tFormalExpression">#{AssignNetwork.networkFoundByName(execution.getVariable("gBuildingBlockExecution")) == true}</bpmn2:conditionExpression>
     </bpmn2:sequenceFlow>
     <bpmn2:sequenceFlow id="SequenceFlow_0gkr871" name="No" sourceRef="networkFoundByName_ExclusiveGateway" targetRef="ServiceTask_put_network_in_AAI" />
     <bpmn2:endEvent id="AssignNetworkBB_end">
       <bpmn2:incoming>SequenceFlow_0e08b9t</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0mxc4ri</bpmn2:outgoing>
     </bpmn2:serviceTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_1ctpnpe" sourceRef="ServiceTask_put_network_in_AAI" targetRef="ServiceTask_connect_to_Tenant" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1ctpnpe" sourceRef="ServiceTask_put_network_in_AAI" targetRef="ExclusiveGateway_0g85lk7" />
     <bpmn2:sequenceFlow id="SequenceFlow_0e08b9t" sourceRef="ServiceTask_connect_to_NCIG" targetRef="ServiceTask_connect_to_NCSI" />
     <bpmn2:sequenceFlow id="SequenceFlow_0mxc4ri" sourceRef="ServiceTask_connect_to_NCSI" targetRef="ExclusiveGateway_0vtj8n8" />
     <bpmn2:serviceTask id="ServiceTask_connect_to_Tenant" name="&#10;AAI&#10;Connect&#10;(tenant)&#10;" camunda:expression="${AAICreateTasks.connectNetworkToTenant(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
-      <bpmn2:incoming>SequenceFlow_1ctpnpe</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0lj5jj1</bpmn2:incoming>
       <bpmn2:outgoing>SequenceFlow_0fwcvep</bpmn2:outgoing>
     </bpmn2:serviceTask>
     <bpmn2:serviceTask id="ServiceTask_connect_to_CloudRegion" name="&#10;AAI&#10;Connect&#10;(cloud region)&#10;" camunda:expression="${AAICreateTasks.connectNetworkToCloudRegion(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
       <bpmn2:outgoing>SequenceFlow_017131q</bpmn2:outgoing>
       <bpmn2:outgoing>SequenceFlow_0gkr871</bpmn2:outgoing>
     </bpmn2:inclusiveGateway>
-    <bpmn2:inclusiveGateway id="ExclusiveGateway_0vtj8n8">
-      <bpmn2:incoming>SequenceFlow_017131q</bpmn2:incoming>
-      <bpmn2:incoming>SequenceFlow_0mxc4ri</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_0jm95hf</bpmn2:outgoing>
-    </bpmn2:inclusiveGateway>
     <bpmn2:sequenceFlow id="SequenceFlow_0jm95hf" sourceRef="ExclusiveGateway_0vtj8n8" targetRef="ServiceTask_get_cloud_region" />
     <bpmn2:sequenceFlow id="SequenceFlow_16hhbw3" sourceRef="ServiceTask_get_cloud_region" targetRef="ServiceTask_assign_network_sdnc" />
     <bpmn2:sequenceFlow id="SequenceFlow_0988gld" sourceRef="ServiceTask_assign_network_aai" targetRef="AssignNetworkBB_end" />
     </bpmn2:callActivity>
     <bpmn2:sequenceFlow id="SequenceFlow_0rt36co" sourceRef="ServiceTask_assign_network_sdnc" targetRef="CallActivity_sdncHandlerCall" />
     <bpmn2:sequenceFlow id="SequenceFlow_1mvf7b9" sourceRef="CallActivity_sdncHandlerCall" targetRef="ServiceTask_assign_network_aai" />
-    <bpmn2:textAnnotation id="TextAnnotation_0dnksb2">    <bpmn2:text>sets Cloud Region on BB execution for SDNC assign</bpmn2:text>
-</bpmn2:textAnnotation>
+    <bpmn2:serviceTask id="Task_0mu8391" name="Create Platform" camunda:expression="${AAICreateTasks.createPlatformForNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+      <bpmn2:incoming>SequenceFlow_1kslfgw</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0j7rpm9</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:serviceTask id="ServiceTask_0e2crgd" name="Create Lob" camunda:expression="${AAICreateTasks.createLineOfBusinessForNetwork(InjectExecution.execute(execution, execution.getVariable(&#34;gBuildingBlockExecution&#34;)))}">
+      <bpmn2:incoming>SequenceFlow_0j7rpm9</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0ugp99e</bpmn2:outgoing>
+    </bpmn2:serviceTask>
+    <bpmn2:sequenceFlow id="SequenceFlow_0lj5jj1" sourceRef="ExclusiveGateway_0g85lk7" targetRef="ServiceTask_connect_to_Tenant" />
+    <bpmn2:sequenceFlow id="SequenceFlow_1kslfgw" sourceRef="ExclusiveGateway_0g85lk7" targetRef="Task_0mu8391" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0j7rpm9" sourceRef="Task_0mu8391" targetRef="ServiceTask_0e2crgd" />
+    <bpmn2:sequenceFlow id="SequenceFlow_0ugp99e" sourceRef="ServiceTask_0e2crgd" targetRef="ExclusiveGateway_0vtj8n8" />
+    <bpmn2:parallelGateway id="ExclusiveGateway_0g85lk7">
+      <bpmn2:incoming>SequenceFlow_1ctpnpe</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0lj5jj1</bpmn2:outgoing>
+      <bpmn2:outgoing>SequenceFlow_1kslfgw</bpmn2:outgoing>
+    </bpmn2:parallelGateway>
+    <bpmn2:inclusiveGateway id="ExclusiveGateway_0vtj8n8">
+      <bpmn2:incoming>SequenceFlow_017131q</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0mxc4ri</bpmn2:incoming>
+      <bpmn2:incoming>SequenceFlow_0ugp99e</bpmn2:incoming>
+      <bpmn2:outgoing>SequenceFlow_0jm95hf</bpmn2:outgoing>
+    </bpmn2:inclusiveGateway>
+    <bpmn2:textAnnotation id="TextAnnotation_0dnksb2">
+      <bpmn2:text>sets Cloud Region on BB execution for SDNC assign</bpmn2:text>
+    </bpmn2:textAnnotation>
     <bpmn2:association id="Association_1rsqd3z" sourceRef="ServiceTask_get_cloud_region" targetRef="TextAnnotation_0dnksb2" />
-    <bpmn2:textAnnotation id="TextAnnotation_17jb2vn">    <bpmn2:text>conditionally executed if Network Collection Instance Group exists</bpmn2:text>
-</bpmn2:textAnnotation>
+    <bpmn2:textAnnotation id="TextAnnotation_17jb2vn">
+      <bpmn2:text>conditionally executed if Network Collection Instance Group exists</bpmn2:text>
+    </bpmn2:textAnnotation>
     <bpmn2:association id="Association_15ppe1t" sourceRef="ServiceTask_connect_to_NCIG" targetRef="TextAnnotation_17jb2vn" />
   </bpmn2:process>
   <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" />
   <bpmndi:BPMNDiagram id="BPMNDiagram_1">
     <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="AssignNetworkBB">
       <bpmndi:BPMNShape id="_BPMNShape_StartEvent_47" bpmnElement="AssignNetworkBB_start">
-        <dc:Bounds x="746" y="-105" width="36" height="36" />
+        <dc:Bounds x="156" y="137" width="36" height="36" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="739" y="-64" width="50" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_1wo7ke9_di" bpmnElement="ServiceTask_get_cloud_region">
-        <dc:Bounds x="1632" y="-127" width="100" height="80" />
+        <dc:Bounds x="1042" y="115" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_1ofnl0p_di" bpmnElement="ServiceTask_assign_network_sdnc">
-        <dc:Bounds x="1769" y="-127" width="100" height="80" />
+        <dc:Bounds x="1179" y="115" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="TextAnnotation_0dnksb2_di" bpmnElement="TextAnnotation_0dnksb2">
-        <dc:Bounds x="1576" y="35" width="212" height="30" />
+        <dc:Bounds x="986" y="242" width="212" height="30" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="Association_1rsqd3z_di" bpmnElement="Association_1rsqd3z">
-        <di:waypoint xsi:type="dc:Point" x="1682" y="-47" />
-        <di:waypoint xsi:type="dc:Point" x="1682" y="35" />
+        <di:waypoint x="1092" y="195" />
+        <di:waypoint x="1092" y="242" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_1dm3ngd_di" bpmnElement="ServiceTask_put_network_in_AAI">
-        <dc:Bounds x="906" y="-49" width="100" height="80" />
+        <dc:Bounds x="316" y="193" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_18yks1p_di" bpmnElement="ServiceTask_assign_network_aai">
-        <dc:Bounds x="2106" y="-127" width="100" height="80" />
+        <dc:Bounds x="1516" y="115" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_017131q_di" bpmnElement="SequenceFlow_017131q">
-        <di:waypoint xsi:type="dc:Point" x="863" y="-112" />
-        <di:waypoint xsi:type="dc:Point" x="863" y="-161" />
-        <di:waypoint xsi:type="dc:Point" x="1562" y="-161" />
-        <di:waypoint xsi:type="dc:Point" x="1562" y="-112" />
+        <di:waypoint x="273" y="130" />
+        <di:waypoint x="273" y="81" />
+        <di:waypoint x="972" y="81" />
+        <di:waypoint x="972" y="130" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="871.5" y="-151.96931534232883" width="19" height="12" />
+          <dc:Bounds x="282" y="90" width="18" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0gkr871_di" bpmnElement="SequenceFlow_0gkr871">
-        <di:waypoint xsi:type="dc:Point" x="863" y="-62" />
-        <di:waypoint xsi:type="dc:Point" x="863" y="-9" />
-        <di:waypoint xsi:type="dc:Point" x="906" y="-9" />
+        <di:waypoint x="273" y="180" />
+        <di:waypoint x="273" y="233" />
+        <di:waypoint x="316" y="233" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="872.125" y="-36.06410256410257" width="14" height="12" />
+          <dc:Bounds x="282" y="206" width="15" height="14" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="EndEvent_083u1a5_di" bpmnElement="AssignNetworkBB_end">
-        <dc:Bounds x="2241" y="-105" width="36" height="36" />
+        <dc:Bounds x="1651" y="137" width="36" height="36" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="2214" y="-65" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_11op1ih_di" bpmnElement="SequenceFlow_11op1ih">
-        <di:waypoint xsi:type="dc:Point" x="782" y="-87" />
-        <di:waypoint xsi:type="dc:Point" x="838" y="-87" />
+        <di:waypoint x="192" y="155" />
+        <di:waypoint x="248" y="155" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="765" y="-102" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_0a96yhg_di" bpmnElement="ServiceTask_connect_to_NCIG">
-        <dc:Bounds x="1286" y="-49" width="100" height="80" />
+        <dc:Bounds x="743" y="193" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_0mauyto_di" bpmnElement="ServiceTask_connect_to_NCSI">
-        <dc:Bounds x="1422" y="-49" width="100" height="80" />
+        <dc:Bounds x="867" y="193" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_1ctpnpe_di" bpmnElement="SequenceFlow_1ctpnpe">
-        <di:waypoint xsi:type="dc:Point" x="1006" y="-9" />
-        <di:waypoint xsi:type="dc:Point" x="1036" y="-9" />
+        <di:waypoint x="416" y="232" />
+        <di:waypoint x="421" y="232" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="976" y="-24" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0e08b9t_di" bpmnElement="SequenceFlow_0e08b9t">
-        <di:waypoint xsi:type="dc:Point" x="1386" y="-9" />
-        <di:waypoint xsi:type="dc:Point" x="1422" y="-9" />
+        <di:waypoint x="843" y="233" />
+        <di:waypoint x="867" y="233" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="1359" y="-24" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0mxc4ri_di" bpmnElement="SequenceFlow_0mxc4ri">
-        <di:waypoint xsi:type="dc:Point" x="1522" y="-9" />
-        <di:waypoint xsi:type="dc:Point" x="1562" y="-9" />
-        <di:waypoint xsi:type="dc:Point" x="1562" y="-62" />
+        <di:waypoint x="917" y="193" />
+        <di:waypoint x="956" y="164" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="1497" y="-24" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="ServiceTask_019bzpc_di" bpmnElement="ServiceTask_connect_to_Tenant">
-        <dc:Bounds x="1036" y="-49" width="100" height="80" />
+        <dc:Bounds x="515" y="193" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNShape id="ServiceTask_1alvmym_di" bpmnElement="ServiceTask_connect_to_CloudRegion">
-        <dc:Bounds x="1162" y="-49" width="100" height="80" />
+        <dc:Bounds x="622" y="193" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0fwcvep_di" bpmnElement="SequenceFlow_0fwcvep">
-        <di:waypoint xsi:type="dc:Point" x="1136" y="-9" />
-        <di:waypoint xsi:type="dc:Point" x="1162" y="-9" />
+        <di:waypoint x="565" y="193" />
+        <di:waypoint x="565" y="173" />
+        <di:waypoint x="672" y="173" />
+        <di:waypoint x="672" y="193" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="1104" y="-24" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_07z7hcu_di" bpmnElement="SequenceFlow_07z7hcu">
-        <di:waypoint xsi:type="dc:Point" x="1262" y="-9" />
-        <di:waypoint xsi:type="dc:Point" x="1286" y="-9" />
+        <di:waypoint x="722" y="233" />
+        <di:waypoint x="743" y="233" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="1229" y="-24" width="90" height="0" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="TextAnnotation_17jb2vn_di" bpmnElement="TextAnnotation_17jb2vn">
-        <dc:Bounds x="1232" y="86" width="158" height="54" />
+        <dc:Bounds x="777" y="288" width="158" height="54" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="Association_15ppe1t_di" bpmnElement="Association_15ppe1t">
-        <di:waypoint xsi:type="dc:Point" x="1306" y="31" />
-        <di:waypoint xsi:type="dc:Point" x="1267" y="86" />
+        <di:waypoint x="793" y="273" />
+        <di:waypoint x="793" y="288" />
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="InclusiveGateway_0kiphfm_di" bpmnElement="networkFoundByName_ExclusiveGateway">
-        <dc:Bounds x="838" y="-112" width="50" height="50" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="898" y="-104" width="73" height="24" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="InclusiveGateway_0pxktc3_di" bpmnElement="ExclusiveGateway_0vtj8n8">
-        <dc:Bounds x="1537" y="-112" width="50" height="50" />
+        <dc:Bounds x="248" y="130" width="50" height="50" />
         <bpmndi:BPMNLabel>
-          <dc:Bounds x="1562" y="-58" width="0" height="12" />
+          <dc:Bounds x="308" y="138" width="73" height="27" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0jm95hf_di" bpmnElement="SequenceFlow_0jm95hf">
-        <di:waypoint xsi:type="dc:Point" x="1587" y="-87" />
-        <di:waypoint xsi:type="dc:Point" x="1632" y="-87" />
+        <di:waypoint x="997" y="155" />
+        <di:waypoint x="1042" y="155" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="1609.5" y="-108" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_16hhbw3_di" bpmnElement="SequenceFlow_16hhbw3">
-        <di:waypoint xsi:type="dc:Point" x="1732" y="-87" />
-        <di:waypoint xsi:type="dc:Point" x="1769" y="-87" />
+        <di:waypoint x="1142" y="155" />
+        <di:waypoint x="1179" y="155" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="1750.5" y="-108" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_0988gld_di" bpmnElement="SequenceFlow_0988gld">
-        <di:waypoint xsi:type="dc:Point" x="2206" y="-87" />
-        <di:waypoint xsi:type="dc:Point" x="2241" y="-87" />
+        <di:waypoint x="1616" y="155" />
+        <di:waypoint x="1651" y="155" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="2178.5" y="-108" width="90" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNShape id="CallActivity_0h7upeg_di" bpmnElement="CallActivity_sdncHandlerCall">
-        <dc:Bounds x="1927" y="-127" width="100" height="80" />
+        <dc:Bounds x="1337" y="115" width="100" height="80" />
       </bpmndi:BPMNShape>
       <bpmndi:BPMNEdge id="SequenceFlow_0rt36co_di" bpmnElement="SequenceFlow_0rt36co">
-        <di:waypoint xsi:type="dc:Point" x="1869" y="-87" />
-        <di:waypoint xsi:type="dc:Point" x="1927" y="-87" />
+        <di:waypoint x="1279" y="155" />
+        <di:waypoint x="1337" y="155" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="1898" y="-108" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
       <bpmndi:BPMNEdge id="SequenceFlow_1mvf7b9_di" bpmnElement="SequenceFlow_1mvf7b9">
-        <di:waypoint xsi:type="dc:Point" x="2027" y="-87" />
-        <di:waypoint xsi:type="dc:Point" x="2106" y="-87" />
+        <di:waypoint x="1437" y="155" />
+        <di:waypoint x="1516" y="155" />
         <bpmndi:BPMNLabel>
           <dc:Bounds x="2066.5" y="-108" width="0" height="12" />
         </bpmndi:BPMNLabel>
       </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ServiceTask_0z9uk3m_di" bpmnElement="Task_0mu8391">
+        <dc:Bounds x="471" y="305" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="ServiceTask_0e2crgd_di" bpmnElement="ServiceTask_0e2crgd">
+        <dc:Bounds x="631" y="305" width="100" height="80" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge id="SequenceFlow_0lj5jj1_di" bpmnElement="SequenceFlow_0lj5jj1">
+        <di:waypoint x="471" y="232" />
+        <di:waypoint x="515" y="233" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_1kslfgw_di" bpmnElement="SequenceFlow_1kslfgw">
+        <di:waypoint x="446" y="257" />
+        <di:waypoint x="446" y="345" />
+        <di:waypoint x="471" y="345" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0j7rpm9_di" bpmnElement="SequenceFlow_0j7rpm9">
+        <di:waypoint x="571" y="343" />
+        <di:waypoint x="631" y="341" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNEdge id="SequenceFlow_0ugp99e_di" bpmnElement="SequenceFlow_0ugp99e">
+        <di:waypoint x="731" y="345" />
+        <di:waypoint x="972" y="345" />
+        <di:waypoint x="972" y="180" />
+      </bpmndi:BPMNEdge>
+      <bpmndi:BPMNShape id="ParallelGateway_02lmom2_di" bpmnElement="ExclusiveGateway_0g85lk7">
+        <dc:Bounds x="421" y="207" width="50" height="50" />
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape id="InclusiveGateway_1cof7a3_di" bpmnElement="ExclusiveGateway_0vtj8n8">
+        <dc:Bounds x="947" y="130" width="50" height="50" />
+      </bpmndi:BPMNShape>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
 </bpmn2:definitions>
index 22089da..dab5102 100644 (file)
@@ -31,8 +31,6 @@ import java.util.TreeSet;
 import java.util.UUID;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
-import org.onap.so.client.orchestration.AAIPnfResources;
-import org.onap.so.logger.LoggingAnchor;
 import org.camunda.bpm.engine.delegate.BpmnError;
 import org.onap.so.bpmn.common.BuildingBlockExecution;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
@@ -62,12 +60,14 @@ import org.onap.so.client.exception.ExceptionBuilder;
 import org.onap.so.client.orchestration.AAIConfigurationResources;
 import org.onap.so.client.orchestration.AAIInstanceGroupResources;
 import org.onap.so.client.orchestration.AAINetworkResources;
+import org.onap.so.client.orchestration.AAIPnfResources;
 import org.onap.so.client.orchestration.AAIServiceInstanceResources;
 import org.onap.so.client.orchestration.AAIVfModuleResources;
 import org.onap.so.client.orchestration.AAIVnfResources;
 import org.onap.so.client.orchestration.AAIVolumeGroupResources;
 import org.onap.so.client.orchestration.AAIVpnBindingResources;
 import org.onap.so.logger.ErrorCode;
+import org.onap.so.logger.LoggingAnchor;
 import org.onap.so.logger.MessageEnum;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -268,6 +268,23 @@ public class AAICreateTasks {
         }
     }
 
+    /**
+     * This method is used for separating (,) from the string.
+     *
+     * @param str
+     * @throws @return
+     */
+    public void createPlatformForNetwork(BuildingBlockExecution execution) {
+        try {
+            L3Network network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
+            if (network != null) {
+                createPlatformNetwork(network);
+            }
+        } catch (Exception ex) {
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
+        }
+    }
+
     /**
      * This method is used for separating (,) from the string.
      *
@@ -277,15 +294,8 @@ public class AAICreateTasks {
     public void createPlatform(BuildingBlockExecution execution) {
         try {
             GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
-            Platform platform = vnf.getPlatform();
-            if (platform != null) {
-                if (platform.getPlatformName() == null || "".equals(platform.getPlatformName())) {
-                    logger.debug("PlatformName is null in input. Skipping create platform...");
-                } else {
-                    List<String> platforms = splitCDL(platform.getPlatformName());
-                    platforms.stream().forEach(platformName -> aaiVnfResources
-                            .createPlatformandConnectVnf(new Platform(platformName), vnf));
-                }
+            if (vnf != null) {
+                createPlatformVnf(vnf);
             }
         } catch (Exception ex) {
             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
@@ -293,6 +303,30 @@ public class AAICreateTasks {
 
     }
 
+    protected void createPlatformVnf(GenericVnf vnf) {
+        Platform platform = vnf.getPlatform();
+        if (Strings.isNullOrEmpty(platform.getPlatformName())) {
+            logger.debug("PlatformName is null in input. Skipping create platform...");
+        } else {
+            List<String> platforms = splitCDL(platform.getPlatformName());
+            platforms.stream().forEach(
+                    platformName -> aaiVnfResources.createPlatformandConnectVnf(new Platform(platformName), vnf));
+        }
+    }
+
+    protected void createPlatformNetwork(L3Network network) {
+        Platform platform = network.getPlatform();
+        if (platform != null) {
+            if (Strings.isNullOrEmpty(platform.getPlatformName())) {
+                logger.debug("PlatformName is null in input. Skipping create platform...");
+            } else {
+                List<String> platforms = splitCDL(platform.getPlatformName());
+                platforms.stream().forEach(
+                        platformName -> aaiNetworkResources.createPlatformAndConnectNetwork(platform, network));
+            }
+        }
+    }
+
     /**
      * This method is used for separating (,) from the string.
      *
@@ -312,22 +346,51 @@ public class AAICreateTasks {
     public void createLineOfBusiness(BuildingBlockExecution execution) {
         try {
             GenericVnf vnf = extractPojosForBB.extractByKey(execution, ResourceKey.GENERIC_VNF_ID);
-            LineOfBusiness lineOfBusiness = vnf.getLineOfBusiness();
-            if (lineOfBusiness != null) {
-                if (lineOfBusiness.getLineOfBusinessName() == null
-                        || "".equals(lineOfBusiness.getLineOfBusinessName())) {
-                    logger.info("lineOfBusiness is null in input. Skipping create lineOfBusiness...");
-                } else {
-                    List<String> lineOfBussinesses = splitCDL(lineOfBusiness.getLineOfBusinessName());
-                    lineOfBussinesses.stream().forEach(lobName -> aaiVnfResources
-                            .createLineOfBusinessandConnectVnf(new LineOfBusiness(lobName), vnf));
-                }
+            if (vnf != null) {
+                createLineOfBusinessVnf(vnf);
             }
         } catch (Exception ex) {
             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
         }
     }
 
+    public void createLineOfBusinessForNetwork(BuildingBlockExecution execution) {
+        try {
+            L3Network network = extractPojosForBB.extractByKey(execution, ResourceKey.NETWORK_ID);
+            if (network != null) {
+                createLineOfBusinessNetwork(network);
+            }
+        } catch (Exception ex) {
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex);
+        }
+    }
+
+    protected void createLineOfBusinessVnf(GenericVnf vnf) {
+        LineOfBusiness lineOfBusiness = vnf.getLineOfBusiness();
+        if (lineOfBusiness != null) {
+            if (Strings.isNullOrEmpty(lineOfBusiness.getLineOfBusinessName())) {
+                logger.info("lineOfBusiness is null in input. Skipping create lineOfBusiness...");
+            } else {
+                List<String> lineOfBussinesses = splitCDL(lineOfBusiness.getLineOfBusinessName());
+                lineOfBussinesses.stream().forEach(
+                        lobName -> aaiVnfResources.createLineOfBusinessandConnectVnf(new LineOfBusiness(lobName), vnf));
+            }
+        }
+    }
+
+    protected void createLineOfBusinessNetwork(L3Network network) {
+        LineOfBusiness lineOfBusiness = network.getLineOfBusiness();
+        if (lineOfBusiness != null) {
+            if (Strings.isNullOrEmpty(lineOfBusiness.getLineOfBusinessName())) {
+                logger.info("lineOfBusiness is null in input. Skipping create lineOfBusiness...");
+            } else {
+                List<String> lineOfBussinesses = splitCDL(lineOfBusiness.getLineOfBusinessName());
+                lineOfBussinesses.stream().forEach(lobName -> aaiNetworkResources
+                        .createLineOfBusinessAndConnectNetwork(new LineOfBusiness(lobName), network));
+            }
+        }
+    }
+
     /**
      * This method is used for creating the volume group in A&AI.
      *
index bc702c9..3af6581 100644 (file)
@@ -30,6 +30,8 @@ import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.InstanceGroup;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.LineOfBusiness;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.Platform;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.Subnet;
 import org.onap.so.client.aai.AAIObjectPlurals;
@@ -38,8 +40,8 @@ import org.onap.so.client.aai.entities.AAIEdgeLabel;
 import org.onap.so.client.aai.entities.AAIResultWrapper;
 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
-import org.onap.so.client.graphinventory.entities.uri.Depth;
 import org.onap.so.client.aai.mapper.AAIObjectMapper;
+import org.onap.so.client.graphinventory.entities.uri.Depth;
 import org.onap.so.db.catalog.beans.OrchestrationStatus;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -76,6 +78,22 @@ public class AAINetworkResources {
                 serviceInstanceURI);
     }
 
+    public void createLineOfBusinessAndConnectNetwork(LineOfBusiness lineOfBusiness, L3Network network) {
+        AAIResourceUri lineOfBusinessURI =
+                AAIUriFactory.createResourceUri(AAIObjectType.LINE_OF_BUSINESS, lineOfBusiness.getLineOfBusinessName());
+        AAIResourceUri networkURI = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, network.getNetworkId());
+        injectionHelper.getAaiClient().createIfNotExists(lineOfBusinessURI, Optional.of(lineOfBusiness))
+                .connect(networkURI, lineOfBusinessURI);
+    }
+
+    public void createPlatformAndConnectNetwork(Platform platform, L3Network network) {
+        AAIResourceUri platformURI =
+                AAIUriFactory.createResourceUri(AAIObjectType.PLATFORM, platform.getPlatformName());
+        AAIResourceUri networkURI = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, network.getNetworkId());
+        injectionHelper.getAaiClient().createIfNotExists(platformURI, Optional.of(platform)).connect(networkURI,
+                platformURI);
+    }
+
     public void deleteNetwork(L3Network network) {
         AAIResourceUri networkURI = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, network.getNetworkId());
         injectionHelper.getAaiClient().delete(networkURI);