From: JvD_Ericsson Date: Fri, 12 May 2023 11:37:02 +0000 (+0100) Subject: Disabling archive functionality for normatives X-Git-Tag: 1.13.0~25 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;ds=sidebyside;h=38eaf2ddd678a837e2bfed25d5b4b45d72fce338;p=sdc.git Disabling archive functionality for normatives Issue-ID: SDC-4497 Signed-off-by: JvD_Ericsson Change-Id: If7ce7205543682697a2b787aebfd4c8a3da25db7 --- diff --git a/asdctool/src/main/resources/config/error-configuration.yaml b/asdctool/src/main/resources/config/error-configuration.yaml index 4742241744..e8f100da3f 100644 --- a/asdctool/src/main/resources/config/error-configuration.yaml +++ b/asdctool/src/main/resources/config/error-configuration.yaml @@ -2868,4 +2868,13 @@ errors: code: 409, message: "Cannot change substitution node type as properties of the existing type are referenced by properties %1.", messageId: "SVC4017" + } + + #---------SVC4018----------------------------- + # %1 - componentType + # %2 - component id + CANNOT_ARCHIVE_SYSTEM_DEPLOYED_RESOURCES: { + code: 409, + message: "System deployed %1 cannot be archived. Component: '%2'", + messageId: "SVC4018" } \ No newline at end of file diff --git a/catalog-be/src/main/docker/backend/chef-repo/cookbooks/sdc-catalog-be/files/default/error-configuration.yaml b/catalog-be/src/main/docker/backend/chef-repo/cookbooks/sdc-catalog-be/files/default/error-configuration.yaml index 05926151ba..0cdcd01a00 100644 --- a/catalog-be/src/main/docker/backend/chef-repo/cookbooks/sdc-catalog-be/files/default/error-configuration.yaml +++ b/catalog-be/src/main/docker/backend/chef-repo/cookbooks/sdc-catalog-be/files/default/error-configuration.yaml @@ -2886,3 +2886,12 @@ errors: message: "Cannot change substitution node type as properties of the existing type are referenced by properties %1.", messageId: "SVC4017" } + + #---------SVC4018----------------------------- + # %1 - componentType + # %2 - component id + CANNOT_ARCHIVE_SYSTEM_DEPLOYED_RESOURCES: { + code: 409, + message: "System deployed %1 cannot be archived. Component: '%2'", + messageId: "SVC4018" + } \ No newline at end of file diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ArchiveBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ArchiveBusinessLogic.java index 19afff0668..3806eed0dc 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ArchiveBusinessLogic.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ArchiveBusinessLogic.java @@ -77,7 +77,11 @@ public class ArchiveBusinessLogic { User user = accessValidations.userIsAdminOrDesigner(userId, containerComponentType + "_ARCHIVE"); Either, ActionStatus> result = this.archiveOperation.archiveComponent(componentId); if (result.isRight()) { - throw new ByActionStatusComponentException(result.right().value(), componentId); + ActionStatus status = result.right().value(); + if (ActionStatus.CANNOT_ARCHIVE_SYSTEM_DEPLOYED_RESOURCES.equals(status)) { + throw new ByActionStatusComponentException(status, containerComponentType, componentId); + } + throw new ByActionStatusComponentException(status, componentId); } this.auditAction(ArchiveOperation.Action.ARCHIVE, result.left().value(), user, containerComponentType); // Send Archive Notification To Facade diff --git a/catalog-be/src/main/resources/config/error-configuration.yaml b/catalog-be/src/main/resources/config/error-configuration.yaml index a4b56d530c..7589511f54 100644 --- a/catalog-be/src/main/resources/config/error-configuration.yaml +++ b/catalog-be/src/main/resources/config/error-configuration.yaml @@ -2877,4 +2877,13 @@ errors: code: 409, message: "Cannot change substitution node type as properties of the existing type are referenced by properties %1.", messageId: "SVC4017" + } + + #---------SVC4018----------------------------- + # %1 - componentType + # %2 - component id + CANNOT_ARCHIVE_SYSTEM_DEPLOYED_RESOURCES: { + code: 409, + message: "System deployed %1 cannot be archived. Component: '%2'", + messageId: "SVC4018" } \ No newline at end of file diff --git a/catalog-be/src/test/resources/config/catalog-be/error-configuration.yaml b/catalog-be/src/test/resources/config/catalog-be/error-configuration.yaml index e8c5d9a5df..6911570d16 100644 --- a/catalog-be/src/test/resources/config/catalog-be/error-configuration.yaml +++ b/catalog-be/src/test/resources/config/catalog-be/error-configuration.yaml @@ -2863,4 +2863,13 @@ errors: code: 409, message: "Cannot change substitution node type as properties of the existing type are referenced by properties %1.", messageId: "SVC4017" + } + + #---------SVC4018----------------------------- + # %1 - componentType + # %2 - component id + CANNOT_ARCHIVE_SYSTEM_DEPLOYED_RESOURCES: { + code: 409, + message: "System deployed %1 cannot be archived. Component: '%2'", + messageId: "SVC4018" } \ No newline at end of file diff --git a/catalog-dao/src/main/java/org/openecomp/sdc/be/dao/api/ActionStatus.java b/catalog-dao/src/main/java/org/openecomp/sdc/be/dao/api/ActionStatus.java index e9d7baed2f..7daf693917 100644 --- a/catalog-dao/src/main/java/org/openecomp/sdc/be/dao/api/ActionStatus.java +++ b/catalog-dao/src/main/java/org/openecomp/sdc/be/dao/api/ActionStatus.java @@ -132,6 +132,7 @@ public enum ActionStatus { INVALID_NODE_TYPES_YAML, //system deployed resources CANNOT_DELETE_SYSTEM_DEPLOYED_RESOURCES, + CANNOT_ARCHIVE_SYSTEM_DEPLOYED_RESOURCES, TOSCA_GET_FUNCTION_INPUTS_ONLY_SELF_ERROR, TOSCA_GET_FUNCTION_INPUTS_NOT_FOUND, TOSCA_GET_FUNCTION_TYPE_DIVERGE, diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsonjanusgraph/operations/ArchiveOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsonjanusgraph/operations/ArchiveOperation.java index b8ef2aec16..a8367b337a 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsonjanusgraph/operations/ArchiveOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsonjanusgraph/operations/ArchiveOperation.java @@ -29,6 +29,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import org.apache.commons.collections.MapUtils; import org.openecomp.sdc.be.dao.api.ActionStatus; import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus; import org.openecomp.sdc.be.dao.jsongraph.GraphVertex; @@ -38,6 +39,7 @@ import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum; import org.openecomp.sdc.be.dao.jsongraph.types.VertexTypeEnum; import org.openecomp.sdc.be.datatypes.elements.ComponentInstanceDataDefinition; import org.openecomp.sdc.be.datatypes.elements.CompositionDataDefinition; +import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum; import org.openecomp.sdc.be.datatypes.enums.GraphPropertyEnum; import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields; import org.openecomp.sdc.be.model.LifecycleStateEnum; @@ -66,6 +68,11 @@ public class ArchiveOperation extends BaseOperation { public Either, ActionStatus> archiveComponent(String componentId) { final Either vertexResult = this.janusGraphDao.getVertexById(componentId); if (vertexResult.isLeft()) { + Map metadataJson = vertexResult.left().value().getMetadataJson(); + String normative = JsonPresentationFields.NORMATIVE.getPresentation(); + if (MapUtils.isNotEmpty(metadataJson) && metadataJson.containsKey(normative) && (boolean) metadataJson.get(normative)) { + return Either.right(ActionStatus.CANNOT_ARCHIVE_SYSTEM_DEPLOYED_RESOURCES); + } return doAction(ARCHIVE, vertexResult.left().value()); } else { return Either.right(onError(ARCHIVE.name(), componentId, vertexResult.right().value()));