diff options
27 files changed, 1520 insertions, 30 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 db73d4afec..0e526e59fb 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 @@ -24,6 +24,7 @@ import javax.annotation.PostConstruct; import javax.ws.rs.ApplicationPath; import org.glassfish.jersey.server.ResourceConfig; import org.onap.so.adapters.catalogdb.rest.CatalogDbAdapterRest; +import org.onap.so.adapters.catalogdb.rest.ServiceRestImpl; import org.onap.so.logging.jaxrs.filter.JaxRsFilterLogging; import org.springframework.context.annotation.Configuration; import io.swagger.jaxrs.config.BeanConfig; @@ -40,6 +41,7 @@ public class JerseyConfiguration extends ResourceConfig { register(ApiListingResource.class); register(SwaggerSerializers.class); register(JaxRsFilterLogging.class); + register(ServiceRestImpl.class); BeanConfig beanConfig = new BeanConfig(); beanConfig.setVersion("1.0.2"); beanConfig.setSchemes(new String[] {"http"}); diff --git a/adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/rest/CatalogDbAdapterRest.java b/adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/rest/CatalogDbAdapterRest.java index 6cc53e6ec9..589f119337 100644 --- a/adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/rest/CatalogDbAdapterRest.java +++ b/adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/rest/CatalogDbAdapterRest.java @@ -279,6 +279,7 @@ public class CatalogDbAdapterRest { @QueryParam("serviceModelUuid") String modelUUID, @QueryParam("serviceModelInvariantUuid") String modelInvariantUUID, @QueryParam("serviceModelVersion") String modelVersion) { + QueryServiceMacroHolder qryResp; int respStatus = HttpStatus.SC_OK; String uuid = ""; diff --git a/adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/rest/ServiceMapper.java b/adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/rest/ServiceMapper.java new file mode 100644 index 0000000000..dd18767762 --- /dev/null +++ b/adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/rest/ServiceMapper.java @@ -0,0 +1,128 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. 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.adapters.catalogdb.rest; + +import java.util.ArrayList; +import java.util.List; +import org.onap.so.db.catalog.beans.HeatEnvironment; +import org.onap.so.db.catalog.beans.VfModuleCustomization; +import org.onap.so.db.catalog.beans.VnfResourceCustomization; +import org.onap.so.rest.catalog.beans.Service; +import org.onap.so.rest.catalog.beans.VfModule; +import org.onap.so.rest.catalog.beans.Vnf; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + + +@Component +public class ServiceMapper { + private static final Logger logger = LoggerFactory.getLogger(ServiceMapper.class); + + public Service mapService(org.onap.so.db.catalog.beans.Service service, int depth) { + Service restService = new Service(); + restService.setCategory(service.getCategory()); + restService.setCreated(service.getCreated()); + restService.setDescription(service.getDescription()); + restService.setDistrobutionStatus(service.getDistrobutionStatus()); + restService.setEnvironmentContext(service.getEnvironmentContext()); + restService.setModelInvariantId(service.getModelInvariantUUID()); + restService.setModelName(service.getModelName()); + restService.setModelVersionId(service.getModelUUID()); + restService.setModelVersion(service.getModelVersion()); + restService.setServiceRole(service.getServiceRole()); + restService.setServiceType(service.getServiceType()); + restService.setWorkloadContext(service.getWorkloadContext()); + if (depth > 0) + restService.setVnf(mapVnfs(service, depth)); + return restService; + } + + private List<Vnf> mapVnfs(org.onap.so.db.catalog.beans.Service service, int depth) { + List<Vnf> vnfs = new ArrayList<>(); + logger.info("Vnf Count : {}", service.getVnfCustomizations().size()); + service.getVnfCustomizations().parallelStream().forEach(vnf -> vnfs.add(mapVnf(vnf, depth))); + return vnfs; + } + + private Vnf mapVnf(org.onap.so.db.catalog.beans.VnfResourceCustomization vnfResourceCustomization, int depth) { + Vnf vnf = new Vnf(); + vnf.setAvailabilityZoneMaxCount(vnfResourceCustomization.getAvailabilityZoneMaxCount()); + vnf.setCategory(vnfResourceCustomization.getVnfResources().getCategory()); + vnf.setCloudVersionMax(vnfResourceCustomization.getVnfResources().getAicVersionMax()); + vnf.setCloudVersionMin(vnfResourceCustomization.getVnfResources().getAicVersionMin()); + vnf.setMaxInstances(vnfResourceCustomization.getMaxInstances()); + vnf.setMinInstances(vnfResourceCustomization.getMinInstances()); + vnf.setModelCustomizationId(vnfResourceCustomization.getModelCustomizationUUID()); + vnf.setModelInstanceName(vnfResourceCustomization.getModelInstanceName()); + vnf.setModelInvariantId(vnfResourceCustomization.getVnfResources().getModelInvariantId()); + vnf.setModelName(vnfResourceCustomization.getVnfResources().getModelName()); + vnf.setModelVersionId(vnfResourceCustomization.getVnfResources().getModelUUID()); + vnf.setModelVersion(vnfResourceCustomization.getVnfResources().getModelVersion()); + vnf.setMultiStageDesign(vnfResourceCustomization.getMultiStageDesign()); + vnf.setNfFunction(vnfResourceCustomization.getNfFunction()); + vnf.setNfNamingCode(vnfResourceCustomization.getNfNamingCode()); + vnf.setNfRole(vnfResourceCustomization.getNfRole()); + vnf.setOrchestrationMode(vnfResourceCustomization.getVnfResources().getOrchestrationMode()); + vnf.setSubCategory(vnfResourceCustomization.getVnfResources().getSubCategory()); + vnf.setToscaNodeType(vnfResourceCustomization.getVnfResources().getToscaNodeType()); + if (depth > 1) { + vnf.setVfModule(mapVfModules(vnfResourceCustomization, depth)); + } + return vnf; + } + + private List<VfModule> mapVfModules(VnfResourceCustomization vnfResourceCustomization, int depth) { + List<VfModule> vfModules = new ArrayList<>(); + vnfResourceCustomization.getVfModuleCustomizations().parallelStream() + .forEach(vfModule -> vfModules.add(mapVfModule(vfModule))); + return vfModules; + } + + private VfModule mapVfModule(VfModuleCustomization vfModuleCust) { + VfModule vfModule = new VfModule(); + vfModule.setAvailabilityZoneCount(vfModuleCust.getAvailabilityZoneCount()); + vfModule.setCreated(vfModuleCust.getCreated()); + vfModule.setDescription(vfModuleCust.getVfModule().getDescription()); + vfModule.setInitialCount(vfModuleCust.getInitialCount()); + vfModule.setIsBase(vfModuleCust.getVfModule().getIsBase()); + vfModule.setIsVolumeGroup(getIsVolumeGroup(vfModuleCust)); + vfModule.setMaxInstances(vfModuleCust.getMaxInstances()); + vfModule.setMinInstances(vfModuleCust.getMinInstances()); + vfModule.setLabel(vfModuleCust.getLabel()); + vfModule.setModelCustomizationId(vfModuleCust.getModelCustomizationUUID()); + vfModule.setModelInvariantId(vfModuleCust.getVfModule().getModelInvariantUUID()); + vfModule.setModelName(vfModuleCust.getVfModule().getModelName()); + vfModule.setModelVersionId(vfModuleCust.getVfModule().getModelUUID()); + vfModule.setModelVersion(vfModuleCust.getVfModule().getModelVersion()); + return vfModule; + } + + private boolean getIsVolumeGroup(VfModuleCustomization vfModuleCust) { + boolean isVolumeGroup = false; + HeatEnvironment envt = vfModuleCust.getVolumeHeatEnv(); + if (envt != null) { + isVolumeGroup = true; + } + return isVolumeGroup; + } + +} diff --git a/adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/rest/ServiceRestImpl.java b/adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/rest/ServiceRestImpl.java new file mode 100644 index 0000000000..1ca8998396 --- /dev/null +++ b/adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/rest/ServiceRestImpl.java @@ -0,0 +1,76 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. 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.adapters.catalogdb.rest; + +import java.util.ArrayList; +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.QueryParam; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import org.onap.so.db.catalog.data.repository.ServiceRepository; +import org.onap.so.rest.catalog.beans.Service; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; +import com.google.common.base.Strings; +import io.swagger.annotations.ApiOperation; + +@Path("/v1/") +@Component +public class ServiceRestImpl { + + @Autowired + private ServiceRepository serviceRepo; + + @Autowired + private ServiceMapper serviceMapper; + + @GET + @Path("/services/{modelUUID}") + @Produces({MediaType.APPLICATION_JSON}) + @Transactional(readOnly = true) + public Service findService(@PathParam("modelUUID") String modelUUID, @QueryParam("depth") int depth) { + org.onap.so.db.catalog.beans.Service service = serviceRepo.findOneByModelUUID(modelUUID); + return serviceMapper.mapService(service, depth); + } + + @GET + @Path("/services") + @ApiOperation(value = "Find Service Models", response = Service.class, responseContainer = "List") + @Produces({MediaType.APPLICATION_JSON}) + @Transactional(readOnly = true) + public List<Service> queryServices(@QueryParam("modelName") String modelName, + @QueryParam("distributionStatus") String distributionStatus, @QueryParam("depth") int depth) { + List<Service> services = new ArrayList<>(); + List<org.onap.so.db.catalog.beans.Service> serviceFromDB = new ArrayList<>(); + if (!Strings.isNullOrEmpty(modelName) && !Strings.isNullOrEmpty(distributionStatus)) { + serviceFromDB = serviceRepo.findByModelNameAndDistrobutionStatus(modelName, distributionStatus); + } else if (!Strings.isNullOrEmpty(modelName)) { + serviceFromDB = serviceRepo.findByModelName(modelName); + } + serviceFromDB.stream().forEach(serviceDB -> services.add(serviceMapper.mapService(serviceDB, depth))); + return services; + } +} diff --git a/adapters/mso-catalog-db-adapter/src/main/resources/db/manual/Migrate_Distrobution_Status.sql b/adapters/mso-catalog-db-adapter/src/main/resources/db/manual/Migrate_Distrobution_Status.sql new file mode 100644 index 0000000000..4a9c2cce9f --- /dev/null +++ b/adapters/mso-catalog-db-adapter/src/main/resources/db/manual/Migrate_Distrobution_Status.sql @@ -0,0 +1,11 @@ + +UPDATE catalogdb.service serv SET OVERALL_DISTRIBUTION_STATUS =( +SELECT wds.DISTRIBUTION_ID_STATUS +FROM requestdb.watchdog_distributionid_status wds +INNER JOIN requestdb.watchdog_service_mod_ver_id_lookup wdlook +ON wds.DISTRIBUTION_ID = wdlook.DISTRIBUTION_ID +WHERE wdlook.SERVICE_MODEL_VERSION_ID = serv.MODEL_UUID +ORDER BY wdlook.MODIFY_TIME DESC LIMIT 1); + +UPDATE catalogdb.service SET OVERALL_DISTRIBUTION_STATUS = 'DISTRIBUTION_COMPLETE_OK' +WHERE service.OVERALL_DISTRIBUTION_STATUS = NULL;
\ No newline at end of file diff --git a/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V5.6.6__Add_Column_For_Distrobution_Status.sql b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V5.6.6__Add_Column_For_Distrobution_Status.sql new file mode 100644 index 0000000000..ae416ffbfe --- /dev/null +++ b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V5.6.6__Add_Column_For_Distrobution_Status.sql @@ -0,0 +1 @@ +ALTER TABLE catalogdb.service ADD COLUMN IF NOT EXISTS OVERALL_DISTRIBUTION_STATUS varchar(45);
\ No newline at end of file diff --git a/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/ServiceMapperTest.java b/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/ServiceMapperTest.java new file mode 100644 index 0000000000..b8161de6b2 --- /dev/null +++ b/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/ServiceMapperTest.java @@ -0,0 +1,134 @@ +package org.onap.so.adapters.catalogdb.catalogrest; + +import static com.shazam.shazamcrest.MatcherAssert.assertThat; +import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import org.junit.Test; +import org.onap.so.adapters.catalogdb.rest.ServiceMapper; +import org.onap.so.db.catalog.beans.HeatTemplate; +import org.onap.so.db.catalog.beans.HeatTemplateParam; +import org.onap.so.db.catalog.beans.VfModuleCustomization; +import org.onap.so.rest.catalog.beans.Service; +import wiremock.com.fasterxml.jackson.core.JsonParseException; +import wiremock.com.fasterxml.jackson.databind.JsonMappingException; +import wiremock.com.fasterxml.jackson.databind.ObjectMapper; + +public class ServiceMapperTest { + + private ServiceMapper serviceMapper = new ServiceMapper(); + + @Test + public void service_map_test() throws JsonParseException, JsonMappingException, IOException { + Service actual = serviceMapper.mapService(getTestService(), 2); + assertThat(actual, sameBeanAs(getExpectedService())); + } + + private Service getExpectedService() throws JsonParseException, JsonMappingException, IOException { + ObjectMapper mapper = new ObjectMapper(); + return mapper.readValue(getJson("ExpectedService.json"), Service.class); + } + + + private org.onap.so.db.catalog.beans.Service getTestService() { + org.onap.so.db.catalog.beans.Service testService = new org.onap.so.db.catalog.beans.Service(); + testService.setCategory("category"); + testService.setDescription("description"); + testService.setDistrobutionStatus("distrobutionStatus"); + testService.setEnvironmentContext("environmentContext"); + testService.setModelInvariantUUID("modelInvariantUUID"); + testService.setModelName("modelName"); + testService.setModelUUID("modelUUID"); + testService.setModelVersion("modelVersion"); + testService.setServiceType("serviceType"); + testService.setServiceRole("serviceRole"); + testService.getVnfCustomizations().add(getTestVnfCustomization()); + return testService; + } + + private org.onap.so.db.catalog.beans.VnfResourceCustomization getTestVnfCustomization() { + org.onap.so.db.catalog.beans.VnfResourceCustomization test = + new org.onap.so.db.catalog.beans.VnfResourceCustomization(); + test.setId(1); + test.setAvailabilityZoneMaxCount(11); + test.setMaxInstances(3); + test.setMinInstances(1); + test.setModelCustomizationUUID("modelCustomizationUUID"); + test.setModelInstanceName("modelInstanceName"); + test.setMultiStageDesign("multiStageDesign"); + test.setNfFunction("nfFunction"); + test.setNfNamingCode("nfNamingCode"); + test.setNfRole("nfRole"); + test.setNfType("nfType"); + test.setService(new org.onap.so.db.catalog.beans.Service()); + test.setVnfResources(getTestVnfResource()); + test.setVfModuleCustomizations(getTestVfModuleCust()); + return test; + } + + private List<VfModuleCustomization> getTestVfModuleCust() { + List<VfModuleCustomization> test = new ArrayList<>(); + VfModuleCustomization testVfMod = new VfModuleCustomization(); + testVfMod.setAvailabilityZoneCount(10); + testVfMod.setInitialCount(1); + testVfMod.setLabel("label"); + testVfMod.setMaxInstances(3); + testVfMod.setMinInstances(1); + testVfMod.setModelCustomizationUUID("modelCustomizationUUID"); + org.onap.so.db.catalog.beans.VfModule vfModule = new org.onap.so.db.catalog.beans.VfModule(); + vfModule.setDescription("description"); + vfModule.setIsBase(false); + vfModule.setModelInvariantUUID("modelInvariantUUID"); + vfModule.setModelName("modelName"); + vfModule.setModelUUID("modelUUID"); + vfModule.setModelVersion("modelVersion"); + HeatTemplate moduleHeatTemplate = new HeatTemplate(); + moduleHeatTemplate.setArtifactChecksum("artifactChecksum"); + moduleHeatTemplate.setArtifactUuid("artifactUuid"); + List<HeatTemplate> childTemplates; + // moduleHeatTemplate.setChildTemplates(childTemplates); + moduleHeatTemplate.setDescription("description"); + Set<HeatTemplateParam> parameters = new HashSet<>(); + HeatTemplateParam heatParam = new HeatTemplateParam(); + heatParam.setHeatTemplateArtifactUuid("heatTemplateArtifactUuid"); + heatParam.setParamAlias("paramAlias"); + heatParam.setParamName("paramName"); + heatParam.setParamType("paramType"); + heatParam.setRequired(false); + parameters.add(heatParam); + moduleHeatTemplate.setParameters(parameters); + moduleHeatTemplate.setTemplateBody("templateBody"); + moduleHeatTemplate.setTemplateName("templateName"); + moduleHeatTemplate.setTimeoutMinutes(1000); + moduleHeatTemplate.setVersion("version"); + vfModule.setModuleHeatTemplate(moduleHeatTemplate); + testVfMod.setVfModule(vfModule); + test.add(testVfMod); + return test; + } + + private org.onap.so.db.catalog.beans.VnfResource getTestVnfResource() { + org.onap.so.db.catalog.beans.VnfResource test = new org.onap.so.db.catalog.beans.VnfResource(); + test.setCategory("category"); + test.setDescription("description"); + test.setModelInvariantUUID("modelInvariantUUID"); + test.setModelName("modelName"); + test.setModelUUID("modelUUID"); + test.setModelVersion("modelVersion"); + test.setAicVersionMax("cloudVersionMax"); + test.setAicVersionMin("cloudVersionMin"); + test.setOrchestrationMode("orchestrationMode"); + test.setSubCategory("subCategory"); + test.setToscaNodeType("toscaNodeType"); + return test; + } + + private String getJson(String filename) throws IOException { + return new String(Files.readAllBytes(Paths.get("src/test/resources/" + filename))); + } +} diff --git a/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/db/catalog/client/CatalogDbClientTest.java b/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/db/catalog/client/CatalogDbClientTest.java index 51b44b0d3a..4127d07c5f 100644 --- a/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/db/catalog/client/CatalogDbClientTest.java +++ b/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/db/catalog/client/CatalogDbClientTest.java @@ -289,7 +289,6 @@ public class CatalogDbClientTest extends CatalogDbAdapterBaseTest { Assert.assertNotNull(vnfResource.getModelInvariantId()); Assert.assertNotNull(vnfResource.getModelVersion()); Assert.assertNotNull(vnfResource.getHeatTemplates()); - Assert.assertNotNull(vnfResource.getVnfResourceCustomizations()); Assert.assertEquals("vSAMP10a", vnfResource.getModelName()); } diff --git a/adapters/mso-catalog-db-adapter/src/test/resources/ExpectedService.json b/adapters/mso-catalog-db-adapter/src/test/resources/ExpectedService.json new file mode 100644 index 0000000000..cc5145f0e3 --- /dev/null +++ b/adapters/mso-catalog-db-adapter/src/test/resources/ExpectedService.json @@ -0,0 +1,52 @@ +{ + "modelName": "modelName", + "description": "description", + "modelVersionId": "modelUUID", + "modelInvariantId": "modelInvariantUUID", + "modelVersion": "modelVersion", + "serviceType": "serviceType", + "serviceRole": "serviceRole", + "environmentContext": "environmentContext", + "category": "category", + "distrobutionStatus": "distrobutionStatus", + "vnf": [ + { + "modelName": "modelName", + "modelVersionId": "modelUUID", + "modelInvariantId": "modelInvariantUUID", + "modelVersion": "modelVersion", + "modelCustomizationId": "modelCustomizationUUID", + "modelInstanceName": "modelInstanceName", + "minInstances": 1, + "maxInstances": 3, + "availabilityZoneMaxCount": 11, + "toscaNodeType": "toscaNodeType", + "nfFunction": "nfFunction", + "nfRole": "nfRole", + "nfNamingCode": "nfNamingCode", + "multiStageDesign": "multiStageDesign", + "orchestrationMode": "orchestrationMode", + "cloudVersionMin": "cloudVersionMin", + "cloudVersionMax": "cloudVersionMax", + "category": "category", + "subCategory": "subCategory", + "vfModule": [ + { + "modelVersionId": "modelUUID", + "modelInvariantId": "modelInvariantUUID", + "modelName": "modelName", + "modelVersion": "modelVersion", + "description": "description", + "isBase": false, + "modelCustomizationId": "modelCustomizationUUID", + "label": "label", + "minInstances": 1, + "maxInstances": 3, + "initialCount": "1", + "availabilityZoneCount": 10, + "isVolumeGroup": false + } + ] + } + ] +}
\ No newline at end of file diff --git a/adapters/mso-openstack-adapters/src/test/resources/schema.sql b/adapters/mso-openstack-adapters/src/test/resources/schema.sql index c700e78868..83023e53db 100644 --- a/adapters/mso-openstack-adapters/src/test/resources/schema.sql +++ b/adapters/mso-openstack-adapters/src/test/resources/schema.sql @@ -717,7 +717,6 @@ CREATE TABLE `northbound_request_ref_lookup` ( `MAX_API_VERSION` double DEFAULT NULL, `IS_TOPLEVELFLOW` tinyint(1) DEFAULT NULL, `CLOUD_OWNER` varchar(200) NOT NULL, - `service_type` varchar(50) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `UK_northbound_request_ref_lookup` (`MIN_API_VERSION`,`REQUEST_SCOPE`,`ACTION`,`IS_ALACARTE`,`MACRO_ACTION`,`CLOUD_OWNER`) ) ENGINE=InnoDB AUTO_INCREMENT=86 DEFAULT CHARSET=latin1; @@ -804,6 +803,7 @@ CREATE TABLE `service` ( `WORKLOAD_CONTEXT` varchar(200) DEFAULT NULL, `SERVICE_CATEGORY` varchar(200) DEFAULT NULL, `RESOURCE_ORDER` varchar(200) default NULL, + OVERALL_DISTRIBUTION_STATUS varchar(45), PRIMARY KEY (`MODEL_UUID`), KEY `fk_service__tosca_csar1_idx` (`TOSCA_CSAR_ARTIFACT_UUID`), CONSTRAINT `fk_service__tosca_csar1` FOREIGN KEY (`TOSCA_CSAR_ARTIFACT_UUID`) REFERENCES `tosca_csar` (`ARTIFACT_UUID`) ON DELETE CASCADE ON UPDATE CASCADE diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/client/ASDCController.java b/asdc-controller/src/main/java/org/onap/so/asdc/client/ASDCController.java index fc0197dc52..dd159c0b38 100644 --- a/asdc-controller/src/main/java/org/onap/so/asdc/client/ASDCController.java +++ b/asdc-controller/src/main/java/org/onap/so/asdc/client/ASDCController.java @@ -599,6 +599,8 @@ public class ASDCController { } } + wd.updateCatalogDBStatus(iNotif.getServiceInvariantUUID(), overallStatus); + if (isDeploySuccess && watchdogError == null) { sendFinalDistributionStatus(iNotif.getDistributionID(), DistributionStatusEnum.DISTRIBUTION_COMPLETE_OK, null); @@ -613,7 +615,6 @@ public class ASDCController { wdsRepo.save(wds); } - } catch (ObjectOptimisticLockingFailureException e) { logger.debug( diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java b/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java index ddf1f3d84b..fce8c5655b 100644 --- a/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java +++ b/asdc-controller/src/main/java/org/onap/so/asdc/installer/heat/ToscaResourceInstaller.java @@ -2271,7 +2271,7 @@ public class ToscaResourceInstaller { // setting resource input for vnf customization vnfResourceCustomization.setResourceInput( getResourceInput(toscaResourceStructure, vnfResourceCustomization.getModelCustomizationUUID())); - vnfResource.getVnfResourceCustomizations().add(vnfResourceCustomization); + service.getVnfCustomizations().add(vnfResourceCustomization); } return vnfResourceCustomization; diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/tenantIsolation/WatchdogDistribution.java b/asdc-controller/src/main/java/org/onap/so/asdc/tenantIsolation/WatchdogDistribution.java index 3659ceed12..0128078a59 100644 --- a/asdc-controller/src/main/java/org/onap/so/asdc/tenantIsolation/WatchdogDistribution.java +++ b/asdc-controller/src/main/java/org/onap/so/asdc/tenantIsolation/WatchdogDistribution.java @@ -30,6 +30,7 @@ import org.onap.so.client.aai.AAIResourcesClient; import org.onap.so.client.aai.entities.uri.AAIResourceUri; import org.onap.so.client.aai.entities.uri.AAIUriFactory; import org.onap.so.client.graphinventory.entities.uri.Depth; +import org.onap.so.db.catalog.beans.Service; import org.onap.so.db.catalog.data.repository.ServiceRepository; import org.onap.so.db.request.beans.WatchdogComponentDistributionStatus; import org.onap.so.db.request.beans.WatchdogDistributionStatus; @@ -140,7 +141,6 @@ public class WatchdogDistribution { logger.debug("Updating overall DistributionStatus to: {} for distributionId: ", status, distributionId); - watchdogDistributionStatus.setDistributionIdStatus(status); watchdogDistributionStatusRepository.save(watchdogDistributionStatus); } else { logger.debug("Components Size Didn't match with the WatchdogComponentDistributionStatus results."); @@ -181,6 +181,8 @@ public class WatchdogDistribution { throw new Exception(error); } + + AAIResourceUri aaiUri = AAIUriFactory.createResourceUri(AAIObjectType.MODEL_VER, serviceModelInvariantUUID, serviceModelVersionId); aaiUri.depth(Depth.ZERO); // Do not return relationships if any @@ -198,6 +200,16 @@ public class WatchdogDistribution { } } + public void updateCatalogDBStatus(String serviceModelVersionId, String status) { + try { + Service foundService = serviceRepo.findOneByModelUUID(serviceModelVersionId); + foundService.setDistrobutionStatus(status); + serviceRepo.save(foundService); + } catch (Exception e) { + logger.error("Error updating CatalogDBStatus", e); + } + } + public AAIResourcesClient getAaiClient() { if (aaiClient == null) { aaiClient = new AAIResourcesClient(); diff --git a/asdc-controller/src/test/resources/schema.sql b/asdc-controller/src/test/resources/schema.sql index bdd906d870..0e8024da0a 100644 --- a/asdc-controller/src/test/resources/schema.sql +++ b/asdc-controller/src/test/resources/schema.sql @@ -806,6 +806,7 @@ CREATE TABLE `service` ( `WORKLOAD_CONTEXT` varchar(200) DEFAULT NULL, `SERVICE_CATEGORY` varchar(200) DEFAULT NULL, `RESOURCE_ORDER` varchar(200) default NULL, + OVERALL_DISTRIBUTION_STATUS varchar(45), PRIMARY KEY (`MODEL_UUID`), KEY `fk_service__tosca_csar1_idx` (`TOSCA_CSAR_ARTIFACT_UUID`), CONSTRAINT `fk_service__tosca_csar1` FOREIGN KEY (`TOSCA_CSAR_ARTIFACT_UUID`) REFERENCES `tosca_csar` (`ARTIFACT_UUID`) ON DELETE CASCADE ON UPDATE CASCADE diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/resources/application-test.yaml b/mso-api-handlers/mso-api-handler-infra/src/test/resources/application-test.yaml index 712fbf54ca..2e1c6a9bdc 100644 --- a/mso-api-handlers/mso-api-handler-infra/src/test/resources/application-test.yaml +++ b/mso-api-handlers/mso-api-handler-infra/src/test/resources/application-test.yaml @@ -83,6 +83,8 @@ mso: spring: + jersey: + type: filter datasource: jdbcUrl: jdbc:mariadb://localhost:3307/catalogdb username: root @@ -97,11 +99,10 @@ spring: naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy enable-lazy-load-no-trans: true database-platform: org.hibernate.dialect.MySQL5InnoDBDialect - jersey: - type: filter + security: usercredentials: - - + - username: test password: '$2a$12$Zi3AuYcZoZO/gBQyUtST2.F5N6HqcTtaNci2Et.ufsQhski56srIu' role: InfraPortal-Client diff --git a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/Service.java b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/Service.java index ffcc8e9717..3b57ae0f72 100644 --- a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/Service.java +++ b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/Service.java @@ -25,11 +25,9 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; -import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; -import javax.persistence.FetchType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; @@ -93,6 +91,9 @@ public class Service implements Serializable { @Column(name = "RESOURCE_ORDER") private String resourceOrder; + @Column(name = "OVERALL_DISTRIBUTION_STATUS") + private String distrobutionStatus; + @OneToMany(cascade = CascadeType.ALL) @JoinTable(name = "network_resource_customization_to_service", joinColumns = @JoinColumn(name = "SERVICE_MODEL_UUID"), @@ -135,6 +136,7 @@ public class Service implements Serializable { @JoinColumn(name = "TOSCA_CSAR_ARTIFACT_UUID") private ToscaCsar csar; + @Override public String toString() { return new ToStringBuilder(this).append("modelName", modelName).append("description", description) @@ -367,4 +369,14 @@ public class Service implements Serializable { public void setResourceOrder(String resourceOrder) { this.resourceOrder = resourceOrder; } + + + public String getDistrobutionStatus() { + return distrobutionStatus; + } + + public void setDistrobutionStatus(String distrobutionStatus) { + this.distrobutionStatus = distrobutionStatus; + } + } diff --git a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/VnfResource.java b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/VnfResource.java index 5d9deb6c89..fb54449d5f 100644 --- a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/VnfResource.java +++ b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/VnfResource.java @@ -38,9 +38,9 @@ import javax.persistence.TemporalType; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; -import com.openpojo.business.annotation.BusinessKey; import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import com.openpojo.business.annotation.BusinessKey; import uk.co.blackpepper.bowman.annotation.LinkedResource; @Entity @@ -93,9 +93,6 @@ public class VnfResource implements Serializable { @JoinColumn(name = "HEAT_TEMPLATE_ARTIFACT_UUID") private HeatTemplate heatTemplates; - @OneToMany(fetch = FetchType.LAZY, mappedBy = "vnfResources") - private List<VnfResourceCustomization> vnfResourceCustomizations; - @OneToMany(fetch = FetchType.LAZY, mappedBy = "vnfResource") private List<VnfResourceWorkflow> vnfResourceWorkflow; @@ -111,8 +108,7 @@ public class VnfResource implements Serializable { .append("toscaNodeType", toscaNodeType).append("description", description) .append("orchestrationMode", orchestrationMode).append("aicVersionMin", aicVersionMin) .append("aicVersionMax", aicVersionMax).append("created", created) - .append("heatTemplates", heatTemplates).append("vnfResourceCustomizations", vnfResourceCustomizations) - .append("vnfResourceWorkflow", vnfResourceWorkflow).toString(); + .append("heatTemplates", heatTemplates).append("vnfResourceWorkflow", vnfResourceWorkflow).toString(); } @Override @@ -230,17 +226,6 @@ public class VnfResource implements Serializable { } @LinkedResource - public List<VnfResourceCustomization> getVnfResourceCustomizations() { - if (vnfResourceCustomizations == null) - vnfResourceCustomizations = new ArrayList<>(); - return vnfResourceCustomizations; - } - - public void setVnfResourceCustomizations(List<VnfResourceCustomization> vnfResourceCustomizations) { - this.vnfResourceCustomizations = vnfResourceCustomizations; - } - - @LinkedResource public HeatTemplate getHeatTemplates() { return heatTemplates; } diff --git a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/ServiceRepository.java b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/ServiceRepository.java index c107192060..b456beaeff 100644 --- a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/ServiceRepository.java +++ b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/data/repository/ServiceRepository.java @@ -30,6 +30,8 @@ import java.util.List; public interface ServiceRepository extends JpaRepository<Service, String> { List<Service> findByModelName(String modelName); + List<Service> findByModelNameAndDistrobutionStatus(String modelName, String distrobutionStatus); + Service findOneByModelName(String modelName); /** diff --git a/mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/HeatEnvironment.java b/mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/HeatEnvironment.java new file mode 100644 index 0000000000..97f67a5438 --- /dev/null +++ b/mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/HeatEnvironment.java @@ -0,0 +1,160 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. 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.rest.catalog.beans; + +import java.io.Serializable; +import java.text.DateFormat; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Lob; +import javax.persistence.PrePersist; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import org.apache.commons.lang3.builder.EqualsBuilder; +import org.apache.commons.lang3.builder.HashCodeBuilder; +import com.openpojo.business.annotation.BusinessKey; + +@Entity +@Table(name = "heat_environment") +public class HeatEnvironment implements Serializable { + + private static final long serialVersionUID = 768026109321305392L; + + @BusinessKey + @Id + @Column(name = "ARTIFACT_UUID") + private String artifactUuid; + + @Column(name = "NAME") + private String name = null; + + @Column(name = "DESCRIPTION") + private String description = null; + + @Lob + @Column(name = "BODY", columnDefinition = "LONGTEXT") + private String environment = null; + + @Column(name = "ARTIFACT_CHECKSUM") + private String artifactChecksum; + + @Column(name = "CREATION_TIMESTAMP", updatable = false) + @Temporal(TemporalType.TIMESTAMP) + private Date created; + + @BusinessKey + @Column(name = "VERSION") + private String version; + + @PrePersist + protected void onCreate() { + this.created = new Date(); + } + + @Override + public boolean equals(final Object other) { + if (!(other instanceof HeatEnvironment)) { + return false; + } + HeatEnvironment castOther = (HeatEnvironment) other; + return new EqualsBuilder().append(artifactUuid, castOther.artifactUuid).append(version, castOther.version) + .isEquals(); + } + + @Override + public int hashCode() { + return new HashCodeBuilder().append(artifactUuid).append(version).toHashCode(); + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public String getArtifactUuid() { + return this.artifactUuid; + } + + public void setArtifactUuid(String artifactUuid) { + this.artifactUuid = artifactUuid; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getEnvironment() { + return this.environment; + } + + public void setEnvironment(String environment) { + this.environment = environment; + } + + public String getArtifactChecksum() { + return artifactChecksum; + } + + public void setArtifactChecksum(String artifactChecksum) { + this.artifactChecksum = artifactChecksum; + } + + public Date getCreated() { + return created; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("Artifact UUID=" + this.artifactUuid); + sb.append(", name="); + sb.append(name); + sb.append(", version="); + sb.append(version); + sb.append(", description="); + sb.append(this.description == null ? "null" : this.description); + sb.append(", body="); + sb.append(this.environment == null ? "null" : this.environment); + if (this.created != null) { + sb.append(",creationTimestamp="); + sb.append(DateFormat.getInstance().format(this.created)); + } + return sb.toString(); + } +} diff --git a/mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/HeatFile.java b/mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/HeatFile.java new file mode 100644 index 0000000000..94f61d30e3 --- /dev/null +++ b/mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/HeatFile.java @@ -0,0 +1,115 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. 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.rest.catalog.beans; + +import java.io.Serializable; +import java.util.Date; +import org.apache.commons.lang3.builder.ToStringBuilder; + + +public class HeatFile implements Serializable { + + /** + * + */ + private static final long serialVersionUID = -3280125018687060890L; + + private String artifactUuid; + + private String description = null; + + private String fileName; + + private String fileBody; + + private Date created; + + private String artifactChecksum; + + private String version; + + @Override + public String toString() { + return new ToStringBuilder(this).append("artifactUuid", artifactUuid).append("description", description) + .append("fileName", fileName).append("fileBody", fileBody).append("created", created) + .append("artifactChecksum", artifactChecksum).toString(); + } + + public String getArtifactUuid() { + return this.artifactUuid; + } + + public void setArtifactUuid(String artifactUuid) { + this.artifactUuid = artifactUuid; + } + + public String getDescription() { + return this.description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getFileName() { + return this.fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getFileBody() { + return this.fileBody; + } + + public void setFileBody(String fileBody) { + this.fileBody = fileBody; + } + + public Date getCreated() { + return created; + } + + public String getAsdcUuid() { + return this.artifactUuid; + } + + public void setAsdcUuid(String artifactUuid) { + this.artifactUuid = artifactUuid; + } + + public String getArtifactChecksum() { + return artifactChecksum; + } + + public void setArtifactChecksum(String artifactChecksum) { + this.artifactChecksum = artifactChecksum; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } +} diff --git a/mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/HeatTemplate.java b/mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/HeatTemplate.java new file mode 100644 index 0000000000..cb346e4167 --- /dev/null +++ b/mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/HeatTemplate.java @@ -0,0 +1,147 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. 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.rest.catalog.beans; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import org.apache.commons.lang3.builder.ToStringBuilder; + + +public class HeatTemplate implements Serializable { + + + private String artifactUuid; + + private String templateName; + + private String templateBody = null; + + private Integer timeoutMinutes; + + private String version; + + private String description; + + private String artifactChecksum; + + private Date created; + + private Set<HeatTemplateParam> parameters; + + private List<HeatTemplate> childTemplates; + + @Override + public String toString() { + return new ToStringBuilder(this).append("artifactUuid", artifactUuid).append("templateName", templateName) + .append("templateBody", templateBody).append("timeoutMinutes", timeoutMinutes) + .append("version", version).append("description", description) + .append("artifactChecksum", artifactChecksum).append("created", created) + .append("parameters", parameters).append("childTemplates", childTemplates).toString(); + } + + public List<HeatTemplate> getChildTemplates() { + if (childTemplates == null) + childTemplates = new ArrayList<>(); + return childTemplates; + } + + public void setChildTemplates(List<HeatTemplate> childTemplates) { + this.childTemplates = childTemplates; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public String getArtifactUuid() { + return this.artifactUuid; + } + + public void setArtifactUuid(String artifactUuid) { + this.artifactUuid = artifactUuid; + } + + public String getTemplateName() { + return templateName; + } + + public void setTemplateName(String templateName) { + this.templateName = templateName; + } + + public String getTemplateBody() { + return templateBody; + } + + public void setTemplateBody(String templateBody) { + this.templateBody = templateBody; + } + + public Integer getTimeoutMinutes() { + return timeoutMinutes; + } + + public void setTimeoutMinutes(Integer timeout) { + this.timeoutMinutes = timeout; + } + + public Set<HeatTemplateParam> getParameters() { + if (parameters == null) + parameters = new HashSet<>(); + return parameters; + } + + public void setParameters(Set<HeatTemplateParam> parameters) { + this.parameters = parameters; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getHeatTemplate() { + return this.templateBody; + } + + public String getArtifactChecksum() { + return artifactChecksum; + } + + public void setArtifactChecksum(String artifactChecksum) { + this.artifactChecksum = artifactChecksum; + } + + public Date getCreated() { + return created; + } +} diff --git a/mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/HeatTemplateParam.java b/mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/HeatTemplateParam.java new file mode 100644 index 0000000000..a79ec962f8 --- /dev/null +++ b/mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/HeatTemplateParam.java @@ -0,0 +1,73 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. 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.rest.catalog.beans; + +import java.io.Serializable; +import org.apache.commons.lang3.builder.ToStringBuilder; + + +public class HeatTemplateParam implements Serializable { + + /** + * + */ + private static final long serialVersionUID = -8251042980747916191L; + + private String paramName; + + private Boolean required; + + private String paramType; + + private String paramAlias; + + public String getParamName() { + return paramName; + } + + public void setParamName(String paramName) { + this.paramName = paramName; + } + + public Boolean isRequired() { + return required; + } + + public void setRequired(Boolean required) { + this.required = required; + } + + public String getParamAlias() { + return paramAlias; + } + + public void setParamAlias(String paramAlias) { + this.paramAlias = paramAlias; + } + + public String getParamType() { + return paramType; + } + + public void setParamType(String paramType) { + this.paramType = paramType; + } +} diff --git a/mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/Service.java b/mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/Service.java new file mode 100644 index 0000000000..1620058e1e --- /dev/null +++ b/mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/Service.java @@ -0,0 +1,165 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. 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.rest.catalog.beans; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; + +@JsonInclude(Include.NON_DEFAULT) +public class Service implements Serializable { + + private static final long serialVersionUID = 768026109321305392L; + + private String modelName; + + private String description; + + private String modelVersionId; + + private String modelInvariantId; + + private Date created; + + private String modelVersion; + + private String serviceType; + + private String serviceRole; + + private String environmentContext; + + private String workloadContext; + + private String category; + + private String distrobutionStatus; + + private List<Vnf> vnf = new ArrayList<>(); + + public List<Vnf> getVnf() { + return vnf; + } + + public void setVnf(List<Vnf> vnf) { + this.vnf = vnf; + } + + public String getModelName() { + return modelName; + } + + public void setModelName(String modelName) { + this.modelName = modelName; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getModelVersionId() { + return modelVersionId; + } + + public void setModelVersionId(String modelVersionId) { + this.modelVersionId = modelVersionId; + } + + public String getModelInvariantId() { + return modelInvariantId; + } + + public void setModelInvariantId(String modelInvariantId) { + this.modelInvariantId = modelInvariantId; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + + public String getModelVersion() { + return modelVersion; + } + + public void setModelVersion(String modelVersion) { + this.modelVersion = modelVersion; + } + + public String getServiceType() { + return serviceType; + } + + public void setServiceType(String serviceType) { + this.serviceType = serviceType; + } + + public String getServiceRole() { + return serviceRole; + } + + public void setServiceRole(String serviceRole) { + this.serviceRole = serviceRole; + } + + public String getEnvironmentContext() { + return environmentContext; + } + + public void setEnvironmentContext(String environmentContext) { + this.environmentContext = environmentContext; + } + + public String getWorkloadContext() { + return workloadContext; + } + + public void setWorkloadContext(String workloadContext) { + this.workloadContext = workloadContext; + } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public String getDistrobutionStatus() { + return distrobutionStatus; + } + + public void setDistrobutionStatus(String distrobutionStatus) { + this.distrobutionStatus = distrobutionStatus; + } + +} diff --git a/mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/VfModule.java b/mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/VfModule.java new file mode 100644 index 0000000000..8e18f94faf --- /dev/null +++ b/mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/VfModule.java @@ -0,0 +1,196 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. 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.rest.catalog.beans; + +import java.util.Date; +import java.util.List; +import org.onap.so.db.catalog.beans.HeatEnvironment; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; + +@JsonInclude(Include.NON_DEFAULT) +public class VfModule { + + // VfModule + private String modelVersionId; + private String modelInvariantId; + private String modelName; + private String modelVersion; + private String description; + private Boolean isBase; + private HeatTemplate heatTemplate; + private Date created; + private List<HeatFile> heatFile; + + // Customization + private String modelCustomizationId; + private String label; + private Integer minInstances; + private Integer maxInstances; + private Integer initialCount; + private Integer availabilityZoneCount; + private HeatEnvironment heatEnv; + private Boolean isVolumeGroup; + + + // Add in cvnfcCustomization + + + + public String getModelName() { + return modelName; + } + + public String getModelVersionId() { + return modelVersionId; + } + + public void setModelVersionId(String modelVersionId) { + this.modelVersionId = modelVersionId; + } + + public String getModelInvariantId() { + return modelInvariantId; + } + + public void setModelInvariantId(String modelInvariantId) { + this.modelInvariantId = modelInvariantId; + } + + public String getModelCustomizationId() { + return modelCustomizationId; + } + + public void setModelCustomizationId(String modelCustomizationId) { + this.modelCustomizationId = modelCustomizationId; + } + + public void setModelName(String modelName) { + this.modelName = modelName; + } + + public String getModelVersion() { + return modelVersion; + } + + public void setModelVersion(String modelVersion) { + this.modelVersion = modelVersion; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Boolean getIsBase() { + return isBase; + } + + public void setIsBase(Boolean isBase) { + this.isBase = isBase; + } + + public HeatTemplate getHeatTemplate() { + return heatTemplate; + } + + public void setHeatTemplate(HeatTemplate heatTemplate) { + this.heatTemplate = heatTemplate; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + + public List<HeatFile> getHeatFile() { + return heatFile; + } + + public void setHeatFile(List<HeatFile> heatFile) { + this.heatFile = heatFile; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public Integer getMinInstances() { + return minInstances; + } + + public void setMinInstances(Integer minInstances) { + this.minInstances = minInstances; + } + + public Integer getMaxInstances() { + return maxInstances; + } + + public void setMaxInstances(Integer maxInstances) { + this.maxInstances = maxInstances; + } + + public Integer getInitialCount() { + return initialCount; + } + + public void setInitialCount(Integer integer) { + this.initialCount = integer; + } + + public Integer getAvailabilityZoneCount() { + return availabilityZoneCount; + } + + public void setAvailabilityZoneCount(Integer availabilityZoneCount) { + this.availabilityZoneCount = availabilityZoneCount; + } + + public HeatEnvironment getHeatEnv() { + return heatEnv; + } + + public void setHeatEnv(HeatEnvironment heatEnv) { + this.heatEnv = heatEnv; + } + + public Boolean getIsVolumeGroup() { + return isVolumeGroup; + } + + public void setIsVolumeGroup(Boolean isVolumeGroup) { + this.isVolumeGroup = isVolumeGroup; + } + + + +} diff --git a/mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/Vnf.java b/mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/Vnf.java new file mode 100644 index 0000000000..40d701c3c5 --- /dev/null +++ b/mso-catalog-db/src/main/java/org/onap/so/rest/catalog/beans/Vnf.java @@ -0,0 +1,218 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. 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.rest.catalog.beans; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; + +@JsonInclude(Include.NON_DEFAULT) +public class Vnf implements Serializable { + + /** + * + */ + private static final long serialVersionUID = 2956199674955504834L; + + private String modelName; + private String modelVersionId; + private String modelInvariantId; + private String modelVersion; + private String modelCustomizationId; + private String modelInstanceName; + private Integer minInstances; + private Integer maxInstances; + private Integer availabilityZoneMaxCount; + private String toscaNodeType; + private String nfFunction; + private String nfRole; + private String nfNamingCode; + private String multiStageDesign; + private String orchestrationMode; + private String cloudVersionMin; + private String cloudVersionMax; + private String category; + private String subCategory; + private List<VfModule> vfModule = new ArrayList<>(); + + public List<VfModule> getVfModule() { + return vfModule; + } + + public void setVfModule(List<VfModule> vfModule) { + this.vfModule = vfModule; + } + + public Integer getAvailabilityZoneMaxCount() { + return availabilityZoneMaxCount; + } + + public void setAvailabilityZoneMaxCount(Integer availabilityZoneMaxCount) { + this.availabilityZoneMaxCount = availabilityZoneMaxCount; + } + + public Integer getMinInstances() { + return minInstances; + } + + public void setMinInstances(Integer minInstances) { + this.minInstances = minInstances; + } + + public Integer getMaxInstances() { + return maxInstances; + } + + public void setMaxInstances(Integer maxInstances) { + this.maxInstances = maxInstances; + } + + public String getCloudVersionMin() { + return cloudVersionMin; + } + + public void setCloudVersionMin(String cloudVersionMin) { + this.cloudVersionMin = cloudVersionMin; + } + + public String getCloudVersionMax() { + return cloudVersionMax; + } + + public void setCloudVersionMax(String cloudVersionMax) { + this.cloudVersionMax = cloudVersionMax; + } + + public String getModelVersionId() { + return modelVersionId; + } + + public void setModelVersionId(String modelVersionId) { + this.modelVersionId = modelVersionId; + } + + public String getModelInvariantId() { + return modelInvariantId; + } + + public void setModelInvariantId(String modelInvariantId) { + this.modelInvariantId = modelInvariantId; + } + + public String getModelCustomizationId() { + return modelCustomizationId; + } + + public void setModelCustomizationId(String modelCustomizationId) { + this.modelCustomizationId = modelCustomizationId; + } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public String getSubCategory() { + return subCategory; + } + + public void setSubCategory(String subCategory) { + this.subCategory = subCategory; + } + + public String getOrchestrationMode() { + return orchestrationMode; + } + + public void setOrchestrationMode(String orchestrationMode) { + this.orchestrationMode = orchestrationMode; + } + + public String getModelName() { + return modelName; + } + + public void setModelName(String modelName) { + this.modelName = modelName; + } + + public String getModelVersion() { + return modelVersion; + } + + public void setModelVersion(String modelVersion) { + this.modelVersion = modelVersion; + } + + + public String getModelInstanceName() { + return modelInstanceName; + } + + public void setModelInstanceName(String modelInstanceName) { + this.modelInstanceName = modelInstanceName; + } + + public String getToscaNodeType() { + return toscaNodeType; + } + + public void setToscaNodeType(String toscaNodeType) { + this.toscaNodeType = toscaNodeType; + } + + public String getNfFunction() { + return nfFunction; + } + + public void setNfFunction(String nfFunction) { + this.nfFunction = nfFunction; + } + + public String getNfRole() { + return nfRole; + } + + public void setNfRole(String nfRole) { + this.nfRole = nfRole; + } + + public String getNfNamingCode() { + return nfNamingCode; + } + + public void setNfNamingCode(String nfNamingCode) { + this.nfNamingCode = nfNamingCode; + } + + public String getMultiStageDesign() { + return multiStageDesign; + } + + public void setMultiStageDesign(String multiStepDesign) { + this.multiStageDesign = multiStepDesign; + } +} diff --git a/mso-catalog-db/src/test/java/org/onap/so/db/catalog/data/repository/CvnfcCustomizationRepositoryTest.java b/mso-catalog-db/src/test/java/org/onap/so/db/catalog/data/repository/CvnfcCustomizationRepositoryTest.java index 371a9c13e0..e8addc4aa8 100644 --- a/mso-catalog-db/src/test/java/org/onap/so/db/catalog/data/repository/CvnfcCustomizationRepositoryTest.java +++ b/mso-catalog-db/src/test/java/org/onap/so/db/catalog/data/repository/CvnfcCustomizationRepositoryTest.java @@ -74,7 +74,6 @@ public class CvnfcCustomizationRepositoryTest extends BaseTest { List<VnfResourceCustomization> vnfResourceCustomizations = new ArrayList<>(); vnfResourceCustomizations.add(vnfResourceCustomization); - vnfResource.setVnfResourceCustomizations(vnfResourceCustomizations); vnfResourceCustomization.setVnfResources(vnfResource); @@ -123,7 +122,6 @@ public class CvnfcCustomizationRepositoryTest extends BaseTest { List<VnfResourceCustomization> vnfResourceCustomizations = new ArrayList<>(); vnfResourceCustomizations.add(vnfResourceCustomization); - vnfResource.setVnfResourceCustomizations(vnfResourceCustomizations); vnfResourceCustomization.setVnfResources(vnfResource); @@ -177,7 +175,6 @@ public class CvnfcCustomizationRepositoryTest extends BaseTest { List<VnfResourceCustomization> vnfResourceCustomizations = new ArrayList(); vnfResourceCustomizations.add(vnfResourceCustomization); - vnfResource.setVnfResourceCustomizations(vnfResourceCustomizations); vnfResourceCustomization.setVnfResources(vnfResource); diff --git a/mso-catalog-db/src/test/resources/schema.sql b/mso-catalog-db/src/test/resources/schema.sql index 34340f1357..0856a4cbe2 100644 --- a/mso-catalog-db/src/test/resources/schema.sql +++ b/mso-catalog-db/src/test/resources/schema.sql @@ -803,6 +803,7 @@ CREATE TABLE `service` ( `WORKLOAD_CONTEXT` varchar(200) DEFAULT NULL, `SERVICE_CATEGORY` varchar(200) DEFAULT NULL, `RESOURCE_ORDER` varchar(200) default NULL, + OVERALL_DISTRIBUTION_STATUS varchar(45), PRIMARY KEY (`MODEL_UUID`), KEY `fk_service__tosca_csar1_idx` (`TOSCA_CSAR_ARTIFACT_UUID`), CONSTRAINT `fk_service__tosca_csar1` FOREIGN KEY (`TOSCA_CSAR_ARTIFACT_UUID`) REFERENCES `tosca_csar` (`ARTIFACT_UUID`) ON DELETE CASCADE ON UPDATE CASCADE |