From 90c460aa3c23c9a12885894b4664f7c742c8d29f Mon Sep 17 00:00:00 2001 From: kooper Date: Tue, 5 Mar 2019 13:31:45 +0000 Subject: Parse Tosca.meta file Change-Id: I50521fb62999322c99b39024097ab5729f3c1580 Issue-ID: SDC-2151 Signed-off-by: kooper --- .../OrchestrationTemplateCSARHandler.java | 33 +++---- .../csar/OnboardingToscaMetadata.java | 70 -------------- .../OrchestrationTemplateHandlerException.java | 28 ++++++ .../upload/csar/MetadataParsingTest.java | 31 ------- .../vspmanager.csar/metadata/Invalidtosca.meta | 3 - .../vspmanager.csar/metadata/Validtosca.meta | 4 - .../org/openecomp/sdc/common/errors/Messages.java | 1 + .../sdc/tosca/csar/OnboardingToscaMetadata.java | 102 +++++++++++++++++++++ .../openecomp/sdc/tosca/csar/ToscaMetadata.java | 46 ++++++++++ .../sdc/tosca/csar/MetadataParsingTest.java | 69 ++++++++++++++ .../vspmanager.csar/metadata/Invalidtosca.meta | 3 + .../metadata/InvalidtoscaEmptyKey.meta | 4 + .../metadata/InvalidtoscaEmptyValue.meta | 4 + .../vspmanager.csar/metadata/ValidETSItosca.meta | 6 ++ .../vspmanager.csar/metadata/Validtosca.meta | 4 + 15 files changed, 284 insertions(+), 124 deletions(-) delete mode 100644 openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/OnboardingToscaMetadata.java create mode 100644 openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/exceptions/OrchestrationTemplateHandlerException.java delete mode 100644 openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/upload/csar/MetadataParsingTest.java delete mode 100644 openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/metadata/Invalidtosca.meta delete mode 100644 openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/metadata/Validtosca.meta create mode 100644 openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/OnboardingToscaMetadata.java create mode 100644 openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/ToscaMetadata.java create mode 100644 openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/csar/MetadataParsingTest.java create mode 100644 openecomp-be/lib/openecomp-tosca-lib/src/test/resources/vspmanager.csar/metadata/Invalidtosca.meta create mode 100644 openecomp-be/lib/openecomp-tosca-lib/src/test/resources/vspmanager.csar/metadata/InvalidtoscaEmptyKey.meta create mode 100644 openecomp-be/lib/openecomp-tosca-lib/src/test/resources/vspmanager.csar/metadata/InvalidtoscaEmptyValue.meta create mode 100644 openecomp-be/lib/openecomp-tosca-lib/src/test/resources/vspmanager.csar/metadata/ValidETSItosca.meta create mode 100644 openecomp-be/lib/openecomp-tosca-lib/src/test/resources/vspmanager.csar/metadata/Validtosca.meta (limited to 'openecomp-be') diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationTemplateCSARHandler.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationTemplateCSARHandler.java index bfe602b3ad..a3772d9298 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationTemplateCSARHandler.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/OrchestrationTemplateCSARHandler.java @@ -29,11 +29,15 @@ import org.openecomp.sdc.common.utils.CommonUtil; import org.openecomp.sdc.common.utils.SdcCommon; import org.openecomp.sdc.datatypes.error.ErrorLevel; 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.ToscaMetadata; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateCandidateData; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; import org.openecomp.sdc.tosca.csar.Manifest; import org.openecomp.sdc.tosca.csar.OnboardingManifest; -import org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.OnboardingToscaMetadata; +import org.openecomp.sdc.tosca.csar.OnboardingToscaMetadata; +import org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.exceptions.OrchestrationTemplateHandlerException; import org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule.CandidateService; import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse; @@ -50,11 +54,12 @@ import static org.openecomp.sdc.tosca.csar.CSARConstants.ELIGBLE_FOLDERS; import static org.openecomp.sdc.tosca.csar.CSARConstants.ELIGIBLE_FILES; import static org.openecomp.sdc.tosca.csar.CSARConstants.MAIN_SERVICE_TEMPLATE_MF_FILE_NAME; import static org.openecomp.sdc.tosca.csar.CSARConstants.MAIN_SERVICE_TEMPLATE_YAML_FILE_NAME; +import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ENTRY_DEFINITIONS; import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_PATH_FILE_NAME; public class OrchestrationTemplateCSARHandler extends BaseOrchestrationTemplateHandler implements OrchestrationTemplateFileHandler { - + private static Logger logger = LoggerFactory.getLogger(OrchestrationTemplateCSARHandler.class); @Override public Optional getFileContentMap(UploadFileResponse uploadFileResponse, @@ -67,10 +72,12 @@ public class OrchestrationTemplateCSARHandler extends BaseOrchestrationTemplateH contentMap = fileContentMapFromOrchestrationCandidateZip.getKey(); folderList = fileContentMapFromOrchestrationCandidateZip.getRight(); } catch (IOException exception) { + logger.error(exception.getMessage(), exception); uploadFileResponse.addStructureError( SdcCommon.UPLOAD_FILE, new ErrorMessage(ErrorLevel.ERROR, Messages.INVALID_CSAR_FILE.getErrorMessage())); } catch (CoreException coreException) { + logger.error(coreException.getMessage(), coreException); uploadFileResponse.addStructureError( SdcCommon.UPLOAD_FILE, new ErrorMessage(ErrorLevel.ERROR, coreException.getMessage())); } @@ -85,14 +92,14 @@ public class OrchestrationTemplateCSARHandler extends BaseOrchestrationTemplateH validateNoExtraFiles(uploadFileResponse, contentMap); validateFolders(uploadFileResponse, folderList); } - + private void validateMetadata(UploadFileResponse uploadFileResponse, FileContentHandler contentMap){ if (!validateTOSCAYamlFileInRootExist(contentMap, MAIN_SERVICE_TEMPLATE_YAML_FILE_NAME)) { try (InputStream metaFileContent = contentMap.getFileContent(TOSCA_META_PATH_FILE_NAME)) { - OnboardingToscaMetadata onboardingToscaMetadata = new OnboardingToscaMetadata(metaFileContent); - String entryDefinitionsPath = onboardingToscaMetadata.getEntryDefinitionsPath(); + ToscaMetadata onboardingToscaMetadata = OnboardingToscaMetadata.parseToscaMetadataFile(metaFileContent); + String entryDefinitionsPath = onboardingToscaMetadata.getMetaEntries().get(TOSCA_META_ENTRY_DEFINITIONS); if (entryDefinitionsPath != null) { validateFileExist(uploadFileResponse, contentMap, entryDefinitionsPath); } else { @@ -101,13 +108,14 @@ public class OrchestrationTemplateCSARHandler extends BaseOrchestrationTemplateH Messages.METADATA_NO_ENTRY_DEFINITIONS.getErrorMessage())); } } catch (IOException exception) { + logger.error(exception.getMessage(), exception); uploadFileResponse.addStructureError( SdcCommon.UPLOAD_FILE, new ErrorMessage(ErrorLevel.ERROR, Messages.FAILED_TO_VALIDATE_METADATA.getErrorMessage())); } } else { - validateFileExist(uploadFileResponse, contentMap, MAIN_SERVICE_TEMPLATE_YAML_FILE_NAME); - } + validateFileExist(uploadFileResponse, contentMap, MAIN_SERVICE_TEMPLATE_YAML_FILE_NAME); + } } private void validateManifest(UploadFileResponse uploadFileResponse, @@ -127,7 +135,7 @@ public class OrchestrationTemplateCSARHandler extends BaseOrchestrationTemplateH } catch (IOException e) { // convert to runtime to keep the throws unchanged - throw new RuntimeException("Failed to validate manifest", e); + throw new OrchestrationTemplateHandlerException("Failed to validate manifest", e); } } @@ -165,7 +173,7 @@ public class OrchestrationTemplateCSARHandler extends BaseOrchestrationTemplateH private boolean filterFolders(String fileName) { return ELIGBLE_FOLDERS.stream().noneMatch(fileName::startsWith); } - + private boolean validateTOSCAYamlFileInRootExist(FileContentHandler contentMap, String fileName) { return contentMap.containsFile(fileName); } @@ -208,11 +216,4 @@ public class OrchestrationTemplateCSARHandler extends BaseOrchestrationTemplateH return OnboardingTypesEnum.CSAR; } - @Override - protected boolean isInvalidRawZipData(String fileSuffix, - UploadFileResponse uploadFileResponse, - byte[] uploadedFileData, - CandidateService candidateService) { - return super.isInvalidRawZipData(fileSuffix, uploadFileResponse, uploadedFileData, candidateService); - } } diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/OnboardingToscaMetadata.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/OnboardingToscaMetadata.java deleted file mode 100644 index 6f06289d96..0000000000 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/csar/OnboardingToscaMetadata.java +++ /dev/null @@ -1,70 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * SDC - * ================================================================================ - * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar; - -import org.openecomp.sdc.logging.api.Logger; -import org.openecomp.sdc.logging.api.LoggerFactory; -import java.io.InputStream; -import java.io.IOException; -import org.apache.commons.io.IOUtils; -import java.util.List; - -import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ENTRY_DEFINITIONS; -import static org.openecomp.sdc.tosca.csar.CSARConstants.SEPERATOR_MF_ATTRIBUTE; - -public class OnboardingToscaMetadata { - - private static final Logger LOGGER = LoggerFactory.getLogger(OnboardingToscaMetadata.class); - private String entryDefinitionsPath; - - public OnboardingToscaMetadata(InputStream is) throws IOException { - parseToscaMetadataFile(is); - } - - private void parseToscaMetadataFile(InputStream st) throws IOException { - - try { - List metadataLines = IOUtils.readLines(st,"utf-8"); - - for (String line : metadataLines) { - line = line.trim(); - if (line.startsWith(TOSCA_META_ENTRY_DEFINITIONS + SEPERATOR_MF_ATTRIBUTE)) { - - entryDefinitionsPath = line.replaceAll(TOSCA_META_ENTRY_DEFINITIONS + SEPERATOR_MF_ATTRIBUTE, "") - .trim(); - break; - - } - } - - } catch (IOException e) { - LOGGER.error(e.getMessage(), e); - throw new IOException("Invalid TOSCA Metadata file", e); - - } - - } - - public String getEntryDefinitionsPath() { - return entryDefinitionsPath; - } -} - diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/exceptions/OrchestrationTemplateHandlerException.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/exceptions/OrchestrationTemplateHandlerException.java new file mode 100644 index 0000000000..a8a9105254 --- /dev/null +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/orchestration/exceptions/OrchestrationTemplateHandlerException.java @@ -0,0 +1,28 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.exceptions; + +public class OrchestrationTemplateHandlerException extends RuntimeException{ + + public OrchestrationTemplateHandlerException(String message, Throwable throwable){ + super(message, throwable); + } +} diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/upload/csar/MetadataParsingTest.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/upload/csar/MetadataParsingTest.java deleted file mode 100644 index b17c8a17cd..0000000000 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/java/org/openecomp/sdc/vendorsoftwareproduct/upload/csar/MetadataParsingTest.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.openecomp.sdc.vendorsoftwareproduct.upload.csar; - - -import static org.testng.Assert.assertEquals; - -import java.io.IOException; -import java.io.InputStream; -import org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration.csar.OnboardingToscaMetadata; -import org.testng.annotations.Test; - -public class MetadataParsingTest { - - @Test - public void testNoEntryDefinitions() throws IOException { - try (InputStream is = getClass() - .getResourceAsStream("/vspmanager.csar/metadata/Invalidtosca.meta")) { - OnboardingToscaMetadata onboardingToscaMetadata = new OnboardingToscaMetadata(is); - assertEquals(onboardingToscaMetadata.getEntryDefinitionsPath(), null); - } - } - - @Test - public void testValidMetadataFile() throws IOException { - try (InputStream is = getClass() - .getResourceAsStream("/vspmanager.csar/metadata/Validtosca.meta")) { - OnboardingToscaMetadata onboardingToscaMetadata = new OnboardingToscaMetadata(is); - assertEquals(onboardingToscaMetadata.getEntryDefinitionsPath(), "Definitions/MainServiceTemplate.yaml"); - } - - } -} diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/metadata/Invalidtosca.meta b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/metadata/Invalidtosca.meta deleted file mode 100644 index e9f08025dc..0000000000 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/metadata/Invalidtosca.meta +++ /dev/null @@ -1,3 +0,0 @@ -TOSCA-Meta-File-Version: 1.0 -CSAR-Version: 1.1 -Created-By: Feng yuanxing diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/metadata/Validtosca.meta b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/metadata/Validtosca.meta deleted file mode 100644 index 1f3980547c..0000000000 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/test/resources/vspmanager.csar/metadata/Validtosca.meta +++ /dev/null @@ -1,4 +0,0 @@ -TOSCA-Meta-File-Version: 1.0 -CSAR-Version: 1.1 -Created-By: Feng yuanxing -Entry-Definitions: Definitions/MainServiceTemplate.yaml diff --git a/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/errors/Messages.java b/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/errors/Messages.java index adb8c5ff98..6cb82b5d4d 100644 --- a/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/errors/Messages.java +++ b/openecomp-be/lib/openecomp-common-lib/src/main/java/org/openecomp/sdc/common/errors/Messages.java @@ -36,6 +36,7 @@ public enum Messages { MANIFEST_PARSER_INTERNAL("Invalid manifest file"), METADATA_PARSER_INTERNAL("Invalid Metadata file"), METADATA_NO_ENTRY_DEFINITIONS("TOSCA.meta must contain Entry Definitions"), + METADATA_INVALID_ENTRY_DEFINITIONS("TOSCA.meta must contain key:value entries"), FAILED_TO_VALIDATE_METADATA("Failed to validate metadata file"), FAILED_TO_TRANSLATE_ZIP_FILE("Failed to translate zip file"), ZIP_NOT_EXIST("Zip file doesn't exist"), diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/OnboardingToscaMetadata.java b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/OnboardingToscaMetadata.java new file mode 100644 index 0000000000..b4d7f84ca4 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/OnboardingToscaMetadata.java @@ -0,0 +1,102 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.tosca.csar; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import org.openecomp.sdc.common.errors.Messages; +import org.openecomp.sdc.datatypes.error.ErrorLevel; +import org.openecomp.sdc.datatypes.error.ErrorMessage; +import java.io.InputStream; +import java.io.IOException; +import org.apache.commons.io.IOUtils; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder.getErrorWithParameters; +import static org.openecomp.sdc.tosca.csar.CSARConstants.SEPERATOR_MF_ATTRIBUTE; +import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ENTRY_DEFINITIONS; + +public class OnboardingToscaMetadata implements ToscaMetadata{ + + private Map metaEntries; + private List errors; + + private OnboardingToscaMetadata(){ + metaEntries = new HashMap<>(); + errors = new ArrayList<>(); + } + + /** + * Method parses input stream of meta file, only block_0 is parsed, the rest of metadata ignored + * @param st meta file input stream + * @return OnboardingToscaMetadata instance + * @throws IOException + */ + public static ToscaMetadata parseToscaMetadataFile(InputStream st) throws IOException { + OnboardingToscaMetadata meta = new OnboardingToscaMetadata(); + List metadataLines = IOUtils.readLines(st, "utf-8"); + for (String line : metadataLines) { + line = line.trim(); + if (line.isEmpty()) { + return meta; + } + String[] entry = line.split(SEPERATOR_MF_ATTRIBUTE); + //No empty keys allowed, no empty values allowed + if (entry.length < 2 || entry[0].isEmpty()) { + meta.errors.add(new ErrorMessage(ErrorLevel.ERROR, getErrorWithParameters( + Messages.METADATA_INVALID_ENTRY_DEFINITIONS.getErrorMessage(), line))); + //want to get all error lines in meta file block_0, no breaking loop + } else { + meta.metaEntries.put(entry[0].trim(), entry[1].trim()); + } + } + + if (!meta.metaEntries.containsKey(TOSCA_META_ENTRY_DEFINITIONS)) { + meta.errors.add(new ErrorMessage(ErrorLevel.ERROR, getErrorWithParameters( + Messages.METADATA_NO_ENTRY_DEFINITIONS.getErrorMessage()))); + } + return meta; + } + + @Override public boolean isValid(){ + return errors.isEmpty(); + } + + @Override + public List getErrors() { + return ImmutableList.copyOf(errors); + } + + + @Override + public Map getMetaEntries() { + if (!isValid()){ + return Collections.emptyMap(); + } + return ImmutableMap.copyOf(metaEntries); + } +} + diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/ToscaMetadata.java b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/ToscaMetadata.java new file mode 100644 index 0000000000..a26e5195a5 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-lib/src/main/java/org/openecomp/sdc/tosca/csar/ToscaMetadata.java @@ -0,0 +1,46 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2019, Nordix Foundation. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.tosca.csar; + +import org.openecomp.sdc.datatypes.error.ErrorMessage; + +import java.util.List; +import java.util.Map; + +public interface ToscaMetadata { + /** + * checks if metadata file is valid + * @return + */ + boolean isValid(); + + /** + * List of errors occured during manifest parsing + * @return + */ + List getErrors(); + + /** + * Metadata entries of block_0 + * @return + */ + Map getMetaEntries(); +} diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/csar/MetadataParsingTest.java b/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/csar/MetadataParsingTest.java new file mode 100644 index 0000000000..5e32820bc3 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/csar/MetadataParsingTest.java @@ -0,0 +1,69 @@ +package org.openecomp.sdc.tosca.csar; + + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; +import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ENTRY_CHANGE_LOG; +import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ENTRY_DEFINITIONS; +import static org.openecomp.sdc.tosca.csar.CSARConstants.TOSCA_META_ENTRY_MANIFEST; + +import java.io.IOException; +import java.io.InputStream; + +import org.junit.Test; + + + +public class MetadataParsingTest { + + @Test + public void testNoEntryDefinitions() throws IOException { + try (InputStream is = getClass() + .getResourceAsStream("/vspmanager.csar/metadata/Invalidtosca.meta")) { + ToscaMetadata onboardingToscaMetadata = OnboardingToscaMetadata.parseToscaMetadataFile(is); + assertFalse(onboardingToscaMetadata.isValid()); + assertNull(onboardingToscaMetadata.getMetaEntries().get(TOSCA_META_ENTRY_DEFINITIONS)); + } + } + + @Test + public void testValidMetadataFile() throws IOException { + try (InputStream is = getClass() + .getResourceAsStream("/vspmanager.csar/metadata/Validtosca.meta")) { + ToscaMetadata onboardingToscaMetadata = OnboardingToscaMetadata.parseToscaMetadataFile(is); + assertEquals(onboardingToscaMetadata.getMetaEntries().get(TOSCA_META_ENTRY_DEFINITIONS), "Definitions/MainServiceTemplate.yaml"); + } + + } + + @Test + public void testInvalidMetadataFileEmptyKey() throws IOException { + try (InputStream is = getClass() + .getResourceAsStream("/vspmanager.csar/metadata/InvalidtoscaEmptyKey.meta")) { + ToscaMetadata onboardingToscaMetadata = OnboardingToscaMetadata.parseToscaMetadataFile(is); + assertFalse(onboardingToscaMetadata.isValid()); + } + } + + @Test + public void testInvalidMetadataFileEmptyValue() throws IOException { + try (InputStream is = getClass() + .getResourceAsStream("/vspmanager.csar/metadata/InvalidtoscaEmptyValue.meta")) { + ToscaMetadata onboardingToscaMetadata = OnboardingToscaMetadata.parseToscaMetadataFile(is); + assertFalse(onboardingToscaMetadata.isValid()); + } + } + + @Test + public void testValidETSIMetadataFile() throws IOException { + try (InputStream is = getClass() + .getResourceAsStream("/vspmanager.csar/metadata/ValidETSItosca.meta")) { + ToscaMetadata onboardingToscaMetadata = OnboardingToscaMetadata.parseToscaMetadataFile(is); + assertEquals(onboardingToscaMetadata.getMetaEntries().get(TOSCA_META_ENTRY_DEFINITIONS), "Definitions/MainServiceTemplate.yaml"); + assertEquals(onboardingToscaMetadata.getMetaEntries().get(TOSCA_META_ENTRY_MANIFEST), "MainServiceTemplate.mf"); + assertEquals(onboardingToscaMetadata.getMetaEntries().get(TOSCA_META_ENTRY_CHANGE_LOG), "change.log"); + } + + } +} diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/test/resources/vspmanager.csar/metadata/Invalidtosca.meta b/openecomp-be/lib/openecomp-tosca-lib/src/test/resources/vspmanager.csar/metadata/Invalidtosca.meta new file mode 100644 index 0000000000..e9f08025dc --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-lib/src/test/resources/vspmanager.csar/metadata/Invalidtosca.meta @@ -0,0 +1,3 @@ +TOSCA-Meta-File-Version: 1.0 +CSAR-Version: 1.1 +Created-By: Feng yuanxing diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/test/resources/vspmanager.csar/metadata/InvalidtoscaEmptyKey.meta b/openecomp-be/lib/openecomp-tosca-lib/src/test/resources/vspmanager.csar/metadata/InvalidtoscaEmptyKey.meta new file mode 100644 index 0000000000..2d3a0614e1 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-lib/src/test/resources/vspmanager.csar/metadata/InvalidtoscaEmptyKey.meta @@ -0,0 +1,4 @@ +TOSCA-Meta-File-Version: 1.0 +CSAR-Version: 1.1 +Created-By: Sergey Sachkov + : empty \ No newline at end of file diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/test/resources/vspmanager.csar/metadata/InvalidtoscaEmptyValue.meta b/openecomp-be/lib/openecomp-tosca-lib/src/test/resources/vspmanager.csar/metadata/InvalidtoscaEmptyValue.meta new file mode 100644 index 0000000000..1f1cb9f78d --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-lib/src/test/resources/vspmanager.csar/metadata/InvalidtoscaEmptyValue.meta @@ -0,0 +1,4 @@ +TOSCA-Meta-File-Version: 1.0 +CSAR-Version: 1.1 +Created-By: Sergey Sachkov +Key : diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/test/resources/vspmanager.csar/metadata/ValidETSItosca.meta b/openecomp-be/lib/openecomp-tosca-lib/src/test/resources/vspmanager.csar/metadata/ValidETSItosca.meta new file mode 100644 index 0000000000..0d74a150b1 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-lib/src/test/resources/vspmanager.csar/metadata/ValidETSItosca.meta @@ -0,0 +1,6 @@ +TOSCA-Meta-File-Version: 1.0 +CSAR-Version: 1.1 +Created-By: Sergey Sachkov +Entry-Definitions: Definitions/MainServiceTemplate.yaml +Entry-Manifest: MainServiceTemplate.mf +Entry-Change-Log: change.log diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/test/resources/vspmanager.csar/metadata/Validtosca.meta b/openecomp-be/lib/openecomp-tosca-lib/src/test/resources/vspmanager.csar/metadata/Validtosca.meta new file mode 100644 index 0000000000..4019dd88e0 --- /dev/null +++ b/openecomp-be/lib/openecomp-tosca-lib/src/test/resources/vspmanager.csar/metadata/Validtosca.meta @@ -0,0 +1,4 @@ +TOSCA-Meta-File-Version: 1.0 +CSAR-Version: 1.1 +Created-By: Feng yuanxing +Entry-Definitions: Definitions/MainServiceTemplate.yaml \ No newline at end of file -- cgit 1.2.3-korg