summaryrefslogtreecommitdiffstats
path: root/csarvalidation/src/main/java/org/onap/cvc/csar/VTPValidateCSAR.java
diff options
context:
space:
mode:
Diffstat (limited to 'csarvalidation/src/main/java/org/onap/cvc/csar/VTPValidateCSAR.java')
-rw-r--r--csarvalidation/src/main/java/org/onap/cvc/csar/VTPValidateCSAR.java123
1 files changed, 41 insertions, 82 deletions
diff --git a/csarvalidation/src/main/java/org/onap/cvc/csar/VTPValidateCSAR.java b/csarvalidation/src/main/java/org/onap/cvc/csar/VTPValidateCSAR.java
index 637a454..2e99be3 100644
--- a/csarvalidation/src/main/java/org/onap/cvc/csar/VTPValidateCSAR.java
+++ b/csarvalidation/src/main/java/org/onap/cvc/csar/VTPValidateCSAR.java
@@ -18,19 +18,21 @@ package org.onap.cvc.csar;
import com.google.gson.Gson;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Properties;
+import java.util.stream.Collectors;
+
+import org.apache.commons.lang3.tuple.Pair;
import org.onap.cli.fw.cmd.OnapCommand;
import org.onap.cli.fw.error.OnapCommandException;
import org.onap.cli.fw.error.OnapCommandExecutionFailed;
-import org.onap.cli.fw.error.OnapCommandInvalidParameterValue;
-import org.onap.cli.fw.input.OnapCommandParameter;
import org.onap.cli.fw.output.OnapCommandResultType;
-import org.onap.cli.fw.registrar.OnapCommandRegistrar;
import org.onap.cli.fw.schema.OnapCommandSchema;
import org.onap.cvc.csar.CSARArchive.CSARError;
+import org.onap.cvc.csar.oclip.CommandFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -40,9 +42,9 @@ import org.slf4j.LoggerFactory;
@OnapCommandSchema(schema = "vtp-validate-csar.yaml")
public class VTPValidateCSAR extends OnapCommand {
- private static Gson gson = new Gson();
+ private static final Gson GSON = new Gson();
private static final Logger LOG = LoggerFactory.getLogger(VTPValidateCSAR.class);
- private static final String RULES_ATTRIBUTE_SEPARATOR = ",";
+ private static final String RELEASE_ATTRIBUTE_NAME = "release";
private static final String PNF_ATTRIBUTE_NAME = "pnf";
private static final String CSAR_ATTRIBUTE_NAME = "csar";
private static final String RULES_ATTRIBUTE_NAME = "rules";
@@ -107,8 +109,8 @@ public class VTPValidateCSAR extends OnapCommand {
private boolean passed;
private String vnfreqName;
private String description;
- private List<CSARError> errors = new ArrayList<>();
- private List<CSARError> warnings = new ArrayList<>();
+ private final List<CSARError> errors = new ArrayList<>();
+ private final List<CSARError> warnings = new ArrayList<>();
public boolean isPassed() {
return passed;
@@ -149,6 +151,14 @@ public class VTPValidateCSAR extends OnapCommand {
public void addErrorAsWarning(CSARError error) {
this.warnings.add(error);
}
+
+ public void addErrors(List<CSARError> errors) {
+ this.errors.addAll(errors);
+ }
+
+ public void addErrorsAsWarnings(List<CSARError> warnings) {
+ this.warnings.addAll(warnings);
+ }
}
private List<Result> results = new ArrayList<>();
@@ -206,11 +216,11 @@ public class VTPValidateCSAR extends OnapCommand {
}
}
- private static Properties properties = new Properties();
+ private static final Properties PROPERTIES = new Properties();
static {
try {
- properties.load(VTPValidateCSAR.class.getResourceAsStream("/vnfreqs.properties"));
+ PROPERTIES.load(VTPValidateCSAR.class.getResourceAsStream("/vnfreqs.properties"));
} catch (Exception e) {
LOG.error(e.getMessage(), e);
}
@@ -219,13 +229,14 @@ public class VTPValidateCSAR extends OnapCommand {
@Override
protected void run() throws OnapCommandException {
//Read the input arguments
- String path = (String) getParametersMap().get(CSAR_ATTRIBUTE_NAME).getValue();
+ String release = (String) getParametersMap().get(RELEASE_ATTRIBUTE_NAME).getValue();
+ String pathToCsarFile = (String) getParametersMap().get(CSAR_ATTRIBUTE_NAME).getValue();
boolean isPnf = (boolean) getParametersMap().get(PNF_ATTRIBUTE_NAME).getValue();
String rulesToValidate = (String) getParametersMap().get(RULES_ATTRIBUTE_NAME).getValue();
boolean overallPass = true;
try (CSARArchive csar = isPnf ? new PnfCSARArchive() : new CSARArchive()) {
- csar.init(path);
+ csar.init(pathToCsarFile);
csar.parse();
CSARValidation validation = createCsarValidationFor(csar);
@@ -248,26 +259,11 @@ public class VTPValidateCSAR extends OnapCommand {
validation.getResults().add(resultSOL004);
- String keyReqs = isPnf ? "pnfreqs.enabled" : "vnfreqs.enabled";
- List<String> activeRules = this.getPropertiesList(keyReqs);
- if(rulesToValidate.isEmpty()) {
- // Run thru the vnfreqs requirement checks
- for (String vnfreq : activeRules) {
- CSARValidation.Result result = new CSARValidation.Result();
- result.setVnfreqName(vnfreq);
- overallPass = validateVnfOrPnf(path, validation, ignoreCodes, vnfreq, result, isPnf, overallPass);
- }
- } else {
- // Validate selected rules
- String[] listOfRulesToValidate = rulesToValidate.split(RULES_ATTRIBUTE_SEPARATOR);
- for (String rule : listOfRulesToValidate) {
- if(activeRules.contains(rule)) {
- CSARValidation.Result result = new CSARValidation.Result();
- result.setVnfreqName(rule);
- overallPass = validateVnfOrPnf(path, validation, ignoreCodes, rule, result, isPnf, overallPass);
- }
- }
- }
+ final Pair<Boolean, List<CSARValidation.Result>> validationResult =
+ validate(pathToCsarFile, release, isPnf, ignoreCodes, new RulesToValidate(rulesToValidate));
+
+ overallPass &= validationResult.getLeft();
+ validation.getResults().addAll(validationResult.getRight());
validation.setDate(new Date().toString());
validation.setCriteria(overallPass ? "PASS" : "FAILED");
@@ -279,39 +275,15 @@ public class VTPValidateCSAR extends OnapCommand {
}
}
- private boolean validateVnfOrPnf(String path, CSARValidation validation,
- List<String> ignoreCodes, String vnfreq, CSARValidation.Result result, boolean isPnf, boolean overallPass) {
- try {
- String command = "csar-validate-" + vnfreq;
- OnapCommand cmd = OnapCommandRegistrar.getRegistrar().get(command, this.getInfo().getProduct());
- cmd.getParametersMap().get("csar").setValue(path);
- setPnfValueIfAvailable(isPnf, cmd);
-
- result.setDescription(cmd.getDescription());
- cmd.execute();
-
- for (CSARError error : (List<CSARError>) cmd.getResult().getOutput()) {
- if (!isErrorIgnored(ignoreCodes, vnfreq, error)) {
- result.addError(error);
- overallPass = false;
- } else {
- result.addErrorAsWarning(error);
- }
- }
-
- result.setPassed(result.getErrors().isEmpty());
- validation.getResults().add(result);
- } catch (Exception e) {
- result.setPassed(false);
- overallPass = false;
- result.addError(new CSARArchive.CSARErrorUnknown(e.getMessage()));
- validation.getResults().add(result);
- }
- return overallPass;
- }
+ private Pair<Boolean,List<CSARValidation.Result>> validate(String path, String release, boolean isPnf, List<String> ignoreCodes, RulesToValidate rulesToValidate) {
+ final String keyReqs = isPnf ? "pnfreqs.enabled" : "vnfreqs.enabled";
+ final List<String> activeRules = this.getPropertiesList(keyReqs);
+ final String releasesOrder = PROPERTIES.getProperty("releases.order");
+ final ReleasesResolver releasesResolver = ReleasesResolver.create(releasesOrder);
+ final String product = this.getInfo().getProduct();
- private boolean isErrorIgnored(List<String> ignoreCodes, String vnfreq, CSARError error) {
- return ignoreCodes.contains(error.getCode()) || ignoreCodes.contains(vnfreq + "-" + error.getCode());
+ return new CsarValidator(new CommandFactory(), ignoreCodes, activeRules, releasesResolver, rulesToValidate)
+ .validate(new CsarValidator.ValidationContext(path, product, release, isPnf));
}
static CSARValidation createCsarValidationFor(CSARArchive csar) {
@@ -325,33 +297,20 @@ public class VTPValidateCSAR extends OnapCommand {
return validation;
}
- private void setOperationResult(CSARValidation validation) throws Exception { //NOSONAR
+ private void setOperationResult(CSARValidation validation) {
this.getResult().getRecordsMap().get("vnf").getValues().add(
- gson.toJson(validation.getVnf()));
+ GSON.toJson(validation.getVnf()));
this.getResult().getRecordsMap().get("date").getValues().add(validation.getDate());
this.getResult().getRecordsMap().get("criteria").getValues().add(validation.getCriteria());
this.getResult().getRecordsMap().get("results").getValues().add(
- gson.toJson(validation.getResults()));
+ GSON.toJson(validation.getResults()));
- this.getResult().setOutput(gson.toJson(validation));
+ this.getResult().setOutput(GSON.toJson(validation));
this.getResult().setType(OnapCommandResultType.TEXT);
}
- private void setPnfValueIfAvailable(boolean isPnf, OnapCommand cmd) throws OnapCommandInvalidParameterValue {
- final OnapCommandParameter pnf = cmd.getParametersMap().get(PNF_ATTRIBUTE_NAME);
- if (pnf != null) {
- pnf.setValue(isPnf);
- }
- }
-
private List<String> getPropertiesList(String key) {
- String[] enabledReqs = properties.getProperty(key, "").split(",");
- List<String> list = new ArrayList<>();
- for (String req : enabledReqs) {
- if (!req.isEmpty()) {
- list.add(req);
- }
- }
- return list;
+ String[] enabledReqs = PROPERTIES.getProperty(key, "").split(",");
+ return Arrays.stream(enabledReqs).filter(it->!it.isEmpty()).collect(Collectors.toList());
}
}