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 +++++++++ 3 files changed, 45 insertions(+), 86 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 (limited to 'openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp') 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); + } +} -- cgit 1.2.3-korg