From: vasraz Date: Wed, 1 Feb 2023 19:28:28 +0000 (+0000) Subject: Validate service input default values against constraints X-Git-Tag: 1.12.2~36 X-Git-Url: https://gerrit.onap.org/r/gitweb?p=sdc.git;a=commitdiff_plain;h=0c54db816bcadb231b007ce56c5c90d7b96d0706 Validate service input default values against constraints Signed-off-by: Vasyl Razinkov Change-Id: Ifd4e3cc5c8dd93282233e4c6bb77fa763d52f922 Issue-ID: SDC-4366 --- diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/InputsBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/InputsBusinessLogic.java index 44fecb311b..12a6936895 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/InputsBusinessLogic.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/InputsBusinessLogic.java @@ -290,6 +290,7 @@ public class InputsBusinessLogic extends BaseBusinessLogic { Either constraintValidatorResponse = validateInputValueConstraint(inputs, component.getModel()); if (constraintValidatorResponse.isRight()) { log.error("Failed validation value and constraint of property: {}", constraintValidatorResponse.right().value()); + unlockComponent(true, component); return Either.right(constraintValidatorResponse.right().value()); } validateCanWorkOnComponent(component, userId); @@ -301,8 +302,8 @@ public class InputsBusinessLogic extends BaseBusinessLogic { if (currInput == null) { ActionStatus actionStatus = ActionStatus.COMPONENT_NOT_FOUND; log.debug("Failed to found newInput {} under component {}, error: {}", newInput.getUniqueId(), componentId, actionStatus); - result = Either.right(componentsUtils.getResponseFormat(actionStatus)); - return result; + unlockComponent(true, component); + return Either.right(componentsUtils.getResponseFormat(actionStatus)); } String updateInputObjectValue = updateInputObjectValue(currInput, newInput, dataTypes); currInput.setDefaultValue(updateInputObjectValue); @@ -317,8 +318,8 @@ public class InputsBusinessLogic extends BaseBusinessLogic { Either status = toscaOperationFacade.updateInputOfComponent(component, currInput); if (status.isRight()) { ActionStatus actionStatus = componentsUtils.convertFromStorageResponseForResourceInstanceProperty(status.right().value()); - result = Either.right(componentsUtils.getResponseFormat(actionStatus, "")); - return result; + unlockComponent(true, component); + return Either.right(componentsUtils.getResponseFormat(actionStatus, "")); } else { returnInputs.add(status.left().value()); } @@ -341,9 +342,11 @@ public class InputsBusinessLogic extends BaseBusinessLogic { List inputDefinitions = new ArrayList<>(); for (InputDefinition inputDefinition : inputs) { InputDefinition inputDef = new InputDefinition(); + inputDef.setName(inputDefinition.getName()); inputDef.setDefaultValue(inputDefinition.getDefaultValue()); inputDef.setInputPath(inputDefinition.getSubPropertyInputPath()); inputDef.setType(inputDefinition.getType()); + inputDef.setConstraints(inputDefinition.getConstraints()); if (Objects.nonNull(inputDefinition.getParentPropertyType())) { ComponentInstanceProperty propertyDefinition = new ComponentInstanceProperty(); propertyDefinition.setType(inputDefinition.getParentPropertyType()); diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/datamodel/utils/PropertyValueConstraintValidationUtil.java b/catalog-be/src/main/java/org/openecomp/sdc/be/datamodel/utils/PropertyValueConstraintValidationUtil.java index 903c0dd58e..46bd763ec0 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/datamodel/utils/PropertyValueConstraintValidationUtil.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/datamodel/utils/PropertyValueConstraintValidationUtil.java @@ -413,8 +413,10 @@ public class PropertyValueConstraintValidationUtil { propertyDefinition.setType(inputDefinition.getType()); propertyDefinition.setValue(inputDefinition.getDefaultValue()); propertyDefinition.setName(inputDefinition.getName()); + propertyDefinition.setConstraints(inputDefinition.getConstraints()); } else if (Objects.nonNull(inputDefinition.getInputPath())) { propertyDefinition = evaluateComplexTypeInputs(inputDefinition); + propertyDefinition.setConstraints(inputDefinition.getConstraints()); } return propertyDefinition; } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/EqualConstraint.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/EqualConstraint.java index 8ba6da514c..3017a0532d 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/EqualConstraint.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/EqualConstraint.java @@ -78,7 +78,7 @@ public class EqualConstraint extends AbstractComparablePropertyConstraint { @Override public String getErrorMessage(ToscaType toscaType, ConstraintFunctionalException e, String propertyName) { - return getErrorMessage(toscaType, e, propertyName, "%s property value must be %s", String.valueOf(equal)); + return getErrorMessage(toscaType, e, propertyName, "'%s' value must be %s", String.valueOf(equal)); } @Override diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/GreaterOrEqualConstraint.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/GreaterOrEqualConstraint.java index 91205359ce..c0311c81ab 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/GreaterOrEqualConstraint.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/GreaterOrEqualConstraint.java @@ -64,7 +64,7 @@ public class GreaterOrEqualConstraint extends AbstractComparablePropertyConst @Override public String getErrorMessage(ToscaType toscaType, ConstraintFunctionalException e, String propertyName) { - return getErrorMessage(toscaType, e, propertyName, "%s property value must be greater than or equal to %s", String.valueOf(greaterOrEqual)); + return getErrorMessage(toscaType, e, propertyName, "'%s' value must be greater than or equal to %s", String.valueOf(greaterOrEqual)); } @Override diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/GreaterThanConstraint.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/GreaterThanConstraint.java index 7ecec8aad3..3da45e1204 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/GreaterThanConstraint.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/GreaterThanConstraint.java @@ -64,7 +64,7 @@ public class GreaterThanConstraint extends AbstractComparablePropertyConstrai @Override public String getErrorMessage(ToscaType toscaType, ConstraintFunctionalException e, String propertyName) { - return getErrorMessage(toscaType, e, propertyName, "%s property value must be greater than %s", String.valueOf(greaterThan)); + return getErrorMessage(toscaType, e, propertyName, "'%s' value must be greater than %s", String.valueOf(greaterThan)); } @Override diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/LessOrEqualConstraint.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/LessOrEqualConstraint.java index ece5e403ee..86b1d27243 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/LessOrEqualConstraint.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/LessOrEqualConstraint.java @@ -64,7 +64,7 @@ public class LessOrEqualConstraint extends AbstractComparablePropertyConstrai @Override public String getErrorMessage(ToscaType toscaType, ConstraintFunctionalException e, String propertyName) { - return getErrorMessage(toscaType, e, propertyName, "%s property value must be less than or equal to %s", String.valueOf(lessOrEqual)); + return getErrorMessage(toscaType, e, propertyName, "'%s' value must be less than or equal to %s", String.valueOf(lessOrEqual)); } @Override diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/LessThanConstraint.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/LessThanConstraint.java index b2f5a47302..8307184173 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/LessThanConstraint.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/LessThanConstraint.java @@ -64,7 +64,7 @@ public class LessThanConstraint extends AbstractComparablePropertyConstraint @Override public String getErrorMessage(ToscaType toscaType, ConstraintFunctionalException e, String propertyName) { - return getErrorMessage(toscaType, e, propertyName, "%s value must be less than %s", String.valueOf(lessThan)); + return getErrorMessage(toscaType, e, propertyName, "'%s' value must be less than %s", String.valueOf(lessThan)); } @Override diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/ValidValuesConstraint.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/ValidValuesConstraint.java index bf979feea1..1fd1adf015 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/ValidValuesConstraint.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/ValidValuesConstraint.java @@ -118,7 +118,7 @@ public class ValidValuesConstraint extends AbstractPropertyConstraint { @Override public String getErrorMessage(ToscaType toscaType, ConstraintFunctionalException e, String propertyName) { - return getErrorMessage(toscaType, e, propertyName, "%s valid value must be one of the following: [%s]", String.join(",", String.valueOf(validValues))); + return getErrorMessage(toscaType, e, propertyName, "'%s' value must be one of the following: [%s]", String.join(",", String.valueOf(validValues))); } public boolean validateValueType(String propertyType) throws ConstraintValueDoNotMatchPropertyTypeException { diff --git a/catalog-ui/src/app/ng2/components/logic/inputs-table/inputs-table.component.ts b/catalog-ui/src/app/ng2/components/logic/inputs-table/inputs-table.component.ts index ec18767183..c2a872fe9b 100644 --- a/catalog-ui/src/app/ng2/components/logic/inputs-table/inputs-table.component.ts +++ b/catalog-ui/src/app/ng2/components/logic/inputs-table/inputs-table.component.ts @@ -180,7 +180,7 @@ export class InputsTableComponent { public updateProperty = (inputProperty: InputFEModel): void => { let modelProperty : PropertyModel = this.createPropertyModel(inputProperty); - if (inputProperty.instanceUniqueId != null && this.componentInstancePropertyMap != null && modelProperty.constraints == null) { + if (inputProperty.instanceUniqueId != null && this.componentInstancePropertyMap != null && modelProperty.constraints == null && this.componentInstancePropertyMap[inputProperty.instanceUniqueId]) { this.componentInstancePropertyMap[inputProperty.instanceUniqueId].forEach(tempProperty => { modelProperty.constraints = tempProperty.constraints; });