Update Asdc DB table 15/104215/1
authorzm330 <zhangminyj@chinamobile.com>
Tue, 24 Mar 2020 03:16:56 +0000 (11:16 +0800)
committerzm330 <zhangminyj@chinamobile.com>
Tue, 24 Mar 2020 03:19:40 +0000 (11:19 +0800)
Issue-ID: SO-2758

Signed-off-by: zm330 <zhangminyj@chinamobile.com>
Change-Id: Ic916e55effe0e3688b8d014fb70ea0e2ad23c16a

adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/catalogrest/QueryServiceInfo.java
adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/catalogrest/QueryServiceMacroHolder.java
adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/rest/CatalogDbAdapterRest.java
adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V7.5__AddServiceArtifact.sql
asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java
asdc-controller/src/test/java/org/onap/so/asdc/installer/heat/ToscaResourceInstallerTest.java
asdc-controller/src/test/resources/schema.sql
mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/Service.java
mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/ServiceInfo.java
mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/ServiceInfoRepository.java [deleted file]
mso-catalog-db/src/main/java/org/onap/so/db/catalog/rest/beans/ServiceMacroHolder.java

index 6c1c81c..195ada3 100644 (file)
@@ -24,8 +24,11 @@ import org.onap.so.db.catalog.beans.Service;
 import org.onap.so.db.catalog.beans.ServiceInfo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.util.CollectionUtils;
 import javax.xml.bind.annotation.XmlRootElement;
+import java.util.Collections;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 @XmlRootElement(name = "serviceInfo")
@@ -45,8 +48,10 @@ public class QueryServiceInfo extends CatalogQuery {
         this.serviceInfo = new ServiceInfo();
     }
 
