package org.openecomp.sdc.asdctool.impl.validator.tasks.moduleJson;
import fj.data.Either;
+import org.apache.cassandra.cql3.CQL3Type;
import org.openecomp.sdc.asdctool.impl.validator.tasks.ServiceValidationTask;
+import org.openecomp.sdc.asdctool.impl.validator.utils.ReportManager;
import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition;
import org.openecomp.sdc.be.datatypes.elements.MapArtifactDataDefinition;
import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
import org.springframework.beans.factory.annotation.Autowired;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.stream.Collectors;
/**
@Autowired
private TopologyTemplateOperation topologyTemplateOperation;
+ public ModuleJsonTask() {
+ this.name = "Service Module json Validation Task";
+ }
+
@Override
public boolean validate(GraphVertex vertex) {
ComponentParametersView paramView = new ComponentParametersView();
}
TopologyTemplate element = (TopologyTemplate) toscaElementEither.left().value();
if (!isAfterSubmitForTesting(element)) {
- return false;
+ return true;
}
Map<String, MapGroupsDataDefinition> instGroups = element.getInstGroups();
Map<String, MapArtifactDataDefinition> instDeploymentArtifacts = element.getInstDeploymentArtifacts();
- for (Map.Entry<String, MapGroupsDataDefinition> pair : instGroups.entrySet()) {
- String groupKey = pair.getKey();
+ for (Map.Entry<String, MapGroupsDataDefinition> pair : Optional.ofNullable(instGroups).orElse(Collections.emptyMap()).entrySet()) {
MapGroupsDataDefinition groups = pair.getValue();
if (groups != null && !groups.getMapToscaDataDefinition().isEmpty()) {
- MapArtifactDataDefinition deploymentsArtifacts = instDeploymentArtifacts.get(groupKey);
- if (deploymentsArtifacts != null && !deploymentsArtifacts.getMapToscaDataDefinition().isEmpty()) {
- List<ArtifactDataDefinition> moduleJsonArtifacts = deploymentsArtifacts.getMapToscaDataDefinition().values().stream().filter(artifact -> {
- String artifactName = artifact.getArtifactName();
- if (artifactName.startsWith(groupKey) && artifactName.endsWith("module.json")) {
- return true;
- }
- return false;
- }).collect(Collectors.toList());
- if (moduleJsonArtifacts.size() > 0) {
- return true;
- }
- }
+ return findCoordinateModuleJson(pair, instDeploymentArtifacts, vertex);
}
+ return true;
}
return true;
}
+ private boolean findCoordinateModuleJson(Map.Entry<String, MapGroupsDataDefinition> pair, Map<String, MapArtifactDataDefinition> instDeploymentArtifacts, GraphVertex vertex) {
+ String groupKey = pair.getKey();
+ String[] split = groupKey.split("\\.");
+ String instanceName = split[split.length-1];
+ MapArtifactDataDefinition deploymentsArtifacts = instDeploymentArtifacts.get(groupKey);
+ if (deploymentsArtifacts != null && !deploymentsArtifacts.getMapToscaDataDefinition().isEmpty()) {
+ List<ArtifactDataDefinition> moduleJsonArtifacts = deploymentsArtifacts.getMapToscaDataDefinition().values().stream().filter(artifact -> {
+ String artifactName = artifact.getArtifactName();
+ if (artifactName.startsWith(instanceName) && artifactName.endsWith("modules.json")) {
+ return true;
+ }
+ return false;
+ }).collect(Collectors.toList());
+ if (moduleJsonArtifacts.size() > 0) {
+ String status = "Instance "+instanceName+" has a corresponding modules.json file: "+moduleJsonArtifacts.get(0).getArtifactName();
+ ReportManager.writeReportLineToFile(status);
+ return true;
+ }
+ }
+ String status = "Instance "+instanceName+" doesn't have a corresponding modules.json file";
+ ReportManager.writeReportLineToFile(status);
+ ReportManager.addFailedVertex(getTaskName(), vertex.getUniqueId());
+ return false;
+ }
+
private boolean isAfterSubmitForTesting(TopologyTemplate element){
List allowedStates = new ArrayList<>(Arrays.asList(LifecycleStateEnum.READY_FOR_CERTIFICATION,
LifecycleStateEnum.CERTIFICATION_IN_PROGRESS, LifecycleStateEnum.CERTIFIED));
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
/**
* Created by chaya on 7/5/2017.
private static List<ValidationTaskResult> taskResults;
private static String reportOutputFilePath;
+ private static Map<String, Set<String>> failedVerticesPerTask = new HashMap<>();
public ReportManager() {
try {
}
}
+ public static void addFailedVertex (String taskName, String vertexId) {
+ Set<String> failedVertices = failedVerticesPerTask.get(taskName);
+ if (failedVertices == null) {
+ failedVertices = new HashSet<>();
+ }
+ failedVertices.add(vertexId);
+ failedVerticesPerTask.put(taskName, failedVertices);
+ }
+
public static void reportValidationTaskStatus(GraphVertex vertexScanned, String taskName, String taskResultMessage, boolean success) {
taskResults.add(new ValidationTaskResult(vertexScanned, taskName, taskResultMessage, success));
printValidationTaskStatus(vertexScanned, taskName, success);
sb.appendln("-----------------------Vertex: "+vertex.getUniqueId()+", Task " + taskName + " Started-----------------------");
writeReportLineToFile(sb.toString());
}
+
+ public static void reportEndOfToolRun() {
+ StrBuilder sb = new StrBuilder();
+ sb.appendNewLine().appendNewLine();
+ sb.appendln("-----------------------------------Validator Tool Summary-----------------------------------");
+ failedVerticesPerTask.forEach((taskName, failedVertices) -> {
+ sb.append("Task: " + taskName);
+ sb.appendNewLine();
+ sb.append("FailedVertices: " + failedVertices);
+ sb.appendNewLine();
+ });
+ writeReportLineToFile(sb.toString());
+ }
}
import org.openecomp.sdc.asdctool.impl.validator.config.ValidationConfigManager;
import org.openecomp.sdc.asdctool.impl.validator.config.ValidationToolConfiguration;
import org.openecomp.sdc.asdctool.impl.migration.v1604.AppConfig;
+import org.openecomp.sdc.asdctool.impl.validator.utils.ReportManager;
import org.openecomp.sdc.be.config.ConfigurationManager;
import org.openecomp.sdc.common.api.ConfigurationSource;
import org.openecomp.sdc.common.impl.ExternalConfiguration;
ValidationToolBL validationToolBL = context.getBean(ValidationToolBL.class);
System.out.println("Start Validation Tool");
- if (validationToolBL.validateAll()) {
+ Boolean result = validationToolBL.validateAll();
+ ReportManager.reportEndOfToolRun();
+ if (result) {
System.out.println("Validation finished successfully");
System.exit(0);
} else {