1 package org.openecomp.sdc.ci.tests.utils;
3 import org.openecomp.sdc.be.model.Component;
4 import org.openecomp.sdc.be.model.User;
5 import org.openecomp.sdc.ci.tests.tosca.datatypes.ToscaAnnotationsTypesDefinition;
6 import org.openecomp.sdc.ci.tests.tosca.datatypes.ToscaParameterConstants;
7 import org.slf4j.Logger;
8 import org.slf4j.LoggerFactory;
9 import org.yaml.snakeyaml.Yaml;
10 import org.yaml.snakeyaml.constructor.Constructor;
12 import static org.junit.Assert.assertNotNull;
13 import static org.openecomp.sdc.ci.tests.utils.CsarParserUtils.downloadComponentCsar;
14 import static org.openecomp.sdc.ci.tests.utils.ToscaParserUtils.getDataFromZipFileByBytes;
15 import static org.testng.AssertJUnit.fail;
17 public class ToscaTypesDefinitionUtils {
19 private ToscaTypesDefinitionUtils() {
22 private static final String ANNOTATIONS_TYPE_PATH = ToscaParameterConstants.TOSCA_DEFINITION_PATH + "/annotations.yml";
23 private static Logger log = LoggerFactory.getLogger(ToscaTypesDefinitionUtils.class);
25 public static ToscaAnnotationsTypesDefinition getToscaAnnotationsFromCsar(Component csarOwner, User user) throws Exception {
26 byte[] decodeBase64 = downloadComponentCsar(csarOwner, user);
27 String dataFromZipFileByBytes = getDataFromZipFileByBytes(ANNOTATIONS_TYPE_PATH, decodeBase64);
28 assertNotNull(dataFromZipFileByBytes);
29 return parseToscaAnnotationsYml(dataFromZipFileByBytes);
32 private static ToscaAnnotationsTypesDefinition parseToscaAnnotationsYml(String payload){
33 Constructor constructor = initToscaAnnotationDefObject();
34 return (ToscaAnnotationsTypesDefinition) parseToscaYamlPayload(payload, constructor);
37 private static Object parseToscaYamlPayload(String payload, Constructor constructor) {
38 Yaml yaml = new Yaml(constructor);
40 return yaml.load(payload);
41 } catch (Exception e) {
42 log.debug("Failed to parse tosca yaml file", e);
44 fail("Failed to parse tosca yaml file");
49 private static Constructor initToscaAnnotationDefObject() {
50 Constructor toscaStructure = new Constructor(ToscaAnnotationsTypesDefinition.class);
51 toscaStructure.addTypeDescription(ToscaAnnotationsTypesDefinition.getTypeDescription());
52 return toscaStructure;