summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOleg Mitsura <oleg.mitsura@amdocs.com>2021-07-27 16:24:23 -0400
committerOleg Mitsura <oleg.mitsura@amdocs.com>2021-08-26 10:56:05 -0400
commit1a506214e5779e068c1d2b7b34dbf3d1c2e8c637 (patch)
treeebb568c24921793a2998f9d3a180e9e778d97c56
parent7498ebd8f5f866a271379330a17291f06d5fe889 (diff)
SO-3720 BuildingBlockRollback lookup table
Issue-ID: SO-3720 BuildingBlockRollback lookup table will indicate the rollback BB to take; this is the first part for simplifying WorkflowActionBBTasks logic: instead of doing string matching, we just do a lookup of a block to call to perform the rollback operation. In some cases, the Action is set as well - this would be needed for certain BBs, in that case, there is a corresponding rollbackAction as well. Change-Id: I072a2ada894cf4672f5a1cdce762605757cb1d14 Signed-off-by: Oleg Mitsura <oleg.mitsura@amdocs.com>
-rw-r--r--adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/JerseyConfiguration.java2
-rw-r--r--adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/rest/BuildingBlockRollbackRestImpl.java67
-rw-r--r--adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V8.9.1__AddBuildingBlockRollback.sql10
-rw-r--r--mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/BuildingBlockRollback.java134
-rw-r--r--mso-catalog-db/src/main/java/org/onap/so/db/catalog/client/CatalogDbClient.java24
-rw-r--r--mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/BuildingBlockRollbackRepository.java34
-rw-r--r--mso-catalog-db/src/test/resources/schema.sql9
7 files changed, 279 insertions, 1 deletions
diff --git a/adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/JerseyConfiguration.java b/adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/JerseyConfiguration.java
index 359c8cd46e..e276faf5d0 100644
--- a/adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/JerseyConfiguration.java
+++ b/adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/JerseyConfiguration.java
@@ -27,6 +27,7 @@ import javax.ws.rs.ApplicationPath;
import org.glassfish.jersey.server.ResourceConfig;
import org.onap.logging.filter.base.Constants;
import org.onap.logging.filter.base.ONAPComponents;
+import org.onap.so.adapters.catalogdb.rest.BuildingBlockRollbackRestImpl;
import org.onap.so.adapters.catalogdb.rest.CatalogDbAdapterRest;
import org.onap.so.adapters.catalogdb.rest.ServiceRestImpl;
import org.onap.so.adapters.catalogdb.rest.VnfRestImpl;
@@ -53,6 +54,7 @@ public class JerseyConfiguration extends ResourceConfig {
register(AcceptHeaderOpenApiResource.class);
register(ServiceRestImpl.class);
register(VnfRestImpl.class);
+ register(BuildingBlockRollbackRestImpl.class);
OpenAPI oas = new OpenAPI();
Info info = new Info();
diff --git a/adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/rest/BuildingBlockRollbackRestImpl.java b/adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/rest/BuildingBlockRollbackRestImpl.java
new file mode 100644
index 0000000000..bd247e1a4f
--- /dev/null
+++ b/adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/rest/BuildingBlockRollbackRestImpl.java
@@ -0,0 +1,67 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2021 Bell Canada
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.adapters.catalogdb.rest;
+
+import io.swagger.v3.oas.annotations.OpenAPIDefinition;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.info.Info;
+import io.swagger.v3.oas.annotations.media.ArraySchema;
+import io.swagger.v3.oas.annotations.media.Content;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import java.util.List;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import org.onap.so.db.catalog.beans.BuildingBlockRollback;
+import org.onap.so.db.catalog.data.repository.BuildingBlockRollbackRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+
+@OpenAPIDefinition(info = @Info(title = "/v1", description = "model"))
+@Path("/v1/buildingBlockRollback")
+@Component
+public class BuildingBlockRollbackRestImpl {
+
+ @Autowired
+ private BuildingBlockRollbackRepository bbRollbackRepo;
+
+ @GET
+ @Path("/{id}")
+ @Produces({MediaType.APPLICATION_JSON})
+ @Transactional(readOnly = true)
+ public BuildingBlockRollback findService(@PathParam("id") Integer id) {
+ return bbRollbackRepo.findOneById(id);
+ }
+
+ @GET
+ @Operation(description = "Look up BuildingBlock Rollback List", responses = @ApiResponse(
+ content = @Content(array = @ArraySchema(schema = @Schema(implementation = BuildingBlockRollback.class)))))
+ @Produces({MediaType.APPLICATION_JSON})
+ @Transactional(readOnly = true)
+ public List<BuildingBlockRollback> getBBRollbackList() {
+ return bbRollbackRepo.findAll();
+ }
+}
diff --git a/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V8.9.1__AddBuildingBlockRollback.sql b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V8.9.1__AddBuildingBlockRollback.sql
new file mode 100644
index 0000000000..11dd1ecfb3
--- /dev/null
+++ b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V8.9.1__AddBuildingBlockRollback.sql
@@ -0,0 +1,10 @@
+use catalogdb;
+
+CREATE TABLE IF NOT EXISTS `building_block_rollback` (
+ `ID` INT NOT NULL AUTO_INCREMENT,
+ `BUILDING_BLOCK_NAME` varchar(200) NOT NULL,
+ `ACTION` varchar(200) null,
+ `ROLLBACK_BUILDING_BLOCK_NAME` varchar(200) NOT NULL,
+ `ROLLBACK_ACTION` varchar(200) NULL,
+ PRIMARY KEY (`ID`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
diff --git a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/BuildingBlockRollback.java b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/BuildingBlockRollback.java
new file mode 100644
index 0000000000..798604e4fb
--- /dev/null
+++ b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/BuildingBlockRollback.java
@@ -0,0 +1,134 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2021 Bell Canada. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.db.catalog.beans;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.openpojo.business.annotation.BusinessKey;
+import java.io.Serializable;
+import java.util.Objects;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import uk.co.blackpepper.bowman.annotation.RemoteResource;
+
+@Entity
+@RemoteResource("/buildingBlockRollback")
+@Table(name = "building_block_rollback")
+public class BuildingBlockRollback implements Serializable {
+
+ private static final long serialVersionUID = 1;
+
+ @Id
+ @BusinessKey
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "ID", nullable = false, updatable = false)
+ private Integer id;
+
+ @BusinessKey
+ @JsonProperty("building_block_name")
+ @Column(name = "BUILDING_BLOCK_NAME", nullable = false, length = 200)
+ private String buildingBlockName;
+
+ @BusinessKey
+ @JsonProperty("action")
+ @Column(name = "ACTION", length = 200)
+ private String action;
+
+ @BusinessKey
+ @JsonProperty("rollback_building_block_name")
+ @Column(name = "ROLLBACK_BUILDING_BLOCK_NAME", nullable = false, length = 200)
+ private String rollbackBuildingBlockName;
+
+ @BusinessKey
+ @JsonProperty("rollback_action")
+ @Column(name = "ROLLBACK_ACTION", length = 200)
+ private String rollbackAction;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getBuildingBlockName() {
+ return buildingBlockName;
+ }
+
+ public void setBuildingBlockName(String buildingBlockName) {
+ this.buildingBlockName = buildingBlockName;
+ }
+
+ public String getAction() {
+ return action;
+ }
+
+ public void setAction(String action) {
+ this.action = action;
+ }
+
+ public String getRollbackBuildingBlockName() {
+ return rollbackBuildingBlockName;
+ }
+
+ public void setRollbackBuildingBlockName(String rollbackBuildingBlockName) {
+ this.rollbackBuildingBlockName = rollbackBuildingBlockName;
+ }
+
+ public String getRollbackAction() {
+ return rollbackAction;
+ }
+
+ public void setRollbackAction(String rollbackAction) {
+ this.rollbackAction = rollbackAction;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ BuildingBlockRollback that = (BuildingBlockRollback) o;
+ return id.equals(that.id) && buildingBlockName.equals(that.buildingBlockName)
+ && Objects.equals(action, that.action)
+ && rollbackBuildingBlockName.equals(that.rollbackBuildingBlockName)
+ && Objects.equals(rollbackAction, that.rollbackAction);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, buildingBlockName, action, rollbackBuildingBlockName, rollbackAction);
+ }
+
+ @Override
+ public String toString() {
+ return "BuildingBlockRollback{" + "id='" + id + '\'' + ", buildingBlockName='" + buildingBlockName + '\''
+ + ", action='" + action + '\'' + ", rollbackBuildingBlockName='" + rollbackBuildingBlockName + '\''
+ + ", rollbackAction='" + rollbackAction + '\'' + '}';
+ }
+}
diff --git a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/client/CatalogDbClient.java b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/client/CatalogDbClient.java
index ae6d51c6a2..45d6a878ed 100644
--- a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/client/CatalogDbClient.java
+++ b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/client/CatalogDbClient.java
@@ -25,6 +25,7 @@ import java.net.URI;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import java.util.Set;
import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
import javax.persistence.EntityNotFoundException;
@@ -35,6 +36,7 @@ import org.onap.logging.filter.base.Constants;
import org.onap.logging.filter.spring.SpringClientPayloadFilter;
import org.onap.so.db.catalog.beans.BBNameSelectionReference;
import org.onap.so.db.catalog.beans.BuildingBlockDetail;
+import org.onap.so.db.catalog.beans.BuildingBlockRollback;
import org.onap.so.db.catalog.beans.CloudSite;
import org.onap.so.db.catalog.beans.CloudifyManager;
import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
@@ -126,6 +128,7 @@ public class CatalogDbClient {
private static final String WORKFLOW = "/workflow";
private static final String BB_NAME_SELECTION_REFERENCE = "/bbNameSelectionReference";
private static final String PROCESSING_FLAGS = "/processingFlags";
+ private static final String BB_ROLLBACK = "/buildingBlockRollback";
private static final String SEARCH = "/search";
@@ -236,6 +239,7 @@ public class CatalogDbClient {
private String pnfResourceURI;
private String pnfResourceCustomizationURI;
private String workflowURI;
+ private String buildingBlockRollbacksURI;
private final Client<Service> serviceClient;
@@ -299,6 +303,8 @@ public class CatalogDbClient {
private final Client<ProcessingFlags> processingFlagsClient;
+ private final Client<BuildingBlockRollback> buildingBlockRollbackClient;
+
@Value("${mso.catalog.db.spring.endpoint:#{null}}")
private String endpoint;
@@ -391,7 +397,7 @@ public class CatalogDbClient {
pnfResourceURI = endpoint + PNF_RESOURCE + URI_SEPARATOR;
pnfResourceCustomizationURI = endpoint + PNF_RESOURCE_CUSTOMIZATION + URI_SEPARATOR;
workflowURI = endpoint + WORKFLOW + URI_SEPARATOR;
-
+ buildingBlockRollbacksURI = endpoint + BB_ROLLBACK + URI_SEPARATOR;
}
public CatalogDbClient() {
@@ -445,6 +451,7 @@ public class CatalogDbClient {
bbNameSelectionReferenceClient = clientFactory.create(BBNameSelectionReference.class);
processingFlagsClient = clientFactory.create(ProcessingFlags.class);
networkResourceClient = clientFactory.create(NetworkResource.class);
+ buildingBlockRollbackClient = clientFactory.create(BuildingBlockRollback.class);
}
public CatalogDbClient(String baseUri, String auth) {
@@ -498,6 +505,7 @@ public class CatalogDbClient {
bbNameSelectionReferenceClient = clientFactory.create(BBNameSelectionReference.class);
processingFlagsClient = clientFactory.create(ProcessingFlags.class);
networkResourceClient = clientFactory.create(NetworkResource.class);
+ buildingBlockRollbackClient = clientFactory.create(BuildingBlockRollback.class);
}
public NetworkCollectionResourceCustomization getNetworkCollectionResourceCustomizationByID(
@@ -1224,6 +1232,20 @@ public class CatalogDbClient {
getUri(UriBuilder.fromUri(findProcessingFlagsByFlag).queryParam(FLAG, flag).build().toString()));
}
+ // TODO: redo using buildingBlockRollbackClient
+ public List<BuildingBlockRollback> getBuildingBlockRollbackEntries() {
+ try {
+ HttpEntity<?> entity = getHttpEntity();
+ return restTemplate.exchange(
+ UriComponentsBuilder.fromUriString(endpoint + "/ecomp/mso/catalog/v1/buildingBlockRollback").build()
+ .encode().toString(),
+ HttpMethod.GET, entity, new ParameterizedTypeReference<List<BuildingBlockRollback>>() {}).getBody();
+ } catch (HttpClientErrorException e) {
+ logger.error("Error Calling catalog database", e);
+ throw e;
+ }
+ }
+
public String getEndpoint() {
return endpoint;
}
diff --git a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/BuildingBlockRollbackRepository.java b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/BuildingBlockRollbackRepository.java
new file mode 100644
index 0000000000..24dd713197
--- /dev/null
+++ b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/BuildingBlockRollbackRepository.java
@@ -0,0 +1,34 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2021 Bell Canada
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.db.catalog.data.repository;
+
+import java.util.List;
+import org.onap.so.db.catalog.beans.BuildingBlockRollback;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.rest.core.annotation.RepositoryRestResource;
+
+@RepositoryRestResource(collectionResourceRel = "buildingBlockRollback", path = "buildingBlockRollback")
+public interface BuildingBlockRollbackRepository extends JpaRepository<BuildingBlockRollback, Integer> {
+
+ List<BuildingBlockRollback> findAll();
+
+ BuildingBlockRollback findOneById(Integer ID);
+}
diff --git a/mso-catalog-db/src/test/resources/schema.sql b/mso-catalog-db/src/test/resources/schema.sql
index 86f56ca3a5..db800b2b49 100644
--- a/mso-catalog-db/src/test/resources/schema.sql
+++ b/mso-catalog-db/src/test/resources/schema.sql
@@ -1415,3 +1415,12 @@ CREATE TABLE IF NOT EXISTS `processing_flags` (
PRIMARY KEY (`ID`),
UNIQUE KEY `UK_processing_flags` (`FLAG`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+CREATE TABLE IF NOT EXISTS `building_block_rollback` (
+ `ID` INT NOT NULL AUTO_INCREMENT,
+ `BUILDING_BLOCK_NAME` varchar(200) NOT NULL,
+ `ACTION` varchar(200) null,
+ `ROLLBACK_BUILDING_BLOCK_NAME` varchar(200) NOT NULL,
+ `ROLLBACK_ACTION` varchar(200) NULL,
+ PRIMARY KEY (`ID`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;