diff options
Diffstat (limited to 'bpmn/MSOCommonBPMN/src')
8 files changed, 350 insertions, 106 deletions
diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/listener/db/PostCompletionRequestsDbListener.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/listener/db/PostCompletionRequestsDbListener.java new file mode 100644 index 0000000000..f888e5333a --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/listener/db/PostCompletionRequestsDbListener.java @@ -0,0 +1,33 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.bpmn.common.listener.db; + +import org.onap.so.bpmn.common.BuildingBlockExecution; +import org.onap.so.db.request.beans.InfraActiveRequests; + +public interface PostCompletionRequestsDbListener { + + public boolean shouldRunFor(BuildingBlockExecution execution); + + public void run(InfraActiveRequests request, BuildingBlockExecution execution); + + +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/listener/db/RequestsDbListenerRunner.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/listener/db/RequestsDbListenerRunner.java new file mode 100644 index 0000000000..68cda5c22b --- /dev/null +++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/listener/db/RequestsDbListenerRunner.java @@ -0,0 +1,65 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.so.bpmn.common.listener.db; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; +import javax.annotation.PostConstruct; +import org.onap.so.bpmn.common.BuildingBlockExecution; +import org.onap.so.bpmn.common.listener.ListenerRunner; +import org.onap.so.bpmn.common.listener.flowmanipulator.FlowManipulatorListenerRunner; +import org.onap.so.db.request.beans.InfraActiveRequests; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +@Component +public class RequestsDbListenerRunner extends ListenerRunner { + + + private static Logger logger = LoggerFactory.getLogger(FlowManipulatorListenerRunner.class); + + protected List<PostCompletionRequestsDbListener> postListeners; + + @PostConstruct + protected void init() { + + postListeners = + new ArrayList<>(Optional.ofNullable(context.getBeansOfType(PostCompletionRequestsDbListener.class)) + .orElse(new HashMap<>()).values()); + + } + + public void post(InfraActiveRequests request, BuildingBlockExecution execution) { + + List<PostCompletionRequestsDbListener> filtered = + filterListeners(postListeners, (item -> item.shouldRunFor(execution))); + + logger.info("Running post request db listeners:\n{}", + filtered.stream().map(item -> item.getClass().getName()).collect(Collectors.joining("\n"))); + filtered.forEach(item -> item.run(request, execution)); + + } + +} diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/resource/InstanceResourceList.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/resource/InstanceResourceList.java index 2b650e1eed..b1173bbf95 100644 --- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/resource/InstanceResourceList.java +++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/resource/InstanceResourceList.java @@ -24,16 +24,15 @@ import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import org.onap.so.bpmn.core.domain.GroupResource; -import org.onap.so.bpmn.core.domain.Resource; -import org.onap.so.bpmn.core.domain.ResourceType; -import org.onap.so.bpmn.core.domain.VnfResource; import java.lang.reflect.Type; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; +import org.apache.commons.lang3.StringUtils; +import org.onap.so.bpmn.core.domain.GroupResource; +import org.onap.so.bpmn.core.domain.Resource; +import org.onap.so.bpmn.core.domain.VnfResource; public class InstanceResourceList { @@ -41,72 +40,6 @@ public class InstanceResourceList { throw new IllegalStateException("Utility class"); } - private static Map<String, List<List<GroupResource>>> convertUUIReqTOStd(final JsonObject reqInputJsonObj, - List<Resource> seqResourceList) { - - Map<String, List<List<GroupResource>>> normalizedRequest = new HashMap<>(); - Resource lastVfProcessed = null; - for (Resource r : seqResourceList) { - - if (r.getResourceType() == ResourceType.VNF) { - String pk = getPrimaryKey(r); - - JsonElement vfNode = reqInputJsonObj.get(pk); - lastVfProcessed = r; - - // if the service property is type of array then it - // means it is a VF resource - if (vfNode instanceof JsonArray) { - - for (int i = 0; i < ((JsonArray) vfNode).size(); i++) { - List<List<GroupResource>> groupsList = normalizedRequest.get(pk); - if (groupsList == null) { - groupsList = new ArrayList<>(); - normalizedRequest.put(pk, groupsList); - } - - groupsList.add(new ArrayList<>()); - } - } - - } else if (r.getResourceType() == ResourceType.GROUP) { - String sk = getPrimaryKey(r); - - // if sk is empty that means it is not list type - if (sk.isEmpty()) { - List<List<GroupResource>> vfList = normalizedRequest.get(getPrimaryKey(lastVfProcessed)); - for (List<GroupResource> grpList : vfList) { - grpList.add((GroupResource) r); - } - continue; - } - - String pk = getPrimaryKey(lastVfProcessed); - JsonArray vfs = reqInputJsonObj.getAsJsonArray(pk); - - for (int i = 0; i < vfs.size(); i++) { - - JsonElement vfcsNode = vfs.get(i).getAsJsonObject().get(sk); - if (vfcsNode instanceof JsonArray) { - - List<GroupResource> groupResources = normalizedRequest.get(pk).get(i); - - if (groupResources == null) { - groupResources = new ArrayList<>(); - normalizedRequest.get(pk).add(i, groupResources); - } - - for (int j = 0; j < ((JsonArray) vfcsNode).size(); j++) { - groupResources.add((GroupResource) r); - } - } - } - - } - } - return normalizedRequest; - } - // this method returns key from resource input // e.g. {\"sdwansite_emails\" : \"[sdwansiteresource_list(PK), INDEX, sdwansite_emails]|default\", // ....} @@ -129,45 +62,87 @@ public class InstanceResourceList { return pkOpt.isPresent() ? pkOpt.get() : ""; } else { - // TODO: handle the case if VNF resource is not list - // e.g. { resourceInput return ""; } } - private static List<Resource> convertToInstanceResourceList(Map<String, List<List<GroupResource>>> normalizedReq, - List<Resource> seqResourceList) { - List<Resource> flatResourceList = new ArrayList<>(); - for (Resource r : seqResourceList) { - if (r.getResourceType() == ResourceType.VNF) { - String primaryKey = getPrimaryKey(r); - for (String pk : normalizedReq.keySet()) { - if (primaryKey.equalsIgnoreCase(pk)) { - - List<List<GroupResource>> vfs = normalizedReq.get(pk); + public static List<Resource> getInstanceResourceList(final VnfResource vnfResource, final String uuiRequest) { + List<Resource> sequencedResourceList = new ArrayList<Resource>(); + Gson gson = new Gson(); + JsonObject servJsonObject = gson.fromJson(uuiRequest, JsonObject.class); + JsonObject reqInputJsonObj = servJsonObject.getAsJsonObject("service").getAsJsonObject("parameters") + .getAsJsonObject("requestInputs"); - vfs.stream().forEach(e -> { - flatResourceList.add(r); - flatResourceList.addAll(e); - }); + String pk = getPrimaryKey(vnfResource); + // if pk is not empty that means it can contain list of VNF + if (!pk.isEmpty()) { + JsonElement vfNode = reqInputJsonObj.get(pk); + if (vfNode.isJsonArray()) { + // multiple instance of VNF + JsonArray vfNodeList = vfNode.getAsJsonArray(); + for (JsonElement vf : vfNodeList) { + JsonObject vfObj = vf.getAsJsonObject(); + + // Add VF first before adding groups + sequencedResourceList.add(vnfResource); + List<Resource> sequencedGroupResourceList = getGroupResourceInstanceList(vnfResource, vfObj); + if (!sequencedGroupResourceList.isEmpty()) { + sequencedResourceList.addAll(sequencedGroupResourceList); } } } + } else { + // if pk is empty that means it has only one VNF Node + // Add VF first before adding groups + sequencedResourceList.add(vnfResource); + // check the groups for this VNF and add into resource list + List<Resource> sequencedGroupResourceList = getGroupResourceInstanceList(vnfResource, reqInputJsonObj); + if (!sequencedGroupResourceList.isEmpty()) { + sequencedResourceList.addAll(sequencedGroupResourceList); + } } - return flatResourceList; - } - public static List<Resource> getInstanceResourceList(final List<Resource> seqResourceList, - final String uuiRequest) { + // In negative case consider only VNF resource only + if (sequencedResourceList.isEmpty()) { + sequencedResourceList.add(vnfResource); + } - Gson gson = new Gson(); - JsonObject servJsonObject = gson.fromJson(uuiRequest, JsonObject.class); - JsonObject reqInputJsonObj = servJsonObject.getAsJsonObject("service").getAsJsonObject("parameters") - .getAsJsonObject("requestInputs"); + return sequencedResourceList; + } - // this will convert UUI request to normalized form - Map<String, List<List<GroupResource>>> normalizedRequest = convertUUIReqTOStd(reqInputJsonObj, seqResourceList); - return convertToInstanceResourceList(normalizedRequest, seqResourceList); + private static List<Resource> getGroupResourceInstanceList(VnfResource vnfResource, JsonObject vfObj) { + List<Resource> sequencedResourceList = new ArrayList<Resource>(); + if (vnfResource.getGroupOrder() != null && !StringUtils.isEmpty(vnfResource.getGroupOrder())) { + String[] grpSequence = vnfResource.getGroupOrder().split(","); + for (String grpType : grpSequence) { + for (GroupResource gResource : vnfResource.getGroups()) { + if (StringUtils.containsIgnoreCase(gResource.getModelInfo().getModelName(), grpType)) { + // check the number of group instances from UUI to be added + String sk = getPrimaryKey(gResource); + + // if sk is empty that means it is not list type + // only one group / vnfc to be considered + if (sk.isEmpty()) { + sequencedResourceList.add(gResource); + } else { + // check the number of list size of VNFC of a group + JsonElement vfcNode = vfObj.get(sk); + if (vfcNode.isJsonArray()) { + JsonArray vfcList = vfcNode.getAsJsonArray(); + for (JsonElement vfc : vfcList) { + sequencedResourceList.add(gResource); + } + } else { + // consider only one vnfc/group if not an array + sequencedResourceList.add(gResource); + } + } + + } + } + } + } + return sequencedResourceList; } } diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/resource/ResourceRequestBuilder.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/resource/ResourceRequestBuilder.java index faa3d74dba..8d02fa3e4f 100644 --- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/resource/ResourceRequestBuilder.java +++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/resource/ResourceRequestBuilder.java @@ -113,7 +113,17 @@ public class ResourceRequestBuilder { if (resource.getResourceType() == ResourceType.VNF) { for (String eachResource : resourceList) { String resCusUuid = JsonUtils.getJsonValue(eachResource, "resourceCustomizationUuid"); - if ((null != resCusUuid) && resCusUuid.equals(resource.getModelInfo().getModelCustomizationUuid())) { + // in case of external api invocation customizatoin id is coming null + if (resCusUuid == null || resCusUuid.contains("null") || resCusUuid.isEmpty()) { + logger.info("resource resolved using model uuid"); + String uuid = (String) JsonUtils.getJsonValue(eachResource, "resourceUuid"); + if ((null != uuid) && uuid.equals(resource.getModelInfo().getModelUuid())) { + logger.info("found resource uuid" + uuid); + String resourceParameters = JsonUtils.getJsonValue(eachResource, "parameters"); + locationConstraints = JsonUtils.getJsonValue(resourceParameters, "locationConstraints"); + } + } else if (resCusUuid.equals(resource.getModelInfo().getModelCustomizationUuid())) { + logger.info("resource resolved using customization-id"); String resourceParameters = JsonUtils.getJsonValue(eachResource, "parameters"); locationConstraints = JsonUtils.getJsonValue(resourceParameters, "locationConstraints"); } @@ -122,8 +132,13 @@ public class ResourceRequestBuilder { Map<String, Object> uuiRequestInputs = null; if (JsonUtils.getJsonValue(uuiServiceParameters, "requestInputs") != null) { - uuiRequestInputs = - getJsonObject((String) JsonUtils.getJsonValue(uuiServiceParameters, "requestInputs"), Map.class); + String uuiRequestInputStr = JsonUtils.getJsonValue(uuiServiceParameters, "requestInputs"); + logger.info("resource input from UUI: " + uuiRequestInputStr); + if (uuiRequestInputStr == null || uuiRequestInputStr.isEmpty()) { + uuiRequestInputStr = "{}"; + } + + uuiRequestInputs = getJsonObject(uuiRequestInputStr, Map.class); } if (uuiRequestInputs == null) { diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupUtils.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupUtils.java index f8d5402260..dcb9e08d0b 100644 --- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupUtils.java +++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupUtils.java @@ -31,6 +31,7 @@ import java.util.Map; import java.util.Optional; import org.onap.aai.domain.yang.CloudRegion; import org.onap.aai.domain.yang.Configuration; +import org.onap.aai.domain.yang.Configurations; import org.onap.aai.domain.yang.GenericVnf; import org.onap.aai.domain.yang.GenericVnfs; import org.onap.aai.domain.yang.InstanceGroup; @@ -50,6 +51,7 @@ import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.MultipleObjectsFou import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.NoServiceInstanceFoundException; 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.AAIResultWrapper; import org.onap.so.client.aai.entities.uri.AAIResourceUri; import org.onap.so.client.aai.entities.uri.AAIUriFactory; @@ -575,4 +577,53 @@ public class BBInputSetupUtils { } return Optional.empty(); } + + public ServiceInstances getAAIServiceInstancesGloballyByName(String serviceInstanceName) { + + return injectionHelper.getAaiClient() + .get(ServiceInstances.class, AAIUriFactory.createNodesUri(AAIObjectPlurals.SERVICE_INSTANCE) + .queryParam("service-instance-name", serviceInstanceName)) + .orElseGet(() -> { + logger.debug("No Service Instance matched by name"); + return null; + }); + } + + public boolean existsAAINetworksGloballyByName(String networkName) { + + AAIResourceUri l3networkUri = + AAIUriFactory.createResourceUri(AAIObjectPlurals.L3_NETWORK).queryParam("network-name", networkName); + AAIResourcesClient aaiRC = injectionHelper.getAaiClient(); + return aaiRC.exists(l3networkUri); + } + + public GenericVnfs getAAIVnfsGloballyByName(String vnfName) { + + return injectionHelper.getAaiClient() + .get(GenericVnfs.class, + AAIUriFactory.createNodesUri(AAIObjectPlurals.GENERIC_VNF).queryParam("vnf-name", vnfName)) + .orElseGet(() -> { + logger.debug("No GenericVnfs matched by name"); + return null; + }); + } + + public Optional<Configuration> getRelatedConfigurationByNameFromServiceInstance(String serviceInstanceId, + String configurationName) throws Exception { + AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId); + uri.relatedTo(AAIObjectPlurals.CONFIGURATION).queryParam("configuration-name", configurationName); + Optional<Configurations> configurations = injectionHelper.getAaiClient().get(Configurations.class, uri); + Configuration configuration = null; + if (!configurations.isPresent()) { + logger.debug("No Configurations matched by name"); + return Optional.empty(); + } else { + if (configurations.get().getConfiguration().size() > 1) { + throw new Exception("Multiple Configurations Returned"); + } else { + configuration = configurations.get().getConfiguration().get(0); + } + return Optional.of(configuration); + } + } } diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/common/resource/InstnaceResourceListTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/common/resource/InstnaceResourceListTest.java index 3be67c965c..f3233f2350 100644 --- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/common/resource/InstnaceResourceListTest.java +++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/common/resource/InstnaceResourceListTest.java @@ -3,6 +3,7 @@ package org.onap.so.bpmn.common.resource; import org.junit.Assert; import org.junit.Test; import org.onap.so.bpmn.core.domain.GroupResource; +import org.onap.so.bpmn.core.domain.ModelInfo; import org.onap.so.bpmn.core.domain.Resource; import org.onap.so.bpmn.core.domain.ResourceType; import org.onap.so.bpmn.core.domain.VnfResource; @@ -23,15 +24,67 @@ public class InstnaceResourceListTest { String uuiRequest = new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "InstanceResourceList" + ".json"))); List<Resource> instanceResourceList = InstanceResourceList.getInstanceResourceList(createResourceSequence(), uuiRequest); - Assert.assertEquals(4, instanceResourceList.size()); + Assert.assertEquals(7, instanceResourceList.size()); Assert.assertEquals(ResourceType.VNF, instanceResourceList.get(0).getResourceType()); Assert.assertEquals(ResourceType.GROUP, instanceResourceList.get(1).getResourceType()); - Assert.assertEquals(ResourceType.VNF, instanceResourceList.get(2).getResourceType()); + Assert.assertEquals("device", instanceResourceList.get(1).getModelInfo().getModelName()); + Assert.assertEquals(ResourceType.GROUP, instanceResourceList.get(2).getResourceType()); + Assert.assertEquals("sitewan", instanceResourceList.get(2).getModelInfo().getModelName()); Assert.assertEquals(ResourceType.GROUP, instanceResourceList.get(3).getResourceType()); + Assert.assertEquals("sitewan", instanceResourceList.get(3).getModelInfo().getModelName()); + Assert.assertEquals(ResourceType.VNF, instanceResourceList.get(4).getResourceType()); + Assert.assertEquals(ResourceType.GROUP, instanceResourceList.get(5).getResourceType()); + Assert.assertEquals(ResourceType.GROUP, instanceResourceList.get(6).getResourceType()); } - private List<Resource> createResourceSequence() { - List<Resource> resourceList = new ArrayList<>(); + // Test when PK is empty + @Test + public void testSimpleVFResource() throws IOException { + String uuiRequest = new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "InstanceResourceList" + ".json"))); + VnfResource vnfResource = new VnfResource(); + vnfResource.setResourceInput("{\"a\":\"ipaddress|127.0.0.1\"}"); + List<Resource> instanceResourceList = InstanceResourceList.getInstanceResourceList(vnfResource, uuiRequest); + Assert.assertEquals(1, instanceResourceList.size()); + Assert.assertEquals(ResourceType.VNF, instanceResourceList.get(0).getResourceType()); + } + + // Test when PK is not empty and PK does not contain any groups + @Test + public void testVFWithEmptyGroupResource() throws IOException { + String uuiRequest = new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "InstanceResourceList" + ".json"))); + VnfResource vnfResource = new VnfResource(); + vnfResource.setResourceInput("{\"a\":\"[emptygroup_list,INDEX,name]\"}"); + List<Resource> instanceResourceList = InstanceResourceList.getInstanceResourceList(vnfResource, uuiRequest); + Assert.assertEquals(1, instanceResourceList.size()); + Assert.assertEquals(ResourceType.VNF, instanceResourceList.get(0).getResourceType()); + } + + // Test when PK is not empty and contains a group which SK is empty + @Test + public void testVFWithEmptyGroupKeyResource() throws IOException { + String uuiRequest = new String(Files.readAllBytes(Paths.get(RESOURCE_PATH + "InstanceResourceList" + ".json"))); + VnfResource vnfResource = new VnfResource(); + vnfResource.setResourceInput("{\"a\":\"[emptygroup_list,INDEX,name]\"}"); + + VnfcResource vnfcResource = new VnfcResource(); + vnfcResource.setResourceInput("{\"a\":\"test|default_value\"}"); + GroupResource groupResource = new GroupResource(); + groupResource.setVnfcs(Arrays.asList(vnfcResource)); + ModelInfo wanModel = new ModelInfo(); + wanModel.setModelName("wan"); + groupResource.setModelInfo(wanModel); + + vnfResource.setGroupOrder("wan"); + vnfResource.setGroups(Arrays.asList(groupResource)); + + List<Resource> instanceResourceList = InstanceResourceList.getInstanceResourceList(vnfResource, uuiRequest); + Assert.assertEquals(2, instanceResourceList.size()); + Assert.assertEquals(ResourceType.VNF, instanceResourceList.get(0).getResourceType()); + Assert.assertEquals(ResourceType.GROUP, instanceResourceList.get(1).getResourceType()); + Assert.assertEquals("wan", instanceResourceList.get(1).getModelInfo().getModelName()); + } + + private VnfResource createResourceSequence() { VnfResource vnfResource = new VnfResource(); vnfResource.setResourceInput("{\"a\":\"[sdwansiteresource_list,INDEX,sdwansiteresource_list]\"}"); @@ -40,7 +93,20 @@ public class InstnaceResourceListTest { GroupResource groupResource = new GroupResource(); groupResource.setVnfcs(Arrays.asList(vnfcResource)); + ModelInfo wanModel = new ModelInfo(); + wanModel.setModelName("sitewan"); + groupResource.setModelInfo(wanModel); + + VnfcResource vnfcDeviceResource = new VnfcResource(); + vnfcDeviceResource.setResourceInput("{\"a\":\"[sdwandevice_list,INDEX,test]\"}"); + GroupResource groupResource2 = new GroupResource(); + groupResource2.setVnfcs(Arrays.asList(vnfcDeviceResource)); + ModelInfo deviceModel = new ModelInfo(); + deviceModel.setModelName("device"); + groupResource2.setModelInfo(deviceModel); - return Arrays.asList(vnfResource, groupResource); + vnfResource.setGroupOrder("device,sitewan"); + vnfResource.setGroups(Arrays.asList(groupResource, groupResource2)); + return vnfResource; } } diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupUtilsTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupUtilsTest.java index 189947595a..7780837714 100644 --- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupUtilsTest.java +++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupUtilsTest.java @@ -47,6 +47,7 @@ import org.mockito.Mockito; import org.mockito.junit.MockitoJUnitRunner; import org.onap.aai.domain.yang.CloudRegion; import org.onap.aai.domain.yang.Configuration; +import org.onap.aai.domain.yang.Configurations; import org.onap.aai.domain.yang.GenericVnf; import org.onap.aai.domain.yang.GenericVnfs; import org.onap.aai.domain.yang.L3Network; @@ -865,4 +866,16 @@ public class BBInputSetupUtilsTest { assertEquals(expectedFlowsToExecute.size(), flowsToExecute.size()); } + @Test + public void getRelatedConfigurationByNameFromServiceInstanceTest() throws Exception { + Optional<Configurations> expected = Optional.of(new Configurations()); + Configuration configuration = new Configuration(); + configuration.setConfigurationId("id123"); + expected.get().getConfiguration().add(configuration); + doReturn(expected).when(MOCK_aaiResourcesClient).get(eq(Configurations.class), any(AAIResourceUri.class)); + Optional<Configuration> actual = + this.bbInputSetupUtils.getRelatedConfigurationByNameFromServiceInstance("id123", "name123"); + assertEquals(actual.get().getConfigurationId(), expected.get().getConfiguration().get(0).getConfigurationId()); + } + } diff --git a/bpmn/MSOCommonBPMN/src/test/resources/__files/InstanceResourceList/InstanceResourceList.json b/bpmn/MSOCommonBPMN/src/test/resources/__files/InstanceResourceList/InstanceResourceList.json index 0b3d9f0bbe..a111ae2646 100644 --- a/bpmn/MSOCommonBPMN/src/test/resources/__files/InstanceResourceList/InstanceResourceList.json +++ b/bpmn/MSOCommonBPMN/src/test/resources/__files/InstanceResourceList/InstanceResourceList.json @@ -67,6 +67,19 @@ } ], "requestInputs":{ + "emptygroup_list": [ + { + "topology": "hub_spoke", + "name": "defaultvpn", + "role":"Hub", + "portType":"GE", + "portSwitch":"layer3-port", + "vlanId":"", + "ipAddress":"192.168.10.1", + "deviceName":"vCPE", + "portNumer":"0/0/1" + } + ], "sdwanvpnresource_list":[ { "sdwanvpn_topology":"hub_spoke", @@ -117,6 +130,19 @@ "portNumber":"0/0/0", "ipMode":"DHCP", "publicIP":"119.3.7.113" + }, + { + "providerIpAddress":"", + "portType":"GE", + "inputBandwidth":"1200", + "ipAddress":"", + "name":"10001", + "transportNetworkName":"internet", + "outputBandwidth":"10001", + "deviceName":"vCPE", + "portNumber":"0/0/0", + "ipMode":"DHCP", + "publicIP":"119.3.7.114" } ], "sdwandevice_list":[ |