From e97081649ac9b8655d45fe7781800a5e717dea07 Mon Sep 17 00:00:00 2001 From: aribeiro Date: Thu, 2 Dec 2021 09:58:42 +0000 Subject: Fix Node Filter faults Issue-ID: SDC-3798 Signed-off-by: aribeiro Change-Id: If8f3cbed8bf63bc1667e279b48ac0c2488d6a350 --- .../components/validation/NodeFilterValidator.java | 5 ++- .../validation/NodeFilterValidationTest.java | 18 ++++---- .../graph/composition-graph.component.ts | 7 ++++ .../service-dependencies-editor.component.html | 14 +++---- .../service-dependencies-editor.component.ts | 49 +++++++++++----------- 5 files changed, 51 insertions(+), 42 deletions(-) diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/validation/NodeFilterValidator.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/validation/NodeFilterValidator.java index eddc8ffcee..01e07eb6cd 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/validation/NodeFilterValidator.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/validation/NodeFilterValidator.java @@ -145,10 +145,11 @@ public class NodeFilterValidator { String source = SOURCE; final Optional optionalComponentInstance; final List propertyDefinitions = parentComponent.getProperties(); + final var SELF = "SELF"; List sourcePropertyDefinition = - parentComponent.getName().equals(uiConstraint.getSourceName()) && propertyDefinitions != null ? propertyDefinitions + SELF.equalsIgnoreCase(uiConstraint.getSourceName()) && propertyDefinitions != null ? propertyDefinitions : Collections.emptyList(); - if (sourcePropertyDefinition.isEmpty() && !parentComponent.getName().equals(uiConstraint.getSourceName())) { + if (sourcePropertyDefinition.isEmpty() && !SELF.equalsIgnoreCase(uiConstraint.getSourceName())) { optionalComponentInstance = parentComponent.getComponentInstances().stream() .filter(componentInstance -> uiConstraint.getSourceName().equals(componentInstance.getName())).findFirst(); if (optionalComponentInstance.isPresent()) { diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/validation/NodeFilterValidationTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/validation/NodeFilterValidationTest.java index bcf815f09f..3a15959cc8 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/validation/NodeFilterValidationTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/validation/NodeFilterValidationTest.java @@ -20,9 +20,17 @@ package org.openecomp.sdc.be.components.validation; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + import fj.data.Either; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; import org.junit.Assert; - import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; @@ -43,12 +51,6 @@ import org.openecomp.sdc.common.impl.ExternalConfiguration; import org.openecomp.sdc.common.impl.FSConfigurationSource; import org.openecomp.sdc.exception.ResponseFormat; -import java.util.*; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.junit.jupiter.api.Assertions.assertFalse; - public class NodeFilterValidationTest { private static final String UI_CONSTRAINT_STATIC = "Prop1: {equal: 'value'}"; @@ -264,7 +266,7 @@ public class NodeFilterValidationTest { Service service = createService(STRING_TYPE); Either either = nodeFilterValidator.validateFilter(service, COMPONENT1_ID, Collections.singletonList("Prop1:\n" - + " equal: { get_property : [parentservice, Prop1]}\n"), NodeFilterConstraintAction.ADD, + + " equal: { get_property : [SELF, Prop1]}\n"), NodeFilterConstraintAction.ADD, NodeFilterConstraintType.PROPERTIES); Assert.assertTrue(either.isLeft()); diff --git a/catalog-ui/src/app/ng2/pages/composition/graph/composition-graph.component.ts b/catalog-ui/src/app/ng2/pages/composition/graph/composition-graph.component.ts index 8d2357d6ad..1328747f88 100644 --- a/catalog-ui/src/app/ng2/pages/composition/graph/composition-graph.component.ts +++ b/catalog-ui/src/app/ng2/pages/composition/graph/composition-graph.component.ts @@ -387,6 +387,7 @@ export class CompositionGraphComponent implements AfterViewInit { } private loadCompositionData = () => { + console.log("Loading composition data....") this.loaderService.activate(); this.topologyTemplateService.getComponentCompositionData(this.topologyTemplateId, this.topologyTemplateType).subscribe((response: ComponentGenericResponse) => { if (this.topologyTemplateType === ComponentType.SERVICE) { @@ -658,6 +659,12 @@ export class CompositionGraphComponent implements AfterViewInit { } ); + this.eventListenerService.registerObserverCallback(GRAPH_EVENTS.ON_CREATE_COMPONENT_INSTANCE, () => { + this._cy.elements().remove(); + this.loadCompositionData(); + this.selectTopologyTemplate(); + }); + this.eventListenerService.registerObserverCallback(GRAPH_EVENTS.ON_DELETE_COMPONENT_INSTANCE, (componentInstanceId: string) => { const nodeToDelete = this._cy.getElementById(componentInstanceId); this.nodesGraphUtils.deleteNode(this._cy, this.topologyTemplate, nodeToDelete); diff --git a/catalog-ui/src/app/ng2/pages/service-dependencies-editor/service-dependencies-editor.component.html b/catalog-ui/src/app/ng2/pages/service-dependencies-editor/service-dependencies-editor.component.html index 8a577aef77..5f9fac5f09 100644 --- a/catalog-ui/src/app/ng2/pages/service-dependencies-editor/service-dependencies-editor.component.html +++ b/catalog-ui/src/app/ng2/pages/service-dependencies-editor/service-dependencies-editor.component.html @@ -21,18 +21,18 @@
- - + +
- - + +
- + class="i-sdc-form-item rule-input-field"> + diff --git a/catalog-ui/src/app/ng2/pages/service-dependencies-editor/service-dependencies-editor.component.ts b/catalog-ui/src/app/ng2/pages/service-dependencies-editor/service-dependencies-editor.component.ts index c6b3b65512..1aea85a618 100644 --- a/catalog-ui/src/app/ng2/pages/service-dependencies-editor/service-dependencies-editor.component.ts +++ b/catalog-ui/src/app/ng2/pages/service-dependencies-editor/service-dependencies-editor.component.ts @@ -86,12 +86,12 @@ export class ServiceDependenciesEditorComponent { ngOnInit() { this.currentIndex = this.input.serviceRuleIndex; this.serviceRulesList = this.input.serviceRules; + this.initFunctionTypes(); this.initCurrentRule(); this.currentServiceName = this.input.currentServiceName; this.operatorTypes = this.input.operatorTypes; this.selectedServiceProperties = this.input.selectedInstanceProperties; this.ddValueSelectedServicePropertiesNames = _.map(this.input.selectedInstanceProperties, (prop) => new DropdownValue(prop.name, prop.name)); - this.initFunctionTypes(); if (this.SOURCE_TYPES.STATIC.value !== this.currentRule.sourceType) { this.loadSourceTypesData(); } @@ -107,8 +107,13 @@ export class ServiceDependenciesEditorComponent { value: '', constraintOperator: OPERATOR_TYPES.EQUAL }); - if (this.currentRule && this.currentRule.sourceType === this.SOURCE_TYPES.SERVICE_INPUT.value) { - this.currentRule.sourceName = this.input.compositeServiceName; + if (this.currentRule && this.currentRule.sourceType === this.SOURCE_TYPES.STATIC.value){ + this.sourceTypes.push({ + label: this.SOURCE_TYPES.STATIC.label, + value: this.SOURCE_TYPES.STATIC.value, + assignedLabel: this.SOURCE_TYPES.STATIC.value, + type: this.SOURCE_TYPES.STATIC.value, + options: []}); } } @@ -126,25 +131,31 @@ export class ServiceDependenciesEditorComponent { this.currentRule.value = ""; } - onSelectFunctionType() { - this.currentRule.value = ""; + onSelectFunctionType(value: any) { this.currentRule.sourceName = ""; this.listOfValuesToAssign = []; - this.currentRule.sourceType = this.updateCurrentSourceType(this.currentRule.sourceType); + this.currentRule.sourceType = value; this.loadSourceTypesData(); this.updateSourceTypesRelatedValues(); } - onSelectSourceType() { - this.currentRule.value = ""; + onSelectSourceType(value: any) { + this.currentRule.sourceName = value; this.updateSourceTypesRelatedValues(); + if (this.listOfValuesToAssign) { + this.currentRule.value = this.listOfValuesToAssign[0].value + } } - loadSourceTypesData() { + private loadSourceTypesData() { + const SELF = "SELF"; + if (this.SOURCE_TYPES.SERVICE_INPUT.value === this.currentRule.sourceType) { + this.currentRule.sourceName = SELF; + } this.sourceTypes = []; this.sourceTypes.push({ - label: this.input.compositeServiceName, - value: this.input.compositeServiceName, + label: SELF, + value: SELF, assignedLabel: this.currentRule.sourceType == this.SOURCE_TYPES.SERVICE_PROPERTY.value ? this.SOURCE_TYPES.SERVICE_PROPERTY.label : this.SOURCE_TYPES.SERVICE_INPUT.label, type: this.currentRule.sourceType == this.SOURCE_TYPES.SERVICE_PROPERTY.value @@ -152,9 +163,7 @@ export class ServiceDependenciesEditorComponent { options: this.loadSourceTypeBySelectedFunction().get(this.currentRule.sourceType) }); - if (this.currentRule.sourceType === this.SOURCE_TYPES.SERVICE_INPUT.value) { - this.currentRule.sourceName = this.input.compositeServiceName; - } else { + if (this.currentRule.sourceType !== this.SOURCE_TYPES.SERVICE_INPUT.value) { if (this.input.selectedInstanceSiblings && this.isPropertyFunctionSelected) { _.forEach(this.input.selectedInstanceSiblings, (sib) => this.sourceTypes.push({ @@ -217,17 +226,6 @@ export class ServiceDependenciesEditorComponent { } } - private updateCurrentSourceType = (sourceType: string): string => { - switch (sourceType) { - case this.SOURCE_TYPES.STATIC.value: - return this.SOURCE_TYPES.STATIC.value; - case this.SOURCE_TYPES.SERVICE_PROPERTY.value: - return this.SOURCE_TYPES.SERVICE_PROPERTY.value; - case this.SOURCE_TYPES.SERVICE_INPUT.value: - return this.SOURCE_TYPES.SERVICE_INPUT.value; - } - } - filterOptionsByType() { if (!this.selectedPropertyObj) { this.listOfValuesToAssign = []; @@ -250,6 +248,7 @@ export class ServiceDependenciesEditorComponent { const isStatic = this.currentRule.sourceName === this.SOURCE_TYPES.STATIC.value; return this.currentRule.isValidRule(isStatic); } + // for update all rules return this.serviceRulesList.every((rule) => rule.isValidRule(rule.sourceName === this.SOURCE_TYPES.STATIC.value)); } -- cgit 1.2.3-korg