From 133d8bbc63891a9c169b002c03be9ec27f8bc486 Mon Sep 17 00:00:00 2001 From: JvD_Ericsson Date: Mon, 23 Oct 2023 16:50:37 +0100 Subject: Milestone updates Signed-off-by: JvD_Ericsson Change-Id: I43c91fbeb476acea8a8c05c249dcfb01618ddb7b Issue-ID: SDC-4666 --- .../csar/YamlTemplateParsingHandler.java | 26 ++++++++----- .../impl/InterfaceDefinitionHandler.java | 44 +++++++++++++--------- .../be/tosca/InterfacesOperationsConverter.java | 5 +-- .../model/ToscaLifecycleOperationDefinition.java | 9 +++++ 4 files changed, 53 insertions(+), 31 deletions(-) (limited to 'catalog-be/src/main/java/org') diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/YamlTemplateParsingHandler.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/YamlTemplateParsingHandler.java index a5927a5b45..0314f97781 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/YamlTemplateParsingHandler.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/YamlTemplateParsingHandler.java @@ -45,7 +45,6 @@ import static org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum.INPUTS; import static org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum.INTERFACES; import static org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum.IS_PASSWORD; import static org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum.MEMBERS; -import static org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum.MILESTONES; import static org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum.NODE; import static org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum.NODE_TEMPLATES; import static org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum.NODE_TYPE; @@ -98,13 +97,10 @@ import org.openecomp.sdc.be.components.utils.PropertiesUtils; import org.openecomp.sdc.be.config.BeEcompErrorManager; import org.openecomp.sdc.be.dao.api.ActionStatus; import org.openecomp.sdc.be.dao.janusgraph.JanusGraphDao; -import org.openecomp.sdc.be.datatypes.elements.ActivityDataDefinition; import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition; import org.openecomp.sdc.be.datatypes.elements.CapabilityDataDefinition; -import org.openecomp.sdc.be.datatypes.elements.FilterDataDefinition; import org.openecomp.sdc.be.datatypes.elements.GetInputValueDataDefinition; import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition; -import org.openecomp.sdc.be.datatypes.elements.MilestoneDataDefinition; import org.openecomp.sdc.be.datatypes.elements.OperationDataDefinition; import org.openecomp.sdc.be.datatypes.elements.OperationInputDefinition; import org.openecomp.sdc.be.datatypes.elements.PolicyTargetType; @@ -114,9 +110,9 @@ import org.openecomp.sdc.be.datatypes.elements.SubPropertyToscaFunction; import org.openecomp.sdc.be.datatypes.elements.SubstitutionFilterPropertyDataDefinition; import org.openecomp.sdc.be.datatypes.elements.ToscaFunction; import org.openecomp.sdc.be.datatypes.elements.ToscaFunctionType; -import org.openecomp.sdc.be.datatypes.enums.ActivityTypeEnum; import org.openecomp.sdc.be.datatypes.enums.ConstraintType; import org.openecomp.sdc.be.datatypes.enums.FilterValueType; +import org.openecomp.sdc.be.datatypes.enums.MilestoneTypeEnum; import org.openecomp.sdc.be.datatypes.enums.PropertyFilterTargetType; import org.openecomp.sdc.be.model.CapabilityDefinition; import org.openecomp.sdc.be.model.Component; @@ -969,7 +965,7 @@ public class YamlTemplateParsingHandler { if (nodeTemplateJsonMap.containsKey(TypeUtils.ToscaTagNamesEnum.INSTANCE_COUNT.getElementName())) { Object instanceCount = nodeTemplateJsonMap.get(TypeUtils.ToscaTagNamesEnum.INSTANCE_COUNT.getElementName()); if (instanceCount instanceof Map) { - String instanceCountAsString = "{get_input:" + (String)((Map)instanceCount).get("get_input") + "}"; + String instanceCountAsString = "{get_input:" + (String) ((Map) instanceCount).get("get_input") + "}"; nodeTemplateInfo.setInstanceCount(instanceCountAsString); } else { nodeTemplateInfo.setInstanceCount(instanceCount.toString()); @@ -1303,9 +1299,19 @@ public class YamlTemplateParsingHandler { final Map interfaceInputs = (Map) operationValue.get(INPUTS.getElementName()); operationDef.setInputs(handleInterfaceOperationInputs(interfaceInputs)); } - if (operationValue.containsKey(MILESTONES.getElementName())) { - final Map interfaceMilestones = (Map) operationValue.get(MILESTONES.getElementName()); - operationDef.setMilestones(interfaceDefinitionHandler.handleInterfaceOperationMilestones(interfaceMilestones)); + for (MilestoneTypeEnum milestone : MilestoneTypeEnum.values()) { + String milestoneType = milestone.getValue(); + if (operationValue.containsKey(milestoneType)) { + final Map interfaceMilestones = (Map) operationValue.get(milestoneType); + if (operationDef.getMilestones() == null || operationDef.getMilestones().isEmpty()) { + operationDef.setMilestones(new HashMap<>()); + operationDef.getMilestones().put(milestoneType, + interfaceDefinitionHandler.handleInterfaceOperationMilestones(interfaceMilestones, milestoneType)); + continue; + } + operationDef.getMilestones() + .put(milestoneType, interfaceDefinitionHandler.handleInterfaceOperationMilestones(interfaceMilestones, milestoneType)); + } } operations.put(operationEntry.getKey(), operationDef); } @@ -1415,7 +1421,7 @@ public class YamlTemplateParsingHandler { if (operationDefinitionMap.get(IMPLEMENTATION.getElementName()) instanceof Map && ((Map) operationDefinitionMap.get(IMPLEMENTATION.getElementName())).containsKey("timeout")) { final Object timeOut = ((Map) operationDefinitionMap.get(IMPLEMENTATION.getElementName())).get("timeout"); - artifactDataDefinition.setTimeout((Integer)timeOut); + artifactDataDefinition.setTimeout((Integer) timeOut); } if (operationDefinitionMap.get(IMPLEMENTATION.getElementName()) instanceof String) { diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/InterfaceDefinitionHandler.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/InterfaceDefinitionHandler.java index 8d713c48b0..b850dfd567 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/InterfaceDefinitionHandler.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/InterfaceDefinitionHandler.java @@ -27,7 +27,6 @@ import static org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum.DESCRIPTION import static org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum.FILTERS; import static org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum.IMPLEMENTATION; import static org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum.INPUTS; -import static org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum.MILESTONES; import static org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum.NOTIFICATIONS; import static org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum.OPERATIONS; import static org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum.REQUIRED; @@ -47,7 +46,6 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; -import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.UUID; @@ -70,6 +68,7 @@ import org.openecomp.sdc.be.datatypes.elements.ToscaFunction; import org.openecomp.sdc.be.datatypes.elements.ToscaFunctionType; import org.openecomp.sdc.be.datatypes.enums.ActivityTypeEnum; import org.openecomp.sdc.be.datatypes.enums.ConstraintType; +import org.openecomp.sdc.be.datatypes.enums.MilestoneTypeEnum; import org.openecomp.sdc.be.model.InputDefinition; import org.openecomp.sdc.be.model.InterfaceDefinition; import org.openecomp.sdc.be.model.operations.impl.UniqueIdBuilder; @@ -192,29 +191,38 @@ public class InterfaceDefinitionHandler { final Map interfaceInputs = (Map) operationDefinitionMap.get(INPUTS.getElementName()); operation.setInputs(handleInterfaceOperationInputs(interfaceInputs)); } - if (operationDefinitionMap.containsKey(MILESTONES.getElementName())) { - final Map interfaceMilestones = (Map) operationDefinitionMap.get(MILESTONES.getElementName()); - operation.setMilestones(handleInterfaceOperationMilestones(interfaceMilestones)); + for (MilestoneTypeEnum milestone : MilestoneTypeEnum.values()) { + String milestoneType = milestone.getValue(); + if (operationDefinitionMap.containsKey(milestone.getValue())) { + final Map interfaceMilestones = (Map) operationDefinitionMap.get(milestoneType); + if (operation.getMilestones() == null || operation.getMilestones().isEmpty()) { + operation.setMilestones(new HashMap<>()); + operation.getMilestones().put(milestoneType, handleInterfaceOperationMilestones(interfaceMilestones, milestoneType)); + continue; + } + operation.getMilestones().put(milestoneType, handleInterfaceOperationMilestones(interfaceMilestones, milestoneType)); + } } return operation; } - public Map handleInterfaceOperationMilestones(final Map interfaceMilestones) { - final Map milestones = new HashMap<>(); - for (final Entry interfaceInput : interfaceMilestones.entrySet()) { - final MilestoneDataDefinition operationMilestone = new MilestoneDataDefinition(); - ListDataDefinition activities = handleMilestoneActivities(interfaceInput.getValue()); - if (activities.isEmpty()) { - throw new ByActionStatusComponentException(ActionStatus.INVALID_OPERATION_MILESTONE, interfaceInput.getKey()); - } - ListDataDefinition filters = handleMilestoneFilters(interfaceInput.getValue()); + public MilestoneDataDefinition handleInterfaceOperationMilestones(final Map interfaceMilestones, String key) { + final MilestoneDataDefinition operationMilestone = new MilestoneDataDefinition(); + if (interfaceMilestones != null && !interfaceMilestones.containsKey(ACTIVITIES.getElementName())) { + throw new ByActionStatusComponentException(ActionStatus.INVALID_OPERATION_MILESTONE, key); + } + ListDataDefinition activities = handleMilestoneActivities(interfaceMilestones); + if (activities.isEmpty()) { + throw new ByActionStatusComponentException(ActionStatus.INVALID_OPERATION_MILESTONE, key); + } + if (interfaceMilestones.containsKey(FILTERS.getElementName())) { + ListDataDefinition filters = handleMilestoneFilters(interfaceMilestones); if (!filters.isEmpty()) { operationMilestone.setFilters(filters); } - operationMilestone.setActivities(activities); - milestones.put(interfaceInput.getKey(), operationMilestone); } - return milestones; + operationMilestone.setActivities(activities); + return operationMilestone; } private ListDataDefinition handleMilestoneFilters(Object milestone) { @@ -325,7 +333,7 @@ public class InterfaceDefinitionHandler { } return inputs; } - + private boolean isMilestoneJeopardyData(Object value) { if (value instanceof Map) { Set allowedKeys = new HashSet<>(); diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/InterfacesOperationsConverter.java b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/InterfacesOperationsConverter.java index 97657f06bf..57c48f53de 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/InterfacesOperationsConverter.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/InterfacesOperationsConverter.java @@ -67,7 +67,6 @@ import org.openecomp.sdc.be.model.tosca.constraints.LessOrEqualConstraint; import org.openecomp.sdc.be.model.tosca.constraints.LessThanConstraint; import org.openecomp.sdc.be.model.tosca.constraints.MaxLengthConstraint; import org.openecomp.sdc.be.model.tosca.constraints.MinLengthConstraint; -import org.openecomp.sdc.be.model.tosca.constraints.PatternConstraint; import org.openecomp.sdc.be.model.tosca.constraints.ValidValuesConstraint; import org.openecomp.sdc.be.tosca.PropertyConvertor.PropertyType; import org.openecomp.sdc.be.tosca.model.ToscaActivity; @@ -92,7 +91,6 @@ import org.openecomp.sdc.be.tosca.model.ToscaPropertyConstraintLessOrEqual; import org.openecomp.sdc.be.tosca.model.ToscaPropertyConstraintLessThan; import org.openecomp.sdc.be.tosca.model.ToscaPropertyConstraintMaxLength; import org.openecomp.sdc.be.tosca.model.ToscaPropertyConstraintMinLength; -import org.openecomp.sdc.be.tosca.model.ToscaPropertyConstraintPattern; import org.openecomp.sdc.be.tosca.model.ToscaPropertyConstraintValidValues; import org.openecomp.sdc.be.tosca.utils.OperationArtifactUtil; import org.openecomp.sdc.be.utils.TypeUtils.ToscaTagNamesEnum; @@ -489,7 +487,8 @@ public class InterfacesOperationsConverter { } else { if (toscaInterfaceOperationImplementation.getTimeout() != null) { final ToscaArtifactDefinition toscaArtifactDefinition = new ToscaArtifactDefinition(); - toscaArtifactDefinition.setFile(StringUtils.isBlank(operationArtifactPath) || "null".equals(operationArtifactPath) ? null : operationArtifactPath); + toscaArtifactDefinition.setFile( + StringUtils.isBlank(operationArtifactPath) || "null".equals(operationArtifactPath) ? null : operationArtifactPath); toscaInterfaceOperationImplementation.setPrimary(toscaArtifactDefinition); toscaOperation.setImplementation(toscaInterfaceOperationImplementation); } else { diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/model/ToscaLifecycleOperationDefinition.java b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/model/ToscaLifecycleOperationDefinition.java index 53aca457a1..e4b55fce3e 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/model/ToscaLifecycleOperationDefinition.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/model/ToscaLifecycleOperationDefinition.java @@ -13,8 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.openecomp.sdc.be.tosca.model; +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonIgnore; import java.util.Map; import lombok.Data; @@ -28,6 +31,12 @@ public class ToscaLifecycleOperationDefinition { private String description; private Object implementation; private Map inputs; + @JsonIgnore private Map milestones; + @JsonAnyGetter + public Map getMilestonesMap() { + return milestones; + } + } -- cgit 1.2.3-korg