summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJvD_Ericsson <jeff.van.dam@est.tech>2023-05-12 12:37:02 +0100
committerMichael Morris <michael.morris@est.tech>2023-05-17 10:03:18 +0000
commit38eaf2ddd678a837e2bfed25d5b4b45d72fce338 (patch)
treef29e12b7cb8d35ced709eed5dda1a476b90f3239
parent087d44cbb9d388c3a6c720ee9a6349bcaf6a1f04 (diff)
Disabling archive functionality for normatives
Issue-ID: SDC-4497 Signed-off-by: JvD_Ericsson <jeff.van.dam@est.tech> Change-Id: If7ce7205543682697a2b787aebfd4c8a3da25db7
-rw-r--r--asdctool/src/main/resources/config/error-configuration.yaml9
-rw-r--r--catalog-be/src/main/docker/backend/chef-repo/cookbooks/sdc-catalog-be/files/default/error-configuration.yaml9
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ArchiveBusinessLogic.java6
-rw-r--r--catalog-be/src/main/resources/config/error-configuration.yaml9
-rw-r--r--catalog-be/src/test/resources/config/catalog-be/error-configuration.yaml9
-rw-r--r--catalog-dao/src/main/java/org/openecomp/sdc/be/dao/api/ActionStatus.java1
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/jsonjanusgraph/operations/ArchiveOperation.java7
7 files changed, 49 insertions, 1 deletions
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<List<String>, 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<List<String>, ActionStatus> archiveComponent(String componentId) {
final Either<GraphVertex, JanusGraphOperationStatus> vertexResult = this.janusGraphDao.getVertexById(componentId);
if (vertexResult.isLeft()) {
+ Map<String, Object> 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()));