X-Git-Url: https://gerrit.onap.org/r/gitweb?p=sdc.git;a=blobdiff_plain;f=catalog-be%2Fsrc%2Fmain%2Fjava%2Forg%2Fopenecomp%2Fsdc%2Fbe%2Ftosca%2FCsarUtils.java;h=35854d357072a40a80b37ab4552b8cef29e335fc;hp=ee2cdc261fbcee29727c5acaa5698d7c661e80b4;hb=6b60a4739f1d64a5346017460f6e9022c6b93551;hpb=461f20fd6fb23c594361c734525cdd281b72c2e3 diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/CsarUtils.java b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/CsarUtils.java index ee2cdc261f..35854d3570 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/CsarUtils.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/CsarUtils.java @@ -33,6 +33,7 @@ import java.util.Map.Entry; import java.util.Optional; import java.util.Set; import java.util.regex.Pattern; +import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; import lombok.Getter; import lombok.Setter; @@ -44,6 +45,7 @@ import org.openecomp.sdc.be.components.impl.ImportUtils; import org.openecomp.sdc.be.config.ArtifactConfigManager; import org.openecomp.sdc.be.config.ArtifactConfiguration; import org.openecomp.sdc.be.config.ComponentType; +import org.openecomp.sdc.be.config.ConfigurationManager; import org.openecomp.sdc.be.dao.api.ActionStatus; import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum; import org.openecomp.sdc.be.datatypes.enums.OriginTypeEnum; @@ -74,6 +76,8 @@ public class CsarUtils { private static final Logger log = Logger.getLogger(CsarUtils.class); private static final LoggerSupportability loggerSupportability = LoggerSupportability.getLogger(CsarUtils.class.getName()); private static final String PATH_DELIMITER = "/"; + private static final String CSAR_META_VERSION = "1.0"; + private static final String CSAR_META_PATH_FILE_NAME = "csar.meta"; private static final String DEFINITION = "Definitions"; private static final String DEL_PATTERN = "([/\\\\]+)"; private static final String WORD_PATTERN = "\\w\\_\\@\\-\\.\\s]+)"; @@ -93,6 +97,7 @@ public class CsarUtils { ARTIFACTS + DEL_PATTERN + ImportUtils.Constants.USER_DEFINED_RESOURCE_NAMESPACE_PREFIX + VALID_ENGLISH_ARTIFACT_NAME_WITH_DIGITS + DEL_PATTERN + VALID_ENGLISH_ARTIFACT_NAME_WITH_DIGITS + DEL_PATTERN + VALID_ENGLISH_ARTIFACT_NAME_WITH_DIGITS + DEL_PATTERN + VALID_ENGLISH_ARTIFACT_NAME_WITH_DIGITS; + private static final String BLOCK_0_TEMPLATE = "SDC-TOSCA-Meta-File-Version: %s\nSDC-TOSCA-Definitions-Version: %s\n"; private final ToscaOperationFacade toscaOperationFacade; private final ComponentsUtils componentsUtils; @@ -274,8 +279,11 @@ public class CsarUtils { public Either createCsar(final Component component, final boolean getFromCS, final boolean isInCertificationRequest) { loggerSupportability .log(LoggerSupportabilityActions.GENERATE_CSAR, StatusCode.STARTED, "Starting to create Csar for component {} ", component.getName()); + final String toscaConformanceLevel = ConfigurationManager.getConfigurationManager().getConfiguration().getToscaConformanceLevel(); + final byte[] csarBlock0Byte = createCsarBlock0(CSAR_META_VERSION, toscaConformanceLevel).getBytes(); - return generateCsarZip(isAsdPackage(component), component, getFromCS, isInCertificationRequest).left().map(responseFormat -> { + return generateCsarZip(csarBlock0Byte, + isAsdPackage(component), component, getFromCS, isInCertificationRequest).left().map(responseFormat -> { loggerSupportability .log(LoggerSupportabilityActions.GENERATE_CSAR, StatusCode.COMPLETE, "Ended create Csar for component {} ", component.getName()); return responseFormat; @@ -302,11 +310,14 @@ public class CsarUtils { return false; } - private Either generateCsarZip(boolean isAsdPackage, + private Either generateCsarZip(byte[] csarBlock0Byte, + boolean isAsdPackage, Component component, boolean getFromCS, boolean isInCertificationRequest) { try (final ByteArrayOutputStream out = new ByteArrayOutputStream(); ZipOutputStream zip = new ZipOutputStream(out)) { + zip.putNextEntry(new ZipEntry(CSAR_META_PATH_FILE_NAME)); + zip.write(csarBlock0Byte); Either populateZip = mapFromModelCsarGeneratorService.generateCsarZip( component, getFromCS, zip, isInCertificationRequest, isAsdPackage); if (populateZip.isRight()) { @@ -322,6 +333,10 @@ public class CsarUtils { } } + private String createCsarBlock0(String metaFileVersion, String toscaConformanceLevel) { + return String.format(BLOCK_0_TEMPLATE, metaFileVersion, toscaConformanceLevel); + } + /************************************ Artifacts Structure END******************************************************************/ private Either collectComponentCsarDefinition(Component component) {