From 8c0c0d7dfe706b8a224368aa066cb5ba4616678c Mon Sep 17 00:00:00 2001 From: aribeiro Date: Tue, 14 Dec 2021 15:09:50 +0000 Subject: Identify SOL004 packages Issue-ID: SDC-3819 Signed-off-by: MichaelMorris Change-Id: I7ea36ebc27753e8068791cffc3340db30adc4662 Signed-off-by: aribeiro --- .../services/impl/etsi/ETSIService.java | 12 ++++++- .../services/impl/etsi/ETSIServiceImpl.java | 37 +++++++++++++++++++--- .../services/impl/etsi/ETSIServiceImplTest.java | 8 ++--- 3 files changed, 48 insertions(+), 9 deletions(-) (limited to 'openecomp-be/lib') diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/etsi/ETSIService.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/etsi/ETSIService.java index dad05b64f2..de51b0bb2c 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/etsi/ETSIService.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-api/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/etsi/ETSIService.java @@ -38,7 +38,16 @@ public interface ETSIService { * @return true if all condition matched, false otherwise * @throws IOException when TOSCA.meta file is invalid */ - boolean isSol004WithToscaMetaDirectory(FileContentHandler handler) throws IOException; + boolean hasEtsiSol261Metadata(FileContentHandler handler) throws IOException; + + /** + * Checks if the package is a ETSI package. + * + * @param fileContentHandler the CSAR file handler + * @return {@code true} if the package is a ETSI package, {@code false} otherwise. + * @throws IOException when it was not able to parse the TOSCA.meta file + */ + boolean isEtsiPackage(final FileContentHandler fileContentHandler) throws IOException; /** * Update file structure. Moves non mano files to the correct folder based on the manifest non mano type. @@ -96,4 +105,5 @@ public interface ETSIService { * @return true if manifest files has onap_cnf_helm non mano entry */ boolean hasCnfEnhancements(final FileContentHandler fileContentHandler) throws IOException; + } diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/etsi/ETSIServiceImpl.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/etsi/ETSIServiceImpl.java index c5e7fcd03d..1399ea9765 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/etsi/ETSIServiceImpl.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/etsi/ETSIServiceImpl.java @@ -25,6 +25,7 @@ import static org.openecomp.sdc.tosca.csar.CSARConstants.MAIN_SERVICE_TEMPLATE_M import static org.openecomp.sdc.tosca.csar.CSARConstants.MANIFEST_PNF_METADATA; import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ORIG_PATH_FILE_NAME; import static org.openecomp.sdc.tosca.csar.ManifestTokenType.COMPATIBLE_SPECIFICATION_VERSIONS; +import static org.openecomp.sdc.tosca.csar.ToscaMetaEntryVersion251.ENTRY_MANIFEST; import static org.openecomp.sdc.tosca.csar.ToscaMetaEntryVersion261.ENTRY_DEFINITIONS; import static org.openecomp.sdc.tosca.csar.ToscaMetaEntryVersion261.ETSI_ENTRY_CHANGE_LOG; import static org.openecomp.sdc.tosca.csar.ToscaMetaEntryVersion261.ETSI_ENTRY_MANIFEST; @@ -52,6 +53,7 @@ import org.openecomp.sdc.be.config.NonManoConfiguration; import org.openecomp.sdc.be.config.NonManoConfigurationManager; import org.openecomp.sdc.be.config.NonManoFolderType; import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum; +import org.openecomp.sdc.common.CommonConfigurationManager; import org.openecomp.sdc.logging.api.Logger; import org.openecomp.sdc.logging.api.LoggerFactory; import org.openecomp.sdc.tosca.csar.Manifest; @@ -64,6 +66,7 @@ public class ETSIServiceImpl implements ETSIService { private static final Logger LOGGER = LoggerFactory.getLogger(ETSIServiceImpl.class); private final NonManoConfiguration nonManoConfiguration; + private final String ONAP_CSAR = "onap_csar"; public ETSIServiceImpl() { nonManoConfiguration = NonManoConfigurationManager.getInstance().getNonManoConfiguration(); @@ -74,11 +77,30 @@ public class ETSIServiceImpl implements ETSIService { } @Override - public boolean isSol004WithToscaMetaDirectory(FileContentHandler handler) throws IOException { + public boolean hasEtsiSol261Metadata(FileContentHandler handler) throws IOException { final Map templates = handler.getFiles(); return isMetaFilePresent(templates) && hasMetaMandatoryEntries(getMetadata(handler)); } + @Override + public boolean isEtsiPackage(final FileContentHandler fileContentHandler) throws IOException { + return hasEtsiSol261Metadata(fileContentHandler) || !hasOnapCsarMetadata(fileContentHandler) + && !ONAP_CSAR.equalsIgnoreCase(getDefaultCsarFormat()); + } + + private boolean hasOnapCsarMetadata(final FileContentHandler fileContentHandler) throws IOException { + if (fileContentHandler.containsFile(TOSCA_META_PATH_FILE_NAME)){ + final ToscaMetadata metadata = + OnboardingToscaMetadata.parseToscaMetadataFile(fileContentHandler.getFileContentAsStream(TOSCA_META_PATH_FILE_NAME)); + return metadata.hasEntry(ONAP_CSAR); + } + return false; + } + + private String getDefaultCsarFormat() { + return CommonConfigurationManager.getInstance().getConfigValue("csarFormat", "default", ONAP_CSAR); + } + @Override public Optional> moveNonManoFileToArtifactFolder(final FileContentHandler handler) throws IOException { final Manifest manifest = loadManifest(handler); @@ -226,7 +248,7 @@ public class ETSIServiceImpl implements ETSIService { public ResourceTypeEnum getResourceType(FileContentHandler handler) throws IOException { ToscaMetadata metadata = getMetadata(handler); - Manifest manifest = getManifest(handler, metadata.getMetaEntries().get(ETSI_ENTRY_MANIFEST.getName())); + Manifest manifest = getManifest(handler, getEntryManifestLocation(metadata)); return getResourceType(manifest); } @@ -244,7 +266,13 @@ public class ETSIServiceImpl implements ETSIService { public Manifest getManifest(FileContentHandler handler) throws IOException { ToscaMetadata metadata = getMetadata(handler); - return getManifest(handler, metadata.getMetaEntries().get(ETSI_ENTRY_MANIFEST.getName())); + return getManifest(handler, getEntryManifestLocation(metadata)); + } + + private String getEntryManifestLocation(final ToscaMetadata metadata) { + return metadata.getMetaEntries().containsKey(ETSI_ENTRY_MANIFEST.getName()) ? + metadata.getMetaEntries().get(ETSI_ENTRY_MANIFEST.getName()): + metadata.getMetaEntries().get(ENTRY_MANIFEST.getName()); } private Manifest getManifest(FileContentHandler handler, String manifestLocation) throws IOException { @@ -257,7 +285,7 @@ public class ETSIServiceImpl implements ETSIService { public Path getOriginalManifestPath(final FileContentHandler handler) throws IOException { final ToscaMetadata metadata = getOriginalMetadata(handler); - final String originalMetadataPath = metadata.getMetaEntries().get(ETSI_ENTRY_MANIFEST.getName()); + final String originalMetadataPath = getEntryManifestLocation(metadata); final Path path = Paths.get(originalMetadataPath); return path.getParent() == null ? Paths.get("") : path.getParent(); } @@ -298,4 +326,5 @@ public class ETSIServiceImpl implements ETSIService { public NonManoConfiguration getConfiguration() { return nonManoConfiguration; } + } diff --git a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/etsi/ETSIServiceImplTest.java b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/etsi/ETSIServiceImplTest.java index 4254a56dcb..314db8f323 100644 --- a/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/etsi/ETSIServiceImplTest.java +++ b/openecomp-be/lib/openecomp-sdc-vendor-software-product-lib/openecomp-sdc-vendor-software-product-core/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/services/impl/etsi/ETSIServiceImplTest.java @@ -94,27 +94,27 @@ public class ETSIServiceImplTest { FileContentHandler fileContentHandler = new FileContentHandler(); fileContentHandler .addFile("TOSCA-Metadata/TOSCA.meta.original", sol004MetaFile.getBytes(StandardCharsets.UTF_8)); - assertTrue(etsiService.isSol004WithToscaMetaDirectory(fileContentHandler)); + assertTrue(etsiService.hasEtsiSol261Metadata(fileContentHandler)); } @Test public void testIsSol004True() throws IOException { FileContentHandler fileContentHandler = new FileContentHandler(); fileContentHandler.addFile("TOSCA-Metadata/TOSCA.meta", sol004MetaFile.getBytes(StandardCharsets.UTF_8)); - assertTrue(etsiService.isSol004WithToscaMetaDirectory(fileContentHandler)); + assertTrue(etsiService.hasEtsiSol261Metadata(fileContentHandler)); } @Test public void testIsSol004False() throws IOException { FileContentHandler fileContentHandler = new FileContentHandler(); fileContentHandler.addFile("TOSCA-Metadata/TOSCA.meta.original", metaFile.getBytes(StandardCharsets.UTF_8)); - assertFalse(etsiService.isSol004WithToscaMetaDirectory(fileContentHandler)); + assertFalse(etsiService.hasEtsiSol261Metadata(fileContentHandler)); } @Test public void testIsSol004FalseWithNull() throws IOException { FileContentHandler fileContentHandler = new FileContentHandler(); - assertFalse(etsiService.isSol004WithToscaMetaDirectory(fileContentHandler)); + assertFalse(etsiService.hasEtsiSol261Metadata(fileContentHandler)); } @Test -- cgit 1.2.3-korg