diff options
Diffstat (limited to 'catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ArtifactOperation.java')
-rw-r--r-- | catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ArtifactOperation.java | 572 |
1 files changed, 2 insertions, 570 deletions
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ArtifactOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ArtifactOperation.java index 1e1c9267e6..d9fe1eea92 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ArtifactOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ArtifactOperation.java @@ -131,24 +131,6 @@ public class ArtifactOperation implements IArtifactOperation { } @Override - public StorageOperationStatus addArifactToComponent(TitanVertex artifactInfo, TitanVertex parentVertex, String label) { - - // save logical artifact ref name on edge as property - Map<String, Object> properties = new HashMap<String, Object>(); - properties.put(GraphEdgePropertiesDictionary.NAME.getProperty(), label); - String groupInfo = (String) titanGenericDao.getProperty(artifactInfo, GraphPropertiesDictionary.ARTIFACT_GROUP_TYPE.getProperty()); - if (groupInfo != null) - properties.put(GraphEdgePropertiesDictionary.GROUP_TYPE.getProperty(), groupInfo); - TitanOperationStatus relation = titanGenericDao.createEdge(parentVertex, artifactInfo, GraphEdgeLabels.ARTIFACT_REF, properties); - if (!relation.equals(TitanOperationStatus.OK)) { - log.debug("Failed to create relation in graph from id {} to new artifact {}", parentVertex, label); - return DaoStatusConverter.convertTitanStatusToStorageStatus(relation); - } - return StorageOperationStatus.OK; - - } - - @Override public StorageOperationStatus addArifactToComponent(ArtifactDefinition artifactInfo, String parentId, NodeTypeEnum type, boolean failIfExist, TitanVertex parentVertex) { StorageOperationStatus status = addArtifactToGraph(artifactInfo, parentId, type, failIfExist, parentVertex); @@ -345,156 +327,6 @@ public class ArtifactOperation implements IArtifactOperation { } @Override - public Either<ArtifactDefinition, StorageOperationStatus> updateHeatEnvArtifact( String id, ArtifactDefinition artifactEnvInfo, String artifactId, String newArtifactId, NodeTypeEnum type, boolean inTransaction){ - - - Either<ArtifactData, StorageOperationStatus> status = dissociateAndAssociateHeatEnvArtifact(id, artifactEnvInfo, artifactId, newArtifactId, type, inTransaction); - - - if (status.isRight()) { - if (false == inTransaction) { - titanGenericDao.rollback(); - } - log.debug("Failed to update artifact {} of {} {}. status is {}", artifactId, type.getName(), id, status.right().value()); - BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedUpdateNodeError, "Failed to update artifact " + artifactId + " of " + type.getName() + " " + id + ". status is" + status.right().value(), artifactId, - String.valueOf(status.right().value())); - BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("Update Artifact", artifactId, String.valueOf(status.right().value())); - return Either.right(status.right().value()); - } else { - if (false == inTransaction) { - titanGenericDao.commit(); - } - ArtifactData artifactData = status.left().value(); - - ArtifactDefinition artifactDefResult = convertArtifactDataToArtifactDefinition(artifactData); - log.debug("The returned ArtifactDefintion is {}", artifactDefResult); - return Either.left(artifactDefResult); - } - - } - - private Either<ArtifactData, StorageOperationStatus> dissociateAndAssociateHeatEnvArtifact(String id, ArtifactDefinition artifactEnvInfo, String artifactId, String newArtifactId, NodeTypeEnum type, boolean inTransaction) { - - ArtifactDefinition heatEnvArt = artifactEnvInfo; - if(heatEnvArt == null ){ - Either<ArtifactDefinition, StorageOperationStatus> heatEnvEither = getHeatEnvByGeneratedFromId(artifactId); - if (heatEnvEither.isRight()) { - log.error("No heat env artifact node for id = {} ", artifactId); - return Either.right(StorageOperationStatus.NOT_FOUND); - } - heatEnvArt = heatEnvEither.left().value(); - } - - Either<ArtifactData, StorageOperationStatus> status = updateArtifactOnGraph(heatEnvArt, heatEnvArt.getUniqueId(), type, id); - if(status.isRight()){ - log.error("Failed to update heat env. status is {}", status.right().value()); - return status; - } - - UniqueIdData generatedFromArtifactNode = new UniqueIdData(NodeTypeEnum.ArtifactRef, heatEnvArt.getUniqueId()); - UniqueIdData oldArtifactNode = new UniqueIdData(NodeTypeEnum.ArtifactRef, artifactId); - - Either<GraphRelation, TitanOperationStatus> deleteRelation = titanGenericDao.deleteRelation(generatedFromArtifactNode, oldArtifactNode, GraphEdgeLabels.GENERATED_FROM); - if (deleteRelation.isRight()) { - TitanOperationStatus titanStatus = deleteRelation.right().value(); - if (titanStatus == TitanOperationStatus.NOT_FOUND) { - titanStatus = TitanOperationStatus.INVALID_ID; - } - Either.right(titanStatus); - } - - UniqueIdData newArtifactNode = new UniqueIdData(NodeTypeEnum.ArtifactRef, newArtifactId); - - Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(generatedFromArtifactNode, newArtifactNode, GraphEdgeLabels.GENERATED_FROM, null); - if (createRelation.isRight()) { - log.error("Failed to create relation from heat_env {} to heat {}", newArtifactId, generatedFromArtifactNode); - return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(createRelation.right().value())); - } - return status; - } - - @Override - public Either<ArtifactDefinition, StorageOperationStatus> updateArifactDefinition(ArtifactDefinition artifactInfo, boolean inTransaction) { - Either<ArtifactData, TitanOperationStatus> status = updateArifactDataDefinition(artifactInfo); - - if (status.isRight()) { - if (false == inTransaction) { - titanGenericDao.rollback(); - } - log.debug("Failed to update artifact {}", artifactInfo.getUniqueId()); - BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedUpdateNodeError, "Failed to update artifact " + artifactInfo.getUniqueId() + ". status is" + status.right().value(), artifactInfo.getUniqueId(), - String.valueOf(status.right().value())); - BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("Update Artifact", artifactInfo.getUniqueId(), String.valueOf(status.right().value())); - return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status.right().value())); - } else { - if (false == inTransaction) { - titanGenericDao.commit(); - } - ArtifactData artifactData = status.left().value(); - - ArtifactDefinition artifactDefResult = convertArtifactDataToArtifactDefinition(artifactData); - log.debug("The returned ArtifactDefintion is {}", artifactDefResult); - return Either.left(artifactDefResult); - } - } - - @Override - public Either<ArtifactDefinition, StorageOperationStatus> updateHeatEnvPlaceholder(ArtifactDefinition artifactInfo, boolean inTransaction) { - - updateVersionAndDate(artifactInfo, artifactInfo.getArtifactVersion()); - - Either<ArtifactData, TitanOperationStatus> status = updateArifactDataDefinition(artifactInfo); - - if (status.isRight()) { - if (false == inTransaction) { - titanGenericDao.rollback(); - } - log.debug("Failed to update artifact {}", artifactInfo.getUniqueId()); - BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedUpdateNodeError, "Failed to update artifact " + artifactInfo.getUniqueId() + ". status is" + status.right().value(), artifactInfo.getUniqueId(), - String.valueOf(status.right().value())); - BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("Update Artifact", artifactInfo.getUniqueId(), String.valueOf(status.right().value())); - return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status.right().value())); - } else { - if (false == inTransaction) { - titanGenericDao.commit(); - } - ArtifactData artifactData = status.left().value(); - - ArtifactDefinition artifactDefResult = convertArtifactDataToArtifactDefinition(artifactData); - log.debug("The returned ArtifactDefintion is {}" , artifactDefResult); - return Either.left(artifactDefResult); - } - } - - @Override - public Either<ArtifactDefinition, StorageOperationStatus> getHeatEnvByGeneratedFromId(String generatedFromId) { - String heatEnvId = generatedFromId.concat("env"); - Either<ArtifactDefinition, StorageOperationStatus> heatEnvEither = getArtifactById(heatEnvId, true); - if (heatEnvEither.isRight()) { - log.error("No heat env artifact node for id = {} ", heatEnvId); - return Either.right(StorageOperationStatus.NOT_FOUND); - } - return heatEnvEither; - } - - private Either<ArtifactData, TitanOperationStatus> updateArifactDataDefinition(ArtifactDefinition artifactInfo) { - Either<TitanGraph, TitanOperationStatus> graph = titanGenericDao.getGraph(); - if (graph.isRight()) { - return Either.right(graph.right().value()); - } - - ArtifactData artifactData = new ArtifactData(artifactInfo); - - Either<ArtifactData, TitanOperationStatus> status = titanGenericDao.updateNode(artifactData, ArtifactData.class); - - if (status.isRight()) { - return Either.right(status.right().value()); - - } - return Either.left(status.left().value()); - } - - @Override public Either<ArtifactDefinition, StorageOperationStatus> removeArifactFromResource(String id, String artifactId, NodeTypeEnum type, boolean deleteMandatoryArtifact, boolean inTransaction) { Either<ArtifactData, TitanOperationStatus> status = removeArtifactOnGraph(id, artifactId, type, deleteMandatoryArtifact); @@ -519,10 +351,6 @@ public class ArtifactOperation implements IArtifactOperation { } } - public Either<ArtifactData, StorageOperationStatus> updateToscaArtifactNameOnGraph(ArtifactDefinition artifactInfo, String artifactId, NodeTypeEnum type, String id) { - return updateArtifactOnGraph(artifactInfo, artifactId, type, id); - } - @SuppressWarnings("null") private Either<ArtifactData, StorageOperationStatus> updateArtifactOnGraph(ArtifactDefinition artifactInfo, String artifactId, NodeTypeEnum type, String id) { @@ -740,30 +568,7 @@ public class ArtifactOperation implements IArtifactOperation { return Either.left(true); } - public Either<Integer, StorageOperationStatus> getParentsOfArtifact(String artifactId, NodeTypeEnum type) { - Either<TitanGraph, TitanOperationStatus> graph = titanGenericDao.getGraph(); - if (graph.isRight()) { - return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graph.right().value())); - } - TitanGraph tGraph = graph.left().value(); - @SuppressWarnings("unchecked") - Iterable<TitanVertex> verticesArtifact = tGraph.query().has(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ArtifactRef), artifactId).vertices(); - Iterator<TitanVertex> iterator = verticesArtifact.iterator(); - if (!iterator.hasNext()) { - log.debug("No artifact node for id = {}", artifactId); - return Either.right(StorageOperationStatus.NOT_FOUND); - } - Vertex artifactV = iterator.next(); - Iterator<Edge> iterEdge = artifactV.edges(Direction.IN, GraphEdgeLabels.ARTIFACT_REF.getProperty()); - int edgeCount = 0; - while (iterEdge.hasNext()) { - Edge edge = iterEdge.next(); - ++edgeCount; - } - return Either.left(edgeCount); - } - - public Either<ArtifactData, TitanOperationStatus> removeArtifactOnGraph(String id, String artifactId, NodeTypeEnum type, boolean deleteMandatoryArtifact) { + private Either<ArtifactData, TitanOperationStatus> removeArtifactOnGraph(String id, String artifactId, NodeTypeEnum type, boolean deleteMandatoryArtifact) { Either<TitanGraph, TitanOperationStatus> graph = titanGenericDao.getGraph(); if (graph.isRight()) { return Either.right(graph.right().value()); @@ -928,288 +733,7 @@ public class ArtifactOperation implements IArtifactOperation { } - public Either<Map<String, TitanVertex>, StorageOperationStatus> getArtifactsVertecies(String parentId, NodeTypeEnum parentType, boolean inTransaction) { - Either<Map<String, TitanVertex>, StorageOperationStatus> result = null; - try { - Either<TitanGraph, TitanOperationStatus> graph = titanGenericDao.getGraph(); - if (graph.isRight()) { - log.debug("Failed to work with graph {}", graph.right().value()); - return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graph.right().value())); - } - TitanGraph tGraph = graph.left().value(); - @SuppressWarnings("unchecked") - Iterable<TitanVertex> vertices = tGraph.query().has(UniqueIdBuilder.getKeyByNodeType(parentType), parentId).vertices(); - if (vertices == null) { - log.debug("No nodes for type {} for id = {}", parentType, parentId); - result = Either.right(StorageOperationStatus.NOT_FOUND); - return result; - } - Iterator<TitanVertex> iterator = vertices.iterator(); - - Map<String, TitanVertex> artifactMap = new HashMap<String, TitanVertex>(); - while (iterator.hasNext()) { - Vertex vertex = iterator.next(); - Iterator<Edge> iteratorEdge = vertex.edges(Direction.OUT, GraphEdgeLabels.ARTIFACT_REF.getProperty()); - - if (iteratorEdge != null) { - - while (iteratorEdge.hasNext()) { - Edge edge = iteratorEdge.next(); - - TitanVertex artifactV = (TitanVertex) edge.inVertex(); - String label = (String) titanGenericDao.getProperty(artifactV, GraphPropertiesDictionary.ARTIFACT_LABEL.getProperty()); - artifactMap.put(label, artifactV); - log.debug("Artifact was added to list {}", label); - } - } - } - result = Either.left(artifactMap); - return result; - } finally { - if (inTransaction == false) { - if (result == null || result.isRight()) { - this.titanGenericDao.rollback(); - } else { - this.titanGenericDao.commit(); - } - - } - } - - } - - @Override - public Either<ArtifactDefinition, StorageOperationStatus> getArtifactById(String id, boolean inTransaction) { - Either<ArtifactDefinition, StorageOperationStatus> result = null; - try { - Either<ArtifactData, TitanOperationStatus> artifact = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ArtifactRef), id, ArtifactData.class); - if (artifact.isRight()) { - if (artifact.right().value().equals(TitanOperationStatus.NOT_FOUND)) { - result = Either.right(StorageOperationStatus.ARTIFACT_NOT_FOUND); - } else { - result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(artifact.right().value())); - } - return result; - } - ArtifactData artifactData = artifact.left().value(); - - ArtifactDefinition artifactDef = new ArtifactDefinition(artifactData.getArtifactDataDefinition()); - List<HeatParameterDefinition> heatParams = new ArrayList<HeatParameterDefinition>(); - StorageOperationStatus heatParametersStatus = heatParametersOperation.getHeatParametersOfNode(NodeTypeEnum.ArtifactRef, artifactDef.getUniqueId(), heatParams); - if (!heatParametersStatus.equals(StorageOperationStatus.OK)) { - log.debug("failed to get heat parameters for artifact {}", id); - return Either.right(heatParametersStatus); - } - if (!heatParams.isEmpty()) { - artifactDef.setListHeatParameters(heatParams); - } - - Either<ImmutablePair<ArtifactData, GraphEdge>, TitanOperationStatus> generatedFromArtifact = titanGenericDao.getChild(artifactData.getUniqueIdKey(), (String) artifactData.getUniqueId(), GraphEdgeLabels.GENERATED_FROM, - NodeTypeEnum.ArtifactRef, ArtifactData.class); - if (generatedFromArtifact.isLeft()) { - ImmutablePair<ArtifactData, GraphEdge> pair = generatedFromArtifact.left().value(); - String generatedFromId = (String) pair.left.getUniqueId(); - log.debug("artifact {} is generated from {}.", artifactData.getUniqueId(), generatedFromId); - artifactDef.setGeneratedFromId(generatedFromId); - Either<List<HeatParameterDefinition>, StorageOperationStatus> heatParamsForEnv = getHeatParamsForEnv(artifactDef); - if (heatParamsForEnv.isRight()) { - log.debug("failed to get heat parameters values for heat artifact {}", artifactDef.getUniqueId()); - return Either.right(heatParamsForEnv.right().value()); - } else { - artifactDef.setListHeatParameters(heatParamsForEnv.left().value()); - } - } - - result = Either.left(artifactDef); - return result; - } finally { - if (inTransaction == false) { - if (result == null || result.isRight()) { - this.titanGenericDao.rollback(); - } else { - this.titanGenericDao.commit(); - } - - } - } - } - - public Either<List<HeatParameterDefinition>, StorageOperationStatus> getHeatParamsForEnv(ArtifactDefinition heatEnvArtifact) { - - List<HeatParameterDefinition> heatParams = new ArrayList<HeatParameterDefinition>(); - StorageOperationStatus heatParametersStatus = heatParametersOperation.getHeatParametersOfNode(NodeTypeEnum.ArtifactRef, heatEnvArtifact.getGeneratedFromId(), heatParams); - if (!heatParametersStatus.equals(StorageOperationStatus.OK)) { - log.debug("failed to get heat parameters for node {}", heatEnvArtifact.getGeneratedFromId()); - return Either.right(heatParametersStatus); - } - if (!heatParams.isEmpty()) { - - Map<String, HeatParameterValueData> heatValuesMap = new HashMap<String, HeatParameterValueData>(); - Either<List<ImmutablePair<HeatParameterValueData, GraphEdge>>, TitanOperationStatus> heatEnvValuesWithEdges = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ArtifactRef), heatEnvArtifact.getUniqueId(), - GraphEdgeLabels.PARAMETER_VALUE, NodeTypeEnum.HeatParameterValue, HeatParameterValueData.class); - - if (heatEnvValuesWithEdges.isRight() && !heatEnvValuesWithEdges.right().value().equals(TitanOperationStatus.NOT_FOUND)) { - TitanOperationStatus status = heatEnvValuesWithEdges.right().value(); - if (!status.equals(TitanOperationStatus.NOT_FOUND)) { - return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - } - } else if (heatEnvValuesWithEdges.isLeft()) { - for (ImmutablePair<HeatParameterValueData, GraphEdge> pair : heatEnvValuesWithEdges.left().value()) { - HeatParameterValueData parameterValue = pair.left; - Object heatParameterName = pair.right.getProperties().get(GraphEdgePropertiesDictionary.NAME.getProperty()); - heatValuesMap.put((String) heatParameterName, parameterValue); - } - } - - for (HeatParameterDefinition parameter : heatParams) { - if (parameter.getCurrentValue() != null) { - if ("number".equals(parameter.getType())) { - parameter.setDefaultValue(new BigDecimal(parameter.getCurrentValue()).toPlainString()); - } else { - parameter.setDefaultValue(parameter.getCurrentValue()); - } - } - HeatParameterValueData heatParameterValueData = heatValuesMap.get(parameter.getName()); - if (heatParameterValueData != null && heatParameterValueData.getValue() != null) { - if ("number".equals(parameter.getType())) { - parameter.setCurrentValue(new BigDecimal(heatParameterValueData.getValue()).toPlainString()); - } else { - parameter.setCurrentValue(heatParameterValueData.getValue()); - } - parameter.setUniqueId((String) heatParameterValueData.getUniqueId()); - - } - } - } - - return Either.left(heatParams); - - } - - @Override - public Either<Map<String, ArtifactDefinition>, StorageOperationStatus> getArtifacts(String parentId, NodeTypeEnum parentType, boolean inTransaction, String groupType) { - - Either<Map<String, ArtifactDefinition>, StorageOperationStatus> result = null; - try { - Either<TitanGraph, TitanOperationStatus> graph = titanGenericDao.getGraph(); - if (graph.isRight()) { - log.debug("Failed to work with graph {}", graph.right().value()); - return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graph.right().value())); - } - TitanGraph tGraph = graph.left().value(); - @SuppressWarnings("unchecked") - Iterable<TitanVertex> vertices = tGraph.query().has(UniqueIdBuilder.getKeyByNodeType(parentType), parentId).vertices(); - if (vertices == null || vertices.iterator() == null || false == vertices.iterator().hasNext()) { - log.debug("No nodes for type {} for id = {}", parentType, parentId); - result = Either.right(StorageOperationStatus.NOT_FOUND); - return result; - } - - Iterator<TitanVertex> iterator = vertices.iterator(); - Vertex vertex = iterator.next(); - - Map<String, Object> edgeProperties = null; - if (groupType != null) { - edgeProperties = new HashMap<>(); - edgeProperties.put(GraphEdgePropertiesDictionary.GROUP_TYPE.getProperty(), groupType); - } - Either<List<ImmutablePair<ArtifactData, GraphEdge>>, TitanOperationStatus> childrenByEdgeCriteria = titanGenericDao.getChildrenByEdgeCriteria(vertex, parentId, GraphEdgeLabels.ARTIFACT_REF, NodeTypeEnum.ArtifactRef, ArtifactData.class, - edgeProperties); - - if (childrenByEdgeCriteria.isRight()) { - TitanOperationStatus status = childrenByEdgeCriteria.right().value(); - result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - return result; - } - - List<ImmutablePair<ArtifactData, GraphEdge>> list = childrenByEdgeCriteria.left().value(); - - Map<String, ArtifactDefinition> artifactsMap = new HashMap<>(); - - for (ImmutablePair<ArtifactData, GraphEdge> pair : list) { - ArtifactData artifactData = pair.getLeft(); - ArtifactDefinition artifactDefinition = new ArtifactDefinition(artifactData.getArtifactDataDefinition()); - - List<HeatParameterDefinition> heatParams = new ArrayList<HeatParameterDefinition>(); - StorageOperationStatus heatParametersStatus = heatParametersOperation.getHeatParametersOfNode(NodeTypeEnum.ArtifactRef, artifactDefinition.getUniqueId(), heatParams); - if (!heatParametersStatus.equals(StorageOperationStatus.OK)) { - log.debug("failed to get heat parameters for node {} {}", parentType.getName(), parentId); - return Either.right(heatParametersStatus); - } - if (!heatParams.isEmpty()) { - artifactDefinition.setListHeatParameters(heatParams); - } - - Either<ImmutablePair<ArtifactData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ArtifactRef), artifactDefinition.getUniqueId(), GraphEdgeLabels.GENERATED_FROM, - NodeTypeEnum.ArtifactRef, ArtifactData.class); - - if (getResult.isRight()) { - TitanOperationStatus status = getResult.right().value(); - if (!status.equals(TitanOperationStatus.NOT_FOUND)) { - return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - } - } else { - ImmutablePair<ArtifactData, GraphEdge> immutablePair = getResult.left().value(); - artifactDefinition.setGeneratedFromId((String) immutablePair.left.getUniqueId()); - } - - artifactsMap.put(artifactDefinition.getArtifactLabel(), artifactDefinition); - log.debug("Artifact {} was added to list ", artifactData.getUniqueId()); - } - - result = Either.left(artifactsMap); - return result; - - } finally { - if (inTransaction == false) { - if (result == null || result.isRight()) { - this.titanGenericDao.rollback(); - } else { - this.titanGenericDao.commit(); - } - - } - } - } - - @Override - public Either<ArtifactDefinition, StorageOperationStatus> addHeatEnvArtifact(ArtifactDefinition artifactHeatEnv, ArtifactDefinition artifactHeat, String parentId, NodeTypeEnum parentType, boolean failIfExist) { - - Either<ArtifactDefinition, StorageOperationStatus> result = null; - Either<ArtifactDefinition, StorageOperationStatus> heatArtifactOnGraph = addArifactToComponent(artifactHeatEnv, parentId, parentType, failIfExist, true); - if (heatArtifactOnGraph.isRight()) { - log.debug("failed to create heat env artifact on graph"); - result = heatArtifactOnGraph; - return result; - } - - ArtifactDefinition artifactDefinition = heatArtifactOnGraph.left().value(); - // add relation from heatEnv to heat - UniqueIdData heatData = new UniqueIdData(NodeTypeEnum.ArtifactRef, artifactHeat.getUniqueId()); - UniqueIdData heatEnvData = new UniqueIdData(NodeTypeEnum.ArtifactRef, artifactDefinition.getUniqueId()); - - Either<GraphRelation, TitanOperationStatus> relation = titanGenericDao.getRelation(heatEnvData, heatData, GraphEdgeLabels.GENERATED_FROM); - if (relation.isRight()) { - // TODO: add error in case of error - TitanOperationStatus status = relation.right().value(); - if (status == TitanOperationStatus.NOT_FOUND) { - Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(heatEnvData, heatData, GraphEdgeLabels.GENERATED_FROM, null); - if (createRelation.isRight()) { - status = createRelation.right().value(); - log.debug("failed to add relation from heat_env artifact to heat artifact. error: {}", status); - result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - return result; - } - } - } - - artifactDefinition.setGeneratedFromId(artifactHeat.getUniqueId()); - log.trace("heat env artifact added successfuly to resource instance"); - result = Either.left(artifactDefinition); - return result; - } - - public void updateUUID(ArtifactDataDefinition artifactData, String oldChecksum, String oldVesrion) { + private void updateUUID(ArtifactDataDefinition artifactData, String oldChecksum, String oldVesrion) { if (oldVesrion == null || oldVesrion.isEmpty()) oldVesrion = "0"; @@ -1240,96 +764,4 @@ public class ArtifactOperation implements IArtifactOperation { artifactData.setArtifactVersion(String.valueOf(newVersion)); } - @Override - public Either<ArtifactDefinition, StorageOperationStatus> getHeatArtifactByHeatEnvId(String heatEnvId, boolean inTransaction) { - - Either<ArtifactDefinition, StorageOperationStatus> result = null; - try { - Either<TitanGraph, TitanOperationStatus> graph = titanGenericDao.getGraph(); - if (graph.isRight()) { - log.debug("Failed to work with graph {}", graph.right().value()); - return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graph.right().value())); - } - TitanGraph tGraph = graph.left().value(); - @SuppressWarnings("unchecked") - Iterable<TitanVertex> vertices = tGraph.query().has(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ArtifactRef), heatEnvId).vertices(); - if (vertices == null || vertices.iterator() == null || false == vertices.iterator().hasNext()) { - log.debug("No nodes for type {} for id = {}", NodeTypeEnum.ArtifactRef, heatEnvId); - result = Either.right(StorageOperationStatus.INVALID_ID); - return result; - } - - Iterator<TitanVertex> iterator = vertices.iterator(); - Vertex vertex = iterator.next(); - - Map<String, Object> edgeProperties = null; - Either<List<ImmutablePair<ArtifactData, GraphEdge>>, TitanOperationStatus> childrenByEdgeCriteria = titanGenericDao.getChildrenByEdgeCriteria(vertex, heatEnvId, GraphEdgeLabels.GENERATED_FROM, NodeTypeEnum.ArtifactRef, ArtifactData.class, - edgeProperties); - - if (childrenByEdgeCriteria.isRight()) { - TitanOperationStatus status = childrenByEdgeCriteria.right().value(); - result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)); - return result; - } - - List<ImmutablePair<ArtifactData, GraphEdge>> list = childrenByEdgeCriteria.left().value(); - - if (list == null || list.isEmpty() == true) { - return Either.right(StorageOperationStatus.NOT_FOUND); - } - - if (list.size() > 1) { - return Either.right(StorageOperationStatus.INVALID_ID); - } - - ImmutablePair<ArtifactData, GraphEdge> immutablePair = list.get(0); - - ArtifactDefinition artifactDefinition = new ArtifactDefinition(immutablePair.left.getArtifactDataDefinition()); - - log.debug("The artifact {} was generated from artifact {}", heatEnvId, artifactDefinition); - - result = Either.left(artifactDefinition); - return result; - - } finally { - if (inTransaction == false) { - if (result == null || result.isRight()) { - this.titanGenericDao.rollback(); - } else { - this.titanGenericDao.commit(); - } - - } - } - } - - @Override - public Either<ArtifactData, StorageOperationStatus> getLatestArtifactDataByArtifactUUID(String artifactUUID, boolean inTransaction) { - Either<ArtifactData, StorageOperationStatus> result = null; - try { - NodeTypeEnum nodeType = NodeTypeEnum.ArtifactRef; - Map<String, Object> propertiesToMatch = new HashMap<>(); - propertiesToMatch.put(GraphPropertiesDictionary.ARTIFACT_UUID.getProperty(), artifactUUID); - Either<List<ArtifactData>, TitanOperationStatus> getArtifactEither = titanGenericDao.getByCriteria(nodeType, propertiesToMatch, ArtifactData.class); - if (getArtifactEither.isRight()) { - log.debug("Couldn't fetch artifact data for artifact with uuid {}, error: {}", nodeType, getArtifactEither.right().value()); - result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(getArtifactEither.right().value())); - } else { - List<ArtifactData> artifacts = getArtifactEither.left().value(); - ArtifactData latestArtifact = artifacts.size() == 1 ? artifacts.get(0) - : artifacts.stream().max((a1, a2) -> Double.compare(Double.parseDouble(a1.getArtifactDataDefinition().getArtifactVersion()), Double.parseDouble(a2.getArtifactDataDefinition().getArtifactVersion()))).get(); - result = Either.left(latestArtifact); - } - return result; - } finally { - if (!inTransaction) { - if (result == null || result.isRight()) { - this.titanGenericDao.rollback(); - } else { - this.titanGenericDao.commit(); - } - } - } - } - } |