From 798f858d18403a31a4d464b07bb1a9a74666c9c7 Mon Sep 17 00:00:00 2001 From: aribeiro Date: Fri, 28 Aug 2020 11:50:52 +0100 Subject: Update node_filter capabilities Issue-ID: SDC-3265 Signed-off-by: aribeiro Change-Id: Ib2dbd299ff5fc336258bf29a303210eacfd984cf --- .../impl/ComponentNodeFilterBusinessLogic.java | 50 ++++++++++++++++++---- .../be/servlets/ComponentNodeFilterServlet.java | 8 +++- .../impl/ComponentNodeFilterBusinessLogicTest.java | 6 ++- .../servlets/ComponentNodeFilterServletTest.java | 9 ++-- 4 files changed, 58 insertions(+), 15 deletions(-) (limited to 'catalog-be') diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentNodeFilterBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentNodeFilterBusinessLogic.java index 962407ca92..1b9054e187 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentNodeFilterBusinessLogic.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentNodeFilterBusinessLogic.java @@ -31,6 +31,7 @@ import org.openecomp.sdc.be.components.impl.exceptions.BusinessLogicException; import org.openecomp.sdc.be.components.impl.utils.NodeFilterConstraintAction; import org.openecomp.sdc.be.components.validation.NodeFilterValidator; import org.openecomp.sdc.be.dao.api.ActionStatus; +import org.openecomp.sdc.be.datamodel.utils.ConstraintConvertor; import org.openecomp.sdc.be.datatypes.elements.CINodeFilterDataDefinition; import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition; import org.openecomp.sdc.be.datatypes.elements.RequirementNodeFilterCapabilityDataDefinition; @@ -269,7 +270,8 @@ public class ComponentNodeFilterBusinessLogic extends BaseBusinessLogic { final String componentInstanceId, final List constraints, final boolean shouldLock, - final ComponentTypeEnum componentTypeEnum) + final ComponentTypeEnum componentTypeEnum, + final NodeFilterConstraintType nodeFilterConstraintType) throws BusinessLogicException { final Component component = getComponent(componentId); @@ -296,10 +298,9 @@ public class ComponentNodeFilterBusinessLogic extends BaseBusinessLogic { lockComponent(component.getUniqueId(), component,"Update Node Filter on Component"); wasLocked = true; } - final List properties = constraints.stream() - .map(this::getRequirementNodeFilterPropertyDataDefinition).collect(Collectors.toList()); - final Either result = nodeFilterOperation - .updateProperties(componentId, componentInstanceId, nodeFilterDataDefinition, properties); + final Either result = + updateNodeFilterConstraint(componentId, componentInstanceId, constraints, nodeFilterConstraintType, + nodeFilterDataDefinition); if (result.isRight()) { janusGraphDao.rollback(); @@ -326,6 +327,22 @@ public class ComponentNodeFilterBusinessLogic extends BaseBusinessLogic { return Optional.ofNullable(nodeFilterDataDefinition); } + private Either updateNodeFilterConstraint( + final String componentId, final String componentInstanceId, final List constraints, + final NodeFilterConstraintType nodeFilterConstraintType, final CINodeFilterDataDefinition nodeFilterDataDefinition) { + + if (NodeFilterConstraintType.PROPERTIES.equals(nodeFilterConstraintType)) { + final List properties = constraints.stream() + .map(this::getRequirementNodeFilterPropertyDataDefinition).collect(Collectors.toList()); + return nodeFilterOperation.updateProperties(componentId, componentInstanceId, + nodeFilterDataDefinition, properties); + } + final List capabilities = constraints.stream() + .map(this::getRequirementNodeFilterCapabilityDataDefinition).collect(Collectors.toList()); + return nodeFilterOperation.updateCapabilities(componentId, componentInstanceId, + nodeFilterDataDefinition, capabilities); + } + private Either addNewNodeFilter( final String componentId, final String componentInstanceId, @@ -350,6 +367,7 @@ public class ComponentNodeFilterBusinessLogic extends BaseBusinessLogic { requirementNodeFilterCapabilityDataDefinition); } + private void unlockComponent(final String componentUniqueId, final ComponentTypeEnum componentType) { graphLockOperation.unlockComponent(componentUniqueId, componentType.getNodeType()); @@ -395,9 +413,25 @@ public class ComponentNodeFilterBusinessLogic extends BaseBusinessLogic { private RequirementNodeFilterPropertyDataDefinition getRequirementNodeFilterPropertyDataDefinition( final String constraint) { - final RequirementNodeFilterPropertyDataDefinition pdd = new RequirementNodeFilterPropertyDataDefinition(); - pdd.setConstraints(Arrays.asList(constraint)); - return pdd; + final RequirementNodeFilterPropertyDataDefinition requirementNodeFilterPropertyDataDefinition = + new RequirementNodeFilterPropertyDataDefinition(); + requirementNodeFilterPropertyDataDefinition.setConstraints(Arrays.asList(constraint)); + return requirementNodeFilterPropertyDataDefinition; + } + + private RequirementNodeFilterCapabilityDataDefinition getRequirementNodeFilterCapabilityDataDefinition( + final String constraint) { + + final RequirementNodeFilterCapabilityDataDefinition requirementNodeFilterCapabilityDataDefinition = + new RequirementNodeFilterCapabilityDataDefinition(); + final ListDataDefinition propertyDataDefinitionList = + new ListDataDefinition<>(); + propertyDataDefinitionList.getListToscaDataDefinition().addAll( + Collections.singleton(getRequirementNodeFilterPropertyDataDefinition(constraint))); + requirementNodeFilterCapabilityDataDefinition.setName(new ConstraintConvertor().convert(constraint) + .getServicePropertyName()); + requirementNodeFilterCapabilityDataDefinition.setProperties(propertyDataDefinitionList); + return requirementNodeFilterCapabilityDataDefinition; } private CINodeFilterDataDefinition validateAndReturnNodeFilterDefinition(final String componentInstanceId, diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/ComponentNodeFilterServlet.java b/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/ComponentNodeFilterServlet.java index 5146d5e5b5..2291d8e984 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/ComponentNodeFilterServlet.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/servlets/ComponentNodeFilterServlet.java @@ -207,9 +207,15 @@ public class ComponentNodeFilterServlet extends AbstractValidationsServlet { "Failed to parse constraint data", constraintData)); } final List constraints = new ConstraintConvertor().convertToList(uiConstraints); + final Optional nodeFilterConstraintType = + NodeFilterConstraintType.parse(constraintType); + if (!nodeFilterConstraintType.isPresent()) { + return buildErrorResponse(getComponentsUtils().getResponseFormat(ActionStatus.INVALID_CONTENT_PARAM, + "Invalid value for NodeFilterConstraintType enum %s", constraintType)); + } final Optional actionResponse = componentNodeFilterBusinessLogic .updateNodeFilter(componentId.toLowerCase(), componentInstanceId, constraints, - true, componentTypeEnum); + true, componentTypeEnum, nodeFilterConstraintType.get()); if (!actionResponse.isPresent()) { LOGGER.error(FAILED_TO_UPDATE_NODE_FILTER); diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ComponentNodeFilterBusinessLogicTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ComponentNodeFilterBusinessLogicTest.java index a475943735..7c81807777 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ComponentNodeFilterBusinessLogicTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/ComponentNodeFilterBusinessLogicTest.java @@ -470,7 +470,8 @@ public class ComponentNodeFilterBusinessLogicTest extends BaseBusinessLogicMock final List constraints = requirementNodeFilterPropertyDataDefinition.getConstraints(); assertThrows(BusinessLogicException.class, () -> componentNodeFilterBusinessLogic - .updateNodeFilter(componentId, componentInstanceId, constraints, true, ComponentTypeEnum.RESOURCE)); + .updateNodeFilter(componentId, componentInstanceId, constraints, true, ComponentTypeEnum.RESOURCE, + NodeFilterConstraintType.PROPERTIES)); verify(toscaOperationFacade, times(1)).getToscaElement(componentId); verify(nodeFilterValidator, times(1)).validateFilter(resource, componentInstanceId, @@ -485,7 +486,8 @@ public class ComponentNodeFilterBusinessLogicTest extends BaseBusinessLogicMock constraints, NodeFilterConstraintAction.UPDATE)).thenReturn(Either.left(true)); assertThrows(BusinessLogicException.class, () -> componentNodeFilterBusinessLogic - .updateNodeFilter(componentId, componentInstanceId, constraints, true, ComponentTypeEnum.RESOURCE)); + .updateNodeFilter(componentId, componentInstanceId, constraints, true, ComponentTypeEnum.RESOURCE, + NodeFilterConstraintType.PROPERTIES)); verify(toscaOperationFacade, times(1)).getToscaElement(componentId); verify(nodeFilterValidator, times(1)).validateFilter(resource, componentInstanceId, diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ComponentNodeFilterServletTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ComponentNodeFilterServletTest.java index 31cb1ac4e4..947a702db0 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ComponentNodeFilterServletTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/servlets/ComponentNodeFilterServletTest.java @@ -328,7 +328,8 @@ public class ComponentNodeFilterServletTest extends JerseyTest { when(componentNodeFilterBusinessLogic .updateNodeFilter(componentId, componentInstance, Collections.singletonList(constraint), - true, ComponentTypeEnum.RESOURCE)).thenReturn(Optional.of(ciNodeFilterDataDefinition)); + true, ComponentTypeEnum.RESOURCE, NodeFilterConstraintType.PROPERTIES)) + .thenReturn(Optional.of(ciNodeFilterDataDefinition)); final Response response = target() .path(path) .request(MediaType.APPLICATION_JSON) @@ -337,7 +338,7 @@ public class ComponentNodeFilterServletTest extends JerseyTest { verify(componentNodeFilterBusinessLogic, times(1)) .updateNodeFilter(anyString(), anyString(), anyList(), anyBoolean(), - ArgumentMatchers.any(ComponentTypeEnum.class)); + ArgumentMatchers.any(ComponentTypeEnum.class), ArgumentMatchers.any(NodeFilterConstraintType.class)); assertThat(response.getStatus()).isEqualTo(HttpStatus.OK_200); } @@ -359,7 +360,7 @@ public class ComponentNodeFilterServletTest extends JerseyTest { when(componentNodeFilterBusinessLogic .updateNodeFilter(componentId, componentInstance, Collections.singletonList(constraint), - true, ComponentTypeEnum.RESOURCE)) + true, ComponentTypeEnum.RESOURCE, NodeFilterConstraintType.PROPERTIES)) .thenReturn(Optional.empty()); final Response response = target() .path(path) @@ -369,7 +370,7 @@ public class ComponentNodeFilterServletTest extends JerseyTest { verify(componentNodeFilterBusinessLogic, times(1)) .updateNodeFilter(anyString(), anyString(), anyList(), anyBoolean(), - ArgumentMatchers.any(ComponentTypeEnum.class)); + ArgumentMatchers.any(ComponentTypeEnum.class), ArgumentMatchers.any(NodeFilterConstraintType.class)); assertThat(response.getStatus()).isEqualTo(HttpStatus.INTERNAL_SERVER_ERROR_500); -- cgit 1.2.3-korg