From e58e011a89ae5c8ada209a82d9b0f3ad1b0ca58f Mon Sep 17 00:00:00 2001 From: Bogumil Zebek Date: Tue, 26 Mar 2019 14:19:31 +0100 Subject: PNF TC R146092 Change-Id: I27c881a8673957dde346fae393fffa6e946c2cd4 Issue-ID: VNFSDK-388 Signed-off-by: Zebek Bogumil --- .../cvc/csar/cc/sol004/VTPValidateCSARR146092.java | 144 +++++++++++++++++++++ .../cvc/csar/cc/sol004/VTPValidateCSARR293901.java | 18 +-- .../cvc/csar/cc/sol004/VTPValidateCSARR57019.java | 61 +++++++++ 3 files changed, 214 insertions(+), 9 deletions(-) create mode 100644 csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR146092.java create mode 100644 csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR57019.java (limited to 'csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004') diff --git a/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR146092.java b/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR146092.java new file mode 100644 index 0000000..1cdfe7a --- /dev/null +++ b/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR146092.java @@ -0,0 +1,144 @@ +/* + * Copyright 2019 Nokia + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.onap.cvc.csar.cc.sol004; + + +import org.onap.cli.fw.schema.OnapCommandSchema; +import org.onap.cvc.csar.CSARArchive; +import org.onap.cvc.csar.PnfCSARError; +import org.onap.cvc.csar.PnfCSARError.PnfCSARErrorEntryMissing; +import org.onap.cvc.csar.cc.VTPValidatePnfCSARBase; + +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +@OnapCommandSchema(schema = "vtp-validate-csar-r146092.yaml") +public class VTPValidateCSARR146092 extends VTPValidatePnfCSARBase { + + private static final int UNKNOWN_LINE_NUMBER = -1; + private static final String SOURCE_ELEMENT_TAG = "source"; + + private static class MissingSourceElementUnderAttributeError extends PnfCSARError { + private MissingSourceElementUnderAttributeError(String attributeName, String fileName) { + super("0x2002", + String.format("Missing. Entry [%s under %s]", SOURCE_ELEMENT_TAG, attributeName), + UNKNOWN_LINE_NUMBER, + fileName); + } + } + + private static class InvalidPathToFileError extends PnfCSARError { + private InvalidPathToFileError(String attributeName, String pathToSourceFile, String fileName) { + super("0x2002", + String.format("Invalid. Entry [%s under %s has invalid '%s' path]", SOURCE_ELEMENT_TAG, attributeName, pathToSourceFile), + UNKNOWN_LINE_NUMBER, + fileName); + } + } + + @Override + protected void validateCSAR(CSARArchive csar) { + ValidateNonManoSection validateNonManoSection = ValidateNonManoSection.getInstance(csar); + List csarErrors = validateNonManoSection.validate(); + + this.errors.addAll(csarErrors); + } + + + private static class ValidateNonManoSection { + private final CSARArchive csar; + private final String fileName; + private final Map>> nonMano; + private final List errors = new ArrayList<>(); + + static ValidateNonManoSection getInstance(CSARArchive csar) { + final String fileName = csar.getManifestMfFile().getName(); + final Map>> nonMano = csar.getManifest().getNonMano(); + return new ValidateNonManoSection(csar, fileName,nonMano); + } + + private ValidateNonManoSection(CSARArchive csar, String fileName, Map>> nonMano) { + this.csar = csar; + this.fileName = fileName; + this.nonMano = nonMano; + } + + public List validate() { + + List attributeNames = Arrays.asList( + "onap_ves_events", + "onap_pm_dictionary", + "onap_yang_module", + "onap_others" + ); + + for (String attributeName : attributeNames) { + validateAttribute(attributeName); + } + + return this.errors; + } + + private void validateAttribute(String attributeName) { + Set nonManoAttributes = this.nonMano.keySet(); + if (!nonManoAttributes.contains(attributeName)) { + this.errors.add(new PnfCSARErrorEntryMissing( + attributeName, + this.fileName, + UNKNOWN_LINE_NUMBER) + ); + } else { + validateSourceElementsUnderAttribute(attributeName); + } + } + + private void validateSourceElementsUnderAttribute(String attributeName) { + + Map> attributeElements = this.nonMano.get(attributeName); + List attributeElementNames = attributeElements.keySet().stream() + .map(String::toLowerCase) + .collect(Collectors.toList()); + + if (!attributeElementNames.contains(SOURCE_ELEMENT_TAG)) { + this.errors.add(new MissingSourceElementUnderAttributeError(attributeName, this.fileName)); + } else { + for (String pathToFile : attributeElements.get(SOURCE_ELEMENT_TAG)) { + File fileFromCsar = this.csar.getFileFromCsar(pathToFile); + if (!fileFromCsar.exists()) { + this.errors.add( + new InvalidPathToFileError(attributeName, + pathToFile, this.fileName) + ); + } + } + } + } + } + + @Override + protected String getVnfReqsNo() { + return "R146092"; + } + + +} diff --git a/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR293901.java b/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR293901.java index 09edc34..b114880 100644 --- a/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR293901.java +++ b/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR293901.java @@ -33,16 +33,16 @@ public class VTPValidateCSARR293901 extends VTPValidatePnfCSARBase { @Override protected void validateCSAR(CSARArchive csar) { final CSARArchive.TOSCAMeta toscaMeta = csar.getToscaMeta(); - if (Objects.isNull(toscaMeta.getEntryManifestMf())) { - this.errors.add(new PnfCSARErrorEntryMissing( - "ETSI-Entry-Manifest", - CSARArchive.TOSCA_Metadata__TOSCA_Meta, - UNKNOWN_LINE_NUMBER) - ); - } - if (Objects.isNull(toscaMeta.getEntryChangeLog())) { + String entryManifestMf = toscaMeta.getEntryManifestMf(); + + validateToscaMetaValue(entryManifestMf, "ETSI-Entry-Manifest"); + validateToscaMetaValue(toscaMeta.getEntryChangeLog(), "ETSI-Entry-Change-Log"); + } + + private void validateToscaMetaValue(String entryManifestMf, String toscaMetaAttributeName) { + if (Objects.isNull(entryManifestMf)) { this.errors.add(new PnfCSARErrorEntryMissing( - "ETSI-Entry-Change-Log", + toscaMetaAttributeName, CSARArchive.TOSCA_Metadata__TOSCA_Meta, UNKNOWN_LINE_NUMBER) ); diff --git a/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR57019.java b/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR57019.java new file mode 100644 index 0000000..8f6118b --- /dev/null +++ b/csarvalidation/src/main/java/org/onap/cvc/csar/cc/sol004/VTPValidateCSARR57019.java @@ -0,0 +1,61 @@ +/* + * Copyright 2019 Nokia + *

+ * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + *

+ * http://www.apache.org/licenses/LICENSE-2.0 + *

+ * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.onap.cvc.csar.cc.sol004; + + +import org.onap.cli.fw.schema.OnapCommandSchema; +import org.onap.cvc.csar.CSARArchive; +import org.onap.cvc.csar.PnfCSARError.PnfCSARErrorEntryMissing; +import org.onap.cvc.csar.cc.VTPValidatePnfCSARBase; + +import java.util.Objects; + +@OnapCommandSchema(schema = "vtp-validate-csar-r57019.yaml") +public class VTPValidateCSARR57019 extends VTPValidatePnfCSARBase { + + private static final int UNKNOWN_LINE_NUMBER = -1; + + @Override + protected void validateCSAR(CSARArchive csar) { + final CSARArchive.Manifest.Metadata metadata = csar.getManifest().getMetadata(); + final String fileName = csar.getManifestMfFile().getName(); + + validateMetadataValue(fileName, metadata.getProviderId(), "pnfd_provider"); + validateMetadataValue(fileName, metadata.getProductName(), "pnfd_name"); + validateMetadataValue(fileName, metadata.getReleaseDateTime(), "pnfd_release_date_time"); + validateMetadataValue(fileName, metadata.getPackageVersion(), "pnfd_archive_version"); + + } + + private void validateMetadataValue(String fileName, String providerId, String metadataArgumentName) { + if (Objects.isNull(providerId)) { + this.errors.add(new PnfCSARErrorEntryMissing( + metadataArgumentName, + fileName, + UNKNOWN_LINE_NUMBER) + ); + } + } + + @Override + protected String getVnfReqsNo() { + return "R57019"; + } + + +} -- cgit 1.2.3-korg