diff options
Diffstat (limited to 'asdc-controller/src')
10 files changed, 284 insertions, 213 deletions
diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/ASDCControllerSingleton.java b/asdc-controller/src/main/java/org/onap/so/asdc/ASDCControllerSingleton.java index a5e3340c76..e00bb1eb36 100644 --- a/asdc-controller/src/main/java/org/onap/so/asdc/ASDCControllerSingleton.java +++ b/asdc-controller/src/main/java/org/onap/so/asdc/ASDCControllerSingleton.java @@ -38,21 +38,26 @@ import java.security.SecureRandom; @Profile("!test") public class ASDCControllerSingleton { + private static final Logger logger = LoggerFactory.getLogger(ASDCControllerSingleton.class); + private final ASDCController asdcController; @Autowired - private ASDCController asdcController; - private static Logger logger = LoggerFactory.getLogger(ASDCControllerSingleton.class); - - + public ASDCControllerSingleton(final ASDCController asdcController) { + this.asdcController = asdcController; + } @Scheduled(fixedRate = 50000) public void periodicControllerTask() { try { - int randomNumber = new SecureRandom().nextInt(Integer.MAX_VALUE); + final int randomNumber = new SecureRandom().nextInt(Integer.MAX_VALUE); asdcController.setControllerName("mso-controller" + randomNumber); - asdcController.initASDC(); - } catch (ASDCControllerException e) { - logger.error("Exception occurred", e); + if (asdcController.isStopped()) { + logger.info("{} not running will try to initialize it, currrent status: {}", + asdcController.getClass().getName(), asdcController.getControllerStatus()); + asdcController.initASDC(); + } + } catch (final ASDCControllerException controllerException) { + logger.error("Exception occurred", controllerException); } } @@ -60,8 +65,8 @@ public class ASDCControllerSingleton { private void terminate() { try { asdcController.closeASDC(); - } catch (ASDCControllerException e) { - logger.error("Exception occurred", e); + } catch (final ASDCControllerException controllerException) { + logger.error("Exception occurred", controllerException); } } diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/Application.java b/asdc-controller/src/main/java/org/onap/so/asdc/Application.java index eb2957c6f8..2c8347260f 100644 --- a/asdc-controller/src/main/java/org/onap/so/asdc/Application.java +++ b/asdc-controller/src/main/java/org/onap/so/asdc/Application.java @@ -35,7 +35,6 @@ import org.springframework.scheduling.annotation.EnableScheduling; @EnableJpaRepositories("org.onap.so.db.catalog.data.repository") public class Application { private static final Logger logger = LoggerFactory.getLogger(Application.class); - private static final String MSO_CONFIG_PATH = "mso.config.path"; private static final String LOGS_DIR = "logs_dir"; @Autowired @@ -47,11 +46,6 @@ public class Application { } } - private static void setConfigPath() { - if (System.getProperty(MSO_CONFIG_PATH) == null) - System.getProperties().setProperty(MSO_CONFIG_PATH, "."); - } - @PostConstruct private void deployActivities() { try { diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/JerseyConfiguration.java b/asdc-controller/src/main/java/org/onap/so/asdc/JerseyConfiguration.java index 902506974a..22265a0cc6 100644 --- a/asdc-controller/src/main/java/org/onap/so/asdc/JerseyConfiguration.java +++ b/asdc-controller/src/main/java/org/onap/so/asdc/JerseyConfiguration.java @@ -24,7 +24,9 @@ import javax.annotation.PostConstruct; import javax.ws.rs.ApplicationPath; import org.glassfish.jersey.server.ResourceConfig; import org.onap.so.asdc.client.test.rest.ASDCRestInterface; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.Environment; import io.swagger.jaxrs.config.BeanConfig; import io.swagger.jaxrs.listing.ApiListingResource; import io.swagger.jaxrs.listing.SwaggerSerializers; @@ -33,6 +35,12 @@ import io.swagger.jaxrs.listing.SwaggerSerializers; @ApplicationPath("/test") public class JerseyConfiguration extends ResourceConfig { + private Environment environment; + + @Autowired + public JerseyConfiguration(final Environment environment) { + this.environment = environment; + } @PostConstruct public void setUp() { @@ -40,10 +48,10 @@ public class JerseyConfiguration extends ResourceConfig { register(ApiListingResource.class); register(SwaggerSerializers.class); - BeanConfig beanConfig = new BeanConfig(); + final BeanConfig beanConfig = new BeanConfig(); beanConfig.setVersion("1.0.2"); beanConfig.setSchemes(new String[] {"http"}); - beanConfig.setHost("localhost:8080"); + beanConfig.setHost("localhost:" + environment.getProperty("server.port")); beanConfig.setBasePath("/mso"); beanConfig.setResourcePackage("org.onap.so.apihandlerinfra"); beanConfig.setPrettyPrint(true); 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 563291c479..3b9406a697 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 @@ -196,11 +196,9 @@ public class ASDCController { * @throws IOException In case of issues when trying to load the key file */ public void initASDC() throws ASDCControllerException { - String event = "Initialize the ASDC Controller"; - logger.debug(event); - if (this.getControllerStatus() != ASDCControllerStatus.STOPPED) { - String endEvent = "The controller is already initialized, call the closeASDC method first"; - throw new ASDCControllerException(endEvent); + logger.debug("Initialize the ASDC Controller"); + if (!isStopped()) { + throw new ASDCControllerException("The controller is already initialized, call the closeASDC method first"); } if (asdcConfig != null) { @@ -238,6 +236,13 @@ public class ASDCController { } /** + * @return true if controller is stopped + */ + public boolean isStopped() { + return this.getControllerStatus() == ASDCControllerStatus.STOPPED; + } + + /** * This method closes the ASDC Controller and the ASDC Client. * * @throws ASDCControllerException It throws an exception if the ASDC Client cannot be closed because it's currently @@ -245,7 +250,7 @@ public class ASDCController { */ public void closeASDC() throws ASDCControllerException { - if (this.getControllerStatus() == ASDCControllerStatus.BUSY) { + if (isBusy()) { throw new ASDCControllerException("Cannot close the ASDC controller as it's currently in BUSY state"); } if (this.distributionClient != null) { @@ -261,6 +266,13 @@ public class ASDCController { this.changeControllerStatus(ASDCControllerStatus.STOPPED); } + /** + * @return true if controller is currently processing notification + */ + public boolean isBusy() { + return this.getControllerStatus() == ASDCControllerStatus.BUSY; + } + protected boolean checkResourceAlreadyDeployed(ResourceStructure resource, boolean serviceDeployed) throws ArtifactInstallerException { @@ -713,12 +725,6 @@ public class ASDCController { try { this.processCsarServiceArtifacts(iNotif, toscaResourceStructure); - IArtifactInfo iArtifact = toscaResourceStructure.getToscaArtifact(); - String filePath = - msoConfigPath + "/ASDC/" + iArtifact.getArtifactVersion() + "/" + iArtifact.getArtifactName(); - File csarFile = new File(filePath); - - if (isCsarAlreadyDeployed(iNotif, toscaResourceStructure)) { return; } diff --git a/asdc-controller/src/main/java/org/onap/so/asdc/client/test/rest/ASDCRestInterface.java b/asdc-controller/src/main/java/org/onap/so/asdc/client/test/rest/ASDCRestInterface.java index 56690a8c38..24e1887847 100644 --- a/asdc-controller/src/main/java/org/onap/so/asdc/client/test/rest/ASDCRestInterface.java +++ b/asdc-controller/src/main/java/org/onap/so/asdc/client/test/rest/ASDCRestInterface.java @@ -23,7 +23,6 @@ package org.onap.so.asdc.client.test.rest; -import java.io.IOException; import javax.transaction.Transactional; import javax.ws.rs.HeaderParam; import javax.ws.rs.POST; @@ -31,15 +30,14 @@ import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; -import org.onap.so.logger.LoggingAnchor; +import javax.ws.rs.core.Response.Status; import org.onap.so.asdc.client.ASDCController; -import org.onap.so.asdc.client.exceptions.ASDCControllerException; -import org.onap.so.asdc.client.exceptions.ASDCParametersException; import org.onap.so.asdc.client.test.emulators.DistributionClientEmulator; -import org.onap.so.asdc.client.test.emulators.NotificationDataImpl; import org.onap.so.asdc.client.test.emulators.JsonStatusData; +import org.onap.so.asdc.client.test.emulators.NotificationDataImpl; import org.onap.so.asdc.installer.heat.ToscaResourceInstaller; import org.onap.so.logger.ErrorCode; +import org.onap.so.logger.LoggingAnchor; import org.onap.so.logger.MessageEnum; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -48,13 +46,15 @@ import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; /** - * This is a TEST only rest interface. It is not used in production, it is used to aid in testing the ASDC service on - * jboss without the need to be connected to the ASDC service broker. It starts the test at the treatNotification step - * and simulates both the notification step as well as the artifact download step. + * This is a TEST only rest interface. It is not used in production, it is used to aid in testing the ASDC service + * without the need to be connected to the ASDC service broker. It starts the test at the treatNotification step and + * simulates both the notification step as well as the artifact download step. * <p> - * i.e. http://localhost:8080/asdc/treatNotification/v1 + * i.e. http://localhost:8085/test/treatNotification/v1 * <p> - * i.e. http://localhost:8080/asdc/statusData/v1 + * i.e. http://localhost:8085/test/statusData/v1 + * + * This interface is also used in CSIT to simulate a distribution of a service, without using SDC * * @author jm5423 */ @@ -66,48 +66,75 @@ public class ASDCRestInterface { private static final Logger logger = LoggerFactory.getLogger(ASDCRestInterface.class); - @Autowired - private ASDCController asdcController; + private final ASDCController asdcController; + + private final ToscaResourceInstaller toscaInstaller; @Autowired - private ToscaResourceInstaller toscaInstaller; + public ASDCRestInterface(final ASDCController asdcController, final ToscaResourceInstaller toscaInstaller) { + this.asdcController = asdcController; + this.toscaInstaller = toscaInstaller; + } @POST @Path("/treatNotification/v1") @Produces(MediaType.APPLICATION_JSON) @Transactional - public Response invokeASDCService(NotificationDataImpl request, - @HeaderParam("resource-location") String resourceLocation) - throws ASDCControllerException, ASDCParametersException, IOException { - DistributionClientEmulator distributionClientEmulator = new DistributionClientEmulator(resourceLocation); - - asdcController.setControllerName("asdc-controller1"); - asdcController.setDistributionClient(distributionClientEmulator); - asdcController.initASDC(); - asdcController.treatNotification(request); - asdcController.closeASDC(); - return Response.status(200).build(); + public Response invokeASDCService(final NotificationDataImpl request, + @HeaderParam("resource-location") final String resourceLocation) { + + try { + logger.info("Received message : {}", request); + logger.info("resource-location : {}", resourceLocation); + final DistributionClientEmulator distributionClientEmulator = + getDistributionClientEmulator(resourceLocation); + + asdcController.setControllerName("asdc-controller1"); + asdcController.setDistributionClient(distributionClientEmulator); + + if (asdcController.isStopped()) { + logger.info("{} not running will try to initialize it, currrent status: {}", + asdcController.getClass().getName(), asdcController.getControllerStatus()); + asdcController.initASDC(); + } + + asdcController.treatNotification(request); + + if (!asdcController.isBusy()) { + asdcController.closeASDC(); + } + + return Response.status(Status.OK).build(); + } catch (final Exception exception) { + logger.error("Unable to process notification request", exception); + return Response.status(Status.INTERNAL_SERVER_ERROR).build(); + } + + } + + private DistributionClientEmulator getDistributionClientEmulator(final String resourceLocation) { + return new DistributionClientEmulator(resourceLocation); } @POST @Path("/statusData/v1") @Produces(MediaType.APPLICATION_JSON) @Transactional - public Response invokeASDCStatusData(String request) { + public Response invokeASDCStatusData(final String request) { try { - DistributionClientEmulator distributionClientEmulator = - new DistributionClientEmulator("resource-examples/"); - JsonStatusData statusData = JsonStatusData.instantiateNotifFromJsonFile("resource-examples/"); + final DistributionClientEmulator distributionClientEmulator = + getDistributionClientEmulator("resource-examples/"); + final JsonStatusData statusData = JsonStatusData.instantiateNotifFromJsonFile("resource-examples/"); - ASDCController controller = new ASDCController("asdc-controller1", distributionClientEmulator); - controller.initASDC(); + asdcController.setDistributionClient(distributionClientEmulator); + asdcController.initASDC(); toscaInstaller.installTheComponentStatus(statusData); - controller.closeASDC(); + asdcController.closeASDC(); logger.info(LoggingAnchor.FOUR, MessageEnum.ASDC_ARTIFACT_DEPLOY_SUC.toString(), statusData.getDistributionID(), "ASDC", "ASDC Updates Are Complete"); - } catch (Exception e) { + } catch (final Exception e) { logger.info("Error caught " + e.getMessage()); logger.error(LoggingAnchor.SIX, MessageEnum.ASDC_GENERAL_EXCEPTION.toString(), "Exception caught during ASDCRestInterface", "ASDC", "invokeASDCService", 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 94517ccc45..e4c95f6290 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 @@ -628,11 +628,12 @@ public class ToscaResourceInstaller { protected void processNetworks(ToscaResourceStructure toscaResourceStruct, Service service) throws ArtifactInstallerException { - List<NodeTemplate> nodeTemplatesVLList = toscaResourceStruct.getSdcCsarHelper().getServiceVlList(); - if (nodeTemplatesVLList != null) { - for (NodeTemplate vlNode : nodeTemplatesVLList) { - String networkResourceModelName = vlNode.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME); + List<IEntityDetails> vlEntityList = getEntityDetails(toscaResourceStruct, SdcTypes.VL, SdcTypes.SERVICE); + + if (vlEntityList != null) { + for (IEntityDetails vlEntity : vlEntityList) { + String networkResourceModelName = vlEntity.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_NAME); TempNetworkHeatTemplateLookup tempNetworkLookUp = tempNetworkLookupRepo.findFirstBynetworkResourceModelName(networkResourceModelName); @@ -641,7 +642,7 @@ public class ToscaResourceInstaller { HeatTemplate heatTemplate = heatRepo.findByArtifactUuid(tempNetworkLookUp.getHeatTemplateArtifactUuid()); if (heatTemplate != null) { - NetworkResourceCustomization networkCustomization = createNetwork(vlNode, toscaResourceStruct, + NetworkResourceCustomization networkCustomization = createNetwork(vlEntity, toscaResourceStruct, heatTemplate, tempNetworkLookUp.getAicVersionMax(), tempNetworkLookUp.getAicVersionMin(), service); service.getNetworkCustomizations().add(networkCustomization); @@ -651,7 +652,7 @@ public class ToscaResourceInstaller { } } else { NetworkResourceCustomization networkCustomization = - createNetwork(vlNode, toscaResourceStruct, null, null, null, service); + createNetwork(vlEntity, toscaResourceStruct, null, null, null, service); service.getNetworkCustomizations().add(networkCustomization); logger.debug("No NetworkResourceName found in TempNetworkHeatTemplateLookup for " + networkResourceModelName); @@ -1086,9 +1087,9 @@ public class ToscaResourceInstaller { tempGroupList.addAll(groupList); for (Group group : groupList) { + boolean isAllExists = true; ArrayList<NodeTemplate> members = group.getMemberNodes(); for (NodeTemplate memberNode : members) { - boolean isAllExists = true; RequirementAssignments requirements = iSdcCsarHelper.getRequirementsOf(memberNode); if (requirements == null || requirements.getAll() == null || requirements.getAll().isEmpty()) { continue; @@ -1096,27 +1097,28 @@ public class ToscaResourceInstaller { List<RequirementAssignment> rqaList = requirements.getAll(); for (RequirementAssignment rqa : rqaList) { String name = rqa.getNodeTemplateName(); - for (NodeTemplate node : nodes) { - if (name.equals(node.getName())) { - break; - } + Optional<NodeTemplate> findNode = + nodes.stream().filter(node -> node.getName().equals(name)).findFirst(); + if (!findNode.isPresent()) { + isAllExists = false; + break; } - - isAllExists = false; - break; } - - if (isAllExists) { - strSequence.add(group.getName()); - tempGroupList.remove(group); - nodes.addAll(group.getMemberNodes()); + if (!isAllExists) { + break; } } - if (!tempGroupList.isEmpty() && tempGroupList.size() < groupList.size()) { - getVNFCGroupSequenceList(strSequence, tempGroupList, nodes, iSdcCsarHelper); + if (isAllExists) { + strSequence.add(group.getName()); + tempGroupList.remove(group); + nodes.addAll(group.getMemberNodes()); } } + + if (tempGroupList.size() != 0 && tempGroupList.size() < groupList.size()) { + getVNFCGroupSequenceList(strSequence, tempGroupList, nodes, iSdcCsarHelper); + } } public void processWatchdog(String distributionId, String servideUUID, Optional<String> distributionNotification, @@ -1493,13 +1495,13 @@ public class ToscaResourceInstaller { return cvnfcCustomization; } - protected NetworkResourceCustomization createNetwork(NodeTemplate networkNodeTemplate, + protected NetworkResourceCustomization createNetwork(IEntityDetails networkEntity, ToscaResourceStructure toscaResourceStructure, HeatTemplate heatTemplate, String aicMax, String aicMin, Service service) { NetworkResourceCustomization networkResourceCustomization = networkCustomizationRepo.findOneByModelCustomizationUUID( - networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID)); + networkEntity.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID)); boolean networkUUIDsMatch = true; // Check to make sure the NetworkResourceUUID on the Customization record matches the NetworkResourceUUID from @@ -1507,8 +1509,7 @@ public class ToscaResourceInstaller { // If not we'll update the Customization record with latest from the distribution if (networkResourceCustomization != null) { String existingNetworkModelUUID = networkResourceCustomization.getNetworkResource().getModelUUID(); - String latestNetworkModelUUID = - networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID); + String latestNetworkModelUUID = networkEntity.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_UUID); if (!existingNetworkModelUUID.equals(latestNetworkModelUUID)) { networkUUIDsMatch = false; @@ -1519,7 +1520,7 @@ public class ToscaResourceInstaller { if (networkResourceCustomization != null && !networkUUIDsMatch) { NetworkResource networkResource = - createNetworkResource(networkNodeTemplate, toscaResourceStructure, heatTemplate, aicMax, aicMin); + createNetworkResource(networkEntity, toscaResourceStructure, heatTemplate, aicMax, aicMin); networkResourceCustomization.setNetworkResource(networkResource); @@ -1527,14 +1528,13 @@ public class ToscaResourceInstaller { } else if (networkResourceCustomization == null) { - networkResourceCustomization = - createNetworkResourceCustomization(networkNodeTemplate, toscaResourceStructure); + networkResourceCustomization = createNetworkResourceCustomization(networkEntity, toscaResourceStructure); NetworkResource networkResource = findExistingNetworkResource(service, - networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID)); + networkEntity.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_UUID)); if (networkResource == null) - networkResource = createNetworkResource(networkNodeTemplate, toscaResourceStructure, heatTemplate, - aicMax, aicMin); + networkResource = + createNetworkResource(networkEntity, toscaResourceStructure, heatTemplate, aicMax, aicMin); networkResource.addNetworkResourceCustomization(networkResourceCustomization); networkResourceCustomization.setNetworkResource(networkResource); @@ -1557,31 +1557,34 @@ public class ToscaResourceInstaller { return networkResource; } - protected NetworkResourceCustomization createNetworkResourceCustomization(NodeTemplate networkNodeTemplate, + protected NetworkResourceCustomization createNetworkResourceCustomization(IEntityDetails networkEntity, ToscaResourceStructure toscaResourceStructure) { NetworkResourceCustomization networkResourceCustomization = new NetworkResourceCustomization(); networkResourceCustomization.setModelInstanceName( - testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME))); + testNull(networkEntity.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_NAME))); networkResourceCustomization.setModelCustomizationUUID( - testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID))); + testNull(networkEntity.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID))); networkResourceCustomization.setNetworkTechnology( - testNull(toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue(networkNodeTemplate, - SdcPropertyNames.PROPERTY_NAME_NETWORKTECHNOLOGY))); - networkResourceCustomization.setNetworkType(testNull(toscaResourceStructure.getSdcCsarHelper() - .getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKTYPE))); - networkResourceCustomization.setNetworkRole(testNull(toscaResourceStructure.getSdcCsarHelper() - .getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKROLE))); - networkResourceCustomization.setNetworkScope(testNull(toscaResourceStructure.getSdcCsarHelper() - .getNodeTemplatePropertyLeafValue(networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_NETWORKSCOPE))); + getLeafPropertyValue(networkEntity, SdcPropertyNames.PROPERTY_NAME_NETWORKTECHNOLOGY)); + + networkResourceCustomization + .setNetworkType(getLeafPropertyValue(networkEntity, SdcPropertyNames.PROPERTY_NAME_NETWORKTYPE)); + + networkResourceCustomization + .setNetworkRole(getLeafPropertyValue(networkEntity, SdcPropertyNames.PROPERTY_NAME_NETWORKROLE)); + + networkResourceCustomization + .setNetworkScope(getLeafPropertyValue(networkEntity, SdcPropertyNames.PROPERTY_NAME_NETWORKSCOPE)); + return networkResourceCustomization; } - protected NetworkResource createNetworkResource(NodeTemplate networkNodeTemplate, + protected NetworkResource createNetworkResource(IEntityDetails vlEntity, ToscaResourceStructure toscaResourceStructure, HeatTemplate heatTemplate, String aicMax, String aicMin) { NetworkResource networkResource = new NetworkResource(); - String providerNetwork = toscaResourceStructure.getSdcCsarHelper().getNodeTemplatePropertyLeafValue( - networkNodeTemplate, SdcPropertyNames.PROPERTY_NAME_PROVIDERNETWORK_ISPROVIDERNETWORK); + String providerNetwork = + getLeafPropertyValue(vlEntity, SdcPropertyNames.PROPERTY_NAME_PROVIDERNETWORK_ISPROVIDERNETWORK); if ("true".equalsIgnoreCase(providerNetwork)) { networkResource.setNeutronNetworkType(PROVIDER); @@ -1589,21 +1592,19 @@ public class ToscaResourceInstaller { networkResource.setNeutronNetworkType(BASIC); } - networkResource.setModelName( - testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_NAME))); + networkResource.setModelName(testNull(vlEntity.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_NAME))); networkResource.setModelInvariantUUID( - testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID))); - networkResource.setModelUUID( - testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID))); - networkResource.setModelVersion( - testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION))); + testNull(vlEntity.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID))); + networkResource.setModelUUID(testNull(vlEntity.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_UUID))); + networkResource + .setModelVersion(testNull(vlEntity.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_VERSION))); networkResource.setAicVersionMax(aicMax); networkResource.setAicVersionMin(aicMin); - networkResource.setToscaNodeType(networkNodeTemplate.getType()); - networkResource.setDescription( - testNull(networkNodeTemplate.getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION))); + networkResource.setToscaNodeType(vlEntity.getToscaType()); + networkResource + .setDescription(testNull(vlEntity.getMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION))); networkResource.setOrchestrationMode(HEAT); networkResource.setHeatTemplate(heatTemplate); return networkResource; @@ -1896,7 +1897,13 @@ public class ToscaResourceInstaller { vnfcCustomization .setDescription(testNull(metadata.getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION))); vnfcCustomization.setResourceInput(getVnfcResourceInput(vfcTemplate, inputList)); - vfcInstanceGroupCustom.getVnfcCustomizations().add(vnfcCustomization); + List<VnfcCustomization> vnfcCustomizations = vfcInstanceGroupCustom.getVnfcCustomizations(); + + if (vnfcCustomizations == null) { + vnfcCustomizations = new ArrayList<>(); + vfcInstanceGroupCustom.setVnfcCustomizations(vnfcCustomizations); + } + vnfcCustomizations.add(vnfcCustomization); } } } @@ -2672,6 +2679,41 @@ public class ToscaResourceInstaller { + vfModuleStructure.getVfModuleMetadata().getVfModuleModelName(); } + protected List<IEntityDetails> getEntityDetails(ToscaResourceStructure toscaResourceStruct, SdcTypes entityType, + SdcTypes topologyTemplate) { + + EntityQuery entityQuery = EntityQuery.newBuilder(entityType).build(); + TopologyTemplateQuery topologyTemplateQuery = TopologyTemplateQuery.newBuilder(topologyTemplate).build(); + List<IEntityDetails> entityDetails = + toscaResourceStruct.getSdcCsarHelper().getEntity(entityQuery, topologyTemplateQuery, false); + + return entityDetails; + + } + + protected List<IEntityDetails> getEntityDetails(ToscaResourceStructure toscaResourceStruct, String entityType, + SdcTypes topologyTemplate) { + + EntityQuery entityQuery = EntityQuery.newBuilder(entityType).build(); + TopologyTemplateQuery topologyTemplateQuery = TopologyTemplateQuery.newBuilder(topologyTemplate).build(); + List<IEntityDetails> entityDetails = + toscaResourceStruct.getSdcCsarHelper().getEntity(entityQuery, topologyTemplateQuery, true); + + return entityDetails; + + } + + protected String getLeafPropertyValue(IEntityDetails entityDetails, String propName) { + + Property leafProperty = entityDetails.getProperties().get(propName); + + if (leafProperty != null && leafProperty.getValue() != null) { + return leafProperty.getValue().toString(); + } + + return null; + } + protected String getPropertyInput(String propertyName) { String inputName = new String(); diff --git a/asdc-controller/src/main/resources/application-local.yaml b/asdc-controller/src/main/resources/application-local.yaml deleted file mode 100644 index 1b21d8b571..0000000000 --- a/asdc-controller/src/main/resources/application-local.yaml +++ /dev/null @@ -1,95 +0,0 @@ -# will be used as entry in DB to say SITE OFF/ON for healthcheck - -server-port: 8080 -ssl-enable: false - - - -# H2 -spring: - datasource: - jdbc-url: jdbc:mariadb://localhost:3306/catalogdb - username: root - password: password - driver-class-name: org.mariadb.jdbc.Driver - initialize: true - - jpa: - show-sql: true - hibernate: - ddl-auto: validate - naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy - enable-lazy-load-no-trans: true - database-platform: org.hibernate.dialect.MySQL5InnoDBDialect - security: - usercredentials: - - - username: asdc - password: '$2a$12$4R2QhxH7elzoZYoC.HJKTOHYDoaC9LbJD44Q9/tm4t/UzPF9Cgifi' - role: Asdc-Client - - - username: mso_admin - password: '$2a$12$tidKuu.h88E2nuL95pTVY.ZOYMN/1dp29A9b1o.0GFDsVVSYlMkHa' - role: ACTUATOR -request: - datasource: - jdbc-url: jdbc:mariadb://localhost:3306/requestdb - username: root - password: password - driver-class-name: org.mariadb.jdbc.Driver - initialize: true - initialization-mode: never - -#Actuator -management: - endpoints: - web: - base-path: /manage - server: - servlet: - context-path: /manage - metrics: - se-global-registry: false - export: - prometheus: - enabled: true # Whether exporting of metrics to Prometheus is enabled. - step: 1m # Step size (i.e. reporting frequency) to use. - - -mso: - logPath: logs - catalog: - db: - spring: - endpoint: "http://localhost:8090" - db: - auth: Basic YnBlbDptc28tZGItMTUwNyE= - site-name: siteName - aai: - endpoint: https://localhost:8443 - asdc-connections: - asdc-controller1: - user: msopreist - consumerGroup: msoasdc-id-local - consumerId: msoasdc-id-local - environmentName: Pre-IST - asdcAddress: localhost:8443 - password: CB655C3C236F1F0370A347E3A0E0E133BE10ADCF4D16377E7378D3FE46A4BF60C27DF1FFB4 - pollingInterval: 30 - pollingTimeout: 30 - relevantArtifactTypes: HEAT,HEAT_ENV,HEAT_VOL - useHttpsWithDmaap: true - activateServerTLSAuth: false - keyStorePassword: - keyStorePath: - watchDogTimeout: 1 - isFitlerInEmptyResources: true - messageBusAddress: localhost,localhost,localhost - asdc: - config: - key: 566B754875657232314F5548556D3665 - components: - count: 3, - componentNames: SO,AAI,SDNC - scheduling: - enabled: false diff --git a/asdc-controller/src/main/resources/application.yaml b/asdc-controller/src/main/resources/application.yaml index beb40e5e65..2de5b6914f 100644 --- a/asdc-controller/src/main/resources/application.yaml +++ b/asdc-controller/src/main/resources/application.yaml @@ -18,6 +18,8 @@ spring: ddl-auto: validate naming-strategy: org.hibernate.cfg.ImprovedNamingStrategy enable-lazy-load-no-trans: true + main: + allow-bean-definition-overriding: true request: datasource: diff --git a/asdc-controller/src/test/java/org/onap/so/asdc/installer/heat/ToscaResourceInstallerTest.java b/asdc-controller/src/test/java/org/onap/so/asdc/installer/heat/ToscaResourceInstallerTest.java index bd8e877369..7534ea645a 100644 --- a/asdc-controller/src/test/java/org/onap/so/asdc/installer/heat/ToscaResourceInstallerTest.java +++ b/asdc-controller/src/test/java/org/onap/so/asdc/installer/heat/ToscaResourceInstallerTest.java @@ -32,6 +32,7 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -45,11 +46,14 @@ import org.mockito.MockitoAnnotations; import org.onap.sdc.api.notification.IArtifactInfo; import org.onap.sdc.api.notification.INotificationData; import org.onap.sdc.api.notification.IResourceInstance; +import org.onap.sdc.tosca.parser.api.IEntityDetails; import org.onap.sdc.tosca.parser.api.ISdcCsarHelper; import org.onap.sdc.tosca.parser.impl.SdcCsarHelperImpl; import org.onap.sdc.tosca.parser.impl.SdcPropertyNames; import org.onap.sdc.toscaparser.api.Group; import org.onap.sdc.toscaparser.api.NodeTemplate; +import org.onap.sdc.toscaparser.api.RequirementAssignment; +import org.onap.sdc.toscaparser.api.RequirementAssignments; import org.onap.sdc.toscaparser.api.elements.Metadata; import org.onap.sdc.toscaparser.api.elements.StatefulEntityType; import org.onap.sdc.utils.DistributionStatusEnum; @@ -75,6 +79,7 @@ import org.onap.so.db.request.data.repository.WatchdogComponentDistributionStatu import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.util.ReflectionTestUtils; import java.util.Optional; +import java.util.stream.Collectors; public class ToscaResourceInstallerTest extends BaseTest { @Autowired @@ -102,6 +107,8 @@ public class ToscaResourceInstallerTest extends BaseTest { @Mock private NodeTemplate nodeTemplate; @Mock + private IEntityDetails entityDetails; + @Mock private ToscaResourceStructure toscaResourceStructure; @Mock private ServiceProxyResourceCustomization spResourceCustomization; @@ -485,6 +492,81 @@ public class ToscaResourceInstallerTest extends BaseTest { verify(vnrConfigCustom, times(1)).setConfigResourceCustomization(vrfConfigCustom); } + @Test + public void testProcessVNFCGroupSequence() { + List<Group> groupList = new ArrayList<>(); + + Group group1 = mock(Group.class); + NodeTemplate node1 = mock(NodeTemplate.class); + List<NodeTemplate> nodeList1 = new ArrayList<>(); + nodeList1.add(node1); + doReturn("VfcInstanceGroup..0").when(group1).getName(); + doReturn(nodeList1).when(group1).getMemberNodes(); + doReturn("deviceV3").when(node1).getName(); + + Group group2 = mock(Group.class); + NodeTemplate node2 = mock(NodeTemplate.class); + List<NodeTemplate> nodeList2 = new ArrayList<>(); + nodeList2.add(node2); + doReturn("VfcInstanceGroup..1").when(group2).getName(); + doReturn(nodeList2).when(group2).getMemberNodes(); + RequirementAssignments requirements2 = mock(RequirementAssignments.class); + RequirementAssignment requirement2 = mock(RequirementAssignment.class); + List<RequirementAssignment> requirementCollection2 = new ArrayList<>(); + requirementCollection2.add(requirement2); + doReturn(requirementCollection2).when(requirements2).getAll(); + doReturn("deviceV3").when(requirement2).getNodeTemplateName(); + doReturn("SiteV2").when(node2).getName(); + + Group group3 = mock(Group.class); + NodeTemplate node3 = mock(NodeTemplate.class); + List<NodeTemplate> nodeList3 = new ArrayList<>(); + nodeList3.add(node3); + doReturn("VfcInstanceGroup..2").when(group3).getName(); + doReturn(nodeList3).when(group3).getMemberNodes(); + RequirementAssignments requirements3 = mock(RequirementAssignments.class); + RequirementAssignment requirement3 = mock(RequirementAssignment.class); + List<RequirementAssignment> requirementCollection3 = new ArrayList<>(); + requirementCollection3.add(requirement3); + doReturn(requirementCollection3).when(requirements3).getAll(); + doReturn("SiteV2").when(requirement3).getNodeTemplateName(); + doReturn("siteWanV2").when(node3).getName(); + + groupList.add(group1); + groupList.add(group2); + groupList.add(group3); + + doReturn(csarHelper).when(toscaResourceStructure).getSdcCsarHelper(); + doReturn(null).when(csarHelper).getRequirementsOf(node1); + doReturn(requirements2).when(csarHelper).getRequirementsOf(node2); + doReturn(requirements3).when(csarHelper).getRequirementsOf(node3); + + ToscaResourceInstaller installer = new ToscaResourceInstaller(); + Method[] methods = installer.getClass().getDeclaredMethods(); + Method testMethod = null; + for (Method method : methods) { + String name = method.getName(); + if (name.equals("processVNFCGroupSequence")) { + method.setAccessible(true); + testMethod = method; + } + } + + if (null != testMethod) { + try { + Object seqResult = testMethod.invoke(installer, toscaResourceStructure, groupList); + if (seqResult instanceof List) { + String resultStr = ((List<String>) seqResult).stream().collect(Collectors.joining(",")); + assertEquals(((List<String>) seqResult).size(), 3); + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + } + + class MockConstants { public final static String MODEL_NAME = "VLAN Network Receptor Configuration"; public final static String MODEL_INVARIANT_UUID = "1608eef4-de53-4334-a8d2-ba79cab4bde0"; diff --git a/asdc-controller/src/test/resources/resource-examples/vcpe-infra/service-Demovcpeinfra-csar.csar b/asdc-controller/src/test/resources/resource-examples/vcpe-infra/service-Demovcpeinfra-csar.csar Binary files differindex 841c681088..40b8b7b45a 100644 --- a/asdc-controller/src/test/resources/resource-examples/vcpe-infra/service-Demovcpeinfra-csar.csar +++ b/asdc-controller/src/test/resources/resource-examples/vcpe-infra/service-Demovcpeinfra-csar.csar |