2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.ci.tests.utils;
23 import org.apache.commons.lang3.tuple.ImmutablePair;
24 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
25 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
26 import org.openecomp.sdc.be.model.*;
27 import org.openecomp.sdc.ci.tests.datatypes.ComponentInstanceReqDetails;
28 import org.openecomp.sdc.ci.tests.datatypes.ComponentReqDetails;
29 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
30 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
31 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
32 import org.openecomp.sdc.ci.tests.utils.rest.*;
33 import org.testng.Assert;
35 import java.io.IOException;
37 import java.util.Map.Entry;
38 import java.util.function.Function;
39 import java.util.stream.Collectors;
41 import static org.testng.AssertJUnit.*;
45 public static Map<String, List<CapabilityDefinition>> expectedContainerCapabilities;
46 public static Map<String, List<RequirementDefinition>> expectedContainerRequirements;
47 public static Map<String, RequirementDefinition> removedRequirements;
48 public static Map<String, ImmutablePair<Map<String, List<CapabilityDefinition>>, Map<String, List<RequirementDefinition>>>> expectedContInstReqCap;
50 public static void verifyVFReqCap(String componentId) throws Exception {
51 RestResponse restResponse = ResourceRestUtils.getResource(componentId);
52 Resource resource = ResponseParser.parseToObject(restResponse.getResponse(), Resource.class);
53 verifyReqCap(resource);
56 public static void verifyServiceReqCap(String componentId, User sdncDesignerDetails) throws Exception {
57 RestResponse restResponse = ServiceRestUtils.getService(componentId, sdncDesignerDetails);
58 Service service = ResponseParser.parseToObject(restResponse.getResponse(), Service.class);
59 verifyReqCap(service);
62 public static void verifyProductReqCap(String componentId, User sdncPsDetails1) throws Exception {
63 RestResponse restResponse = ProductRestUtils.getProduct(componentId, sdncPsDetails1.getUserId());
64 Product product = ResponseParser.parseToObject(restResponse.getResponse(), Product.class);
65 verifyReqCap(product);
68 public static void verifyReqCap(Component actualComponent) {
69 verifyContainerReqCap(actualComponent);
70 verifyCompInstReqCap(actualComponent);
73 public RestResponse changeServiceInstanceVersion(String componentUniqueId, String serviceInstanceToReplaceUniqueId,
74 String serviceUniqueId, User sdncModifierDetails, ComponentTypeEnum componentType, boolean isHighestLevel)
76 RestResponse changeResourceInstanceVersion = ProductRestUtils.changeServiceInstanceVersion(componentUniqueId,
77 serviceInstanceToReplaceUniqueId, serviceUniqueId, sdncModifierDetails, componentType);
78 if (changeResourceInstanceVersion.getErrorCode().equals(BaseRestUtils.STATUS_CODE_SUCCESS) && isHighestLevel) {
80 * // Add RI Capabilities and Requirements to expected MAP -->
81 * expectedVfCapabilities and expectedVfRequirements
83 * ComponentInstance componentInstance =
84 * ResponseParser.parseToObjectUsingMapper(
85 * changeResourceInstanceVersion.getResponse(),
86 * ComponentInstance.class);
87 * addCompInstReqCapToExpected(componentInstance, componentType);
90 return changeResourceInstanceVersion;
93 public static void updateExpectedReqCapAfterChangeLifecycleState(String oldContainerUniqueIdToReplace,
94 String newContainerUniqueId) {
96 // Update of container req/cap
98 Set<String> compInstKeysToChange = new HashSet<>();
100 for (String expKey : expectedContainerCapabilities.keySet()) {
101 List<CapabilityDefinition> expCapList = expectedContainerCapabilities.get(expKey);
102 for (CapabilityDefinition cap : expCapList) {
103 String ownerId = cap.getOwnerId();
105 if (ownerId.contains(oldContainerUniqueIdToReplace)) {
106 compInstKeysToChange.add(ownerId);
107 cap.setOwnerId(cap.getOwnerId().replaceAll(oldContainerUniqueIdToReplace, newContainerUniqueId));
112 for (String expKey : expectedContainerRequirements.keySet()) {
113 List<RequirementDefinition> expCapList = expectedContainerRequirements.get(expKey);
114 for (RequirementDefinition cap : expCapList) {
115 String ownerId = cap.getOwnerId();
116 if (ownerId.contains(oldContainerUniqueIdToReplace)) {
117 compInstKeysToChange.add(ownerId);
118 cap.setOwnerId(cap.getOwnerId().replaceAll(oldContainerUniqueIdToReplace, newContainerUniqueId));
123 // Update of internal comp instances req/cap
124 for (String oldKey : compInstKeysToChange) {
125 ImmutablePair<Map<String, List<CapabilityDefinition>>, Map<String, List<RequirementDefinition>>> immutablePair = expectedContInstReqCap
127 if (immutablePair != null) {
128 expectedContInstReqCap.remove(oldKey);
129 String newKey = oldKey.replaceAll(oldContainerUniqueIdToReplace, newContainerUniqueId);
130 expectedContInstReqCap.put(newKey, immutablePair);
135 private static void verifyCompInstReqCap(Component actualComponent) {
136 List<ComponentInstance> componentInstances = actualComponent.getComponentInstances();
137 if (componentInstances != null) {
138 assertEquals(expectedContInstReqCap.size(), componentInstances.size());
139 for (ComponentInstance compInst : componentInstances) {
140 String uniqueId = compInst.getUniqueId();
141 // System.out.println("Verifying req/cap of component instance
143 Map<String, List<RequirementDefinition>> actualCompInstReq = compInst.getRequirements();
144 if (actualCompInstReq == null) {
145 actualCompInstReq = new HashMap<>();
147 Map<String, List<CapabilityDefinition>> actualCompInstCap = compInst.getCapabilities();
148 if (actualCompInstCap == null) {
149 actualCompInstCap = new HashMap<>();
151 ImmutablePair<Map<String, List<CapabilityDefinition>>, Map<String, List<RequirementDefinition>>> expReqCap = expectedContInstReqCap
153 assertNotNull(expReqCap);
154 // System.out.println("expected instance requirements:
155 // "+expReqCap.right);
156 // System.out.println("expected instance capabilities:
157 // "+expReqCap.left);
158 // System.out.println("actual instance requirements:
159 // "+actualCompInstReq);
160 // System.out.println("actual instance capabilities:
161 // "+actualCompInstCap);
164 compareReqCapMaps(expReqCap.right, actualCompInstReq);
167 compareReqCapMaps(expReqCap.left, actualCompInstCap);
171 assertTrue(expectedContInstReqCap.isEmpty());
175 private static void verifyContainerReqCap(Component actualComponent) {
176 Map<String, List<RequirementDefinition>> actualContainerRequirements = actualComponent.getRequirements();
177 if (actualContainerRequirements == null) {
178 actualContainerRequirements = new HashMap<>();
180 Map<String, List<CapabilityDefinition>> actualContainerCapabilities = actualComponent.getCapabilities();
181 if (actualContainerCapabilities == null) {
182 actualContainerCapabilities = new HashMap<>();
184 // System.out.println("Verifying req/cap of container component "+
185 // actualComponent.getUniqueId());
186 // System.out.println("expected container requirements:
187 // "+expectedContainerRequirements);
188 // System.out.println("expected container capabilities:
189 // "+expectedContainerCapabilities);
190 // System.out.println("actual container requirements:
191 // "+actualContainerRequirements);
192 // System.out.println("actual container capabilities:
193 // "+actualContainerCapabilities);
196 compareReqCapMaps(expectedContainerRequirements, actualContainerRequirements);
199 compareReqCapMaps(expectedContainerCapabilities, actualContainerCapabilities);
202 private static <T> void compareReqCapMaps(Map<String, List<T>> expectedMap, Map<String, List<T>> actualMap) {
203 assertEquals(expectedMap.size(), actualMap.size());
204 for (String expKey : expectedMap.keySet()) {
205 List<?> expCapList = expectedMap.get(expKey);
206 List<?> actCapList = actualMap.get(expKey);
207 assertEquals(expCapList.size(), actCapList.size());
208 assertEquals(new HashSet<>(expCapList), new HashSet<>(actCapList));
212 public static void addCompInstReqCapToExpected(ComponentInstance componentInstance,
213 ComponentTypeEnum containerComponentType, User sdncDesignerDetails) throws Exception {
215 sdncDesignerDetails = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
216 String uniqueId = componentInstance.getUniqueId();
217 String name = componentInstance.getName();
218 String originComponentId = componentInstance.getComponentUid();
219 RestResponse getResponse = null;
220 ComponentTypeEnum compInstType = getCompInstTypeByContainerType(containerComponentType);
221 Component component = null;
222 if (compInstType == ComponentTypeEnum.RESOURCE) {
223 getResponse = ResourceRestUtils.getResource(sdncDesignerDetails, originComponentId);
224 ResourceRestUtils.checkSuccess(getResponse);
225 component = ResponseParser.parseToObjectUsingMapper(getResponse.getResponse(), Resource.class);
226 } else if (compInstType == ComponentTypeEnum.SERVICE) {
227 getResponse = ServiceRestUtils.getService(originComponentId, sdncDesignerDetails);
228 ResourceRestUtils.checkSuccess(getResponse);
229 component = ResponseParser.parseToObjectUsingMapper(getResponse.getResponse(), Service.class);
231 Assert.fail("Unsupported type - " + containerComponentType);
234 Map<String, List<RequirementDefinition>> resourceRequirements = component.getRequirements();
235 if (resourceRequirements == null) {
236 resourceRequirements = new HashMap<>();
239 Function<Entry<String, List<RequirementDefinition>>, List<RequirementDefinition>> requirementDefinitionMapper = e -> new ArrayList<>(e.getValue().stream().map(item -> new RequirementDefinition(item)).collect(Collectors.toList()));
240 Map<String, List<RequirementDefinition>> reqCopy = resourceRequirements.entrySet().stream().collect(Collectors.toMap(e -> e.getKey(), requirementDefinitionMapper));
242 Map<String, List<CapabilityDefinition>> resourceCapabilities = component.getCapabilities();
243 if (resourceCapabilities == null) {
244 resourceCapabilities = new HashMap<>();
247 Function<Entry<String, List<CapabilityDefinition>>, List<CapabilityDefinition>> capabilityDefinitionMapper = e -> new ArrayList<>(e.getValue().stream().map(item -> new CapabilityDefinition(item)).collect(Collectors.toList()));
248 Map<String, List<CapabilityDefinition>> capCopy = resourceCapabilities.entrySet().stream().collect(Collectors.toMap(e -> e.getKey(), capabilityDefinitionMapper));
250 setupContainerExpectedReqCap(uniqueId, name, resourceRequirements, resourceCapabilities);
251 if (component.getComponentType().equals(ComponentTypeEnum.RESOURCE)
252 && ((Resource) component).getResourceType() != ResourceTypeEnum.VF) {
253 setupConstInstExpectedReqCap(uniqueId, name, reqCopy, capCopy);
256 // adding entry for expected componentInstance
257 ImmutablePair<Map<String, List<CapabilityDefinition>>, Map<String, List<RequirementDefinition>>> compInstReqCapPair = new ImmutablePair<Map<String, List<CapabilityDefinition>>, Map<String, List<RequirementDefinition>>>(
259 expectedContInstReqCap.put(uniqueId, compInstReqCapPair);
262 private static void setupContainerExpectedReqCap(String uniqueId, String name,
263 Map<String, List<RequirementDefinition>> componentRequirements,
264 Map<String, List<CapabilityDefinition>> componentCapabilities) {
265 for (Entry<String, List<RequirementDefinition>> resReq : componentRequirements.entrySet()) {
266 List<RequirementDefinition> reqListToAdd = resReq.getValue();
267 for (RequirementDefinition requirementDefinition : reqListToAdd) {
268 requirementDefinition.setOwnerId(uniqueId);
269 requirementDefinition.setOwnerName(name);
271 List<RequirementDefinition> expectedReqList = expectedContainerRequirements.get(resReq.getKey());
272 if (expectedReqList == null) {
273 expectedReqList = reqListToAdd;
275 expectedReqList.addAll(reqListToAdd);
277 expectedContainerRequirements.put(resReq.getKey(), expectedReqList);
280 for (Entry<String, List<CapabilityDefinition>> resCap : componentCapabilities.entrySet()) {
281 List<CapabilityDefinition> capListToAdd = resCap.getValue();
282 for (CapabilityDefinition capDefinition : capListToAdd) {
283 capDefinition.setOwnerId(uniqueId);
284 capDefinition.setOwnerName(name);
286 List<CapabilityDefinition> expectedCapList = expectedContainerCapabilities.get(resCap.getKey());
287 if (expectedCapList == null) {
288 expectedCapList = capListToAdd;
290 expectedCapList.addAll(capListToAdd);
292 expectedContainerCapabilities.put(resCap.getKey(), expectedCapList);
296 private static void setupConstInstExpectedReqCap(String uniqueId, String name,
297 Map<String, List<RequirementDefinition>> componentRequirements,
298 Map<String, List<CapabilityDefinition>> componentCapabilities) {
299 for (Entry<String, List<RequirementDefinition>> resReq : componentRequirements.entrySet()) {
300 List<RequirementDefinition> reqListToAdd = resReq.getValue();
301 for (RequirementDefinition requirementDefinition : reqListToAdd) {
302 requirementDefinition.setOwnerId(uniqueId);
303 requirementDefinition.setOwnerName(name);
307 for (Entry<String, List<CapabilityDefinition>> resCap : componentCapabilities.entrySet()) {
308 List<CapabilityDefinition> capListToAdd = resCap.getValue();
309 for (CapabilityDefinition capDefinition : capListToAdd) {
310 capDefinition.setOwnerId(uniqueId);
311 capDefinition.setOwnerName(name);
316 private static ComponentTypeEnum getCompInstTypeByContainerType(ComponentTypeEnum componentType) {
317 switch (componentType) {
319 return ComponentTypeEnum.RESOURCE;
321 return ComponentTypeEnum.RESOURCE;
323 return ComponentTypeEnum.SERVICE;
330 public static void deleteCompInstReqCapFromExpected(String componentInstanceId) {
331 List<String> entriesRequirementsToRemove = new ArrayList<>();
332 List<String> entriesCapabilitiesToRemove = new ArrayList<>();
333 for (Entry<String, List<RequirementDefinition>> reqEntry : expectedContainerRequirements.entrySet()) {
334 List<RequirementDefinition> reqList = reqEntry.getValue();
335 List<RequirementDefinition> reqListToDelete = new ArrayList<>();
336 for (RequirementDefinition requirementDefinition : reqList) {
337 if (requirementDefinition.getOwnerId().equals(componentInstanceId)) {
338 reqListToDelete.add(requirementDefinition);
341 reqList.removeAll(reqListToDelete);
342 if (reqList.isEmpty()) {
343 entriesRequirementsToRemove.add(reqEntry.getKey());
347 for (String ekey : entriesRequirementsToRemove) {
348 expectedContainerRequirements.remove(ekey);
351 for (Entry<String, List<CapabilityDefinition>> capEntry : expectedContainerCapabilities.entrySet()) {
352 List<CapabilityDefinition> capList = capEntry.getValue();
353 List<CapabilityDefinition> capListToDelete = new ArrayList<>();
354 for (CapabilityDefinition capabilityDefinition : capList) {
355 if (capabilityDefinition.getOwnerId().equals(componentInstanceId)) {
356 capListToDelete.add(capabilityDefinition);
359 capList.removeAll(capListToDelete);
360 if (capList.isEmpty()) {
361 entriesCapabilitiesToRemove.add(capEntry.getKey());
364 for (String ekey : entriesCapabilitiesToRemove) {
365 expectedContainerCapabilities.remove(ekey);
368 expectedContInstReqCap.remove(componentInstanceId);
372 // Automatically updates the expected req/cap of the container
373 public static RestResponse createAtomicInstanceForVF(Resource containerDetails, Resource compInstOriginDetails,
374 User modifier) throws Exception {
375 return createComponentInstance(containerDetails, compInstOriginDetails, modifier, ComponentTypeEnum.RESOURCE,
379 // Automatically updates the expected req/cap of the container
380 public static RestResponse createAtomicInstanceForService(Service containerDetails, Resource compInstOriginDetails,
381 User modifier) throws Exception {
382 return createComponentInstance(containerDetails, compInstOriginDetails, modifier, ComponentTypeEnum.SERVICE,
386 // Automatically updates the expected req/cap of the container
387 public static RestResponse createVFInstance(Service containerDetails, Resource compInstOriginDetails, User modifier)
389 return createComponentInstance(containerDetails, compInstOriginDetails, modifier, ComponentTypeEnum.SERVICE,
393 // Automatically updates the expected req/cap of the container
394 public static RestResponse createServiceInstance(Product containerDetails, Service compInstOriginDetails,
395 User modifier) throws Exception {
396 return createComponentInstance(containerDetails, compInstOriginDetails, modifier, ComponentTypeEnum.PRODUCT,
400 // Automatically updates the expected req/cap of the container
401 public static RestResponse deleteAtomicInstanceForVF(String compInstUniqueId, Resource containerDetails,
402 User modifier) throws IOException, Exception {
403 return deleteComponentInstance(compInstUniqueId, containerDetails, modifier, ComponentTypeEnum.RESOURCE, true);
406 // Automatically updates the expected req/cap of the container
407 public static RestResponse deleteAtomicInstanceForService(String compInstUniqueId, Service containerDetails,
408 User modifier) throws IOException, Exception {
409 return deleteComponentInstance(compInstUniqueId, containerDetails, modifier, ComponentTypeEnum.SERVICE, true);
412 // Automatically updates the expected req/cap of the container
413 public static RestResponse deleteVFInstance(String compInstUniqueId, Service containerDetails, User modifier)
414 throws IOException, Exception {
415 return deleteComponentInstance(compInstUniqueId, containerDetails, modifier, ComponentTypeEnum.SERVICE, true);
419 // Automatically updates the expected req/cap of the container
420 public static RestResponse deleteServiceInstance(String compInstUniqueId, Product containerDetails, User modifier)
421 throws IOException, Exception {
422 return deleteComponentInstance(compInstUniqueId, containerDetails, modifier, ComponentTypeEnum.PRODUCT, true);
425 // Setup of lower components - Doesn't affect req/cap of the container (for
426 // example, setup of VF for testing a Product)
427 public static RestResponse createAtomicInstanceForVFDuringSetup(Resource containerDetails,
428 Resource compInstOriginDetails, User modifier) throws Exception {
429 return createComponentInstance(containerDetails, compInstOriginDetails, modifier, ComponentTypeEnum.RESOURCE,
433 // Setup of lower components - Doesn't affect req/cap of the container (for
434 // example, setup of VF for testing a Product)
435 public static RestResponse createAtomicInstanceForServiceDuringSetup(Service containerDetails,
436 Resource compInstOriginDetails, User modifier) throws Exception {
437 return createComponentInstance(containerDetails, compInstOriginDetails, modifier, ComponentTypeEnum.SERVICE,
441 // Setup of lower components - Doesn't affect req/cap of the container (for
442 // example, setup of VF for testing a Product)
443 public static RestResponse createVFInstanceDuringSetup(Service containerDetails, Resource compInstOriginDetails,
444 User modifier) throws Exception {
445 return createComponentInstance(containerDetails, compInstOriginDetails, modifier, ComponentTypeEnum.SERVICE,
449 // Setup of lower components - Doesn't affect req/cap of the container (for
450 // example, setup of VF for testing a Product)
451 public static RestResponse createServiceInstanceDuringSetup(Product containerDetails, Service compInstOriginDetails,
452 User modifier) throws Exception {
453 return createComponentInstance(containerDetails, compInstOriginDetails, modifier, ComponentTypeEnum.PRODUCT,
457 // Setup of lower components - Doesn't affect req/cap of the container (for
458 // example, setup of VF for testing a Product)
459 public static RestResponse deleteAtomicInstanceForVFDuringSetup(String compInstUniqueId, Resource containerDetails,
460 User modifier) throws IOException, Exception {
461 return deleteComponentInstance(compInstUniqueId, containerDetails, modifier, ComponentTypeEnum.RESOURCE, false);
464 // Setup of lower components - Doesn't affect req/cap of the container (for
465 // example, setup of VF for testing a Product)
466 public static RestResponse deleteAtomicInstanceForServiceDuringSetup(String compInstUniqueId,
467 Service containerDetails, User modifier) throws IOException, Exception {
468 return deleteComponentInstance(compInstUniqueId, containerDetails, modifier, ComponentTypeEnum.SERVICE, false);
471 // Setup of lower components - Doesn't affect req/cap of the container (for
472 // example, setup of VF for testing a Product)
473 public static RestResponse deleteVFInstanceDuringSetup(String compInstUniqueId, Service containerDetails,
474 User modifier) throws IOException, Exception {
475 return deleteComponentInstance(compInstUniqueId, containerDetails, modifier, ComponentTypeEnum.SERVICE, false);
479 // Setup of lower components - Doesn't affect req/cap of the container (for
480 // example, setup of VF for testing a Product)
481 public static RestResponse deleteServiceInstanceDuringSetup(String compInstUniqueId, Product containerDetails,
482 User modifier) throws IOException, Exception {
483 return deleteComponentInstance(compInstUniqueId, containerDetails, modifier, ComponentTypeEnum.PRODUCT, false);
486 public static Component getComponentAndValidateRIs(Component componentDetails, int numberOfRIs,
487 int numberOfRelations, User sdncAdminDetails) throws IOException, Exception {
489 RestResponse getResponse = null;
490 Component component = null;
491 if (componentDetails instanceof Resource) {
492 getResponse = ResourceRestUtils.getResource(sdncAdminDetails, componentDetails.getUniqueId());
493 component = ResponseParser.parseToObjectUsingMapper(getResponse.getResponse(), Resource.class);
494 } else if (componentDetails instanceof Service) {
495 getResponse = ServiceRestUtils.getService((componentDetails.getUniqueId()), sdncAdminDetails);
496 component = ResponseParser.parseToObjectUsingMapper(getResponse.getResponse(), Service.class);
497 } else if (componentDetails instanceof Product) {
498 getResponse = ProductRestUtils.getProduct(componentDetails.getUniqueId(), sdncAdminDetails.getUserId());
499 component = ResponseParser.parseToObjectUsingMapper(getResponse.getResponse(), Product.class);
501 Assert.fail("Unsupported type of componentDetails - " + componentDetails.getClass().getSimpleName());
503 ResourceRestUtils.checkSuccess(getResponse);
504 int numberOfActualRIs = component.getComponentInstances() != null ? component.getComponentInstances().size()
506 int numberOfActualRelations = component.getComponentInstancesRelations() != null
507 ? component.getComponentInstancesRelations().size() : 0;
508 assertEquals("Check number of RIs meet the expected number", numberOfRIs, numberOfActualRIs);
509 assertEquals("Check number of RI relations meet the expected number", numberOfRelations,
510 numberOfActualRelations);
511 verifyReqCap(component);
516 public static void getComponentAndValidateRIsAfterChangeLifecycleState(String oldComponentUniqueIdToReplace,
517 Component componentDetails, int numOfRIs, int numOfRelations, User sdncAdminDetails)
518 throws IOException, Exception {
519 updateExpectedReqCapAfterChangeLifecycleState(oldComponentUniqueIdToReplace, componentDetails.getUniqueId());
520 getComponentAndValidateRIs(componentDetails, numOfRIs, numOfRelations, sdncAdminDetails);
523 private static RestResponse createComponentInstance(Component containerDetails, Component compInstOriginDetails,
524 User modifier, ComponentTypeEnum containerComponentTypeEnum, boolean isHighestLevel)
525 throws IOException, Exception {
526 ComponentInstanceReqDetails resourceInstanceReqDetails = ElementFactory
527 .getComponentInstance(compInstOriginDetails);
528 RestResponse createResourceInstanceResponse = ComponentInstanceRestUtils.createComponentInstance(
529 resourceInstanceReqDetails, modifier, containerDetails.getUniqueId(), containerComponentTypeEnum);
530 if (createResourceInstanceResponse.getErrorCode().equals(BaseRestUtils.STATUS_CODE_CREATED) && isHighestLevel) {
531 // Add RI Capabilities and Requirements to expected MAP -->
532 // expectedVfCapabilities and expectedVfRequirements
533 ComponentInstance componentInstance = ResponseParser
534 .parseToObjectUsingMapper(createResourceInstanceResponse.getResponse(), ComponentInstance.class);
535 addCompInstReqCapToExpected(componentInstance, containerComponentTypeEnum, modifier);
537 return createResourceInstanceResponse;
540 private static RestResponse deleteComponentInstance(String compInstUniqueId, Component containerDetails,
541 User modifier, ComponentTypeEnum componentTypeEnum, boolean isHighestLevel) throws Exception {
542 RestResponse deleteResourceInstanceResponse = ComponentInstanceRestUtils.deleteComponentInstance(modifier,
543 containerDetails.getUniqueId(), compInstUniqueId, componentTypeEnum);
544 if (deleteResourceInstanceResponse.getErrorCode().equals(BaseRestUtils.STATUS_CODE_DELETE) && isHighestLevel) {
545 deleteCompInstReqCapFromExpected(compInstUniqueId);
547 return deleteResourceInstanceResponse;
550 public static RestResponse associateComponentInstancesForService(RequirementCapabilityRelDef requirementDef,
551 ComponentReqDetails containerDetails, User user) throws IOException {
553 RestResponse associateInstances = ComponentInstanceRestUtils.associateInstances(requirementDef, user,
554 containerDetails.getUniqueId(), ComponentTypeEnum.SERVICE);
555 ResourceRestUtils.checkSuccess(associateInstances);
556 deleteAssociatedFromExpected(requirementDef);
557 return associateInstances;
560 private static void deleteAssociatedFromExpected(RequirementCapabilityRelDef requirementDef) {
561 // removing from requirements
562 RelationshipInfo relationship = requirementDef.getRelationships().get(0).getRelation();
563 String type = relationship.getRelationship().getType();
564 String fromId = requirementDef.getFromNode();
565 List<RequirementDefinition> reqList = expectedContainerRequirements.get(type);
566 RequirementDefinition toDelete = null;
567 if (reqList != null) {
568 for (RequirementDefinition reqDef : reqList) {
569 if (reqDef.getOwnerId().equals(fromId)) {
573 if (toDelete != null) {
574 reqList.remove(toDelete);
575 if (reqList.isEmpty()) {
576 expectedContainerRequirements.remove(type);
578 removedRequirements.put(toDelete.getCapability() + " " + toDelete.getOwnerId(), toDelete);
583 public static void dissociateComponentInstancesForService(RequirementCapabilityRelDef requirementDef,
584 ComponentReqDetails containerDetails, User user) throws IOException {
586 RestResponse dissociateInstances = ComponentInstanceRestUtils.dissociateInstances(requirementDef, user,
587 containerDetails.getUniqueId(), ComponentTypeEnum.SERVICE);
588 ResourceRestUtils.checkSuccess(dissociateInstances);
589 addDissociatedToExpected(requirementDef);
592 private static void addDissociatedToExpected(RequirementCapabilityRelDef requirementDef) {
593 // adding to requirements
594 RelationshipInfo relationship = requirementDef.getRelationships().get(0).getRelation();
595 String type = relationship.getRelationship().getType();
596 String fromId = requirementDef.getFromNode();
597 String key = type + " " + fromId;
598 RequirementDefinition requirementDefinition = removedRequirements.get(key);
599 if (requirementDefinition != null) {
600 List<RequirementDefinition> reqList = expectedContainerRequirements.get(type);
601 if (reqList == null) {
602 reqList = new ArrayList<>();
603 expectedContainerRequirements.put(type, reqList);
605 reqList.add(requirementDefinition);