-    public QueryServiceInfo(ServiceInfo serviceInfo) {
-        this.serviceInfo = serviceInfo;
+    public QueryServiceInfo(List<ServiceInfo> serviceInfos) {
+        if (!CollectionUtils.isEmpty(serviceInfos)) {
+            this.serviceInfo = serviceInfos.get(0);
+        }
     }
 
     public ServiceInfo getServiceInfo() {
index d5aa472..305d52a 100644 (file)
@@ -94,7 +94,7 @@ public class QueryServiceMacroHolder extends CatalogQuery {
         subitem = new QueryAllottedResourceCustomization(service.getAllottedCustomizations()).JSON2(true, true);
         valueMap.put("_SERVICEALLOTTEDRESOURCES_", subitem.replaceAll(LINE_BEGINNING, "\t"));
 
-        subitem = new QueryServiceInfo(serviceMacroHolder.getServiceInfo()).JSON2(true, true);
+        subitem = new QueryServiceInfo(service.getServiceInfos()).JSON2(true, true);
         valueMap.put("_SERVICEINFO_", subitem.replaceAll(LINE_BEGINNING, "\t"));
 
         subitem = new QueryServiceProxyCustomization(service.getServiceProxyCustomizations()).JSON2(true, true);
index fca1d3a..98abf15 100644 (file)
@@ -102,9 +102,6 @@ public class CatalogDbAdapterRest {
     @Autowired
     private InstanceGroupRepository instanceGroupRepository;
 
-    @Autowired
-    private ServiceInfoRepository serviceInfoRepository;
-
     private static final String NO_MATCHING_PARAMETERS = "no matching parameters";
 
     public Response respond(String version, int respStatus, boolean isArray, CatalogQuery qryResp) {
@@ -307,8 +304,6 @@ public class CatalogDbAdapterRest {
                 respStatus = HttpStatus.SC_NOT_FOUND;
                 qryResp = new QueryServiceMacroHolder();
             } else {
-                ServiceInfo serviceInfo = serviceInfoRepository.findByService(ret.getService());
-                ret.setServiceInfo(serviceInfo);
                 qryResp = new QueryServiceMacroHolder(ret);
                 logger.debug("serviceMacroHolder qryResp= {}", qryResp);
             }
index d32c466..6ef8446 100644 (file)
@@ -4,7 +4,9 @@ CREATE TABLE IF NOT EXISTS `service_info` (
   `ID` int (11) AUTO_INCREMENT,
   `SERVICE_INPUT` varchar (5000),
   `SERVICE_PROPERTIES` varchar (5000),
-  PRIMARY KEY (`ID`)
+  `SERVICE_MODEL_UUID` varchar (200) NOT NULL,
+  PRIMARY KEY (`ID`),
+  CONSTRAINT `fk_service_info_service1` FOREIGN KEY (`SERVICE_MODEL_UUID`) REFERENCES `service` (`MODEL_UUID`) ON DELETE CASCADE ON UPDATE CASCADE
 )ENGINE=InnoDB DEFAULT CHARSET=latin1;
 
 CREATE TABLE IF NOT EXISTS `service_artifact`(
@@ -18,13 +20,5 @@ CREATE TABLE IF NOT EXISTS `service_artifact`(
   `CREATION_TIMESTAMP` DATETIME DEFAULT CURRENT_TIMESTAMP,
   `SERVICE_MODEL_UUID` varchar (200) NOT NULL,
   PRIMARY KEY (`ARTIFACT_UUID`),
-  CONSTRAINT `fk_service_artifact_service_info1` FOREIGN KEY (`SERVICE_MODEL_UUID`) REFERENCES `service` (`MODEL_UUID`) ON DELETE CASCADE ON UPDATE CASCADE
+  CONSTRAINT `fk_service_artifact_service1` FOREIGN KEY (`SERVICE_MODEL_UUID`) REFERENCES `service` (`MODEL_UUID`) ON DELETE CASCADE ON UPDATE CASCADE
 )ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
-CREATE TABLE IF NOT EXISTS `service_to_service_info` (
-  `SERVICE_MODEL_UUID` varchar (200) NOT NULL,
-  `SERVICE_INFO_ID` INT (11) NOT NULL,
-  PRIMARY KEY (`SERVICE_MODEL_UUID`,`SERVICE_INFO_ID`),
-  CONSTRAINT `fk_service_to_service_info__service1` FOREIGN KEY (`SERVICE_MODEL_UUID`) REFERENCES `service` (`MODEL_UUID`) ON DELETE CASCADE ON UPDATE CASCADE,
-  CONSTRAINT `fk_service_to_service_info__service_info1` FOREIGN KEY (`SERVICE_INFO_ID`) REFERENCES `service_info` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE
-)
\ No newline at end of file
index 423c1a7..4bc3f88 100644 (file)
@@ -215,9 +215,6 @@ public class ToscaResourceInstaller {
     @Autowired
     protected PnfCustomizationRepository pnfCustomizationRepository;
 
-    @Autowired
-    protected ServiceInfoRepository serviceInfoRepository;
-
     @Autowired
     protected WorkflowResource workflowResource;
 
@@ -393,7 +390,7 @@ public class ToscaResourceInstaller {
             createToscaCsar(toscaResourceStruct);
             createService(toscaResourceStruct, vfResourceStruct);
             Service service = toscaResourceStruct.getCatalogService();
-            ServiceInfo serviceInfo = createServiceInfo(toscaResourceStruct, service);
+            createServiceInfo(toscaResourceStruct, service);
 
             List<IEntityDetails> vfEntityList = getEntityDetails(toscaResourceStruct,
                     EntityQuery.newBuilder(SdcTypes.VF), TopologyTemplateQuery.newBuilder(SdcTypes.SERVICE), false);
@@ -423,9 +420,8 @@ public class ToscaResourceInstaller {
             processServiceProxyAndConfiguration(toscaResourceStruct, service);
 
             logger.info("Saving Service: {} ", service.getModelName());
-            ServiceInfo serviceResult = serviceInfoRepository.save(serviceInfo);
-            Service resultService = serviceResult.getService();
-            correlateConfigCustomResources(resultService);
+            service = serviceRepo.save(service);
+            correlateConfigCustomResources(service);
 
             workflowResource.processWorkflows(vfResourceStructure);
 
@@ -2902,9 +2898,9 @@ public class ToscaResourceInstaller {
         createToscaCsar(toscaResourceStruct);
         createService(toscaResourceStruct, vfResourceStruct);
         Service service = toscaResourceStruct.getCatalogService();
-        ServiceInfo serviceInfo = createServiceInfo(toscaResourceStruct, service);
+        createServiceInfo(toscaResourceStruct, service);
         createServiceArtifact(service, vfResourceStruct, artifactContent);
-        serviceInfoRepository.save(serviceInfo);
+        serviceRepo.save(service);
     }
 
     private void createServiceArtifact(Service service, VfResourceStructure vfResourceStruct, String artifactContent) {
@@ -2927,16 +2923,19 @@ public class ToscaResourceInstaller {
         service.setServiceArtifactList(serviceArtifactList);
     }
 
-    private ServiceInfo createServiceInfo(ToscaResourceStructure toscaResourceStruct, Service service) {
+    private void createServiceInfo(ToscaResourceStructure toscaResourceStruct, Service service) {
+        List<ServiceInfo> serviceInfos = new ArrayList<>();
+
         ServiceInfo serviceInfo = new ServiceInfo();
         String serviceInput = getServiceInput(toscaResourceStruct);
         serviceInfo.setServiceInput(serviceInput);
 
         String serviceProperties = getServiceProperties(toscaResourceStruct);
         serviceInfo.setServiceProperties(serviceProperties);
-
         serviceInfo.setService(service);
-        return serviceInfo;
+        serviceInfos.add(serviceInfo);
+
+        service.setServiceInfos(serviceInfos);
     }
 
     private String getServiceProperties(ToscaResourceStructure toscaResourceStruct) {
index b8a2d01..e488211 100644 (file)
@@ -343,7 +343,6 @@ public class ToscaResourceInstallerTest extends BaseTest {
         doReturn(resourceCustomizationUUID).when(metadata).getValue("vfModuleModelCustomizationUUID");
 
         ServiceRepository serviceRepo = spy(ServiceRepository.class);
-        ServiceInfoRepository serviceInfoRepo = spy(ServiceInfoRepository.class);
 
         VnfResourceRepository vnfRepo = spy(VnfResourceRepository.class);
         doReturn(null).when(vnfRepo).findResourceByModelUUID(uuid);
@@ -354,7 +353,6 @@ public class ToscaResourceInstallerTest extends BaseTest {
         WorkflowResource workflowResource = spy(WorkflowResource.class);
 
         ReflectionTestUtils.setField(toscaInstaller, "serviceRepo", serviceRepo);
-        ReflectionTestUtils.setField(toscaInstaller, "serviceInfoRepository", serviceInfoRepo);
         ReflectionTestUtils.setField(toscaInstaller, "vnfRepo", vnfRepo);
         ReflectionTestUtils.setField(toscaInstaller, "vfModuleRepo", vfModuleRepo);
         ReflectionTestUtils.setField(toscaInstaller, "instanceGroupRepo", instanceGroupRepo);
@@ -425,10 +423,7 @@ public class ToscaResourceInstallerTest extends BaseTest {
         assertNotNull(service);
         service.setModelVersion("1.0");
 
-        ServiceInfo serviceInfo = new ServiceInfo();
-        serviceInfo.setService(service);
         doReturn(service).when(serviceRepo).save(service);
-        doReturn(serviceInfo).when(serviceInfoRepo).save(any(ServiceInfo.class));
 
         WatchdogComponentDistributionStatusRepository watchdogCDStatusRepository =
                 spy(WatchdogComponentDistributionStatusRepository.class);
index d051d1a..7ed1e99 100644 (file)
@@ -1382,7 +1382,9 @@ CREATE TABLE IF NOT EXISTS `service_info` (
   `ID` int (11) AUTO_INCREMENT,
   `SERVICE_INPUT` varchar (5000),
   `SERVICE_PROPERTIES` varchar (5000),
-  PRIMARY KEY (`ID`)
+  `SERVICE_MODEL_UUID` varchar (200) NOT NULL,
+  PRIMARY KEY (`ID`),
+  CONSTRAINT `fk_service_info_service1` FOREIGN KEY (`SERVICE_MODEL_UUID`) REFERENCES `service` (`MODEL_UUID`) ON DELETE CASCADE ON UPDATE CASCADE
 )ENGINE=InnoDB DEFAULT CHARSET=latin1;
 
 CREATE TABLE IF NOT EXISTS `service_artifact`(
@@ -1399,14 +1401,6 @@ CREATE TABLE IF NOT EXISTS `service_artifact`(
   CONSTRAINT `fk_service_artifact_service_info1` FOREIGN KEY (`SERVICE_MODEL_UUID`) REFERENCES `service` (`MODEL_UUID`) ON DELETE CASCADE ON UPDATE CASCADE
 )ENGINE=InnoDB DEFAULT CHARSET=latin1;
 
-CREATE TABLE IF NOT EXISTS `service_to_service_info` (
-  `SERVICE_MODEL_UUID` varchar (200) NOT NULL,
-  `SERVICE_INFO_ID` INT (11) NOT NULL,
-  PRIMARY KEY (`SERVICE_MODEL_UUID`,`SERVICE_INFO_ID`),
-  CONSTRAINT `fk_service_to_service_info__service1` FOREIGN KEY (`SERVICE_MODEL_UUID`) REFERENCES `service` (`MODEL_UUID`) ON DELETE CASCADE ON UPDATE CASCADE,
-  CONSTRAINT `fk_service_to_service_info__service_info1` FOREIGN KEY (`SERVICE_INFO_ID`) REFERENCES `service_info` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE
-)ENGINE=InnoDB DEFAULT CHARSET=latin1;
-
 --------START Request DB SCHEMA --------
 CREATE DATABASE requestdb;
 USE requestdb;
index 0d7a6db..3f3742f 100644 (file)
@@ -139,6 +139,9 @@ public class Service implements Serializable {
     @OneToMany(cascade = CascadeType.ALL, mappedBy = "service")
     private List<ServiceArtifact> serviceArtifactList;
 
+    @OneToMany(cascade = CascadeType.ALL, mappedBy = "service")
+    private List<ServiceInfo> serviceInfos;
+
     @Column(name = "NAMING_POLICY")
     private String namingPolicy;
 
@@ -385,6 +388,17 @@ public class Service implements Serializable {
         this.serviceArtifactList = serviceArtifactList;
     }
 
+    public List<ServiceInfo> getServiceInfos() {
+        if (serviceInfos == null) {
+            serviceInfos = new ArrayList<>();
+        }
+        return serviceInfos;
+    }
+
+    public void setServiceInfos(List<ServiceInfo> serviceInfos) {
+        this.serviceInfos = serviceInfos;
+    }
+
     public String getWorkloadContext() {
         return this.workloadContext;
     }
index f9c9576..d11a112 100644 (file)
@@ -45,9 +45,8 @@ public class ServiceInfo implements Serializable {
     @Column(name = "SERVICE_PROPERTIES")
     private String serviceProperties;
 
-    @OneToOne(cascade = CascadeType.ALL)
-    @JoinTable(name = "service_to_service_info", joinColumns = @JoinColumn(name = "SERVICE_INFO_ID"),
-            inverseJoinColumns = @JoinColumn(name = "SERVICE_MODEL_UUID"))
+    @ManyToOne(cascade = CascadeType.ALL)
+    @JoinColumn(name = "SERVICE_MODEL_UUID")
     private Service service;
 
     public Integer getId() {
diff --git a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/ServiceInfoRepository.java b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/ServiceInfoRepository.java
deleted file mode 100644 (file)
index e3a4ca2..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP - SO
- * ================================================================================
- * Copyright (c) 2019, CMCC Technologies Co., Ltd.
- * ================================================================================
- * 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.data.repository;
-
-import org.onap.so.db.catalog.beans.Service;
-import org.onap.so.db.catalog.beans.ServiceInfo;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.rest.core.annotation.RepositoryRestResource;
-
-@RepositoryRestResource(collectionResourceRel = "serviceInfo", path = "serviceInfo")
-public interface ServiceInfoRepository extends JpaRepository<ServiceInfo, Integer> {
-
-    ServiceInfo findByService(Service service);
-
-}
index ec4e922..65cbb52 100644 (file)
@@ -39,7 +39,6 @@ public class ServiceMacroHolder implements Serializable {
     private ArrayList<AllottedResourceCustomization> allottedResourceCustomizations;
     private ArrayList<VnfResourceCustomization> vnfResourceCustomizations;
     private ArrayList<ServiceProxyResourceCustomization> serviceProxyResourceCustomizations;
-    private ServiceInfo serviceInfo;
 
 
     public ServiceMacroHolder() {
@@ -50,7 +49,6 @@ public class ServiceMacroHolder implements Serializable {
         this.allottedResourceCustomizations = new ArrayList<>();
         this.vnfResourceCustomizations = new ArrayList<>();
         this.serviceProxyResourceCustomizations = new ArrayList<>();
-        this.serviceInfo = null;
     }
 
     public ServiceMacroHolder(Service service) {
@@ -66,14 +64,6 @@ public class ServiceMacroHolder implements Serializable {
         this.service = service;
     }
 
-    public ServiceInfo getServiceInfo() {
-        return serviceInfo;
-    }
-
-    public void setServiceInfo(ServiceInfo serviceInfo) {
-        this.serviceInfo = serviceInfo;
-    }
-
     public void setVnfResources(ArrayList<VnfResource> vnfResources) {
         this.vnfResources = vnfResources;
     }
@@ -165,11 +155,6 @@ public class ServiceMacroHolder implements Serializable {
         } else {
             sb.append("service: null");
         }
-        if (this.serviceInfo != null) {
-            sb.append("serviceInfo: " + this.serviceInfo.toString());
-        } else {
-            sb.append("serviceInfo: null");
-        }
         if (this.vnfResourceCustomizations != null && this.vnfResourceCustomizations.size() > 0) {
             int i = 0;
             sb.append("VnfResources: ");