1 package org.openecomp.sdc.asdctool.impl.validator.tasks.artifacts;
4 import org.openecomp.sdc.asdctool.impl.validator.utils.ReportManager;
5 import org.openecomp.sdc.be.dao.cassandra.ArtifactCassandraDao;
6 import org.openecomp.sdc.be.dao.cassandra.CassandraOperationStatus;
7 import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
8 import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
9 import org.openecomp.sdc.be.datatypes.elements.MapArtifactDataDefinition;
10 import org.openecomp.sdc.be.model.ComponentParametersView;
11 import org.openecomp.sdc.be.model.jsontitan.datamodel.TopologyTemplate;
12 import org.openecomp.sdc.be.model.jsontitan.datamodel.ToscaElement;
13 import org.openecomp.sdc.be.model.jsontitan.operations.TopologyTemplateOperation;
14 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
15 import org.springframework.beans.factory.annotation.Autowired;
20 * Created by chaya on 7/6/2017.
22 public class ArtifactValidationUtils {
25 private ArtifactCassandraDao artifactCassandraDao;
28 private TopologyTemplateOperation topologyTemplateOperation;
30 public ArtifactsVertexResult validateArtifactsAreInCassandra(GraphVertex vertex, String taskName, List<ArtifactDataDefinition> artifacts) {
31 ArtifactsVertexResult result = new ArtifactsVertexResult(true);
32 for(ArtifactDataDefinition artifact:artifacts) {
33 boolean isArtifactExist = isArtifcatInCassandra(artifact.getEsId());
34 String status = isArtifactExist ? "Artifact " + artifact.getEsId() + " is in Cassandra" :
35 "Artifact " + artifact.getEsId() + " doesn't exist in Cassandra";
37 ReportManager.writeReportLineToFile(status);
38 if (!isArtifactExist) {
39 ReportManager.addFailedVertex(taskName, vertex.getUniqueId());
40 result.setStatus(false);
41 result.addNotFoundArtifact(artifact.getUniqueId());
47 public boolean isArtifcatInCassandra(String uniueId) {
48 Either<Long, CassandraOperationStatus> countOfArtifactsEither =
49 artifactCassandraDao.getCountOfArtifactById(uniueId);
50 if (countOfArtifactsEither.isRight()) {
52 System.out.print("Failed to retrieve artifact with id: "+uniueId+" from Cassandra" );
55 Long count = countOfArtifactsEither.left().value();
62 public List<ArtifactDataDefinition> addRelevantArtifacts(Map<String, ArtifactDataDefinition> artifactsMap) {
63 List<ArtifactDataDefinition> artifacts = new ArrayList<>();
64 Optional.ofNullable(artifactsMap).orElse(Collections.emptyMap()).forEach( (key, dataDef) -> {
65 if (dataDef.getEsId() != null && !dataDef.getEsId().isEmpty()) {
66 artifacts.add(dataDef);
72 public ArtifactsVertexResult validateTopologyTemplateArtifacts(GraphVertex vertex, String taskName) {
73 ArtifactsVertexResult result = new ArtifactsVertexResult();
74 ComponentParametersView paramView = new ComponentParametersView();
75 paramView.disableAll();
76 paramView.setIgnoreArtifacts(false);
77 paramView.setIgnoreComponentInstances(false);
78 Either<ToscaElement, StorageOperationStatus> toscaElementEither = topologyTemplateOperation.getToscaElement(vertex.getUniqueId(), paramView);
79 if (toscaElementEither.isRight()) {
80 result.setStatus(false);
83 TopologyTemplate element = (TopologyTemplate) toscaElementEither.left().value();
84 Map<String, ArtifactDataDefinition> deploymentArtifacts = element.getDeploymentArtifacts();
85 Map<String, ArtifactDataDefinition> artifacts = element.getArtifacts();
86 Map<String, ArtifactDataDefinition> apiArtifacts = element.getServiceApiArtifacts();
87 Map<String, MapArtifactDataDefinition> instanceArtifacts = element.getInstanceArtifacts();
88 Map<String, MapArtifactDataDefinition> instanceDeploymentArtifacts = element.getInstDeploymentArtifacts();
90 List<ArtifactDataDefinition> allArtifacts = new ArrayList<>();
92 allArtifacts.addAll(addRelevantArtifacts(deploymentArtifacts));
93 allArtifacts.addAll(addRelevantArtifacts(artifacts));
94 allArtifacts.addAll(addRelevantArtifacts(apiArtifacts));
96 if (instanceArtifacts != null) {
97 instanceArtifacts.forEach((key, artifactMap) -> {
98 allArtifacts.addAll(addRelevantArtifacts(artifactMap.getMapToscaDataDefinition()));
102 if (instanceDeploymentArtifacts != null) {
103 instanceDeploymentArtifacts.forEach((key, artifactMap) -> {
104 allArtifacts.addAll(addRelevantArtifacts(artifactMap.getMapToscaDataDefinition()));
108 return validateArtifactsAreInCassandra(vertex, taskName, allArtifacts);