From 1b6adf74f6a436978a8afd8c68a453bde9956589 Mon Sep 17 00:00:00 2001 From: "bilal.iqbal" Date: Thu, 14 Mar 2019 10:49:36 +0000 Subject: Add source support Change-Id: I71f578764f666dd33c4aa42c7e8613b58ecb2f93 Issue-ID: SDC-2173 Signed-off-by: bilal.iqbal --- .../impl/VendorSoftwareProductManagerImpl.java | 5 ++-- .../csar/validation/ONAPCsarValidator.java | 5 ++-- .../validation/SOL004MetaDirectoryValidator.java | 35 +++++++++++++++------- .../manifest/manifestInvalidMetadata.mf | 4 +-- .../manifest/manifestInvalidMetadata2.mf | 2 -- .../manifest/manifestInvalidMetadata3.mf | 2 -- .../manifest/manifestInvalidMetadata4.mf | 2 -- .../manifest/manifestInvalidMetadata5.mf | 4 +-- .../validation.files/manifest/sampleManifest2.mf | 25 +++++++++++++++- 9 files changed, 57 insertions(+), 27 deletions(-) (limited to 'openecomp-be/backend') diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImpl.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImpl.java index 51a4bdd3fd..36cd58dabf 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImpl.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImpl.java @@ -70,6 +70,7 @@ import org.openecomp.sdc.datatypes.error.ErrorLevel; import org.openecomp.sdc.datatypes.error.ErrorMessage; import org.openecomp.sdc.tosca.csar.OnboardingToscaMetadata; import org.openecomp.sdc.tosca.csar.ToscaMetadata; +import org.openecomp.sdc.tosca.csar.SOL004ManifestOnboarding; import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; import org.openecomp.sdc.tosca.services.impl.ToscaFileOutputServiceCsarImpl; import org.openecomp.sdc.validation.util.ValidationManagerUtil; @@ -114,7 +115,6 @@ import org.openecomp.sdc.vendorsoftwareproduct.errors.PackageNotFoundErrorBuilde import org.openecomp.sdc.vendorsoftwareproduct.errors.TranslationFileCreationErrorBuilder; import org.openecomp.sdc.vendorsoftwareproduct.errors.VendorSoftwareProductInvalidErrorBuilder; import org.openecomp.sdc.tosca.csar.Manifest; -import org.openecomp.sdc.tosca.csar.OnboardingManifest; import org.openecomp.sdc.vendorsoftwareproduct.informationArtifact.InformationArtifactGenerator; import org.openecomp.sdc.vendorsoftwareproduct.services.impl.etsi.ETSIService; import org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule.CandidateService; @@ -635,7 +635,8 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa if(etsiService.isSol004WithToscaMetaDirectory(toscaServiceModel.getArtifactFiles())){ FileContentHandler handler = toscaServiceModel.getArtifactFiles(); try(InputStream manifestInputStream = getManifest(handler)) { - Manifest onboardingManifest = OnboardingManifest.parse(manifestInputStream); + Manifest onboardingManifest = new SOL004ManifestOnboarding(); + onboardingManifest.parse(manifestInputStream); etsiService.moveNonManoFileToArtifactFolder(handler, onboardingManifest); } } diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ONAPCsarValidator.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ONAPCsarValidator.java index 0f44427edd..e5a06e5d42 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ONAPCsarValidator.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/ONAPCsarValidator.java @@ -28,7 +28,7 @@ import org.openecomp.sdc.datatypes.error.ErrorMessage; import org.openecomp.sdc.logging.api.Logger; import org.openecomp.sdc.logging.api.LoggerFactory; import org.openecomp.sdc.tosca.csar.Manifest; -import org.openecomp.sdc.tosca.csar.OnboardingManifest; +import org.openecomp.sdc.tosca.csar.ONAPManifestOnboarding; import org.openecomp.sdc.tosca.csar.OnboardingToscaMetadata; import org.openecomp.sdc.tosca.csar.ToscaMetadata; import java.io.IOException; @@ -99,7 +99,8 @@ class ONAPCsarValidator implements Validator { try (InputStream fileContent = contentMap.getFileContent(MAIN_SERVICE_TEMPLATE_MF_FILE_NAME)) { - Manifest onboardingManifest = OnboardingManifest.parse(fileContent); + Manifest onboardingManifest = new ONAPManifestOnboarding(); + onboardingManifest.parse(fileContent); if (!onboardingManifest.isValid()) { onboardingManifest.getErrors().forEach(error -> uploadFileErrors.add(new ErrorMessage(ErrorLevel.ERROR, error))); diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/SOL004MetaDirectoryValidator.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/SOL004MetaDirectoryValidator.java index 570eee3736..49233c4ff9 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/SOL004MetaDirectoryValidator.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/validation/SOL004MetaDirectoryValidator.java @@ -30,8 +30,8 @@ import org.openecomp.sdc.datatypes.error.ErrorMessage; import org.openecomp.sdc.logging.api.Logger; import org.openecomp.sdc.logging.api.LoggerFactory; import org.openecomp.sdc.tosca.csar.Manifest; -import org.openecomp.sdc.tosca.csar.OnboardingManifest; import org.openecomp.sdc.tosca.csar.OnboardingToscaMetadata; +import org.openecomp.sdc.tosca.csar.SOL004ManifestOnboarding; import org.openecomp.sdc.tosca.csar.ToscaMetadata; import org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.exceptions.InvalidManifestMetadataException; import java.io.IOException; @@ -42,6 +42,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; import static org.openecomp.sdc.tosca.csar.CSARConstants.CSAR_VERSION_1_0; import static org.openecomp.sdc.tosca.csar.CSARConstants.CSAR_VERSION_1_1; @@ -49,6 +50,7 @@ import static org.openecomp.sdc.tosca.csar.CSARConstants.MANIFEST_METADATA_LIMIT import static org.openecomp.sdc.tosca.csar.CSARConstants.MANIFEST_PNF_METADATA; import static org.openecomp.sdc.tosca.csar.CSARConstants.MANIFEST_VNF_METADATA; import static org.openecomp.sdc.tosca.csar.CSARConstants.NON_FILE_IMPORT_ATTRIBUTES; +import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_MANIFEST_FILE_EXT; import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_FILE_VERSION_ENTRY; import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_CREATED_BY_ENTRY; import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_CSAR_VERSION_ENTRY; @@ -59,6 +61,8 @@ import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ENTRY_MANIFE import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ENTRY_TESTS; import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_FILE_VERSION; import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_PATH_FILE_NAME; +import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_TYPE_PNF; +import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_TYPE_VNF; /** * Validates the contents of the package to ensure it complies with the "CSAR with TOSCA-Metadata directory" structure @@ -99,7 +103,7 @@ class SOL004MetaDirectoryValidator implements Validator{ String manifestFileName = getFileName(entries.get(TOSCA_META_ENTRY_MANIFEST)); String manifestExtension = getFileExtension(entries.get(TOSCA_META_ENTRY_MANIFEST)); String mainDefinitionFileName= getFileName(entries.get(TOSCA_META_ENTRY_DEFINITIONS)); - if(!("mf").equals(manifestExtension)){ + if(!(TOSCA_MANIFEST_FILE_EXT).equals(manifestExtension)){ reportError(ErrorLevel.ERROR, Messages.MANIFEST_INVALID_EXT.getErrorMessage()); } if(!mainDefinitionFileName.equals(manifestFileName)){ @@ -165,8 +169,8 @@ class SOL004MetaDirectoryValidator implements Validator{ private void verifyMetadataEntryVersions(String key, String version) { if(!(isValidTOSCAVersion(key,version) || isValidCSARVersion(key, version) || TOSCA_META_CREATED_BY_ENTRY.equals(key))) { - errorsByFile.add(new ErrorMessage(ErrorLevel.ERROR, Messages.ENTITY_NOT_FOUND.getErrorMessage())); - LOGGER.error("{}: key {} - value {} ", Messages.ENTITY_NOT_FOUND.getErrorMessage(), key, version); + errorsByFile.add(new ErrorMessage(ErrorLevel.ERROR, String.format(Messages.METADATA_INVALID_VERSION.getErrorMessage(), key, version))); + LOGGER.error("{}: key {} - value {} ", Messages.METADATA_INVALID_VERSION.getErrorMessage(), key, version); } } @@ -175,7 +179,7 @@ class SOL004MetaDirectoryValidator implements Validator{ } private boolean isValidCSARVersion(String value, String version){ - return "CSAR-Version".equals(value) && (CSAR_VERSION_1_1.equals(version) + return TOSCA_META_CSAR_VERSION_ENTRY.equals(value) && (CSAR_VERSION_1_1.equals(version) || CSAR_VERSION_1_0.equals(version)); } @@ -250,7 +254,8 @@ class SOL004MetaDirectoryValidator implements Validator{ private void validateManifestFile(FileContentHandler contentHandler, String filePath){ final Set exitingFiles = contentHandler.getFileList(); if(verifyFileExists(exitingFiles, filePath)) { - Manifest onboardingManifest = OnboardingManifest.parse(contentHandler.getFileContent(filePath)); + Manifest onboardingManifest = new SOL004ManifestOnboarding(); + onboardingManifest.parse(contentHandler.getFileContent(filePath)); if(onboardingManifest.isValid()){ try { verifyManifestMetadata(onboardingManifest.getMetadata()); @@ -286,12 +291,12 @@ class SOL004MetaDirectoryValidator implements Validator{ String metadataType = null; for(String key: metadata.keySet()) { if(metadataType == null){ - metadataType = key.contains("pnf") ? "pnf" : "vnf"; + metadataType = key.contains(TOSCA_TYPE_PNF) ? TOSCA_TYPE_PNF : TOSCA_TYPE_VNF; }else if(!key.contains(metadataType)){ throw new InvalidManifestMetadataException(Messages.MANIFEST_METADATA_INVALID_ENTRY.getErrorMessage()); } } - return "pnf".equals(metadataType); + return TOSCA_TYPE_PNF.equals(metadataType); } private void handleVnfMetadataEntries(Map metadata) { @@ -311,14 +316,24 @@ class SOL004MetaDirectoryValidator implements Validator{ } private void verifySourcesExists(Set exitingFiles, Manifest onboardingManifest) { - List sources = onboardingManifest.getSources(); + List sources = filterSources(onboardingManifest.getSources()); Map> nonManoArtifacts = onboardingManifest.getNonManoSources(); verifyFilesExist(exitingFiles, sources); for (Map.Entry entry : nonManoArtifacts.entrySet()) { - verifyFilesExist(exitingFiles, (List) entry.getValue()); + verifyFilesExist(exitingFiles, filterSources((List)entry.getValue())); } } + private List filterSources(List source){ + return source.stream() + .filter(this::externalFileReferences) + .collect(Collectors.toList()); + } + + private boolean externalFileReferences(String filePath){ + return !filePath.contains("://"); + } + private void validateOtherEntries(List folderList, String folderPath){ if(!verifyFoldersExist(folderList, folderPath)) reportError(ErrorLevel.ERROR, String.format(Messages.METADATA_MISSING_OPTIONAL_FOLDERS.getErrorMessage(), diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/validation.files/manifest/manifestInvalidMetadata.mf b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/validation.files/manifest/manifestInvalidMetadata.mf index 53395c9f34..33fe629ec2 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/validation.files/manifest/manifestInvalidMetadata.mf +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/validation.files/manifest/manifestInvalidMetadata.mf @@ -2,6 +2,4 @@ metadata: pnf_product_name: RadioNode vnf_provider_id: Bilal Iqbal pnf_package_version: 1.0 - vnf_release_date_time: 2019-12-14T11:25:00+00:00 - -Source: Definitions/MainServiceTemplate.yaml \ No newline at end of file + vnf_release_date_time: 2019-12-14T11:25:00+00:00 \ No newline at end of file diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/validation.files/manifest/manifestInvalidMetadata2.mf b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/validation.files/manifest/manifestInvalidMetadata2.mf index 64fcdc247b..7755b27c6c 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/validation.files/manifest/manifestInvalidMetadata2.mf +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/validation.files/manifest/manifestInvalidMetadata2.mf @@ -3,5 +3,3 @@ metadata: invalid_provider_id: Bilal Iqbal invalid_package_version: 1.0 invalid_release_date_time: 2019-12-14T11:25:00+00:00 - -Source: Definitions/MainServiceTemplate.yaml \ No newline at end of file diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/validation.files/manifest/manifestInvalidMetadata3.mf b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/validation.files/manifest/manifestInvalidMetadata3.mf index ea92856e43..e919ed3598 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/validation.files/manifest/manifestInvalidMetadata3.mf +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/validation.files/manifest/manifestInvalidMetadata3.mf @@ -7,5 +7,3 @@ metadata: vnf_provider_id: Bilal Iqbal vnf_package_version: 1.0 vnf_release_date_time: 2019-12-14T11:26:00+00:00 - -Source: Definitions/MainServiceTemplate.yaml \ No newline at end of file diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/validation.files/manifest/manifestInvalidMetadata4.mf b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/validation.files/manifest/manifestInvalidMetadata4.mf index bce6beef01..04f2fa18de 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/validation.files/manifest/manifestInvalidMetadata4.mf +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/validation.files/manifest/manifestInvalidMetadata4.mf @@ -1,5 +1,3 @@ metadata: pnf_product_name: RadioNode pnf_release_date_time: 2019-12-14T11:25:00+00:00 - -Source: Definitions/MainServiceTemplate.yaml \ No newline at end of file diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/validation.files/manifest/manifestInvalidMetadata5.mf b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/validation.files/manifest/manifestInvalidMetadata5.mf index aabbd470f7..4e2c567e48 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/validation.files/manifest/manifestInvalidMetadata5.mf +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/validation.files/manifest/manifestInvalidMetadata5.mf @@ -1,4 +1,2 @@ metadata: - vnf_product_name: RadioNode - -Source: Definitions/MainServiceTemplate.yaml \ No newline at end of file + vnf_product_name: RadioNode \ No newline at end of file diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/validation.files/manifest/sampleManifest2.mf b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/validation.files/manifest/sampleManifest2.mf index cfdf539be5..c6cb025038 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/validation.files/manifest/sampleManifest2.mf +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/validation.files/manifest/sampleManifest2.mf @@ -4,4 +4,27 @@ metadata: pnf_package_version: 1.0 pnf_release_date_time: 2019-12-14T11:25:00+00:00 -Source: Definitions/MainServiceTemplate.yaml \ No newline at end of file +Source: Definitions/MainServiceTemplate.yaml +Algorithm: SHA-abc +Hash: 09e5a788acb180162c51679ae4c998039fa6644505db2415e35107d1ee213943 + +Source: http://Definitions/MainServiceTemplate.yaml +Algorithm: SHA-def +Hash:36f945953929812aca2701b114b068c71bd8c95ceb3609711428c26325649165 + +Source: ftp://Definitions/MainServiceTemplate.yaml +Algorithm: SHA-ghi +Hash: d0e7828293355a07c2dccaaa765c80b507e60e6167067c950dc2e6b0da0dbd8b + + +----BEGIN CMS----- +MIGDBgsqhkiG9w0BCRABCaB0MHICAQAwDQYLKoZIhvcNAQkQAwgwXgYJKoZIhvcN +AQcBoFEET3icc87PK0nNK9ENqSxItVIoSa0o0S/ISczMs1ZIzkgsKk4tsQ0N1nUM +dvb05OXi5XLPLEtViMwvLVLwSE0sKlFIVHAqSk3MBkkBAJv0Fx0= +-----END CMS----- + +non_mano_artifact_sets: + onap_pm_events: + Source: Definitions/MainServiceTemplate.yaml + Source: http://Definitions/MainServiceTemplate.yaml + Source: ftp://Definitions/MainServiceTemplate.yaml -- cgit 1.2.3-korg