From 3274debd73e079c795eff3b6536018efc078794c Mon Sep 17 00:00:00 2001 From: KrupaNagabhushan Date: Mon, 23 May 2022 17:20:05 +0100 Subject: [PATCH] Maintain VFC external capabilities and requirements When a VFC is added to a component and capabilities or requirement are set as external on that VFC instance those values should be maintained if the VFC instance version is changed Issue-ID: SDC-4016 Signed-off-by: KrupaNagabhushan Change-Id: Idc86a6b5cae0cf75d8f4c37fafb01f1572908be7 --- .../impl/ComponentInstanceBusinessLogic.java | 37 ++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogic.java index 7ea00b1d46..392020be4d 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogic.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentInstanceBusinessLogic.java @@ -2955,6 +2955,7 @@ public class ComponentInstanceBusinessLogic extends BaseBusinessLogic { newComponentInstance.setInstanceCount(resResourceInfo.getInstanceCount()); newComponentInstance.setMaxOccurrences(resResourceInfo.getMaxOccurrences()); newComponentInstance.setMinOccurrences(resResourceInfo.getMinOccurrences()); + checkForExternalReqAndCapabilities(origComponent, resResourceInfo); ComponentInstance updatedComponentInstance = createComponentInstanceOnGraph(containerComponent, origComponent, newComponentInstance, user); @@ -2994,6 +2995,42 @@ public class ComponentInstanceBusinessLogic extends BaseBusinessLogic { } } + private void checkForExternalReqAndCapabilities(Component component, ComponentInstance resResourceInfo) { + Map> requirementsMap = resResourceInfo.getRequirements(); + Map> externalRequirementsMap = new HashMap<>(); + List externalRequirementList = new ArrayList<>(); + if (requirementsMap != null && !requirementsMap.isEmpty()) { + requirementsMap.forEach((type, requirementDefinitions) -> { + if (requirementDefinitions != null && !requirementDefinitions.isEmpty()) { + for (final RequirementDefinition requirementDefinition : requirementDefinitions) { + if (requirementDefinition.isExternal()) { + externalRequirementList.add(requirementDefinition); + externalRequirementsMap.put(type, externalRequirementList); + } + } + } + }); + } + + Map> capabilitiesMap = resResourceInfo.getCapabilities(); + Map> externalCapabilitiesMap = new HashMap<>(); + List externalCapabilitiesList = new ArrayList<>(); + if (capabilitiesMap != null && !capabilitiesMap.isEmpty()) { + capabilitiesMap.forEach((type, capabilityDefinitions) -> { + if (capabilityDefinitions != null && !capabilityDefinitions.isEmpty()) { + for (final CapabilityDefinition capabilityDefinition : capabilityDefinitions) { + if (capabilityDefinition.isExternal()) { + externalCapabilitiesList.add(capabilityDefinition); + externalCapabilitiesMap.put(type, externalCapabilitiesList); + } + } + } + }); + } + component.setCapabilities(externalCapabilitiesMap); + component.setRequirements(externalRequirementsMap); + } + private boolean isFillProxyRes(StorageOperationStatus fillProxyRes) { if (fillProxyRes != StorageOperationStatus.OK) { log.debug("Failed to fill service proxy resource data with data from service, error {}", fillProxyRes); -- 2.16.6