From 4f058c098678ea01f8a01250dbf9bac4b77b6744 Mon Sep 17 00:00:00 2001 From: JvD_Ericsson Date: Fri, 6 Oct 2023 09:12:37 +0100 Subject: [PATCH] Milestone import support Issue-ID: SDC-4646 Signed-off-by: JvD_Ericsson Change-Id: I90da530a84c757a07c3ef903201f89869d223b8c --- .../impl/InterfaceDefinitionHandler.java | 65 ++++++++++++++++------ .../be/tosca/InterfacesOperationsConverter.java | 2 +- .../interfaceDefinition-legacy.yaml | 50 +++++++---------- .../interfaceDefinition-tosca1.3.yaml | 24 ++++---- .../activities-list/activities-list.component.ts | 16 +++++- .../add-input/add-input.component.ts | 2 +- 6 files changed, 96 insertions(+), 63 deletions(-) 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 46ec9aa244..3eb8d786b9 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 @@ -46,6 +46,7 @@ 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.UUID; import java.util.stream.Collectors; @@ -65,6 +66,7 @@ import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition; import org.openecomp.sdc.be.datatypes.elements.SchemaDefinition; 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.model.InputDefinition; import org.openecomp.sdc.be.model.InterfaceDefinition; @@ -273,22 +275,29 @@ public class InterfaceDefinitionHandler { final LinkedHashMap activitiesValue = (LinkedHashMap) value; if (activitiesValue.containsKey(ACTIVITIES.getElementName())) { final List milestoneActivities = (List) activitiesValue.get(ACTIVITIES.getElementName()); - for (Object activityValue : milestoneActivities) { - ActivityDataDefinition activity = new ActivityDataDefinition(); - if (activityValue instanceof Map) { - Map activityMap = (Map) activityValue; - if (activityMap.containsKey(INPUTS.getElementName())) { - activity.setInputs(handleInterfaceOperationInputs((Map) activityMap.get(INPUTS.getElementName()))); - } - if (activityMap.containsKey(TYPE.getElementName()) && activityMap.containsKey(WORKFLOW.getElementName())) { - activity.setType((String) activityMap.get(TYPE.getElementName())); - activity.setWorkflow((String) activityMap.get(WORKFLOW.getElementName())); - activities.add(activity); - } else { - return new ListDataDefinition<>(); + for (Object activity : milestoneActivities) { + if (activity instanceof Map) { + final Map activityMap = (Map) activity; + for (Entry activityValue : activityMap.entrySet()) { + if (activityValue.getValue() instanceof Map) { + ActivityDataDefinition activityDef = new ActivityDataDefinition(); + Map activityValueMap = (Map) activityValue.getValue(); + if (activityValueMap.containsKey(INPUTS.getElementName())) { + activityDef.setInputs( + handleActivityInterfaceOperationInputs((Map) activityValueMap.get(INPUTS.getElementName()))); + } + if (ActivityTypeEnum.getEnum(activityValue.getKey()).isPresent() && + activityValueMap.containsKey(WORKFLOW.getElementName())) { + activityDef.setWorkflow((String) activityValueMap.get(WORKFLOW.getElementName())); + activityDef.setType(activityValue.getKey()); + activities.add(activityDef); + } else { + return new ListDataDefinition<>(); + } + } else { + return new ListDataDefinition<>(); + } } - } else { - return new ListDataDefinition<>(); } } } else { @@ -298,6 +307,30 @@ public class InterfaceDefinitionHandler { return activities; } + private ListDataDefinition handleActivityInterfaceOperationInputs(Map activityInputs) { + final ListDataDefinition inputs = new ListDataDefinition<>(); + final String defaultType = "tosca.dataTypes.tmf.milestoneJeopardyData"; + for (final Entry interfaceInput : activityInputs.entrySet()) { + final OperationInputDefinition operationInput = new OperationInputDefinition(); + operationInput.setUniqueId(UUID.randomUUID().toString()); + operationInput.setInputId(operationInput.getUniqueId()); + operationInput.setName(interfaceInput.getKey()); + operationInput.setType(defaultType); + if (Objects.nonNull(interfaceInput.getValue())) { + if (interfaceInput.getValue() instanceof Map) { + Map valueMap = (Map) interfaceInput.getValue(); + if (valueMap.containsKey("jeopardyType") && valueMap.containsKey("name") && + valueMap.containsKey("eventType") && valueMap.containsKey("message")) { + operationInput.setValue(new Gson().toJson(interfaceInput.getValue())); + } + } + } + inputs.add(operationInput); + } + return inputs; + + } + private ListDataDefinition handleInterfaceOperationInputs(final Map interfaceInputs) { final ListDataDefinition inputs = new ListDataDefinition<>(); for (final Entry interfaceInput : interfaceInputs.entrySet()) { @@ -406,7 +439,7 @@ public class InterfaceDefinitionHandler { 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/tosca/InterfacesOperationsConverter.java b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/InterfacesOperationsConverter.java index fa5261806c..97657f06bf 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 @@ -360,7 +360,7 @@ public class InterfacesOperationsConverter { ToscaActivity toscaActivity = new ToscaActivity(); toscaActivity.setWorkflow(activity.getWorkflow()); Map inputs = getToscaActivityInputs(activity.getInputs(), dataTypes); - if (!inputs.isEmpty()) { + if (MapUtils.isNotEmpty(inputs)) { toscaActivity.setInputs(inputs); } toscaActivityMap.put(activity.getType(), toscaActivity); diff --git a/catalog-be/src/test/resources/interfaceDefinition/interfaceDefinition-legacy.yaml b/catalog-be/src/test/resources/interfaceDefinition/interfaceDefinition-legacy.yaml index b94b5ab11b..108c43f547 100644 --- a/catalog-be/src/test/resources/interfaceDefinition/interfaceDefinition-legacy.yaml +++ b/catalog-be/src/test/resources/interfaceDefinition/interfaceDefinition-legacy.yaml @@ -49,34 +49,24 @@ start: milestones: on_failure: activities: - - type: delegate - workflow: workflow1 - - type: delegate - workflow: workflow2 + - delegate: + workflow: workflow1 + - delegate: + workflow: workflow2 on_success: activities: - - type: delegate - workflow: workflow1 - - type: delegate - workflow: workflow2 - inputs: - string: - type: string - value: testString - complex: - type: tosca.datatypes.nfv.VirtualCpu - value: - virtual_cpu_oversubscription_policy: pol - cpu_architecture: cpu - virtual_cpu_clock: 27Hz - vdu_cpu_requirements: - 'k1': 'v1' - 'k2': 'v2' - virtual_cpu_pinning: - virtual_cpu_pinning_policy: pol - virtual_cpu_pinning_rule: - - 1 - - 2 + - delegate: + workflow: workflow1 + - delegate: + workflow: workflow2 + inputs: + string: + testString + complex: + jeopardyType: test + name: name + eventType: type + message: message filters: - my_attribute: equal: @@ -100,10 +90,10 @@ start: minLength: 4 on_timeout: activities: - - type: delegate - workflow: workflow1 - - type: delegate - workflow: workflow2 + - delegate: + workflow: workflow1 + - delegate: + workflow: workflow2 stop: implementation: "camunda/executeAction" inputs: diff --git a/catalog-be/src/test/resources/interfaceDefinition/interfaceDefinition-tosca1.3.yaml b/catalog-be/src/test/resources/interfaceDefinition/interfaceDefinition-tosca1.3.yaml index 8adcdcf4cf..0eb1db33a9 100644 --- a/catalog-be/src/test/resources/interfaceDefinition/interfaceDefinition-tosca1.3.yaml +++ b/catalog-be/src/test/resources/interfaceDefinition/interfaceDefinition-tosca1.3.yaml @@ -44,22 +44,22 @@ operations: milestones: on_failure: activities: - - type: delegate - workflow: workflow1 - - type: delegate - workflow: workflow2 + - delegate: + workflow: workflow1 + - delegate: + workflow: workflow2 on_success: activities: - - type: delegate - workflow: workflow1 - - type: delegate - workflow: workflow2 + - delegate: + workflow: workflow1 + - delegate: + workflow: workflow2 on_timeout: activities: - - type: delegate - workflow: workflow1 - - type: delegate - workflow: workflow2 + - delegate: + workflow: workflow1 + - delegate: + workflow: workflow2 stop: implementation: "camunda/executeAction" inputs: diff --git a/catalog-ui/src/app/ng2/pages/composition/interface-operatons/operation-creator/activities-list/activities-list.component.ts b/catalog-ui/src/app/ng2/pages/composition/interface-operatons/operation-creator/activities-list/activities-list.component.ts index b265464f86..ac9daa4b33 100644 --- a/catalog-ui/src/app/ng2/pages/composition/interface-operatons/operation-creator/activities-list/activities-list.component.ts +++ b/catalog-ui/src/app/ng2/pages/composition/interface-operatons/operation-creator/activities-list/activities-list.component.ts @@ -143,20 +143,30 @@ export class ActivitiesListComponent implements OnInit { } collectInputNames(index: number) { - return this.activities[index].inputs.listToscaDataDefinition.map((input) => input.name); + if (this.activities[index].inputs) { + return this.activities[index].inputs.listToscaDataDefinition.map((input) => input.name); + } + return []; } onAddInput(inputOperationParameter: InputOperationParameter, index: number) { + if (!this.activities[index].inputs) { + let input = new class implements IOperationParamsList { + listToscaDataDefinition: Array = []; + } + this.activities[index].inputs = input; + } this.activities[index].inputs.listToscaDataDefinition.push(inputOperationParameter); this.activities[index].inputs.listToscaDataDefinition = Array.from(this.activities[index].inputs.listToscaDataDefinition); + this.emitOnActivityChange(); } getInputs(index: number) { - if (this.activities[index].inputs.listToscaDataDefinition) { + if (this.activities[index].inputs && this.activities[index].inputs.listToscaDataDefinition) { let test: InputOperationParameter[] = this.activities[index].inputs.listToscaDataDefinition; return test; } - return {}; + return []; } onInputValueChange(changedInput: InputOperationParameter, index: number) { diff --git a/catalog-ui/src/app/ng2/pages/composition/interface-operatons/operation-creator/add-input/add-input.component.ts b/catalog-ui/src/app/ng2/pages/composition/interface-operatons/operation-creator/add-input/add-input.component.ts index 5620d193a8..d3b596ef69 100644 --- a/catalog-ui/src/app/ng2/pages/composition/interface-operatons/operation-creator/add-input/add-input.component.ts +++ b/catalog-ui/src/app/ng2/pages/composition/interface-operatons/operation-creator/add-input/add-input.component.ts @@ -145,7 +145,7 @@ export class AddInputComponent implements OnInit { showAddInput() { if (this.defaultType) { - this.inputToAdd.type = this.dataTypeMap.get(this.defaultType) ? this.defaultType : undefined; + this.onChangeInputType(this.defaultType); } this.showForm = true; this.showAddLink = false; -- 2.16.6