diff options
author | 2019-03-18 11:55:56 +0530 | |
---|---|---|
committer | 2019-03-18 12:18:42 +0530 | |
commit | 2ca2fc5c0da1eb862fcd79d1f9345aa89e62b396 (patch) | |
tree | 15d2cf2c7d6e9024430f735addf9e947d2814830 /catalog-be/src/main/java/org/openecomp/sdc/be/components/merge | |
parent | 532b6da80ebd6977aa27300ab3cbe7b21d88609a (diff) |
Service Consumption BE
1. Service consumption feature
backend implementation
2. Operation output bug fix for
delete operation not allowed for
mapped operation output
Change-Id: Ib2554eed4f940b003955263a0c8bf795a23cac9a
Issue-ID: SDC-1990
Signed-off-by: ojasdubey <ojas.dubey@amdocs.com>
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/components/merge')
4 files changed, 86 insertions, 1 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceInputsRedeclareHandler.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceInputsRedeclareHandler.java index a60b0f0773..c09fb91d1f 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceInputsRedeclareHandler.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceInputsRedeclareHandler.java @@ -21,6 +21,7 @@ import static java.util.Collections.singletonMap; import static java.util.stream.Collectors.toList; import static org.apache.commons.collections.CollectionUtils.isEmpty; import static org.openecomp.sdc.be.dao.utils.MapUtil.toMap; +import static org.openecomp.sdc.be.utils.PropertyDefinitionUtils.resolveGetInputProperties; @org.springframework.stereotype.Component public class ComponentInstanceInputsRedeclareHandler { @@ -43,7 +44,8 @@ public class ComponentInstanceInputsRedeclareHandler { Map<String, List<PropertyDataDefinition>> allPropertiesForInstance = getAllGetPropertiesForInstance(container, newInstanceId); List<InputDefinition> previouslyDeclaredInputs = declaredInputsResolver.getPreviouslyDeclaredInputsToMerge(oldInputs, container, allPropertiesForInstance); inputsValuesMergingBusinessLogic.mergeComponentInputs(oldInputs, previouslyDeclaredInputs); - updateInputsAnnotations(allPropertiesForInstance.get(newInstanceId), newInstanceOriginType, previouslyDeclaredInputs); + Map<String, List<PropertyDataDefinition>> getInputProperties = resolveGetInputProperties(allPropertiesForInstance); + updateInputsAnnotations(getInputProperties.get(newInstanceId), newInstanceOriginType, previouslyDeclaredInputs); return updateInputs(container.getUniqueId(), previouslyDeclaredInputs); } diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceInterfacesMerge.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceInterfacesMerge.java new file mode 100644 index 0000000000..60e60b0408 --- /dev/null +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceInterfacesMerge.java @@ -0,0 +1,72 @@ +package org.openecomp.sdc.be.components.merge.instance; + +import fj.data.Either; +import java.util.List; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.MapUtils; +import org.openecomp.sdc.be.dao.api.ActionStatus; +import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition; +import org.openecomp.sdc.be.datatypes.elements.OperationInputDefinition; +import org.openecomp.sdc.be.impl.ComponentsUtils; +import org.openecomp.sdc.be.model.Component; +import org.openecomp.sdc.be.model.ComponentInstance; +import org.openecomp.sdc.be.model.ComponentInstanceInterface; +import org.openecomp.sdc.be.model.User; +import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade; +import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; +import org.openecomp.sdc.exception.ResponseFormat; +import org.springframework.beans.factory.annotation.Autowired; + +@org.springframework.stereotype.Component("ComponentInstanceInterfacesMerge") +public class ComponentInstanceInterfacesMerge implements ComponentInstanceMergeInterface { + + @Autowired + private ComponentsUtils componentsUtils; + + @Autowired + private ToscaOperationFacade toscaOperationFacade; + + @Override + public void saveDataBeforeMerge(DataForMergeHolder dataHolder, Component containerComponent, ComponentInstance currentResourceInstance, Component originComponent) { + dataHolder.setOrigInstanceNode(originComponent); + dataHolder.setOrigComponentInstanceInterfaces(containerComponent.safeGetComponentInstanceInterfaces(currentResourceInstance.getUniqueId())); + } + + @Override + public Either<Component, ResponseFormat> mergeDataAfterCreate(User user, DataForMergeHolder dataHolder, Component updatedContainerComponent, String newInstanceId) { + List<ComponentInstanceInterface> origInstanceInterfaces = dataHolder.getOrigComponentInstanceInterfaces(); + ActionStatus mergeStatus = mergeComponentInstanceInterfaces(updatedContainerComponent, newInstanceId, origInstanceInterfaces); + return Either.iif(!ActionStatus.OK.equals(mergeStatus), () -> componentsUtils.getResponseFormat(mergeStatus), () -> updatedContainerComponent); + } + + private ActionStatus mergeComponentInstanceInterfaces(Component currentComponent, String instanceId, List<ComponentInstanceInterface> prevInstanceInterfaces) { + if (CollectionUtils.isEmpty(prevInstanceInterfaces) || MapUtils.isEmpty(currentComponent.getComponentInstancesInterfaces())) { + return ActionStatus.OK; + } + + if(CollectionUtils.isEmpty(currentComponent.getComponentInstancesInterfaces().get(instanceId))){ + return ActionStatus.OK; + } + + currentComponent.getComponentInstancesInterfaces().get(instanceId).stream() + .forEach(newInterfaceDef -> newInterfaceDef.getOperationsMap().values() + .forEach(newOperationDef -> prevInstanceInterfaces.stream().filter(in -> in.getUniqueId().equals(newInterfaceDef.getUniqueId())) + .forEach(prevInterfaceDef -> prevInterfaceDef.getOperationsMap().values().stream().filter(in1 -> in1.getUniqueId().equals(newOperationDef.getUniqueId())) + .forEach(oldOperationDef -> mergeOperationInputDefinitions(oldOperationDef.getInputs(), newOperationDef.getInputs()))))); + + StorageOperationStatus updateStatus = toscaOperationFacade.updateComponentInstanceInterfaces(currentComponent, instanceId); + return componentsUtils.convertFromStorageResponse(updateStatus); + } + + + private void mergeOperationInputDefinitions(ListDataDefinition<OperationInputDefinition> origInputs, ListDataDefinition<OperationInputDefinition> newInputs){ + newInputs.getListToscaDataDefinition() + .forEach(inp -> origInputs.getListToscaDataDefinition().stream().filter(in -> in.getInputId().equals(inp.getInputId())) + .forEach(in -> { + inp.setSourceProperty(in.getSourceProperty()); + inp.setSource(in.getSource()); + inp.setValue(in.getValue()); + })); + } + +} diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceMergeDataBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceMergeDataBusinessLogic.java index 81e2f4ce7b..31b3207d6c 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceMergeDataBusinessLogic.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/instance/ComponentInstanceMergeDataBusinessLogic.java @@ -92,6 +92,7 @@ public class ComponentInstanceMergeDataBusinessLogic { filter.setIgnoreCapabiltyProperties(false); filter.setIgnoreArtifacts(false); filter.setIgnoreForwardingPath(false); + filter.setIgnoreComponentInstancesInterfaces(false); return toscaOperationFacade.getToscaElement(containerComponentId, filter); } } diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/instance/DataForMergeHolder.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/instance/DataForMergeHolder.java index 7388819ebf..b159cd510c 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/instance/DataForMergeHolder.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/instance/DataForMergeHolder.java @@ -22,6 +22,7 @@ public class DataForMergeHolder { private Component origInstanceNode; private Component currInstanceNode; private String origComponentInstId; + private List<ComponentInstanceInterface> origComponentInstanceInterfaces; public DataForMergeHolder() { origComponentInstanceInputs = new ArrayList<>(); @@ -30,6 +31,7 @@ public class DataForMergeHolder { origCompInstDeploymentArtifactsCreatedOnTheInstance = new HashMap<>(); origCompInstDeploymentArtifactsCreatedOnTheInstance = new HashMap<>(); origInstanceCapabilities = new ArrayList<>(); + origComponentInstanceInterfaces = new ArrayList<>(); } List<ArtifactDefinition> getOrigComponentInstanceHeatEnvArtifacts() { @@ -155,4 +157,12 @@ public class DataForMergeHolder { public void setOrigComponentInstId(String origComponentInstId) { this.origComponentInstId = origComponentInstId; } + + public List<ComponentInstanceInterface> getOrigComponentInstanceInterfaces() { + return origComponentInstanceInterfaces; + } + + public void setOrigComponentInstanceInterfaces(List<ComponentInstanceInterface> origComponentInstanceInterfaces) { + this.origComponentInstanceInterfaces = origComponentInstanceInterfaces; + } } |