summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzm330 <zhangminyj@chinamobile.com>2019-07-29 15:19:40 +0800
committerzm330 <zhangminyj@chinamobile.com>2019-07-29 15:53:06 +0800
commitb05d98d452bff903411f4b1efcadc9003206f7f3 (patch)
tree7cd0199af8bb136931db0453cfd6ac6a6fa18c1d
parentf5a69be34850dc102c02514a8126e79f00226fa6 (diff)
repair vfcInstanceGroup order
Issue-ID: SO-2164 Change-Id: I827342692dc4e4241b22c6eb8dd455b2b9385fa8 Signed-off-by: zm330 <zhangminyj@chinamobile.com>
-rw-r--r--asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java39
-rw-r--r--asdc-controller/src/test/java/org/onap/so/asdc/installer/heat/ToscaResourceInstallerTest.java79
2 files changed, 102 insertions, 16 deletions
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java b/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java
index a08206b477..e4c95f6290 100644
--- a/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java
+++ b/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java
@@ -1087,9 +1087,9 @@ public class ToscaResourceInstaller {
tempGroupList.addAll(groupList);
for (Group group : groupList) {
+ boolean isAllExists = true;
ArrayList<NodeTemplate> members = group.getMemberNodes();
for (NodeTemplate memberNode : members) {
- boolean isAllExists = true;
RequirementAssignments requirements = iSdcCsarHelper.getRequirementsOf(memberNode);
if (requirements == null || requirements.getAll() == null || requirements.getAll().isEmpty()) {
continue;
@@ -1097,27 +1097,28 @@ public class ToscaResourceInstaller {
List<RequirementAssignment> rqaList = requirements.getAll();
for (RequirementAssignment rqa : rqaList) {
String name = rqa.getNodeTemplateName();
- for (NodeTemplate node : nodes) {
- if (name.equals(node.getName())) {
- break;
- }
+ Optional<NodeTemplate> findNode =
+ nodes.stream().filter(node -> node.getName().equals(name)).findFirst();
+ if (!findNode.isPresent()) {
+ isAllExists = false;
+ break;
}
-
- isAllExists = false;
- break;
}
-
- if (isAllExists) {
- strSequence.add(group.getName());
- tempGroupList.remove(group);
- nodes.addAll(group.getMemberNodes());
+ if (!isAllExists) {
+ break;
}
}
- if (!tempGroupList.isEmpty() && tempGroupList.size() < groupList.size()) {
- getVNFCGroupSequenceList(strSequence, tempGroupList, nodes, iSdcCsarHelper);
+ if (isAllExists) {
+ strSequence.add(group.getName());
+ tempGroupList.remove(group);
+ nodes.addAll(group.getMemberNodes());
}
}
+
+ if (tempGroupList.size() != 0 && tempGroupList.size() < groupList.size()) {
+ getVNFCGroupSequenceList(strSequence, tempGroupList, nodes, iSdcCsarHelper);
+ }
}
public void processWatchdog(String distributionId, String servideUUID, Optional<String> distributionNotification,
@@ -1896,7 +1897,13 @@ public class ToscaResourceInstaller {
vnfcCustomization
.setDescription(testNull(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION)));
vnfcCustomization.setResourceInput(getVnfcResourceInput(vfcTemplate, inputList));
- vfcInstanceGroupCustom.getVnfcCustomizations().add(vnfcCustomization);
+ List<VnfcCustomization> vnfcCustomizations = vfcInstanceGroupCustom.getVnfcCustomizations();
+
+ if (vnfcCustomizations == null) {
+ vnfcCustomizations = new ArrayList<>();
+ vfcInstanceGroupCustom.setVnfcCustomizations(vnfcCustomizations);
+ }
+ vnfcCustomizations.add(vnfcCustomization);
}
}
}
diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/installer/heat/ToscaResourceInstallerTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/installer/heat/ToscaResourceInstallerTest.java
index 115af3adaf..7534ea645a 100644
--- a/asdc-controller/src/test/java/org/onap/so/asdc/installer/heat/ToscaResourceInstallerTest.java
+++ b/asdc-controller/src/test/java/org/onap/so/asdc/installer/heat/ToscaResourceInstallerTest.java
@@ -32,6 +32,7 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@@ -51,6 +52,8 @@ import org.onap.sdc.tosca.parser.impl.SdcCsarHelperImpl;
import org.onap.sdc.tosca.parser.impl.SdcPropertyNames;
import org.onap.sdc.toscaparser.api.Group;
import org.onap.sdc.toscaparser.api.NodeTemplate;
+import org.onap.sdc.toscaparser.api.RequirementAssignment;
+import org.onap.sdc.toscaparser.api.RequirementAssignments;
import org.onap.sdc.toscaparser.api.elements.Metadata;
import org.onap.sdc.toscaparser.api.elements.StatefulEntityType;
import org.onap.sdc.utils.DistributionStatusEnum;
@@ -76,6 +79,7 @@ import org.onap.so.db.request.data.repository.WatchdogComponentDistributionStatu
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.util.ReflectionTestUtils;
import java.util.Optional;
+import java.util.stream.Collectors;
public class ToscaResourceInstallerTest extends BaseTest {
@Autowired
@@ -488,6 +492,81 @@ public class ToscaResourceInstallerTest extends BaseTest {
verify(vnrConfigCustom, times(1)).setConfigResourceCustomization(vrfConfigCustom);
}
+ @Test
+ public void testProcessVNFCGroupSequence() {
+ List<Group> groupList = new ArrayList<>();
+
+ Group group1 = mock(Group.class);
+ NodeTemplate node1 = mock(NodeTemplate.class);
+ List<NodeTemplate> nodeList1 = new ArrayList<>();
+ nodeList1.add(node1);
+ doReturn("VfcInstanceGroup..0").when(group1).getName();
+ doReturn(nodeList1).when(group1).getMemberNodes();
+ doReturn("deviceV3").when(node1).getName();
+
+ Group group2 = mock(Group.class);
+ NodeTemplate node2 = mock(NodeTemplate.class);
+ List<NodeTemplate> nodeList2 = new ArrayList<>();
+ nodeList2.add(node2);
+ doReturn("VfcInstanceGroup..1").when(group2).getName();
+ doReturn(nodeList2).when(group2).getMemberNodes();
+ RequirementAssignments requirements2 = mock(RequirementAssignments.class);
+ RequirementAssignment requirement2 = mock(RequirementAssignment.class);
+ List<RequirementAssignment> requirementCollection2 = new ArrayList<>();
+ requirementCollection2.add(requirement2);
+ doReturn(requirementCollection2).when(requirements2).getAll();
+ doReturn("deviceV3").when(requirement2).getNodeTemplateName();
+ doReturn("SiteV2").when(node2).getName();
+
+ Group group3 = mock(Group.class);
+ NodeTemplate node3 = mock(NodeTemplate.class);
+ List<NodeTemplate> nodeList3 = new ArrayList<>();
+ nodeList3.add(node3);
+ doReturn("VfcInstanceGroup..2").when(group3).getName();
+ doReturn(nodeList3).when(group3).getMemberNodes();
+ RequirementAssignments requirements3 = mock(RequirementAssignments.class);
+ RequirementAssignment requirement3 = mock(RequirementAssignment.class);
+ List<RequirementAssignment> requirementCollection3 = new ArrayList<>();
+ requirementCollection3.add(requirement3);
+ doReturn(requirementCollection3).when(requirements3).getAll();
+ doReturn("SiteV2").when(requirement3).getNodeTemplateName();
+ doReturn("siteWanV2").when(node3).getName();
+
+ groupList.add(group1);
+ groupList.add(group2);
+ groupList.add(group3);
+
+ doReturn(csarHelper).when(toscaResourceStructure).getSdcCsarHelper();
+ doReturn(null).when(csarHelper).getRequirementsOf(node1);
+ doReturn(requirements2).when(csarHelper).getRequirementsOf(node2);
+ doReturn(requirements3).when(csarHelper).getRequirementsOf(node3);
+
+ ToscaResourceInstaller installer = new ToscaResourceInstaller();
+ Method[] methods = installer.getClass().getDeclaredMethods();
+ Method testMethod = null;
+ for (Method method : methods) {
+ String name = method.getName();
+ if (name.equals("processVNFCGroupSequence")) {
+ method.setAccessible(true);
+ testMethod = method;
+ }
+ }
+
+ if (null != testMethod) {
+ try {
+ Object seqResult = testMethod.invoke(installer, toscaResourceStructure, groupList);
+ if (seqResult instanceof List) {
+ String resultStr = ((List<String>) seqResult).stream().collect(Collectors.joining(","));
+ assertEquals(((List<String>) seqResult).size(), 3);
+ }
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ }
+
+
class MockConstants {
public final static String MODEL_NAME = "VLAN Network Receptor Configuration";
public final static String MODEL_INVARIANT_UUID = "1608eef4-de53-4334-a8d2-ba79cab4bde0";