1 package org.openecomp.sdc.asdctool.impl.validator.tasks.artifacts;
3 import java.util.ArrayList;
4 import java.util.Collections;
7 import java.util.Optional;
9 import org.openecomp.sdc.asdctool.impl.validator.utils.ReportManager;
10 import org.openecomp.sdc.be.dao.cassandra.ArtifactCassandraDao;
11 import org.openecomp.sdc.be.dao.cassandra.CassandraOperationStatus;
12 import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
13 import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
14 import org.openecomp.sdc.be.datatypes.elements.MapArtifactDataDefinition;
15 import org.openecomp.sdc.be.model.ComponentParametersView;
16 import org.openecomp.sdc.be.model.jsontitan.datamodel.TopologyTemplate;
17 import org.openecomp.sdc.be.model.jsontitan.datamodel.ToscaElement;
18 import org.openecomp.sdc.be.model.jsontitan.operations.TopologyTemplateOperation;
19 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
20 import org.springframework.beans.factory.annotation.Autowired;
22 import fj.data.Either;
25 * Created by chaya on 7/6/2017.
27 public class ArtifactValidationUtils {
30 private ArtifactCassandraDao artifactCassandraDao;
33 private TopologyTemplateOperation topologyTemplateOperation;
35 public ArtifactsVertexResult validateArtifactsAreInCassandra(GraphVertex vertex, String taskName, List<ArtifactDataDefinition> artifacts) {
36 ArtifactsVertexResult result = new ArtifactsVertexResult(true);
37 for(ArtifactDataDefinition artifact:artifacts) {
38 boolean isArtifactExist = isArtifcatInCassandra(artifact.getEsId());
39 String status = isArtifactExist ? "Artifact " + artifact.getEsId() + " is in Cassandra" :
40 "Artifact " + artifact.getEsId() + " doesn't exist in Cassandra";
42 ReportManager.writeReportLineToFile(status);
43 if (!isArtifactExist) {
44 ReportManager.addFailedVertex(taskName, vertex.getUniqueId());
45 result.setStatus(false);
46 result.addNotFoundArtifact(artifact.getUniqueId());
52 public boolean isArtifcatInCassandra(String uniueId) {
53 Either<Long, CassandraOperationStatus> countOfArtifactsEither =
54 artifactCassandraDao.getCountOfArtifactById(uniueId);
55 if (countOfArtifactsEither.isRight()) {
57 System.out.print("Failed to retrieve artifact with id: "+uniueId+" from Cassandra" );
60 Long count = countOfArtifactsEither.left().value();
67 public List<ArtifactDataDefinition> addRelevantArtifacts(Map<String, ArtifactDataDefinition> artifactsMap) {
68 List<ArtifactDataDefinition> artifacts = new ArrayList<>();
69 Optional.ofNullable(artifactsMap).orElse(Collections.emptyMap()).forEach( (key, dataDef) -> {
70 if (dataDef.getEsId() != null && !dataDef.getEsId().isEmpty()) {
71 artifacts.add(dataDef);
77 public ArtifactsVertexResult validateTopologyTemplateArtifacts(GraphVertex vertex, String taskName) {
78 ArtifactsVertexResult result = new ArtifactsVertexResult();
79 ComponentParametersView paramView = new ComponentParametersView();
80 paramView.disableAll();
81 paramView.setIgnoreArtifacts(false);
82 paramView.setIgnoreComponentInstances(false);
83 Either<ToscaElement, StorageOperationStatus> toscaElementEither = topologyTemplateOperation.getToscaElement(vertex.getUniqueId(), paramView);
84 if (toscaElementEither.isRight()) {
85 result.setStatus(false);
88 TopologyTemplate element = (TopologyTemplate) toscaElementEither.left().value();
89 Map<String, ArtifactDataDefinition> deploymentArtifacts = element.getDeploymentArtifacts();
90 Map<String, ArtifactDataDefinition> artifacts = element.getArtifacts();
91 Map<String, ArtifactDataDefinition> apiArtifacts = element.getServiceApiArtifacts();
92 Map<String, MapArtifactDataDefinition> instanceArtifacts = element.getInstanceArtifacts();
93 Map<String, MapArtifactDataDefinition> instanceDeploymentArtifacts = element.getInstDeploymentArtifacts();
95 List<ArtifactDataDefinition> allArtifacts = new ArrayList<>();
97 allArtifacts.addAll(addRelevantArtifacts(deploymentArtifacts));
98 allArtifacts.addAll(addRelevantArtifacts(artifacts));
99 allArtifacts.addAll(addRelevantArtifacts(apiArtifacts));
101 if (instanceArtifacts != null) {
102 instanceArtifacts.forEach((key, artifactMap) -> {
103 allArtifacts.addAll(addRelevantArtifacts(artifactMap.getMapToscaDataDefinition()));
107 if (instanceDeploymentArtifacts != null) {
108 instanceDeploymentArtifacts.forEach((key, artifactMap) -> {
109 allArtifacts.addAll(addRelevantArtifacts(artifactMap.getMapToscaDataDefinition()));
113 return validateArtifactsAreInCassandra(vertex, taskName, allArtifacts);