diff options
15 files changed, 153 insertions, 37 deletions
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/DeleteAAIVfModule.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/DeleteAAIVfModule.groovy index 178b4d1695..6da1f6d6ff 100644 --- a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/DeleteAAIVfModule.groovy +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/DeleteAAIVfModule.groovy @@ -132,7 +132,7 @@ public class DeleteAAIVfModule extends AbstractServiceTaskProcessor{ def responseData = "" try { String vnfId = execution.getVariable("DAAIVfMod_vnfId") - String vfModuleId = execution.setVariable("DAAIVfMod_vfModuleId") + String vfModuleId = execution.getVariable("DAAIVfMod_vfModuleId") String resourceVersion = execution.getVariable("DAAIVfMod_vfModRsrcVer") AaiUtil aaiUriUtil = new AaiUtil(this) diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/baseclient/BaseClient.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/baseclient/BaseClient.java index 78f3e96978..af93c1bfc0 100644 --- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/baseclient/BaseClient.java +++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/baseclient/BaseClient.java @@ -20,11 +20,15 @@ package org.onap.so.bpmn.common.baseclient; +import java.util.ArrayList; +import java.util.List; + import org.onap.so.logging.jaxrs.filter.SpringClientFilter; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.http.client.BufferingClientHttpRequestFactory; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; @@ -40,6 +44,17 @@ public class BaseClient<I,O> { public HttpHeaders getHttpHeader() { return httpHeader; } + + public HttpHeaders setDefaultHttpHeaders(String auth) { + httpHeader = new HttpHeaders(); + httpHeader.set("Authorization", auth); + httpHeader.setContentType(MediaType.APPLICATION_JSON); + List<MediaType> acceptMediaTypes = new ArrayList<MediaType>(); + acceptMediaTypes.add(MediaType.APPLICATION_JSON); + acceptMediaTypes.add(MediaType.TEXT_PLAIN); + httpHeader.setAccept(acceptMediaTypes); + return httpHeader; + } public void setHttpHeader(HttpHeaders httpHeader) { this.httpHeader = httpHeader; diff --git a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateNetworkCollectionBB.bpmn b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateNetworkCollectionBB.bpmn index fb2bfae01a..293ba5db9b 100644 --- a/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateNetworkCollectionBB.bpmn +++ b/bpmn/so-bpmn-building-blocks/src/main/resources/subprocess/BuildingBlock/CreateNetworkCollectionBB.bpmn @@ -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.10.0" 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="1.7.2" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd"> <bpmn2:process id="CreateNetworkCollectionBB" name="CreateNetworkCollectionBB" isExecutable="true"> <bpmn2:startEvent id="createNetworkCollection_startEvent"> <bpmn2:outgoing>SequenceFlow_1maepy7</bpmn2:outgoing> @@ -23,41 +23,46 @@ </bpmn2:serviceTask> <bpmn2:serviceTask id="ServiceTask_Connect_Collection_to_InstanceGroup" name=" AAI Connect (net collection) " camunda:expression="${CreateNetworkCollection.connectCollectionToInstanceGroup(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")))} "> <bpmn2:incoming>SequenceFlow_0z4c30j</bpmn2:incoming> - <bpmn2:outgoing>SequenceFlow_1hij1px</bpmn2:outgoing> + <bpmn2:outgoing>SequenceFlow_0904jyg</bpmn2:outgoing> </bpmn2:serviceTask> <bpmn2:sequenceFlow id="SequenceFlow_05yxpu5" sourceRef="ServiceTask_create_NetworkCollection" targetRef="ServiceTask_create_NetworkCollectionInstanceGroup" /> <bpmn2:sequenceFlow id="SequenceFlow_0z4c30j" sourceRef="ServiceTask_create_NetworkCollectionInstanceGroup" targetRef="ServiceTask_Connect_Collection_to_InstanceGroup" /> <bpmn2:serviceTask id="ServiceTask_Connect_Collection_to_ServiceInstance" name=" AAI Connect (svc instance) " camunda:expression="${CreateNetworkCollection.connectCollectionToServiceInstance(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")))} "> - <bpmn2:incoming>SequenceFlow_1hij1px</bpmn2:incoming> + <bpmn2:incoming>SequenceFlow_0gkrvg6</bpmn2:incoming> <bpmn2:outgoing>SequenceFlow_0hhklb4</bpmn2:outgoing> </bpmn2:serviceTask> - <bpmn2:sequenceFlow id="SequenceFlow_1hij1px" sourceRef="ServiceTask_Connect_Collection_to_InstanceGroup" targetRef="ServiceTask_Connect_Collection_to_ServiceInstance" /> <bpmn2:sequenceFlow id="SequenceFlow_0hhklb4" sourceRef="ServiceTask_Connect_Collection_to_ServiceInstance" targetRef="createNetworkCollection_EndEvent" /> + <bpmn2:serviceTask id="ServiceTask_Connect_InstanceGroup_to_CloudRegion" name=" AAI Connect (group to cloud) " camunda:expression="${CreateNetworkCollection.connectInstanceGroupToCloudRegion(InjectExecution.execute(execution, execution.getVariable("gBuildingBlockExecution")))} "> + <bpmn2:incoming>SequenceFlow_0904jyg</bpmn2:incoming> + <bpmn2:outgoing>SequenceFlow_0gkrvg6</bpmn2:outgoing> + </bpmn2:serviceTask> + <bpmn2:sequenceFlow id="SequenceFlow_0904jyg" sourceRef="ServiceTask_Connect_Collection_to_InstanceGroup" targetRef="ServiceTask_Connect_InstanceGroup_to_CloudRegion" /> + <bpmn2:sequenceFlow id="SequenceFlow_0gkrvg6" sourceRef="ServiceTask_Connect_InstanceGroup_to_CloudRegion" targetRef="ServiceTask_Connect_Collection_to_ServiceInstance" /> </bpmn2:process> <bpmn2:error id="Error_2" name="MSOWorkflowException" errorCode="MSOWorkflowException" /> <bpmn2:error id="Error_1" name="java.lang.Exception" errorCode="java.lang.Exception" /> <bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CreateNetworkCollectionBB"> <bpmndi:BPMNShape id="StartEvent_0lbwmd1_di" bpmnElement="createNetworkCollection_startEvent"> - <dc:Bounds x="236" y="-55" width="36" height="36" /> + <dc:Bounds x="255" y="-55" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="229" y="-14" width="50" height="12" /> + <dc:Bounds x="228" y="-14" width="90" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="EndEvent_10l9a3s_di" bpmnElement="createNetworkCollection_EndEvent"> - <dc:Bounds x="1132" y="-55" width="36" height="36" /> + <dc:Bounds x="1280" y="-55" width="36" height="36" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1128" y="-19" width="46" height="12" /> + <dc:Bounds x="1254" y="-19" width="90" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="ServiceTask_08q9eo4_di" bpmnElement="BuildName_ServiceTask"> <dc:Bounds x="346" y="-77" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="SequenceFlow_1maepy7_di" bpmnElement="SequenceFlow_1maepy7"> - <di:waypoint xsi:type="dc:Point" x="272" y="-37" /> + <di:waypoint xsi:type="dc:Point" x="291" y="-37" /> <di:waypoint xsi:type="dc:Point" x="346" y="-37" /> <bpmndi:BPMNLabel> - <dc:Bounds x="309" y="-52" width="0" height="0" /> + <dc:Bounds x="273.5" y="-52" width="90" height="0" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ServiceTask_02qnccl_di" bpmnElement="ServiceTask_create_NetworkCollection"> @@ -91,20 +96,30 @@ </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNShape id="ServiceTask_15u6tzt_di" bpmnElement="ServiceTask_Connect_Collection_to_ServiceInstance"> - <dc:Bounds x="982" y="-77" width="100" height="80" /> + <dc:Bounds x="1124" y="-77" width="100" height="80" /> </bpmndi:BPMNShape> - <bpmndi:BPMNEdge id="SequenceFlow_1hij1px_di" bpmnElement="SequenceFlow_1hij1px"> + <bpmndi:BPMNEdge id="SequenceFlow_0hhklb4_di" bpmnElement="SequenceFlow_0hhklb4"> + <di:waypoint xsi:type="dc:Point" x="1224" y="-37" /> + <di:waypoint xsi:type="dc:Point" x="1280" y="-37" /> + <bpmndi:BPMNLabel> + <dc:Bounds x="1207" y="-52" width="90" height="0" /> + </bpmndi:BPMNLabel> + </bpmndi:BPMNEdge> + <bpmndi:BPMNShape id="ServiceTask_0kpj3lv_di" bpmnElement="ServiceTask_Connect_InstanceGroup_to_CloudRegion"> + <dc:Bounds x="971" y="-77" width="100" height="80" /> + </bpmndi:BPMNShape> + <bpmndi:BPMNEdge id="SequenceFlow_0904jyg_di" bpmnElement="SequenceFlow_0904jyg"> <di:waypoint xsi:type="dc:Point" x="917" y="-37" /> - <di:waypoint xsi:type="dc:Point" x="982" y="-37" /> + <di:waypoint xsi:type="dc:Point" x="971" y="-37" /> <bpmndi:BPMNLabel> - <dc:Bounds x="950" y="-62" width="0" height="0" /> + <dc:Bounds x="944" y="-58" width="0" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> - <bpmndi:BPMNEdge id="SequenceFlow_0hhklb4_di" bpmnElement="SequenceFlow_0hhklb4"> - <di:waypoint xsi:type="dc:Point" x="1082" y="-37" /> - <di:waypoint xsi:type="dc:Point" x="1132" y="-37" /> + <bpmndi:BPMNEdge id="SequenceFlow_0gkrvg6_di" bpmnElement="SequenceFlow_0gkrvg6"> + <di:waypoint xsi:type="dc:Point" x="1071" y="-37" /> + <di:waypoint xsi:type="dc:Point" x="1124" y="-37" /> <bpmndi:BPMNLabel> - <dc:Bounds x="1107" y="-62" width="0" height="0" /> + <dc:Bounds x="1097.5" y="-58" width="0" height="12" /> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> diff --git a/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/infrastructure/bpmn/subprocess/CreateNetworkCollectionBBTest.java b/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/infrastructure/bpmn/subprocess/CreateNetworkCollectionBBTest.java index bd285f11e1..421e09c9cf 100644 --- a/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/infrastructure/bpmn/subprocess/CreateNetworkCollectionBBTest.java +++ b/bpmn/so-bpmn-building-blocks/src/test/java/org/onap/so/bpmn/infrastructure/bpmn/subprocess/CreateNetworkCollectionBBTest.java @@ -35,7 +35,7 @@ public class CreateNetworkCollectionBBTest extends BaseBPMNTest{ public void sunnyDayCreateNetworkCollection_Test() throws InterruptedException { ProcessInstance pi = runtimeService.startProcessInstanceByKey("CreateNetworkCollectionBB",variables); assertThat(pi).isNotNull(); - assertThat(pi).isStarted().hasPassedInOrder("createNetworkCollection_startEvent", "BuildName_ServiceTask", "ServiceTask_create_NetworkCollection", "ServiceTask_create_NetworkCollectionInstanceGroup", "ServiceTask_Connect_Collection_to_InstanceGroup", "ServiceTask_Connect_Collection_to_ServiceInstance", "createNetworkCollection_EndEvent"); + assertThat(pi).isStarted().hasPassedInOrder("createNetworkCollection_startEvent", "BuildName_ServiceTask", "ServiceTask_create_NetworkCollection", "ServiceTask_create_NetworkCollectionInstanceGroup", "ServiceTask_Connect_Collection_to_InstanceGroup", "ServiceTask_Connect_InstanceGroup_to_CloudRegion", "ServiceTask_Connect_Collection_to_ServiceInstance", "createNetworkCollection_EndEvent"); assertThat(pi).isEnded(); } diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy index 1a3e8aa4e6..85e67c51a7 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVfModule.groovy @@ -217,8 +217,8 @@ public class DoDeleteVfModule extends AbstractServiceTaskProcessor{ // Get vfModuleName from AAI response if it was not specified on the request if (vfModuleName == null || vfModuleName.isEmpty()) { if (execution.getVariable("vfModuleFromAAI") != null) { - VfModule vfModuleFromAAI = execution.getVariable("vfModuleFromAAI") - vfModuleName = vfModuleFromAAI.getElementText("vf-module-name") + org.onap.aai.domain.yang.VfModule vfModuleFromAAI = execution.getVariable("vfModuleFromAAI") + vfModuleName = vfModuleFromAAI.getVfModuleName() } } String vfModuleModelName = execution.getVariable("vfModuleModelName") diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnf.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnf.groovy index 456a9cfabf..47a4d55e0c 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnf.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoDeleteVnf.groovy @@ -118,8 +118,12 @@ class DoDeleteVnf extends AbstractServiceTaskProcessor { } Optional<GenericVnf> vnf = wrapper.asBean(GenericVnf.class) - if(!vnf.get().getVfModules().getVfModule().isEmpty()){ - execution.setVariable("DoDVNF_vnfInUse", true) + if (vnf.get() != null) { + if (vnf.get().getVfModules() != null) { + if((vnf.get().getVfModules().getVfModule() != null) && !vnf.get().getVfModules().getVfModule().isEmpty()){ + execution.setVariable("DoDVNF_vnfInUse", true) + } + } } }else{ execution.setVariable("GENGV_FoundIndicator", false) diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy index bce19795ac..33cb6d4760 100644 --- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy +++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoUpdateVfModule.groovy @@ -458,8 +458,11 @@ public class DoUpdateVfModule extends VfModuleBase { def vnfType = execution.getVariable('DOUPVfMod_vnfType') def vfModuleId = execution.getVariable('DOUPVfMod_vfModuleId') def vfModuleModelName = execution.getVariable('DOUPVfMod_vfModuleModelName') - def VfModule vfModule = (VfModule) execution.getVariable('DOUPVfMod_vfModule') - def vfModuleName = vfModule.getElementText('vf-module-name') + def vfModuleName = "" + if (execution.getVariable('DOUPVfMod_vfModule') != null) { + org.onap.aai.domain.yang.VfModule vfModule = execution.getVariable('DOUPVfMod_vfModule') + vfModuleName = vfModule.getVfModuleName() + } def tenantId = execution.getVariable('DOUPVfMod_tenantId') def aicCloudRegion = execution.getVariable('DOUPVfMod_aicCloudRegion') boolean usePreload = execution.getVariable("DOUPVfMod_usePreload") @@ -616,8 +619,11 @@ public class DoUpdateVfModule extends VfModuleBase { def tenantId = execution.getVariable('DOUPVfMod_tenantId') def volumeGroupId = execution.getVariable('DOUPVfMod_volumeGroupId') def volumeGroupStackId = execution.getVariable('DOUPVfMod_volumeGroupStackId') - def VfModule vfModule = (VfModule) execution.getVariable('DOUPVfMod_vfModule') - def heatStackId = vfModule.getElementText('heat-stack-id') + def heatStackId = "" + if (execution.getVariable('DOUPVfMod_vfModule') != null) { + org.onap.aai.domain.yang.VfModule vfModule = execution.getVariable('DOUPVfMod_vfModule') + heatStackId = vfModule.getHeatStackId() + } def cloudId = execution.getVariable('DOUPVfMod_aicCloudRegion') def vnfType = execution.getVariable('DOUPVfMod_vnfType') def vnfName = execution.getVariable('DOUPVfMod_vnfName') @@ -836,8 +842,11 @@ public class DoUpdateVfModule extends VfModuleBase { def vnfType = execution.getVariable('DOUPVfMod_vnfType') def vfModuleId = execution.getVariable('DOUPVfMod_vfModuleId') def vfModuleModelName = execution.getVariable('DOUPVfMod_vfModuleModelName') - def VfModule vfModule = (VfModule) execution.getVariable('DOUPVfMod_vfModule') - def vfModuleName = vfModule.getElementText('vf-module-name') + def vfModuleName = "" + if (execution.getVariable('DOUPVfMod_vfModule') != null) { + org.onap.aai.domain.yang.VfModule vfModule = execution.getVariable('DOUPVfMod_vfModule') + vfModuleName = vfModule.getVfModuleName() + } def tenantId = execution.getVariable('DOUPVfMod_tenantId') def aicCloudRegion = execution.getVariable('DOUPVfMod_aicCloudRegion') diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/CreateNetworkCollection.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/CreateNetworkCollection.java index 222a5482c5..c8c4d439bd 100644 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/CreateNetworkCollection.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/CreateNetworkCollection.java @@ -91,6 +91,23 @@ public class CreateNetworkCollection { } /** + * BPMN access method to connect Instance Group to Cloud Region + * @param execution + * @throws Exception + */ + public void connectInstanceGroupToCloudRegion(BuildingBlockExecution execution) throws Exception { + execution.setVariable("connectInstanceGroupToCloudRegionRollback", false); + try{ + ServiceInstance serviceInstance = extractPojosForBB.extractByKey(execution, ResourceKey.SERVICE_INSTANCE_ID, execution.getLookupMap().get(ResourceKey.SERVICE_INSTANCE_ID)); + Collection networkCollection = serviceInstance.getCollection(); + aaiNetworkResources.connectInstanceGroupToCloudRegion(networkCollection.getInstanceGroup(), execution.getGeneralBuildingBlock().getCloudRegion()); + execution.setVariable("connectInstanceGroupToCloudRegionRollback", true); + } catch (Exception ex) { + exceptionUtil.buildAndThrowWorkflowException(execution, 7000, ex); + } + } + + /** * BPMN access method to connect Network Collection * @param execution * @throws Exception diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/AAINetworkResources.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/AAINetworkResources.java index dc5ba64d2d..a4c705b0c7 100644 --- a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/AAINetworkResources.java +++ b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/AAINetworkResources.java @@ -33,6 +33,7 @@ import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network; import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance; import org.onap.so.bpmn.servicedecomposition.bbobjects.Subnet; import org.onap.so.client.aai.AAIObjectType; +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; @@ -144,6 +145,13 @@ public class AAINetworkResources { injectionHelper.getAaiClient().connect(networkCollectionUri, netwrokCollectionInstanceGroupURI); } + public void connectInstanceGroupToCloudRegion(InstanceGroup instanceGroup, CloudRegion cloudRegion) { + AAIResourceUri cloudRegionURI = AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, + cloudRegion.getCloudOwner(), cloudRegion.getLcpCloudRegionId()); + AAIResourceUri instanceGroupURI = AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroup.getId()); + injectionHelper.getAaiClient().connect(instanceGroupURI, cloudRegionURI, AAIEdgeLabel.USES); + } + public void connectNetworkCollectionToServiceInstance(Collection networkCollection, ServiceInstance networkCollectionServiceInstance) { AAIResourceUri networkCollectionUri = AAIUriFactory.createResourceUri(AAIObjectType.COLLECTION, networkCollection.getId()); AAIResourceUri networkCollectionServiceInstanceUri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, networkCollectionServiceInstance.getServiceInstanceId()); diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/CreateNetworkCollectionTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/CreateNetworkCollectionTest.java index cde7797ed0..207447ae35 100644 --- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/CreateNetworkCollectionTest.java +++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/flowspecific/tasks/CreateNetworkCollectionTest.java @@ -30,6 +30,7 @@ import org.camunda.bpm.engine.delegate.BpmnError; import org.junit.Before; import org.junit.Test; import org.onap.so.bpmn.BaseTaskTest; +import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion; import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network; import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance; import org.onap.so.bpmn.servicedecomposition.generalobjects.OrchestrationContext; @@ -43,11 +44,13 @@ public class CreateNetworkCollectionTest extends BaseTaskTest{ private L3Network network; private ServiceInstance serviceInstance; private OrchestrationContext orchestrationContext; + private CloudRegion cloudRegion; @Before public void before() { serviceInstance = setServiceInstance(); network = setL3Network(); + cloudRegion = setCloudRegion(); List<L3Network> l3NetworkList = new ArrayList<L3Network>(); l3NetworkList.add(network); @@ -92,4 +95,11 @@ public class CreateNetworkCollectionTest extends BaseTaskTest{ createNetworkCollection.connectCollectionToServiceInstance(execution); verify(aaiNetworkResources, times(1)).connectNetworkCollectionToServiceInstance(serviceInstance.getCollection(), serviceInstance); } + + @Test + public void connectInstanceGroupToCloudRegionTest() throws Exception { + doNothing().when(aaiNetworkResources).connectInstanceGroupToCloudRegion(serviceInstance.getCollection().getInstanceGroup(), cloudRegion); + createNetworkCollection.connectInstanceGroupToCloudRegion(execution); + verify(aaiNetworkResources, times(1)).connectInstanceGroupToCloudRegion(serviceInstance.getCollection().getInstanceGroup(), cloudRegion); + } } diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/aai/mapper/AAIObjectMapperTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/aai/mapper/AAIObjectMapperTest.java index d86453b87c..db01399b82 100644 --- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/aai/mapper/AAIObjectMapperTest.java +++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/aai/mapper/AAIObjectMapperTest.java @@ -280,7 +280,6 @@ public class AAIObjectMapperTest { instanceGroup.setInstanceGroupName("test-instanceGroupName"); instanceGroup.setResourceVersion("test-resourceVersion"); - ModelInfoInstanceGroup model = new ModelInfoInstanceGroup(); model.setFunction("test-function"); model.setInstanceGroupRole("SUB-INTERFACE"); @@ -288,6 +287,7 @@ public class AAIObjectMapperTest { model.setModelInvariantUUID("modelInvariantUUID-000"); model.setModelUUID("modelUUID-000"); model.setDescription("test-description"); + model.setInstanceGroupRole("SUB-INTERFACE"); instanceGroup.setModelInfoInstanceGroup(model); @@ -311,6 +311,7 @@ public class AAIObjectMapperTest { assertEquals(aaiInstanceGroup.getModelVersionId(), instanceGroup.getModelInfoInstanceGroup().getModelUUID()); assertEquals(aaiInstanceGroup.getResourceVersion(), instanceGroup.getResourceVersion()); assertEquals(aaiInstanceGroup.getInstanceGroupType(), instanceGroup.getModelInfoInstanceGroup().getType()); + assertEquals(aaiInstanceGroup.getInstanceGroupRole(), instanceGroup.getModelInfoInstanceGroup().getInstanceGroupRole()); } @Test diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/orchestration/AAINetworkResourcesTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/orchestration/AAINetworkResourcesTest.java index cf270c21a7..bd61424a45 100644 --- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/orchestration/AAINetworkResourcesTest.java +++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/orchestration/AAINetworkResourcesTest.java @@ -58,6 +58,7 @@ import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance; import org.onap.so.bpmn.servicedecomposition.bbobjects.Subnet; import org.onap.so.client.aai.AAIObjectType; import org.onap.so.client.aai.AAIResourcesClient; +import org.onap.so.client.aai.entities.AAIEdgeLabel; import org.onap.so.client.aai.entities.AAIResultWrapper; import org.onap.so.client.aai.entities.Relationships; import org.onap.so.client.aai.entities.uri.AAIResourceUri; @@ -330,4 +331,13 @@ public class AAINetworkResourcesTest extends TestDataSetup{ verify(MOCK_aaiResourcesClient, times(1)).update(any(AAIResourceUri.class), isA(org.onap.aai.domain.yang.Subnet.class)); } + + @Test + public void connectInstanceGroupToCloudRegionTest() throws Exception { + aaiNetworkResources.connectInstanceGroupToCloudRegion(instanceGroup, cloudRegion); + verify(MOCK_aaiResourcesClient, times(1)).connect( + eq(AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroup.getId())), + eq(AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, cloudRegion.getCloudOwner(), cloudRegion.getLcpCloudRegionId())), + eq(AAIEdgeLabel.USES)); + } } diff --git a/common/src/main/java/org/onap/so/client/aai/AAIResourcesClient.java b/common/src/main/java/org/onap/so/client/aai/AAIResourcesClient.java index e91dc43af9..87951d516b 100644 --- a/common/src/main/java/org/onap/so/client/aai/AAIResourcesClient.java +++ b/common/src/main/java/org/onap/so/client/aai/AAIResourcesClient.java @@ -269,18 +269,18 @@ public class AAIResourcesClient extends AAIClient { return e; } - private Relationship buildRelationship(AAIResourceUri uri) { + protected Relationship buildRelationship(AAIResourceUri uri) { return buildRelationship(uri, Optional.empty()); } - private Relationship buildRelationship(AAIResourceUri uri, AAIEdgeLabel label) { + protected Relationship buildRelationship(AAIResourceUri uri, AAIEdgeLabel label) { return buildRelationship(uri, Optional.of(label)); } - private Relationship buildRelationship(AAIResourceUri uri, Optional<AAIEdgeLabel> label) { + protected Relationship buildRelationship(AAIResourceUri uri, Optional<AAIEdgeLabel> label) { final Relationship result = new Relationship(); result.setRelatedLink(uri.build().toString()); if (label.isPresent()) { - result.setRelationshipLabel(label.toString()); + result.setRelationshipLabel(label.get().toString()); } return result; } diff --git a/common/src/test/java/org/onap/so/client/aai/AAIResourcesClientTest.java b/common/src/test/java/org/onap/so/client/aai/AAIResourcesClientTest.java index 63f8f652ce..22dc1cac30 100644 --- a/common/src/test/java/org/onap/so/client/aai/AAIResourcesClientTest.java +++ b/common/src/test/java/org/onap/so/client/aai/AAIResourcesClientTest.java @@ -28,15 +28,18 @@ import static com.github.tomakehurst.wiremock.client.WireMock.post; import static com.github.tomakehurst.wiremock.client.WireMock.put; import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig; +import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs; import static org.hamcrest.CoreMatchers.containsString; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; -import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; +import org.onap.aai.domain.yang.Relationship; +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; @@ -183,6 +186,21 @@ public class AAIResourcesClientTest { AAIResultWrapper result = client.get(path, NotFoundException.class); } + @Test + public void buildRelationshipTest() { + AAIResourcesClient client = createClient(); + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, "test"); + Relationship relationship = new Relationship(); + relationship.setRelatedLink(uri.build().toString()); + Relationship actual = client.buildRelationship(uri); + assertThat("expect equal no label", actual, sameBeanAs(relationship)); + + relationship.setRelationshipLabel(AAIEdgeLabel.USES.toString()); + actual = client.buildRelationship(uri, AAIEdgeLabel.USES); + assertThat("expect equal has label", actual, sameBeanAs(relationship)); + + } + private AAIResourcesClient createClient() { AAIResourcesClient client = spy(new AAIResourcesClient()); doReturn(new DefaultAAIPropertiesImpl()).when(client).getRestProperties(); diff --git a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/SubType.java b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/SubType.java index bc4f07b54b..3230d8427b 100644 --- a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/SubType.java +++ b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/SubType.java @@ -21,5 +21,14 @@ package org.onap.so.db.catalog.beans; public enum SubType { - SUB_INTERFACE + SUB_INTERFACE("SUB-INTERFACE"); + + private final String value; + SubType(String value){ + this.value = value; + } + @Override + public String toString() { + return this.value; + } } |