diff options
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/ServiceDistributionArtifactsBuilder.java')
-rw-r--r-- | catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/ServiceDistributionArtifactsBuilder.java | 137 |
1 files changed, 91 insertions, 46 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/ServiceDistributionArtifactsBuilder.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/ServiceDistributionArtifactsBuilder.java index 6e67e38c15..90120288bc 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/ServiceDistributionArtifactsBuilder.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/ServiceDistributionArtifactsBuilder.java @@ -24,22 +24,27 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; import javax.annotation.PostConstruct; import org.openecomp.sdc.be.config.ConfigurationManager; -import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum; import org.openecomp.sdc.be.model.ArtifactDefinition; import org.openecomp.sdc.be.model.ComponentInstance; +import org.openecomp.sdc.be.model.ComponentParametersView; import org.openecomp.sdc.be.model.Resource; import org.openecomp.sdc.be.model.Service; +import org.openecomp.sdc.be.model.category.CategoryDefinition; +import org.openecomp.sdc.be.model.category.SubCategoryDefinition; +import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade; import org.openecomp.sdc.be.model.operations.api.IArtifactOperation; import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; import org.openecomp.sdc.be.model.operations.impl.InterfaceLifecycleOperation; -import org.openecomp.sdc.be.model.operations.impl.ResourceOperation; -import org.openecomp.sdc.be.model.operations.impl.ServiceOperation; +import org.openecomp.sdc.common.api.ArtifactTypeEnum; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import fj.data.Either; @@ -51,47 +56,31 @@ public class ServiceDistributionArtifactsBuilder { private static Logger logger = LoggerFactory.getLogger(ServiceDistributionArtifactsBuilder.class.getName()); - final static String BASE_ARTIFACT_URL = "/asdc/v1/catalog/services/%s/%s/"; + final static String BASE_ARTIFACT_URL = "/sdc/v1/catalog/services/%s/%s/"; final static String RESOURCE_ARTIFACT_URL = BASE_ARTIFACT_URL + "resources/%s/%s/artifacts/%s"; final static String SERVICE_ARTIFACT_URL = BASE_ARTIFACT_URL + "artifacts/%s"; final static String RESOURCE_INSTANCE_ARTIFACT_URL = BASE_ARTIFACT_URL + "resourceInstances/%s/artifacts/%s"; @javax.annotation.Resource - ServiceOperation serviceOperation; - - @javax.annotation.Resource - ResourceOperation resourceOperation; - - @javax.annotation.Resource InterfaceLifecycleOperation interfaceLifecycleOperation; @javax.annotation.Resource IArtifactOperation artifactOperation; + + @Autowired + ToscaOperationFacade toscaOperationFacade; /* - * @javax.annotation.Resource private InformationDeployedArtifactsBusinessLogic informationDeployedArtifactsBusinessLogic; + * @javax.annotation.Resource private + * InformationDeployedArtifactsBusinessLogic + * informationDeployedArtifactsBusinessLogic; */ @PostConstruct private void init() { - defaultArtifactInstallTimeout = ConfigurationManager.getConfigurationManager().getConfiguration().getDefaultHeatArtifactTimeoutMinutes(); - } - - public ServiceOperation getServiceOperation() { - return serviceOperation; - } - - public void setServiceOperation(ServiceOperation serviceOperation) { - this.serviceOperation = serviceOperation; - } - - public ResourceOperation getResourceOperation() { - return resourceOperation; - } - - public void setResourceOperation(ResourceOperation resourceOperation) { - this.resourceOperation = resourceOperation; + defaultArtifactInstallTimeout = ConfigurationManager.getConfigurationManager().getConfiguration() + .getDefaultHeatArtifactTimeoutMinutes(); } public InterfaceLifecycleOperation getInterfaceLifecycleOperation() { @@ -130,37 +119,91 @@ public class ServiceDistributionArtifactsBuilder { } private List<ArtifactInfoImpl> convertServiceArtifactsToArtifactInfo(Service service) { - + Map<String, ArtifactDefinition> serviceArtifactsMap = service.getDeploymentArtifacts(); - List<ArtifactDefinition> ret = new ArrayList<ArtifactDefinition>(); - - for (ArtifactDefinition artifactDef : serviceArtifactsMap.values()) { - if (artifactDef.checkEsIdExist()) { - ret.add(artifactDef); - } + List<ArtifactDefinition> extractedServiceArtifacts = serviceArtifactsMap.values().stream() + //filters all artifacts with existing EsId + .filter(artifactDef -> artifactDef.checkEsIdExist()) + //collects all filtered artifacts with existing EsId to List + .collect(Collectors.toList()); + + Optional<ArtifactDefinition> toscaTemplateArtifactOptl = exrtactToscaTemplateArtifact(service); + if(toscaTemplateArtifactOptl.isPresent()){ + extractedServiceArtifacts.add(toscaTemplateArtifactOptl.get()); } - List<ArtifactInfoImpl> artifacts = ArtifactInfoImpl.convertServiceArtifactToArtifactInfoImpl(service, ret); + + Optional<ArtifactDefinition> toscaCsarArtifactOptl = exrtactToscaCsarArtifact(service); + if(toscaCsarArtifactOptl.isPresent()){ + extractedServiceArtifacts.add(toscaCsarArtifactOptl.get()); + } + + List<ArtifactInfoImpl> artifacts = ArtifactInfoImpl.convertServiceArtifactToArtifactInfoImpl(service, extractedServiceArtifacts); return artifacts; } + private Optional<ArtifactDefinition> exrtactToscaTemplateArtifact(Service service) { + return service.getToscaArtifacts().values().stream() + //filters TOSCA_TEMPLATE artifact + .filter(e -> e.getArtifactType().equals(ArtifactTypeEnum.TOSCA_TEMPLATE.getType())).findAny(); + } + + private Optional<ArtifactDefinition> exrtactToscaCsarArtifact(Service service) { + return service.getToscaArtifacts().values().stream() + //filters TOSCA_CSAR artifact + .filter(e -> e.getArtifactType().equals(ArtifactTypeEnum.TOSCA_CSAR.getType())).findAny(); + } + private List<JsonContainerResourceInstance> convertRIToJsonContanier(Service service) { List<JsonContainerResourceInstance> ret = new ArrayList<JsonContainerResourceInstance>(); if (service.getComponentInstances() != null) { for (ComponentInstance resourceInstance : service.getComponentInstances()) { - String resourceType = "VF"; + String resoucreType = resourceInstance.getOriginType().getValue(); List<ArtifactDefinition> artifactsDefList = getArtifactsWithPayload(resourceInstance); - List<ArtifactInfoImpl> artifacts = ArtifactInfoImpl.convertToArtifactInfoImpl(service, resourceInstance, artifactsDefList); - Either<String, StorageOperationStatus> responseResult = resourceOperation.getInvariantUUID(NodeTypeEnum.Resource, resourceInstance.getComponentUid(), false); + List<ArtifactInfoImpl> artifacts = ArtifactInfoImpl.convertToArtifactInfoImpl(service, resourceInstance, + artifactsDefList); + String resourceInvariantUUID = null; - if (responseResult.isRight()) { - logger.debug("Resource {} Invariant UUID retrieving failed", resourceInstance.getComponentUid()); + String resourceCategory = null; + String resourceSubcategory = null; + + ComponentParametersView componentParametersView = new ComponentParametersView(); + componentParametersView.disableAll(); + componentParametersView.setIgnoreCategories(false); + Either<Resource, StorageOperationStatus> componentResponse = toscaOperationFacade + .getToscaElement(resourceInstance.getComponentUid(), componentParametersView); + + if (componentResponse.isRight()) { + logger.debug("Resource {} Invariant UUID & Categories retrieving failed", resourceInstance.getComponentUid()); } else { - resourceInvariantUUID = responseResult.left().value(); + Resource resource = componentResponse.left().value(); + resourceInvariantUUID = resource.getInvariantUUID(); + + List<CategoryDefinition> categories = resource.getCategories(); + + if (categories != null) { + CategoryDefinition categoryDefinition = categories.get(0); + + if (categoryDefinition != null) { + resourceCategory = categoryDefinition.getName(); + List<SubCategoryDefinition> subcategories = categoryDefinition.getSubcategories(); + if (null != subcategories) { + SubCategoryDefinition subCategoryDefinition = subcategories.get(0); + + if (subCategoryDefinition != null) { + resourceSubcategory = subCategoryDefinition.getName(); + } + } + } + } } - JsonContainerResourceInstance jsonContainer = new JsonContainerResourceInstance(resourceInstance, resourceInvariantUUID, resourceType, artifacts); + + JsonContainerResourceInstance jsonContainer = new JsonContainerResourceInstance(resourceInstance, resoucreType, + artifacts); + jsonContainer.setResourceInvariantUUID(resourceInvariantUUID); + jsonContainer.setCategory(resourceCategory); + jsonContainer.setSubcategory(resourceSubcategory); ret.add(jsonContainer); } - } return ret; } @@ -193,9 +236,11 @@ public class ServiceDistributionArtifactsBuilder { * @param artifactName * @return */ - public static String buildResourceInstanceArtifactUrl(Service service, ComponentInstance resourceInstance, String artifactName) { + public static String buildResourceInstanceArtifactUrl(Service service, ComponentInstance resourceInstance, + String artifactName) { - String url = String.format(RESOURCE_INSTANCE_ARTIFACT_URL, service.getSystemName(), service.getVersion(), resourceInstance.getNormalizedName(), artifactName); + String url = String.format(RESOURCE_INSTANCE_ARTIFACT_URL, service.getSystemName(), service.getVersion(), + resourceInstance.getNormalizedName(), artifactName); logger.debug("After building artifact url {}", url); |