diff options
author | andre.schmid <andre.schmid@est.tech> | 2019-10-10 17:39:03 +0100 |
---|---|---|
committer | Ofir Sonsino <ofir.sonsino@intl.att.com> | 2019-11-20 17:23:14 +0000 |
commit | a80a2e20ab5414c35a948fd58613df33d3bee3d3 (patch) | |
tree | d1cb11b1543c45f3f77762a0ce8b5f27de2f3590 /catalog-be/src | |
parent | 13af621442b4c74d9e63ede8e42dbae48aaa64c9 (diff) |
Validate non-mano software information artifact
Change-Id: Ie9fabd6af821b830e211ff1068fb287357fd38ee
Issue-ID: SDC-2619
Signed-off-by: andre.schmid <andre.schmid@est.tech>
Diffstat (limited to 'catalog-be/src')
8 files changed, 14 insertions, 299 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/PnfSoftwareInformation.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/PnfSoftwareInformation.java deleted file mode 100644 index 8595fc9698..0000000000 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/PnfSoftwareInformation.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdc.be.components.csar; - -import java.util.LinkedHashSet; -import java.util.Set; -import lombok.AccessLevel; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.Setter; - -/** - * Represents the Pnf software information non-mano yaml - */ -@Getter -@Setter -public class PnfSoftwareInformation { - - private String description; - private String provider; - private String version; - @Setter(AccessLevel.NONE) - private Set<PnfSoftwareVersion> softwareVersionSet = new LinkedHashSet<>(); - - /** - * Adds a {@link PnfSoftwareVersion} instance to the software version set - * @param softwareVersion the pnf software version to add - */ - public void addToSoftwareVersionSet(final PnfSoftwareVersion softwareVersion) { - softwareVersionSet.add(softwareVersion); - } - - public Set<PnfSoftwareVersion> getSoftwareVersionSet() { - return new LinkedHashSet<>(softwareVersionSet); - } - - /** - * Stores the software information yaml field names. - */ - @AllArgsConstructor - @Getter - public enum PnfSoftwareInformationField { - DESCRIPTION("description"), - PROVIDER("provider"), - VERSION("version"), - PNF_SOFTWARE_INFORMATION("pnf_software_information"); - - private final String fieldName; - - } -} diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/PnfSoftwareVersion.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/PnfSoftwareVersion.java deleted file mode 100644 index 0dc4679e53..0000000000 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/PnfSoftwareVersion.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdc.be.components.csar; - -import lombok.AllArgsConstructor; -import lombok.EqualsAndHashCode; -import lombok.Getter; - -@AllArgsConstructor -@EqualsAndHashCode -@Getter -public class PnfSoftwareVersion { - - private final String version; - private final String description; - - /** - * Stores the pnf software version yaml fields. - */ - @Getter - @AllArgsConstructor - public enum PnfSoftwareVersionField { - DESCRIPTION("description"), - PNF_SOFTWARE_VERSION("pnf_software_version"); - - private final String fieldName; - } -}
\ No newline at end of file diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/SoftwareInformationArtifactYamlParser.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/SoftwareInformationArtifactYamlParser.java deleted file mode 100644 index ec34e21945..0000000000 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/SoftwareInformationArtifactYamlParser.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdc.be.components.csar; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import org.apache.commons.collections.CollectionUtils; -import org.onap.sdc.tosca.services.YamlUtil; -import org.openecomp.sdc.be.components.csar.PnfSoftwareInformation.PnfSoftwareInformationField; -import org.openecomp.sdc.be.components.csar.PnfSoftwareVersion.PnfSoftwareVersionField; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.yaml.snakeyaml.error.YAMLException; - -/** - * Handles the parsing of the non-mano software information file. - */ -public class SoftwareInformationArtifactYamlParser { - private static final Logger LOGGER = LoggerFactory.getLogger(SoftwareInformationArtifactYamlParser.class); - - private SoftwareInformationArtifactYamlParser() { - - } - - /** - * Parses the non-mano software information yaml file. - * - * @param softwareInformationYamlFileBytes the file byte array - * @return an {@code Optional<PnfSoftwareInformation>} if the file was successful parsed, otherwise {@code - * Optional.empty()} - */ - @SuppressWarnings("unchecked") - public static Optional<PnfSoftwareInformation> parse(final byte[] softwareInformationYamlFileBytes) { - final Map<String, Object> softwareVersionYamlObject; - try (final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(softwareInformationYamlFileBytes)) { - final Object yaml = YamlUtil.read(byteArrayInputStream); - if (!(yaml instanceof Map)) { - return Optional.empty(); - } - - softwareVersionYamlObject = (Map<String, Object>) yaml; // unchecked warning suppressed - } catch (final IOException | YAMLException e) { - LOGGER.warn("Could not parse the software information yaml file", e); - return Optional.empty(); - } - - final PnfSoftwareInformation pnfSoftwareInformation = new PnfSoftwareInformation(); - pnfSoftwareInformation.setDescription( - (String) softwareVersionYamlObject.get(PnfSoftwareInformationField.DESCRIPTION.getFieldName())); - pnfSoftwareInformation.setProvider( - (String) softwareVersionYamlObject.get(PnfSoftwareInformationField.PROVIDER.getFieldName())); - pnfSoftwareInformation.setVersion( - (String) softwareVersionYamlObject.get(PnfSoftwareInformationField.VERSION.getFieldName())); - final List<Map<String, String>> pnfSoftwareInformationYaml = (List<Map<String, String>>) softwareVersionYamlObject - .get(PnfSoftwareInformationField.PNF_SOFTWARE_INFORMATION.getFieldName()); // unchecked warning suppressed - - if (CollectionUtils.isNotEmpty(pnfSoftwareInformationYaml)) { - pnfSoftwareInformationYaml.forEach(stringStringMap -> { - final String description = stringStringMap.get(PnfSoftwareVersionField.DESCRIPTION.getFieldName()); - final String version = stringStringMap.get(PnfSoftwareVersionField.PNF_SOFTWARE_VERSION.getFieldName()); - pnfSoftwareInformation.addToSoftwareVersionSet(new PnfSoftwareVersion(version, description)); - }); - } - - return Optional.of(pnfSoftwareInformation); - } - - -} diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/SoftwareInformationBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/SoftwareInformationBusinessLogic.java index 9355921252..3129befb8c 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/SoftwareInformationBusinessLogic.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/SoftwareInformationBusinessLogic.java @@ -26,9 +26,9 @@ import java.util.List; import java.util.Optional; import org.apache.commons.collections.CollectionUtils; import org.openecomp.sdc.be.components.csar.CsarInfo; -import org.openecomp.sdc.be.components.csar.PnfSoftwareInformation; -import org.openecomp.sdc.be.components.csar.PnfSoftwareVersion; -import org.openecomp.sdc.be.components.csar.SoftwareInformationArtifactYamlParser; +import org.openecomp.sdc.be.csar.pnf.PnfSoftwareInformation; +import org.openecomp.sdc.be.csar.pnf.PnfSoftwareVersion; +import org.openecomp.sdc.be.csar.pnf.SoftwareInformationArtifactYamlParser; import org.openecomp.sdc.be.components.impl.exceptions.BusinessLogicException; import org.openecomp.sdc.be.model.PropertyDefinition; import org.openecomp.sdc.be.model.Resource; diff --git a/catalog-be/src/test/java/org/openecomp/sdc/TestUtils.java b/catalog-be/src/test/java/org/openecomp/sdc/TestUtils.java index 809dc7ddb0..cb0e5e8a9b 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/TestUtils.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/TestUtils.java @@ -20,36 +20,20 @@ package org.openecomp.sdc; -import org.apache.commons.io.IOUtils; +import static org.junit.Assert.assertArrayEquals; -import javax.ws.rs.core.Response; -import java.io.IOException; import java.io.InputStream; - -import static org.junit.Assert.assertArrayEquals; +import javax.ws.rs.core.Response; +import org.apache.commons.io.IOUtils; public class TestUtils { - public static boolean downloadedPayloadMatchesExpected(Response response, byte[] expected) { - boolean result = false; - try (InputStream is = response.readEntity(InputStream.class)) { - byte[] body = IOUtils.toByteArray(is); + public static boolean downloadedPayloadMatchesExpected(final Response response, final byte[] expected) { + try (final InputStream is = response.readEntity(InputStream.class)) { + final byte[] body = IOUtils.toByteArray(is); assertArrayEquals(expected, body); - result = true; - } catch(Exception ex) { - result = false; - } - return result; - } - - public static InputStream getResourceAsStream(final String resourcePath) { - return TestUtils.class.getClassLoader().getResourceAsStream(resourcePath); - } - - public static byte[] getResourceAsByteArray(final String resourcePath) throws IOException { - final InputStream resourceAsStream = getResourceAsStream(resourcePath); - if (resourceAsStream == null) { - throw new IOException("Could not find file: " + resourcePath); + return true; + } catch (final Exception ignored) { + return false; } - return IOUtils.toByteArray(resourceAsStream); } } diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/csar/SoftwareInformationArtifactYamlParserTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/csar/SoftwareInformationArtifactYamlParserTest.java deleted file mode 100644 index 6f826047a4..0000000000 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/csar/SoftwareInformationArtifactYamlParserTest.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdc.be.components.csar; - -import static org.hamcrest.CoreMatchers.equalTo; -import static org.hamcrest.CoreMatchers.hasItems; -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; - -import java.io.IOException; -import java.util.Optional; -import org.junit.Test; -import org.openecomp.sdc.TestUtils; - -public class SoftwareInformationArtifactYamlParserTest { - - @Test - public void parse() throws IOException { - //given - final byte[] resourceAsByteArray = TestUtils - .getResourceAsByteArray("artifacts/pnfSoftwareInformation/pnf-sw-information.yaml"); - //when - final Optional<PnfSoftwareInformation> pnfSoftwareInformation = SoftwareInformationArtifactYamlParser - .parse(resourceAsByteArray); - //then - final PnfSoftwareVersion expectedPnfSoftwareVersion1 = new PnfSoftwareVersion("version1", "first software version of PNF"); - final PnfSoftwareVersion expectedPnfSoftwareVersion2 = new PnfSoftwareVersion("version2", "second software version of PNF"); - assertThat("The software information should be parsed", pnfSoftwareInformation.isPresent(), is(true)); - pnfSoftwareInformation.ifPresent(softwareInformation -> { - assertThat("The software information provider should be as expected", - softwareInformation.getProvider(), is(equalTo("Ericsson"))); - assertThat("The software information description should be as expected", - softwareInformation.getDescription(), is(equalTo("pnf software information"))); - assertThat("The software information version should be as expected", - softwareInformation.getVersion(), is(equalTo("1.0"))); - assertThat("The software versions should contain expected versions", - softwareInformation.getSoftwareVersionSet(), - hasItems(expectedPnfSoftwareVersion1, expectedPnfSoftwareVersion2)); - }); - } - -}
\ No newline at end of file diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/SoftwareInformationBusinessLogicTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/SoftwareInformationBusinessLogicTest.java index 2eda76fa16..99bccfc566 100644 --- a/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/SoftwareInformationBusinessLogicTest.java +++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/impl/SoftwareInformationBusinessLogicTest.java @@ -34,11 +34,11 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.junit.MockitoJUnitRunner; -import org.openecomp.sdc.TestUtils; import org.openecomp.sdc.be.components.csar.CsarInfo; import org.openecomp.sdc.be.components.impl.exceptions.BusinessLogicException; import org.openecomp.sdc.be.model.PropertyDefinition; import org.openecomp.sdc.be.model.Resource; +import org.openecomp.sdc.be.test.util.TestResourcesHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -148,7 +148,7 @@ public class SoftwareInformationBusinessLogicTest { private void mockCsarFileMap(final String softwareInformationArtifactPath) { final byte[] softwareInformationFile; try { - softwareInformationFile = TestUtils.getResourceAsByteArray(softwareInformationArtifactPath); + softwareInformationFile = TestResourcesHandler.getResourceAsByteArray(softwareInformationArtifactPath); } catch (final IOException e) { final String errorMsg = "Could not find software information artifact " + softwareInformationArtifactPath; LOGGER.error(errorMsg, e); diff --git a/catalog-be/src/test/resources/artifacts/pnfSoftwareInformation/pnf-sw-information.yaml b/catalog-be/src/test/resources/artifacts/pnfSoftwareInformation/pnf-sw-information.yaml deleted file mode 100644 index 31f4bc6173..0000000000 --- a/catalog-be/src/test/resources/artifacts/pnfSoftwareInformation/pnf-sw-information.yaml +++ /dev/null @@ -1,8 +0,0 @@ -description: "pnf software information" -provider: "Ericsson" -version: "1.0" -pnf_software_information: - - description: "first software version of PNF" - pnf_software_version: "version1" - - description: "second software version of PNF" - pnf_software_version: "version2" |