diff options
Diffstat (limited to 'adapters')
10 files changed, 574 insertions, 187 deletions
diff --git a/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V4.2__ScaleOutRecipe.sql b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V4.2__ScaleOutRecipe.sql new file mode 100644 index 0000000000..b3d8b98176 --- /dev/null +++ b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V4.2__ScaleOutRecipe.sql @@ -0,0 +1,5 @@ +use catalogdb; + +INSERT INTO vnf_components_recipe (VNF_COMPONENT_TYPE, ACTION, VERSION, DESCRIPTION, ORCHESTRATION_URI, RECIPE_TIMEOUT, VF_MODULE_MODEL_UUID) +VALUES +('vfModule', 'scaleOut', '1', 'Gr api recipe to scale out vfModule', '/mso/async/services/WorkflowActionBB', '180', 'GR-API-DEFAULT'); diff --git a/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/CloudConfigTest.java b/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/CloudConfigTest.java new file mode 100644 index 0000000000..9ed61b33a3 --- /dev/null +++ b/adapters/mso-catalog-db-adapter/src/test/java/org/onap/so/adapters/catalogdb/catalogrest/CloudConfigTest.java @@ -0,0 +1,122 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2017 - 2018 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.catalogrest; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; +import java.net.URI; +import java.util.List; + +import javax.transaction.Transactional; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.onap.so.adapters.catalogdb.CatalogDBApplication; +import org.onap.so.db.catalog.beans.AuthenticationType; +import org.onap.so.db.catalog.beans.BuildingBlockDetail; +import org.onap.so.db.catalog.beans.CloudIdentity; +import org.onap.so.db.catalog.beans.CloudSite; +import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization; +import org.onap.so.db.catalog.beans.CollectionResourceCustomization; +import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization; +import org.onap.so.db.catalog.beans.InstanceGroup; +import org.onap.so.db.catalog.beans.NetworkCollectionResourceCustomization; +import org.onap.so.db.catalog.beans.ServerType; +import org.onap.so.db.catalog.client.CatalogDbClient; +import org.onap.so.logger.MsoLogger; +import org.onap.so.logging.jaxrs.filter.jersey.SpringClientFilter; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.embedded.LocalServerPort; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.http.client.BufferingClientHttpRequestFactory; +import org.springframework.http.client.ClientHttpRequestFactory; +import org.springframework.http.client.SimpleClientHttpRequestFactory; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.web.util.UriComponentsBuilder; +import uk.co.blackpepper.bowman.Client; +import uk.co.blackpepper.bowman.ClientFactory; +import uk.co.blackpepper.bowman.Configuration; +import static com.shazam.shazamcrest.MatcherAssert.assertThat; +import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = CatalogDBApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@ActiveProfiles("test") +public class CloudConfigTest { + + protected TestRestTemplate restTemplate = new TestRestTemplate("test", "test"); + + protected HttpHeaders headers = new HttpHeaders(); + + @LocalServerPort + private int port; + + @Test + @Transactional + public void createCloudSiteRest_TEST() { + headers.set("Accept", MediaType.APPLICATION_JSON); + headers.set("Content-Type",MediaType.APPLICATION_JSON); + + CloudSite cloudSite = new CloudSite(); + cloudSite.setId("MTN6"); + cloudSite.setClli("TESTCLLI"); + cloudSite.setRegionId("regionId"); + cloudSite.setCloudVersion("VERSION"); + cloudSite.setPlatform("PLATFORM"); + + CloudIdentity cloudIdentity = new CloudIdentity(); + cloudIdentity.setId("RANDOMID"); + cloudIdentity.setIdentityUrl("URL"); + cloudIdentity.setMsoId("MSO_ID"); + cloudIdentity.setMsoPass("MSO_PASS"); + cloudIdentity.setAdminTenant("ADMIN_TENANT"); + cloudIdentity.setMemberRole("ROLE"); + cloudIdentity.setIdentityServerType(ServerType.KEYSTONE); + cloudIdentity.setIdentityAuthenticationType(AuthenticationType.RACKSPACE_APIKEY); + cloudSite.setIdentityService(cloudIdentity); + String uri = "/cloudSite"; + UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("http://localhost:"+ port + uri); + HttpEntity<CloudSite> request = new HttpEntity<CloudSite>(cloudSite, headers); + ResponseEntity<String> response = restTemplate.exchange(builder.toUriString(), + HttpMethod.POST, request, String.class); + assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatusCode().value()); + + builder = UriComponentsBuilder.fromHttpUrl("http://localhost:"+ port + uri +"/" + cloudSite.getId()); + HttpEntity<String> entity = new HttpEntity<String>(null, headers); + ResponseEntity<CloudSite> actualCloudSite = restTemplate.exchange(builder.toUriString(),HttpMethod.GET, entity, CloudSite.class); + + assertEquals(Response.Status.OK.getStatusCode(), actualCloudSite.getStatusCode().value()); + assertThat(actualCloudSite.getBody(), sameBeanAs(cloudSite).ignoring("created").ignoring("updated") + .ignoring("identityService.created").ignoring("identityService.updated")); + + } + +} diff --git a/adapters/mso-openstack-adapters/src/main/java/db/migration/R__CloudConfigMigration.java b/adapters/mso-openstack-adapters/src/main/java/db/migration/R__CloudConfigMigration.java index fd2ec179dc..ed64abd982 100644 --- a/adapters/mso-openstack-adapters/src/main/java/db/migration/R__CloudConfigMigration.java +++ b/adapters/mso-openstack-adapters/src/main/java/db/migration/R__CloudConfigMigration.java @@ -13,6 +13,8 @@ import org.onap.so.db.catalog.beans.CloudSite; import org.onap.so.db.catalog.beans.CloudifyManager; import org.onap.so.logger.MsoLogger; +import java.io.FileInputStream; +import java.io.InputStream; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -33,10 +35,31 @@ public class R__CloudConfigMigration implements JdbcMigration , MigrationInfoPro @Override public void migrate(Connection connection) throws Exception { LOGGER.debug("Starting migration for CloudConfig"); - CloudConfig cloudConfig = loadCloudConfig(); - if(cloudConfig == null){ - LOGGER.debug("No CloudConfig defined in :"+getApplicationYamlName()+" exiting."); - }else{ + + CloudConfig cloudConfig = null; + + // Try the override file + String configLocation = System.getProperty("spring.config.location"); + if (configLocation != null) { + try (InputStream stream = new FileInputStream(configLocation)) { + cloudConfig = loadCloudConfig(stream); + } + } + + if (cloudConfig == null) { + LOGGER.debug("No CloudConfig defined in " + configLocation); + + // Try the application.yaml file + try (InputStream stream = R__CloudConfigMigration.class.getResourceAsStream(getApplicationYamlName())) { + cloudConfig = loadCloudConfig(stream); + } + + if (cloudConfig == null) { + LOGGER.debug("No CloudConfig defined in " + getApplicationYamlName()); + } + } + + if(cloudConfig != null){ migrateCloudIdentity(cloudConfig.getIdentityServices().values(), connection); migrateCloudSite(cloudConfig.getCloudSites().values(), connection); migrateCloudifyManagers(cloudConfig.getCloudifyManagers().values(), connection); @@ -51,13 +74,14 @@ public class R__CloudConfigMigration implements JdbcMigration , MigrationInfoPro this.cloudConfig = cloudConfig; } - private CloudConfig loadCloudConfig() throws Exception { + private CloudConfig loadCloudConfig(InputStream stream) throws Exception { ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); - R__CloudConfigMigration cloudConfigMigration = mapper.readValue(R__CloudConfigMigration.class - .getResourceAsStream(getApplicationYamlName()), R__CloudConfigMigration.class); + R__CloudConfigMigration cloudConfigMigration = + mapper.readValue(stream, R__CloudConfigMigration.class); CloudConfig cloudConfig = cloudConfigMigration.getCloudConfig(); + if(cloudConfig != null){ - cloudConfig.populateId(); + cloudConfig.populateId(); } return cloudConfig; @@ -72,8 +96,8 @@ public class R__CloudConfigMigration implements JdbcMigration , MigrationInfoPro LOGGER.debug("Starting migration for CloudConfig-->IdentityService"); String insert = "INSERT INTO `identity_services` (`ID`, `IDENTITY_URL`, `MSO_ID`, `MSO_PASS`, `ADMIN_TENANT`, `MEMBER_ROLE`, `TENANT_METADATA`, `IDENTITY_SERVER_TYPE`, `IDENTITY_AUTHENTICATION_TYPE`, `LAST_UPDATED_BY`) " + "VALUES (?,?,?,?,?,?,?,?,?,?);"; - PreparedStatement ps = connection.prepareStatement(insert); - try (Statement stmt = connection.createStatement()) { + + try (Statement stmt = connection.createStatement();PreparedStatement ps = connection.prepareStatement(insert)) { for (CloudIdentity cloudIdentity : entities) { try (ResultSet rows = stmt.executeQuery("Select count(1) from identity_services where id='" + cloudIdentity.getId() + "'")) { int count = 0; @@ -102,8 +126,8 @@ public class R__CloudConfigMigration implements JdbcMigration , MigrationInfoPro LOGGER.debug("Starting migration for CloudConfig-->CloudSite"); String insert = "INSERT INTO `cloud_sites` (`ID`, `REGION_ID`, `IDENTITY_SERVICE_ID`, `CLOUD_VERSION`, `CLLI`, `CLOUDIFY_ID`, `PLATFORM`, `ORCHESTRATOR`, `LAST_UPDATED_BY`) " + "VALUES (?,?,?,?,?,?,?,?,?);"; - PreparedStatement ps = connection.prepareStatement(insert); - try (Statement stmt = connection.createStatement()) { + + try (Statement stmt = connection.createStatement();PreparedStatement ps = connection.prepareStatement(insert)) { for (CloudSite cloudSite : entities) { try (ResultSet rows = stmt.executeQuery("Select count(1) from cloud_sites where id='" + cloudSite.getId() + "'")) { int count = 0; @@ -130,8 +154,8 @@ public class R__CloudConfigMigration implements JdbcMigration , MigrationInfoPro private void migrateCloudifyManagers(Collection<CloudifyManager> entities, Connection connection) throws Exception { String insert = "INSERT INTO `cloudify_managers` (`ID`, `CLOUDIFY_URL`, `USERNAME`, `PASSWORD`, `VERSION`, `LAST_UPDATED_BY`)" + " VALUES (?,?,?,?,?,?);"; - PreparedStatement ps = connection.prepareStatement(insert); - try (Statement stmt = connection.createStatement()) { + + try (Statement stmt = connection.createStatement();PreparedStatement ps = connection.prepareStatement(insert)) { for (CloudifyManager cloudifyManager : entities) { try (ResultSet rows = stmt.executeQuery("Select count(1) from cloudify_managers where id='" + cloudifyManager.getId() + "'")) { int count = 0; diff --git a/adapters/mso-openstack-adapters/src/main/resources/application.yaml b/adapters/mso-openstack-adapters/src/main/resources/application.yaml index 4a4c83e4a5..4b2cf8eb60 100644 --- a/adapters/mso-openstack-adapters/src/main/resources/application.yaml +++ b/adapters/mso-openstack-adapters/src/main/resources/application.yaml @@ -41,4 +41,6 @@ management: flyway: outOfOrder: true - ignoreMissingMigrations: true
\ No newline at end of file + ignoreMissingMigrations: true + baseline-on-migrate: true + validate-on-migrate: false diff --git a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vdu/mapper/VfModuleCustomizationToVduMapperTest.java b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vdu/mapper/VfModuleCustomizationToVduMapperTest.java new file mode 100644 index 0000000000..c982f8beb1 --- /dev/null +++ b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vdu/mapper/VfModuleCustomizationToVduMapperTest.java @@ -0,0 +1,146 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP - SO + * ================================================================================ + * Copyright (C) 2018 Nokia + * ================================================================================ + * 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.vdu.mapper; + +import static org.assertj.core.api.Assertions.assertThat; + +import com.google.common.collect.Lists; +import java.util.List; +import org.junit.Test; +import org.onap.so.adapters.vdu.VduArtifact; +import org.onap.so.adapters.vdu.VduArtifact.ArtifactType; +import org.onap.so.adapters.vdu.VduModelInfo; +import org.onap.so.db.catalog.beans.HeatEnvironment; +import org.onap.so.db.catalog.beans.HeatFiles; +import org.onap.so.db.catalog.beans.HeatTemplate; +import org.onap.so.db.catalog.beans.VfModule; +import org.onap.so.db.catalog.beans.VfModuleCustomization; + +public class VfModuleCustomizationToVduMapperTest { + + private static final String MODEL_CUSTOMIZATION_UUID = "modelCustomizationUUID"; + private static final String HEAT_ENV_NAME = "heatEnvName"; + private static final String HEAT_ENV_CONTENT = "heatEnvContent"; + private static final String MODULE_HEAT_TEMPLATE_NAME = "moduleHeatTemplateName"; + private static final String MODULE_HEAT_TEMPLATE_BODY = "moduleHeatTemplateBody"; + private static final String NESTED_TEMPLATE_NAME = "nestedTemplateName"; + private static final String NESTED_TEMPLATE_BODY = "nestedTemplateBody"; + private static final int TIMEOUT_IN_MIN = 66; + private static final String VF_MODULE_MODEL_INVARIANT_UUID = "vfModuleModelInvariantUUID"; + private static final String CLOUD_FILE_NAME = "cloudFileName"; + private static final String CLOUD_FILE_BODY = "cloudFileBody"; + + + @Test + public void mapVfModuleCustomizationToVdu_successful() { + // GIVEN + VfModuleCustomization vfModuleCustomization = createVfModuleCustomization(); + vfModuleCustomization.setHeatEnvironment(createHeatEnvironment(HEAT_ENV_NAME, HEAT_ENV_CONTENT)); + VfModule vfModule = createVfModule(); + vfModule.setModuleHeatTemplate(createHeatTemplate( + MODULE_HEAT_TEMPLATE_NAME, MODULE_HEAT_TEMPLATE_BODY, + NESTED_TEMPLATE_NAME, NESTED_TEMPLATE_BODY)); + vfModuleCustomization.setVfModule(vfModule); + + // WHEN + VduModelInfo vduModelInfo = new VfModuleCustomizationToVduMapper() + .mapVfModuleCustomizationToVdu(vfModuleCustomization); + + // THEN + assertThat(vduModelInfo.getModelCustomizationUUID()).isEqualTo(MODEL_CUSTOMIZATION_UUID); + assertThat(vduModelInfo.getTimeoutMinutes()).isEqualTo(TIMEOUT_IN_MIN); + assertThat(vduModelInfo.getArtifacts()).containsExactlyElementsOf(createExpectedVduArtifacts()); + } + + @Test + public void mapVfModuleCustVolumeToVdu_successful() { + // GIVEN + VfModuleCustomization vfModuleCustomization = createVfModuleCustomization(); + vfModuleCustomization.setVolumeHeatEnv(createHeatEnvironment(HEAT_ENV_NAME, HEAT_ENV_CONTENT)); + VfModule vfModule = createVfModule(); + vfModule.setVolumeHeatTemplate(createHeatTemplate( + MODULE_HEAT_TEMPLATE_NAME, MODULE_HEAT_TEMPLATE_BODY, + NESTED_TEMPLATE_NAME, NESTED_TEMPLATE_BODY)); + vfModuleCustomization.setVfModule(vfModule); + + // WHEN + VduModelInfo vduModelInfo = new VfModuleCustomizationToVduMapper() + .mapVfModuleCustVolumeToVdu(vfModuleCustomization); + + // THEN + assertThat(vduModelInfo.getModelCustomizationUUID()).isEqualTo(MODEL_CUSTOMIZATION_UUID); + assertThat(vduModelInfo.getTimeoutMinutes()).isEqualTo(TIMEOUT_IN_MIN); + assertThat(vduModelInfo.getArtifacts()).containsExactlyElementsOf(createExpectedVduArtifacts()); + } + + private VfModuleCustomization createVfModuleCustomization() { + VfModuleCustomization vfModuleCustomization = new VfModuleCustomization(); + vfModuleCustomization.setModelCustomizationUUID(MODEL_CUSTOMIZATION_UUID); + return vfModuleCustomization; + } + + private HeatEnvironment createHeatEnvironment(String volHeatEnvName, String volHeatEnvContent) { + HeatEnvironment heatEnvironment = new HeatEnvironment(); + heatEnvironment.setName(volHeatEnvName); + heatEnvironment.setEnvironment(volHeatEnvContent); + return heatEnvironment; + } + + private VfModule createVfModule() { + VfModule vfModule = new VfModule(); + vfModule.setModelInvariantUUID(VF_MODULE_MODEL_INVARIANT_UUID); + vfModule.setHeatFiles(createHeatFiles(CLOUD_FILE_NAME, CLOUD_FILE_BODY)); + return vfModule; + } + + private List<HeatFiles> createHeatFiles(String fileName, String fileBody) { + HeatFiles heatFiles = new HeatFiles(); + heatFiles.setFileName(fileName); + heatFiles.setFileBody(fileBody); + return Lists.newArrayList(heatFiles); + } + + private HeatTemplate createHeatTemplate(String moduleHeatTemplateName, String moduleHeatTemplateBody, + String childTemplateName, String childTemplateBody) { + HeatTemplate heatTemplate = new HeatTemplate(); + heatTemplate.setTemplateName(moduleHeatTemplateName); + heatTemplate.setTemplateBody(moduleHeatTemplateBody); + heatTemplate.setTimeoutMinutes(TIMEOUT_IN_MIN); + heatTemplate.setChildTemplates(createChildHeatTemplate(childTemplateName, childTemplateBody)); + return heatTemplate; + } + + private List<HeatTemplate> createChildHeatTemplate(String moduleHeatTemplateName, String moduleHeatTemplateBody) { + HeatTemplate heatTemplate = new HeatTemplate(); + heatTemplate.setTemplateName(moduleHeatTemplateName); + heatTemplate.setTemplateBody(moduleHeatTemplateBody); + return Lists.newArrayList(heatTemplate); + } + + private List<VduArtifact> createExpectedVduArtifacts() { + return Lists.newArrayList( + new VduArtifact(MODULE_HEAT_TEMPLATE_NAME, MODULE_HEAT_TEMPLATE_BODY.getBytes(), + ArtifactType.MAIN_TEMPLATE), + new VduArtifact(NESTED_TEMPLATE_NAME, NESTED_TEMPLATE_BODY.getBytes(), ArtifactType.NESTED_TEMPLATE), + new VduArtifact(CLOUD_FILE_NAME, CLOUD_FILE_BODY.getBytes(), ArtifactType.TEXT_FILE), + new VduArtifact(HEAT_ENV_NAME, HEAT_ENV_CONTENT.getBytes(), ArtifactType.ENVIRONMENT)); + } +} diff --git a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/BaseRestTestUtils.java b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/BaseRestTestUtils.java index cf68f097dc..d2b6d4f633 100644 --- a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/BaseRestTestUtils.java +++ b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/adapters/vnf/BaseRestTestUtils.java @@ -33,7 +33,6 @@ import org.onap.so.db.catalog.beans.AuthenticationType; import org.onap.so.db.catalog.beans.CloudIdentity; import org.onap.so.db.catalog.beans.CloudSite; import org.onap.so.db.catalog.beans.ServerType; -import org.onap.so.db.catalog.data.repository.CloudIdentityRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; @@ -76,8 +75,6 @@ public class BaseRestTestUtils { public ObjectMapper mapper; - @Autowired - private CloudIdentityRepository cloudIdentityRepository; protected String readJsonFileAsString(String fileLocation) throws JsonParseException, JsonMappingException, IOException{ ObjectMapper mapper = new ObjectMapper(); diff --git a/adapters/mso-requests-db-adapter/src/main/java/org/onap/so/adapters/requestsdb/InfraActiveRequestsRepositoryCustomController.java b/adapters/mso-requests-db-adapter/src/main/java/org/onap/so/adapters/requestsdb/InfraActiveRequestsRepositoryCustomController.java index dea6512d38..34bf9cb0f5 100644 --- a/adapters/mso-requests-db-adapter/src/main/java/org/onap/so/adapters/requestsdb/InfraActiveRequestsRepositoryCustomController.java +++ b/adapters/mso-requests-db-adapter/src/main/java/org/onap/so/adapters/requestsdb/InfraActiveRequestsRepositoryCustomController.java @@ -24,12 +24,13 @@ import org.onap.so.db.request.beans.InfraActiveRequests; import org.onap.so.db.request.data.controller.InstanceNameDuplicateCheckRequest; import org.onap.so.db.request.data.repository.InfraActiveRequestsRepository; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; + -import javax.ws.rs.PathParam; import java.util.List; import java.util.Map; @@ -38,20 +39,24 @@ public class InfraActiveRequestsRepositoryCustomController { @Autowired InfraActiveRequestsRepository infraActiveRequestsRepository; + @RequestMapping(method = RequestMethod.POST, value = "/infraActiveRequests/getCloudOrchestrationFiltersFromInfraActive") - public List<InfraActiveRequests> getCloudOrchestrationFiltersFromInfraActive(@RequestBody Map<String, String> orchestrationMap){ + public List<InfraActiveRequests> getCloudOrchestrationFiltersFromInfraActive(@RequestBody Map<String, String> orchestrationMap) { return infraActiveRequestsRepository.getCloudOrchestrationFiltersFromInfraActive(orchestrationMap); } + @RequestMapping(method = RequestMethod.POST, value = "/infraActiveRequests/getOrchestrationFiltersFromInfraActive") - public List<InfraActiveRequests> getOrchestrationFiltersFromInfraActive(@RequestBody Map<String, List<String>> orchestrationMap){ - return infraActiveRequestsRepository.getOrchestrationFiltersFromInfraActive(orchestrationMap); + public List<InfraActiveRequests> getOrchestrationFiltersFromInfraActive(@RequestBody Map<String, List<String>> orchestrationMap) { + return infraActiveRequestsRepository.getOrchestrationFiltersFromInfraActive(orchestrationMap); } - @RequestMapping(method = RequestMethod.GET, value = "/infraActiveRequests/checkVnfIdStatus/{nsInstanceId}") - public InfraActiveRequests checkVnfIdStatus(@PathParam("nsInstanceId") String operationalEnvironmentId){ + + @RequestMapping(method = RequestMethod.GET, value = "/infraActiveRequests/checkVnfIdStatus/{operationalEnvironmentId}") + public InfraActiveRequests checkVnfIdStatus(@PathVariable("operationalEnvironmentId") String operationalEnvironmentId) { return infraActiveRequestsRepository.checkVnfIdStatus(operationalEnvironmentId); } + @RequestMapping(method = RequestMethod.POST, value = "/infraActiveRequests/checkInstanceNameDuplicate") - public InfraActiveRequests checkInstanceNameDuplicate(@RequestBody InstanceNameDuplicateCheckRequest instanceNameDuplicateCheckRequest){ - return infraActiveRequestsRepository.checkInstanceNameDuplicate(instanceNameDuplicateCheckRequest.getInstanceIdMap(), instanceNameDuplicateCheckRequest.getInstanceName(),instanceNameDuplicateCheckRequest.getRequestScope()); + public InfraActiveRequests checkInstanceNameDuplicate(@RequestBody InstanceNameDuplicateCheckRequest instanceNameDuplicateCheckRequest) { + return infraActiveRequestsRepository.checkInstanceNameDuplicate(instanceNameDuplicateCheckRequest.getInstanceIdMap(), instanceNameDuplicateCheckRequest.getInstanceName(), instanceNameDuplicateCheckRequest.getRequestScope()); } } diff --git a/adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/InfraActiveRequestsRepositoryCustomControllerTest.java b/adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/InfraActiveRequestsRepositoryCustomControllerTest.java new file mode 100644 index 0000000000..58eb0085ad --- /dev/null +++ b/adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/InfraActiveRequestsRepositoryCustomControllerTest.java @@ -0,0 +1,244 @@ +package org.onap.so.adapters.requestsdb; + + +import org.junit.Before; +import org.junit.After; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.onap.so.adapters.requestsdb.application.MSORequestDBApplication; +import org.onap.so.db.request.beans.InfraActiveRequests; +import org.onap.so.db.request.data.controller.InstanceNameDuplicateCheckRequest; +import org.springframework.boot.context.embedded.LocalServerPort; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.util.UriComponentsBuilder; + +import javax.ws.rs.core.MediaType; +import java.util.List; +import java.util.Map; +import java.util.HashMap; +import java.util.UUID; +import java.util.ArrayList; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = MSORequestDBApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@ActiveProfiles("test") +@Transactional +public class InfraActiveRequestsRepositoryCustomControllerTest { + + @LocalServerPort + private int port; + + private String createURLWithPort(String uri) { + return "http://localhost:" + port + uri; + } + + private InfraActiveRequests infraActiveRequests; + private InfraActiveRequests infraActiveRequestsResponse; + private HttpHeaders headers; + private TestRestTemplate restTemplate; + + private void verifyInfraActiveRequests() { + assertEquals(infraActiveRequests.getRequestId(), infraActiveRequestsResponse.getRequestId()); + assertEquals(infraActiveRequests.getServiceInstanceId(), infraActiveRequestsResponse.getServiceInstanceId()); + assertEquals(infraActiveRequests.getServiceInstanceName(), infraActiveRequestsResponse.getServiceInstanceName()); + assertEquals(infraActiveRequests.getVnfId(), infraActiveRequestsResponse.getVnfId()); + assertEquals(infraActiveRequests.getVnfName(), infraActiveRequestsResponse.getVnfName()); + assertEquals(infraActiveRequests.getVfModuleId(), infraActiveRequestsResponse.getVfModuleId()); + assertEquals(infraActiveRequests.getVfModuleName(), infraActiveRequestsResponse.getVfModuleName()); + assertEquals(infraActiveRequests.getVolumeGroupId(), infraActiveRequestsResponse.getVolumeGroupId()); + assertEquals(infraActiveRequests.getVolumeGroupName(), infraActiveRequestsResponse.getVolumeGroupName()); + assertEquals(infraActiveRequests.getNetworkId(), infraActiveRequestsResponse.getNetworkId()); + assertEquals(infraActiveRequests.getNetworkName(), infraActiveRequestsResponse.getNetworkName()); + assertEquals(infraActiveRequests.getConfigurationId(), infraActiveRequestsResponse.getConfigurationId()); + assertEquals(infraActiveRequests.getConfigurationName(), infraActiveRequestsResponse.getConfigurationName()); + assertEquals(infraActiveRequests.getAaiServiceId(), infraActiveRequestsResponse.getAaiServiceId()); + assertEquals(infraActiveRequests.getTenantId(), infraActiveRequestsResponse.getTenantId()); + assertEquals(infraActiveRequests.getRequestScope(), infraActiveRequestsResponse.getRequestScope()); + assertEquals(infraActiveRequests.getRequestorId(), infraActiveRequestsResponse.getRequestorId()); + assertEquals(infraActiveRequests.getSource(), infraActiveRequestsResponse.getSource()); + assertEquals(infraActiveRequests.getOperationalEnvId(), infraActiveRequestsResponse.getOperationalEnvId()); + assertEquals(infraActiveRequests.getOperationalEnvName(), infraActiveRequestsResponse.getOperationalEnvName()); + assertEquals(infraActiveRequests.getRequestStatus(), infraActiveRequestsResponse.getRequestStatus()); + assertEquals(infraActiveRequests.getAction(), infraActiveRequestsResponse.getAction()); + } + + @Before + public void setup() { + + headers = new HttpHeaders(); + restTemplate = new TestRestTemplate("test", "test"); + + headers.set("Accept", MediaType.APPLICATION_JSON); + headers.set("Content-Type", MediaType.APPLICATION_JSON); + + infraActiveRequests = new InfraActiveRequests(); + + infraActiveRequests.setRequestId(UUID.randomUUID().toString()); + infraActiveRequests.setOperationalEnvId(UUID.randomUUID().toString()); + infraActiveRequests.setServiceInstanceId(UUID.randomUUID().toString()); + infraActiveRequests.setServiceInstanceName("serviceInstanceNameTest"); + infraActiveRequests.setVnfId(UUID.randomUUID().toString()); + infraActiveRequests.setVnfName("vnfInstanceNameTest"); + infraActiveRequests.setVfModuleId(UUID.randomUUID().toString()); + infraActiveRequests.setVfModuleName("vfModuleInstanceNameTest"); + infraActiveRequests.setVolumeGroupId(UUID.randomUUID().toString()); + infraActiveRequests.setVolumeGroupName("volumeGroupInstanceNameTest"); + infraActiveRequests.setNetworkId(UUID.randomUUID().toString()); + infraActiveRequests.setNetworkName("networkInstanceNameTest"); + infraActiveRequests.setConfigurationId(UUID.randomUUID().toString()); + infraActiveRequests.setConfigurationName("configurationInstanceNameTest"); + infraActiveRequests.setAicCloudRegion("1"); + infraActiveRequests.setTenantId(UUID.randomUUID().toString()); + infraActiveRequests.setRequestScope("operationalEnvironment"); + infraActiveRequests.setRequestorId(UUID.randomUUID().toString()); + infraActiveRequests.setSource("sourceTest"); + infraActiveRequests.setOperationalEnvName(UUID.randomUUID().toString()); + infraActiveRequests.setRequestStatus("IN_PROGRESS"); + infraActiveRequests.setAction("create"); + + HttpEntity<String> entity = new HttpEntity(infraActiveRequests, headers); + + UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(createURLWithPort("/infraActiveRequests")); + ResponseEntity<String> response = restTemplate.exchange( + builder.toUriString(), + HttpMethod.POST, entity, String.class); + + assertEquals(201, response.getStatusCodeValue()); + } + + + @Test + public void getCloudOrchestrationFiltersFromInfraActiveTest() { + + Map<String, String> requestMap = new HashMap<>(); + requestMap.put("operationalEnvironmentId", infraActiveRequests.getOperationalEnvId()); + requestMap.put("operationalEnvironmentName", infraActiveRequests.getOperationalEnvName()); + requestMap.put("resourceType", "operationalEnvironment"); + + HttpEntity<Map<String, String>> entity = new HttpEntity<>(requestMap, headers); + + UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(createURLWithPort("/infraActiveRequests") + "/getCloudOrchestrationFiltersFromInfraActive"); + + ResponseEntity<List<InfraActiveRequests>> response = restTemplate.exchange( + builder.toUriString(), + HttpMethod.POST, entity, new ParameterizedTypeReference<List<InfraActiveRequests>>() { + }); + + List<InfraActiveRequests> iarr = response.getBody(); + assertEquals(200, response.getStatusCodeValue()); + + assertTrue(iarr.size() == 1); + infraActiveRequestsResponse = iarr.get(0); + + verifyInfraActiveRequests(); + + } + + @Test + public void getOrchestrationFiltersFromInfraActiveTest() { + + Map<String, List<String>> requestMap = new HashMap<>(); + List<String> values = new ArrayList<>(); + values.add("EQUALS"); + values.add(infraActiveRequests.getServiceInstanceId()); + requestMap.put("serviceInstanceId", values); + + values = new ArrayList<>(); + values.add("EQUALS"); + values.add(infraActiveRequests.getServiceInstanceName()); + requestMap.put("serviceInstanceName", values); + + HttpEntity<Map<String, List<String>>> entityList = new HttpEntity(requestMap, headers); + UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(createURLWithPort("/infraActiveRequests") + "/getOrchestrationFiltersFromInfraActive"); + + ResponseEntity<List<InfraActiveRequests>> response = restTemplate.exchange( + builder.toUriString(), + HttpMethod.POST, entityList, new ParameterizedTypeReference<List<InfraActiveRequests>>() { + }); + + List<InfraActiveRequests> iarr = response.getBody(); + + assertEquals(200, response.getStatusCodeValue()); + + assertTrue(iarr.size() == 1); + infraActiveRequestsResponse = iarr.get(0); + + verifyInfraActiveRequests(); + } + + @Test + public void checkVnfIdStatusTest() { + + HttpEntity<List<String>> entityList = new HttpEntity("", headers); + UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(createURLWithPort("/infraActiveRequests" + "/checkVnfIdStatus/" + infraActiveRequests.getOperationalEnvId())); + + ResponseEntity<InfraActiveRequests> response = restTemplate.exchange( + builder.toUriString(), + HttpMethod.GET, HttpEntity.EMPTY, InfraActiveRequests.class); + + infraActiveRequestsResponse = response.getBody(); + + assertEquals(200, response.getStatusCodeValue()); + + verifyInfraActiveRequests(); + } + + @Test + public void checkInstanceNameDuplicateTest() { + + InstanceNameDuplicateCheckRequest instanceNameDuplicateCheckRequest = new InstanceNameDuplicateCheckRequest((HashMap<String, String>) null, + infraActiveRequests.getOperationalEnvName(), + infraActiveRequests.getRequestScope()); + + HttpEntity<InstanceNameDuplicateCheckRequest> entityList = new HttpEntity(instanceNameDuplicateCheckRequest, headers); + UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(createURLWithPort("/infraActiveRequests") + "/checkInstanceNameDuplicate"); + + ResponseEntity<InfraActiveRequests> response = restTemplate.exchange( + builder.toUriString(), + HttpMethod.POST, entityList, new ParameterizedTypeReference<InfraActiveRequests>() { + }); + + infraActiveRequestsResponse = response.getBody(); + + assertEquals(200, response.getStatusCodeValue()); + + verifyInfraActiveRequests(); + } + + @Test + public void checkInstanceNameDuplicateViaTest() { + + Map<String, String> requestMap = new HashMap<>(); + requestMap.put("operationalEnvironmentId", infraActiveRequests.getOperationalEnvId()); + + InstanceNameDuplicateCheckRequest instanceNameDuplicateCheckRequest = new InstanceNameDuplicateCheckRequest((HashMap<String, String>) requestMap, + null, + infraActiveRequests.getRequestScope()); + + HttpEntity<InstanceNameDuplicateCheckRequest> entityList = new HttpEntity(instanceNameDuplicateCheckRequest, headers); + UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(createURLWithPort("/infraActiveRequests") + "/checkInstanceNameDuplicate"); + + ResponseEntity<InfraActiveRequests> response = restTemplate.exchange( + builder.toUriString(), + HttpMethod.POST, entityList, new ParameterizedTypeReference<InfraActiveRequests>() { + }); + + infraActiveRequestsResponse = response.getBody(); + + assertEquals(200, response.getStatusCodeValue()); + + verifyInfraActiveRequests(); + } +}
\ No newline at end of file diff --git a/adapters/mso-requests-db-adapter/src/test/resources/application-test.yaml b/adapters/mso-requests-db-adapter/src/test/resources/application-test.yaml index c3be9323fb..6a5db78f8b 100644 --- a/adapters/mso-requests-db-adapter/src/test/resources/application-test.yaml +++ b/adapters/mso-requests-db-adapter/src/test/resources/application-test.yaml @@ -10,7 +10,7 @@ mso: site-name: localSite infra-requests: archived: - period: 1 + period: 0 spring: datasource: url: jdbc:mariadb://localhost:3307/requestdb diff --git a/adapters/mso-vnf-adapter/src/test/java/org/onap/so/adapters/vdu/mapper/VfModuleCustomizationToVduMapperTest.java b/adapters/mso-vnf-adapter/src/test/java/org/onap/so/adapters/vdu/mapper/VfModuleCustomizationToVduMapperTest.java deleted file mode 100644 index c3d9cca0e9..0000000000 --- a/adapters/mso-vnf-adapter/src/test/java/org/onap/so/adapters/vdu/mapper/VfModuleCustomizationToVduMapperTest.java +++ /dev/null @@ -1,158 +0,0 @@ -/*- - * ============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.adapters.vdu.mapper; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.util.HashMap; -import java.util.Map; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.onap.so.adapters.vdu.VduArtifact; -import org.onap.so.adapters.vdu.VduArtifact.ArtifactType; -import org.onap.so.adapters.vdu.VduModelInfo; -import org.onap.so.db.catalog.CatalogDatabase; -import org.onap.so.db.catalog.beans.HeatEnvironment; -import org.onap.so.db.catalog.beans.HeatFiles; -import org.onap.so.db.catalog.beans.HeatTemplate; -import org.onap.so.db.catalog.beans.VfModule; -import org.onap.so.db.catalog.beans.VfModuleCustomization; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; - -@RunWith(PowerMockRunner.class) -@PrepareForTest({CatalogDatabase.class}) -public class VfModuleCustomizationToVduMapperTest { - - private static final String HEAT_TEMPLATE_ARTIFACT_UUID = "testHeatTemplate"; - private static final String VF_MODULE_MODEL_UUID = "vfModuleUuid"; - private static final String HEAT_ENV_ARTIFACT_UUID = "heatEnvArtifactUuid"; - private static final String MAIN_TEMPLATE_NAME = "testTempName"; - private static final String MAIN_TEMPLATE_BODY = "testTempBody"; - private static final String NESTED_TEMPLATE_KEY = "testKey"; - private static final String NESTED_TEMPLATE_VALUE = "nestedTemplateTest"; - private static final String HEAT_FILE_NAME = "heatFileName"; - private static final String HEAT_FILE_BODY = "heatFileBodyTest"; - private static final String HEAT_ENV_NAME = "heatEnvName"; - private static final String HEAT_ENV = "heatEnv"; - private static final String VOL_HEAT_TEMPLATE_ARTIFACT = "volEnvArtifact"; - private static final String VOL_ENV_ARTIFACT_UUID = "volEnvArtifactUuid"; - - private VfModuleCustomizationToVduMapper testedObject; - private CatalogDatabase catalogDatabaseMock; - - @Before - public void init() { - PowerMockito.mockStatic(CatalogDatabase.class); - catalogDatabaseMock = mock(CatalogDatabase.class); - testedObject = new VfModuleCustomizationToVduMapper(); - PowerMockito.when(CatalogDatabase.getInstance()).thenReturn(catalogDatabaseMock); - when(catalogDatabaseMock.getNestedTemplates(HEAT_TEMPLATE_ARTIFACT_UUID)).thenReturn(createNestedTemplates()); - when(catalogDatabaseMock.getHeatFilesForVfModule(VF_MODULE_MODEL_UUID)).thenReturn(createHeatFileMap()); - } - - @Test - public void mapVfModuleCustomizationToVdu_successful() { - when(catalogDatabaseMock.getHeatTemplateByArtifactUuid(HEAT_TEMPLATE_ARTIFACT_UUID)) - .thenReturn(createHeatTemplate()); - when(catalogDatabaseMock.getHeatEnvironmentByArtifactUuid(HEAT_ENV_ARTIFACT_UUID)) - .thenReturn(createHeatEnvironment()); - VduModelInfo result = testedObject.mapVfModuleCustomizationToVdu(createVfModuleCustomization()); - assertThat(result.getArtifacts()).containsExactly(createExpectedResultArray()); - } - - @Test - public void mapVfModuleCustVolumeToVdu_successful() { - when(catalogDatabaseMock.getHeatTemplateByArtifactUuid(VOL_HEAT_TEMPLATE_ARTIFACT)) - .thenReturn(createHeatTemplate()); - when(catalogDatabaseMock.getHeatEnvironmentByArtifactUuid(VOL_ENV_ARTIFACT_UUID)) - .thenReturn(createHeatEnvironment()); - VduModelInfo result = testedObject.mapVfModuleCustVolumeToVdu(createVfModuleCustomization()); - assertThat(result.getArtifacts()).containsExactly(createExpectedResultArray()); - } - - private VfModuleCustomization createVfModuleCustomization() { - VfModuleCustomization vfModuleCustomization = new VfModuleCustomization(); - VfModule vfModule = new VfModule(); - vfModule.setHeatTemplateArtifactUUId(HEAT_TEMPLATE_ARTIFACT_UUID); - vfModule.setVolHeatTemplateArtifactUUId(VOL_HEAT_TEMPLATE_ARTIFACT); - vfModuleCustomization.setVfModule(vfModule); - vfModuleCustomization.setVfModuleModelUuid(VF_MODULE_MODEL_UUID); - vfModuleCustomization.setHeatEnvironmentArtifactUuid(HEAT_ENV_ARTIFACT_UUID); - vfModuleCustomization.setVolEnvironmentArtifactUuid(VOL_ENV_ARTIFACT_UUID); - return vfModuleCustomization; - } - - private HeatTemplate createHeatTemplate() { - HeatTemplate heatTemplate = new HeatTemplate(); - heatTemplate.setTemplateName(MAIN_TEMPLATE_NAME); - heatTemplate.setTemplateBody(MAIN_TEMPLATE_BODY); - heatTemplate.setArtifactUuid(HEAT_TEMPLATE_ARTIFACT_UUID); - return heatTemplate; - } - - private Map<String, Object> createNestedTemplates() { - Map<String, Object> map = new HashMap<>(); - map.put(NESTED_TEMPLATE_KEY, NESTED_TEMPLATE_VALUE); - return map; - } - - private Map<String, HeatFiles> createHeatFileMap() { - HeatFiles heatFiles = new HeatFiles(); - heatFiles.setFileName(HEAT_FILE_NAME); - heatFiles.setFileBody(HEAT_FILE_BODY); - Map<String, HeatFiles> map = new HashMap<>(); - map.put("heatFileKey", heatFiles); - return map; - } - - private HeatEnvironment createHeatEnvironment() { - HeatEnvironment heatEnvironment = new HeatEnvironment(); - heatEnvironment.setName(HEAT_ENV_NAME); - heatEnvironment.setEnvironment(HEAT_ENV); - return heatEnvironment; - } - - - private VduArtifact[] createExpectedResultArray() { - VduArtifact[] vduArtifactsArray = new VduArtifact[4]; - vduArtifactsArray[0] = new VduArtifact(MAIN_TEMPLATE_NAME, MAIN_TEMPLATE_BODY.getBytes(), - ArtifactType.MAIN_TEMPLATE); - vduArtifactsArray[1] = new VduArtifact(NESTED_TEMPLATE_KEY, NESTED_TEMPLATE_VALUE.getBytes(), - ArtifactType.NESTED_TEMPLATE); - vduArtifactsArray[2] = createVduArtifact(HEAT_FILE_NAME, HEAT_FILE_BODY, ArtifactType.TEXT_FILE); - vduArtifactsArray[3] = createVduArtifact(HEAT_ENV_NAME, HEAT_ENV, ArtifactType.ENVIRONMENT); - return vduArtifactsArray; - } - - private VduArtifact createVduArtifact(String name, String content, ArtifactType artifactType) { - VduArtifact vduArtifact = new VduArtifact(); - vduArtifact.setName(name); - vduArtifact.setContent(content.getBytes()); - vduArtifact.setType(artifactType); - return vduArtifact; - } - -} |