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 boolean validateArtifactsAreInCassandra(GraphVertex vertex, String taskName, List<ArtifactDataDefinition> artifacts) {
31 boolean allArtifactsExist = 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";
36 ReportManager.writeReportLineToFile(status);
37 if (!isArtifactExist) {
38 allArtifactsExist = false;
41 return allArtifactsExist;
44 public boolean isArtifcatInCassandra(String uniueId) {
45 Either<Long, CassandraOperationStatus> countOfArtifactsEither =
46 artifactCassandraDao.getCountOfArtifactById(uniueId);
47 if (countOfArtifactsEither.isRight()) {
49 System.out.print("Failed to retrieve artifact with id: "+uniueId+" from Cassandra" );
52 Long count = countOfArtifactsEither.left().value();
54 //System.out.print("Artifact "+uniueId+" count is: "+count);
60 public List<ArtifactDataDefinition> addRelevantArtifacts(Map<String, ArtifactDataDefinition> artifactsMap) {
61 List<ArtifactDataDefinition> artifacts = new ArrayList<>();
62 Optional.ofNullable(artifactsMap).orElse(Collections.emptyMap()).forEach( (key, dataDef) -> {
63 if (dataDef.getEsId() != null && !dataDef.getEsId().isEmpty()) {
64 artifacts.add(dataDef);
70 public boolean validateTopologyTemplateArtifacts(GraphVertex vertex, String taskName) {
71 ComponentParametersView paramView = new ComponentParametersView();
72 paramView.disableAll();
73 paramView.setIgnoreArtifacts(false);
74 paramView.setIgnoreComponentInstances(false);
75 Either<ToscaElement, StorageOperationStatus> toscaElementEither = topologyTemplateOperation.getToscaElement(vertex.getUniqueId(), paramView);
76 if (toscaElementEither.isRight()) {
79 TopologyTemplate element = (TopologyTemplate) toscaElementEither.left().value();
80 Map<String, ArtifactDataDefinition> deploymentArtifacts = element.getDeploymentArtifacts();
81 Map<String, ArtifactDataDefinition> artifacts = element.getArtifacts();
82 Map<String, ArtifactDataDefinition> apiArtifacts = element.getServiceApiArtifacts();
83 Map<String, MapArtifactDataDefinition> instanceArtifacts = element.getInstanceArtifacts();
84 Map<String, MapArtifactDataDefinition> instanceDeploymentArtifacts = element.getInstDeploymentArtifacts();
86 List<ArtifactDataDefinition> allArtifacts = new ArrayList<>();
88 allArtifacts.addAll(addRelevantArtifacts(deploymentArtifacts));
89 allArtifacts.addAll(addRelevantArtifacts(artifacts));
90 allArtifacts.addAll(addRelevantArtifacts(apiArtifacts));
92 if (instanceArtifacts != null) {
93 instanceArtifacts.forEach((key, artifactMap) -> {
94 allArtifacts.addAll(addRelevantArtifacts(artifactMap.getMapToscaDataDefinition()));
98 if (instanceDeploymentArtifacts != null) {
99 instanceDeploymentArtifacts.forEach((key, artifactMap) -> {
100 allArtifacts.addAll(addRelevantArtifacts(artifactMap.getMapToscaDataDefinition()));
104 return validateArtifactsAreInCassandra(vertex, taskName, allArtifacts);