e9ee1bc0ad597959951114bc38cdc5142c05bf27
[ccsdk/cds.git] /
1 /*\r
2  * Copyright © 2017-2018 AT&T Intellectual Property.\r
3  *\r
4  * Licensed under the Apache License, Version 2.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  *     http://www.apache.org/licenses/LICENSE-2.0\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  */\r
16 \r
17 package org.onap.ccsdk.apps.controllerblueprints.service.utils;\r
18 \r
19 import com.google.common.base.Preconditions;\r
20 import org.apache.commons.collections.CollectionUtils;\r
21 import org.apache.commons.io.FileUtils;\r
22 import org.apache.commons.io.FilenameUtils;\r
23 import org.apache.commons.io.filefilter.DirectoryFileFilter;\r
24 import org.apache.commons.lang3.StringUtils;\r
25 import org.onap.ccsdk.apps.controllerblueprints.core.ConfigModelConstant;\r
26 import org.onap.ccsdk.apps.controllerblueprints.core.data.ToscaMetaData;\r
27 import org.onap.ccsdk.apps.controllerblueprints.core.utils.BluePrintMetadataUtils;\r
28 import org.onap.ccsdk.apps.controllerblueprints.service.domain.ConfigModel;\r
29 import org.onap.ccsdk.apps.controllerblueprints.service.domain.ConfigModelContent;\r
30 import com.att.eelf.configuration.EELFLogger;\r
31 import com.att.eelf.configuration.EELFManager;\r
32 \r
33 import java.io.File;\r
34 import java.io.IOException;\r
35 import java.nio.charset.Charset;\r
36 import java.util.ArrayList;\r
37 import java.util.Arrays;\r
38 import java.util.List;\r
39 \r
40 public class ConfigModelUtils {\r
41 \r
42     private ConfigModelUtils() {\r
43 \r
44     }\r
45 \r
46     private static EELFLogger log = EELFManager.getInstance().getLogger(ConfigModelUtils.class);\r
47 \r
48     public static ConfigModel getConfigModel(String blueprintPath) throws Exception {\r
49         Preconditions.checkArgument(StringUtils.isNotBlank(blueprintPath), "Blueprint Path is missing");\r
50         ToscaMetaData toscaMetaData = BluePrintMetadataUtils.toscaMetaData(blueprintPath);\r
51 \r
52         Preconditions.checkNotNull(toscaMetaData, "failed to get Blueprint Metadata information");\r
53         Preconditions.checkArgument(StringUtils.isNotBlank(toscaMetaData.getEntityDefinitions()), "failed to get Blueprint Definition file");\r
54         Preconditions.checkArgument(StringUtils.isNotBlank(toscaMetaData.getCreatedBy()), "failed to get Blueprint created by");\r
55         Preconditions.checkArgument(StringUtils.isNotBlank(toscaMetaData.getToscaMetaFileVersion()), "failed to get Blueprint package version");\r
56 \r
57         String bluePrintName = FilenameUtils.getBaseName(toscaMetaData.getEntityDefinitions());\r
58         Preconditions.checkArgument(StringUtils.isNotBlank(bluePrintName), "failed to get Blueprint Definition Name");\r
59 \r
60         // TODO - Update Rest of the Model\r
61         ConfigModel configModel = new ConfigModel();\r
62         configModel.setUpdatedBy(toscaMetaData.getCreatedBy());\r
63         configModel.setArtifactName(bluePrintName);\r
64         configModel.setArtifactVersion(toscaMetaData.getToscaMetaFileVersion());\r
65         configModel.setTags(toscaMetaData.getTemplateTags());\r
66         configModel.setArtifactType("SDNC_MODEL");\r
67 \r
68         String blueprintContent =\r
69                 getPathContent(blueprintPath + "/" + toscaMetaData.getEntityDefinitions());\r
70 \r
71         Preconditions.checkArgument(StringUtils.isNotBlank(blueprintPath), "failed to get Blueprint content");\r
72 \r
73         List<ConfigModelContent> configModelContents = new ArrayList<>();\r
74         ConfigModelContent stConfigModelContent = new ConfigModelContent();\r
75         stConfigModelContent.setName(configModel.getArtifactName());\r
76         stConfigModelContent.setContentType(ConfigModelConstant.MODEL_CONTENT_TYPE_TOSCA_JSON);\r
77         stConfigModelContent.setContent(blueprintContent);\r
78         configModelContents.add(stConfigModelContent);\r
79 \r
80         String velocityDir = blueprintPath + "/Templates";\r
81         List<File> velocityTemplateFiles = getFileOfExtension(velocityDir, new String[]{"vtl"});\r
82 \r
83         if (CollectionUtils.isNotEmpty(velocityTemplateFiles)) {\r
84             for (File velocityTemplateFile : velocityTemplateFiles) {\r
85                 if (velocityTemplateFile != null) {\r
86                     String contentName = velocityTemplateFile.getName().replace(".vtl", "");\r
87                     ConfigModelContent velocityConfigModelContent = new ConfigModelContent();\r
88                     String velocityConfigContent = getPathContent(velocityTemplateFile);\r
89                     velocityConfigModelContent.setName(contentName);\r
90                     velocityConfigModelContent\r
91                             .setContentType(ConfigModelConstant.MODEL_CONTENT_TYPE_TEMPLATE);\r
92                     velocityConfigModelContent.setContent(velocityConfigContent);\r
93                     configModelContents.add(velocityConfigModelContent);\r
94                     log.info("Loaded blueprint template successfully: {}", velocityTemplateFile.getName());\r
95                 }\r
96             }\r
97         }\r
98         configModel.setConfigModelContents(configModelContents);\r
99 \r
100         return configModel;\r
101 \r
102     }\r
103 \r
104     public static String getPathContent(String path) throws IOException {\r
105         Preconditions.checkArgument(StringUtils.isNotBlank(path), "Path is missing");\r
106         return FileUtils.readFileToString(new File(path), Charset.defaultCharset());\r
107     }\r
108 \r
109     public static String getPathContent(File file) throws IOException {\r
110         Preconditions.checkNotNull(file, "File is missing");\r
111         return FileUtils.readFileToString(file, Charset.defaultCharset());\r
112     }\r
113 \r
114     public static List<File> getFileOfExtension(String basePath, String[] extensions) {\r
115         Preconditions.checkArgument(StringUtils.isNotBlank(basePath), "Path is missing");\r
116         Preconditions.checkNotNull(extensions, "Extensions is missing");\r
117         return (List<File>) FileUtils.listFiles(new File(basePath), extensions, true);\r
118     }\r
119 \r
120     public static List<String> getBlueprintNames(String pathName) {\r
121         File blueprintDir = new File(pathName);\r
122         Preconditions.checkNotNull(blueprintDir, "failed to find the blueprint pathName file");\r
123         String[] dirs = blueprintDir.list(DirectoryFileFilter.INSTANCE);\r
124         Preconditions.checkNotNull(dirs, "failed to find the blueprint directories" + blueprintDir.getAbsolutePath());\r
125         return Arrays.asList(dirs);\r
126     }\r
127 }\r