diff options
Diffstat (limited to 'catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ResourceOperation.java')
-rw-r--r-- | catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ResourceOperation.java | 124 |
1 files changed, 51 insertions, 73 deletions
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ResourceOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ResourceOperation.java index 4dce650f18..2cc78eade2 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ResourceOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ResourceOperation.java @@ -20,20 +20,11 @@ package org.openecomp.sdc.be.model.operations.impl; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Optional; -import java.util.Set; -import java.util.UUID; -import java.util.function.Predicate; -import java.util.regex.Pattern; -import java.util.stream.Collectors; - +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.thinkaurelius.titan.core.TitanGraph; +import com.thinkaurelius.titan.core.TitanVertex; +import fj.data.Either; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.ImmutablePair; @@ -54,25 +45,7 @@ import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum; import org.openecomp.sdc.be.datatypes.enums.FilterKeyEnum; import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum; import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum; -import org.openecomp.sdc.be.model.AdditionalInformationDefinition; -import org.openecomp.sdc.be.model.ArtifactDefinition; -import org.openecomp.sdc.be.model.AttributeDefinition; -import org.openecomp.sdc.be.model.CapabilityDefinition; -import org.openecomp.sdc.be.model.Component; -import org.openecomp.sdc.be.model.ComponentInstance; -import org.openecomp.sdc.be.model.ComponentInstanceAttribute; -import org.openecomp.sdc.be.model.ComponentInstanceProperty; -import org.openecomp.sdc.be.model.ComponentParametersView; -import org.openecomp.sdc.be.model.DataTypeDefinition; -import org.openecomp.sdc.be.model.GroupDefinition; -import org.openecomp.sdc.be.model.InputDefinition; -import org.openecomp.sdc.be.model.InterfaceDefinition; -import org.openecomp.sdc.be.model.LifecycleStateEnum; -import org.openecomp.sdc.be.model.Operation; -import org.openecomp.sdc.be.model.PropertyDefinition; -import org.openecomp.sdc.be.model.RequirementDefinition; -import org.openecomp.sdc.be.model.Resource; -import org.openecomp.sdc.be.model.ResourceMetadataDefinition; +import org.openecomp.sdc.be.model.*; import org.openecomp.sdc.be.model.cache.ComponentCache; import org.openecomp.sdc.be.model.category.CategoryDefinition; import org.openecomp.sdc.be.model.category.SubCategoryDefinition; @@ -82,7 +55,7 @@ import org.openecomp.sdc.be.model.operations.api.IAttributeOperation; import org.openecomp.sdc.be.model.operations.api.IElementOperation; import org.openecomp.sdc.be.model.operations.api.IResourceOperation; import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; -import org.openecomp.sdc.be.model.operations.migration.MigrationErrorInformer; +import org.openecomp.sdc.be.model.operations.migration.MigrationMalformedDataLogger; import org.openecomp.sdc.be.model.operations.utils.GraphDeleteUtil; import org.openecomp.sdc.be.resources.data.ComponentMetadataData; import org.openecomp.sdc.be.resources.data.PropertyData; @@ -100,13 +73,18 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.thinkaurelius.titan.core.TitanGraph; -import com.thinkaurelius.titan.core.TitanVertex; - -import fj.Function; -import fj.data.Either; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Optional; +import java.util.Set; +import java.util.UUID; +import java.util.function.Predicate; +import java.util.regex.Pattern; +import java.util.stream.Collectors; @org.springframework.stereotype.Component("resource-operation") @Deprecated @@ -651,7 +629,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp return getPropertiesOfAllDerivedFromRes; } - private TitanOperationStatus associateAttributesToResource(TitanVertex metadataVertex, List<AttributeDefinition> attributes, String resourceId) { + private TitanOperationStatus associateAttributesToResource(TitanVertex metadataVertex, List<PropertyDefinition> attributes, String resourceId) { TitanOperationStatus operationStatus = TitanOperationStatus.OK; Either<Map<String, DataTypeDefinition>, TitanOperationStatus> allDataTypes = applicationDataTypeCache.getAll(); @@ -662,7 +640,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp } if (attributes != null) { - Map<String, AttributeDefinition> convertedAttributes = attributes.stream().collect(Collectors.toMap(e -> e.getName(), e -> e)); + Map<String, PropertyDefinition> convertedAttributes = attributes.stream().collect(Collectors.toMap(e -> e.getName(), e -> e)); operationStatus = attributeOperation.addAttributesToGraph(metadataVertex, convertedAttributes, resourceId, allDataTypes.left().value()); } return operationStatus; @@ -805,12 +783,12 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp } private TitanOperationStatus setComponentInstancesAttributesFromGraph(String uniqueId, Resource component) { - Map<String, List<ComponentInstanceAttribute>> resourceInstancesAttributes = new HashMap<>(); + Map<String, List<ComponentInstanceProperty>> resourceInstancesAttributes = new HashMap<>(); TitanOperationStatus status = TitanOperationStatus.OK; List<ComponentInstance> componentInstances = component.getComponentInstances(); if (componentInstances != null) { for (ComponentInstance resourceInstance : componentInstances) { - Either<List<ComponentInstanceAttribute>, TitanOperationStatus> eitherRIAttributes = attributeOperation.getAllAttributesOfResourceInstance(resourceInstance); + Either<List<ComponentInstanceProperty>, TitanOperationStatus> eitherRIAttributes = attributeOperation.getAllAttributesOfResourceInstance(resourceInstance); if (eitherRIAttributes.isRight()) { status = eitherRIAttributes.right().value(); break; @@ -875,8 +853,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp } else { Map<String, CapabilityDefinition> capabilities = result.left().value(); if (capabilities != null && !capabilities.isEmpty() && resource.getResourceType().equals(ResourceTypeEnum.VF)) { - log.error(String.format("VF %s has direct capabilities.!!!!!!!!!!!!!", resource.getName())); - MigrationErrorInformer.addMalformedVF(resource.getUniqueId()); + MigrationMalformedDataLogger.reportMalformedVF(resource.getUniqueId(), String.format("VF %s with id %s has direct capabilities.!!!!!!!!!!!!!", resource.getName(), resource.getUniqueId())); } if (capabilities == null || capabilities.isEmpty() || resource.getResourceType().equals(ResourceTypeEnum.VF)) { Either<Map<String, List<CapabilityDefinition>>, TitanOperationStatus> eitherCapabilities = super.getCapabilities(resource, NodeTypeEnum.Resource, true); @@ -946,8 +923,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp } else { Map<String, RequirementDefinition> requirements = result.left().value(); if (requirements != null && !requirements.isEmpty() && resource.getResourceType().equals(ResourceTypeEnum.VF)) { - log.error(String.format("VF %s has direct requirements.!!!!!!!!!!!!!", resource.getName())); - MigrationErrorInformer.addMalformedVF(resource.getUniqueId()); + MigrationMalformedDataLogger.reportMalformedVF(resource.getUniqueId(), String.format("VF %s with id %s has direct requirements.!!!!!!!!!!!!!", resource.getName(), resource.getUniqueId())); } if (requirements == null || requirements.isEmpty() || resource.getResourceType() == ResourceTypeEnum.VF) { Either<Map<String, List<RequirementDefinition>>, TitanOperationStatus> eitherCapabilities = super.getRequirements(resource, NodeTypeEnum.Resource, true); @@ -982,7 +958,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp private TitanOperationStatus setResourceAttributesFromGraph(String uniqueId, Resource resource) { - List<AttributeDefinition> attributes = new ArrayList<>(); + List<PropertyDefinition> attributes = new ArrayList<>(); TitanOperationStatus status = attributeOperation.findAllResourceAttributesRecursively(uniqueId, attributes); if (status == TitanOperationStatus.OK) { resource.setAttributes(attributes); @@ -1372,7 +1348,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp } private StorageOperationStatus removeAttributesFromResource(Resource resource) { - Either<Map<String, AttributeDefinition>, StorageOperationStatus> deleteAllAttributeAssociatedToNode = attributeOperation.deleteAllAttributeAssociatedToNode(NodeTypeEnum.Resource, resource.getUniqueId()); + Either<Map<String, PropertyDefinition>, StorageOperationStatus> deleteAllAttributeAssociatedToNode = attributeOperation.deleteAllAttributeAssociatedToNode(NodeTypeEnum.Resource, resource.getUniqueId()); return deleteAllAttributeAssociatedToNode.isRight() ? deleteAllAttributeAssociatedToNode.right().value() : StorageOperationStatus.OK; } @@ -1862,25 +1838,23 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp return getResourceListByCriteria(rootToscaResource, false); } - @Override - public Either<List<Resource>, StorageOperationStatus> getAll() { - Either<List<Resource>, StorageOperationStatus> resourceListByCriteria = getResourceListByCriteria(new HashMap<>(), false); - if (resourceListByCriteria.isRight() && resourceListByCriteria.right().value() == StorageOperationStatus.NOT_FOUND) { - return Either.left(Collections.emptyList()); - } - return resourceListByCriteria; - } - - private Either<List<ImmutablePair<ResourceMetadataData, GraphEdge>>, TitanOperationStatus> getDerivingChildren(Resource resource) { return titanGenericDao.getParentNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resource.getUniqueId(), GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.Resource, ResourceMetadataData.class); } private Either<List<Resource>, StorageOperationStatus> convertToResources(List<ResourceMetadataData> resourcesMetaData) { - List<Either<Resource, StorageOperationStatus>> resources = resourcesMetaData.stream() - .map(resourceMetaData -> this.getResource(resourceMetaData.getMetadataDataDefinition().getUniqueId())) - .collect(Collectors.toList()); - return Either.sequenceLeft(fj.data.List.iterableList(resources)).bimap(fj.data.List::toJavaList, Function.identity()); + List<Resource> resources = new ArrayList<>(); + for (ResourceMetadataData resourceMetadataData : resourcesMetaData) { + String uniqueId = resourceMetadataData.getMetadataDataDefinition().getUniqueId(); + Either<Resource, StorageOperationStatus> resource = this.getResource(uniqueId); + if (resource.isRight()) { + StorageOperationStatus status = resource.right().value(); + log.error("Failed to fetch resource {} . status is {}", uniqueId, status); + return Either.right(status); + } + resources.add(resource.left().value()); + } + return Either.left(resources); } protected TitanOperationStatus findResourcesPathRecursively(String resourceId, List<ResourceMetadataData> resourcesPathList) { @@ -2163,19 +2137,23 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp if (byCriteria.isRight()) { return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(byCriteria.right().value())); } - List<Resource> resources = new ArrayList<Resource>(); + List<Resource> resources = new ArrayList<>(); List<ResourceMetadataData> resourcesDataList = byCriteria.left().value(); for (ResourceMetadataData data : resourcesDataList) { - Either<Resource, StorageOperationStatus> resource = getResource(data.getMetadataDataDefinition().getUniqueId(), inTransaction); - if (resource.isLeft()) { - resources.add(resource.left().value()); - } else { - log.debug("Failed to fetch resource for name = {} and id = {}", data.getUniqueId(), data.getMetadataDataDefinition().getName()); - } + buildResource(inTransaction, resources, data); } return Either.left(resources); } + private void buildResource(boolean inTransaction, List<Resource> resources, ResourceMetadataData data) { + Either<Resource, StorageOperationStatus> resource = getResource(data.getMetadataDataDefinition().getUniqueId(), inTransaction); + if (resource.isLeft()) { + resources.add(resource.left().value()); + } else { + log.debug("Failed to fetch resource for name = {} and id = {}", data.getUniqueId(), data.getMetadataDataDefinition().getName()); + } + } + public Either<List<Resource>, StorageOperationStatus> getResourceListByUuid(String uuid, boolean inTransaction) { return getLatestResourceByUuid(uuid, false, inTransaction); } @@ -2623,7 +2601,7 @@ public class ResourceOperation extends ComponentOperation implements IResourceOp } resource.setInterfaces(interfacesOfResourceOnly.left().value()); - List<AttributeDefinition> attributes = new ArrayList<>(); + List<PropertyDefinition> attributes = new ArrayList<>(); TitanOperationStatus status = attributeOperation.findNodeNonInheretedAttribues(prevId, NodeTypeEnum.Resource, attributes); if (status != TitanOperationStatus.OK) { return DaoStatusConverter.convertTitanStatusToStorageStatus(status); |