2 * Copyright © 2017-2018 AT&T Intellectual Property.
\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
8 * http://www.apache.org/licenses/LICENSE-2.0
\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
17 package org.onap.ccsdk.apps.controllerblueprints.service.utils;
\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
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
41 public class ConfigModelUtils {
\r
43 private ConfigModelUtils() {
\r
47 private static EELFLogger log = EELFManager.getInstance().getLogger(ConfigModelUtils.class);
\r
49 public static ConfigModel getConfigModel(String blueprintPath) throws Exception {
\r
50 Preconditions.checkArgument(StringUtils.isNotBlank(blueprintPath), "Blueprint Path is missing");
\r
51 ToscaMetaData toscaMetaData = BluePrintMetadataUtils.Companion.toscaMetaData(blueprintPath);
\r
53 Preconditions.checkNotNull(toscaMetaData, "failed to get Blueprint Metadata information");
\r
54 Preconditions.checkArgument(StringUtils.isNotBlank(toscaMetaData.getEntityDefinitions()), "failed to get Blueprint Definition file");
\r
55 Preconditions.checkArgument(StringUtils.isNotBlank(toscaMetaData.getCreatedBy()), "failed to get Blueprint created by");
\r
56 Preconditions.checkArgument(StringUtils.isNotBlank(toscaMetaData.getToscaMetaFileVersion()), "failed to get Blueprint package version");
\r
58 String bluePrintName = FilenameUtils.getBaseName(toscaMetaData.getEntityDefinitions());
\r
59 Preconditions.checkArgument(StringUtils.isNotBlank(bluePrintName), "failed to get Blueprint Definition Name");
\r
61 // TODO - Update Rest of the Model
\r
62 ConfigModel configModel = new ConfigModel();
\r
63 configModel.setUpdatedBy(toscaMetaData.getCreatedBy());
\r
64 configModel.setArtifactName(bluePrintName);
\r
65 configModel.setArtifactVersion(toscaMetaData.getToscaMetaFileVersion());
\r
66 configModel.setTags(toscaMetaData.getTemplateTags());
\r
67 configModel.setArtifactType("SDNC_MODEL");
\r
69 String blueprintContent =
\r
70 getPathContent(blueprintPath + "/" + toscaMetaData.getEntityDefinitions());
\r
72 Preconditions.checkArgument(StringUtils.isNotBlank(blueprintPath), "failed to get Blueprint content");
\r
74 List<ConfigModelContent> configModelContents = new ArrayList<>();
\r
75 ConfigModelContent stConfigModelContent = new ConfigModelContent();
\r
76 stConfigModelContent.setName(configModel.getArtifactName());
\r
77 stConfigModelContent.setContentType(ConfigModelConstant.MODEL_CONTENT_TYPE_TOSCA_JSON);
\r
78 stConfigModelContent.setContent(blueprintContent);
\r
79 configModelContents.add(stConfigModelContent);
\r
81 String velocityDir = blueprintPath + "/Templates";
\r
82 List<File> velocityTemplateFiles = getFileOfExtension(velocityDir, new String[]{"vtl"});
\r
84 if (CollectionUtils.isNotEmpty(velocityTemplateFiles)) {
\r
85 for (File velocityTemplateFile : velocityTemplateFiles) {
\r
86 if (velocityTemplateFile != null) {
\r
87 String contentName = velocityTemplateFile.getName().replace(".vtl", "");
\r
88 ConfigModelContent velocityConfigModelContent = new ConfigModelContent();
\r
89 String velocityConfigContent = getPathContent(velocityTemplateFile);
\r
90 velocityConfigModelContent.setName(contentName);
\r
91 velocityConfigModelContent
\r
92 .setContentType(ConfigModelConstant.MODEL_CONTENT_TYPE_TEMPLATE);
\r
93 velocityConfigModelContent.setContent(velocityConfigContent);
\r
94 configModelContents.add(velocityConfigModelContent);
\r
95 log.info("Loaded blueprint template successfully: {}", velocityTemplateFile.getName());
\r
99 configModel.setConfigModelContents(configModelContents);
\r
101 return configModel;
\r
105 public static String getPathContent(String path) throws IOException {
\r
106 Preconditions.checkArgument(StringUtils.isNotBlank(path), "Path is missing");
\r
107 return FileUtils.readFileToString(new File(path), Charset.defaultCharset());
\r
110 public static String getPathContent(File file) throws IOException {
\r
111 Preconditions.checkNotNull(file, "File is missing");
\r
112 return FileUtils.readFileToString(file, Charset.defaultCharset());
\r
115 public static List<File> getFileOfExtension(String basePath, String[] extensions) {
\r
116 Preconditions.checkArgument(StringUtils.isNotBlank(basePath), "Path is missing");
\r
117 Preconditions.checkNotNull(extensions, "Extensions is missing");
\r
118 return (List<File>) FileUtils.listFiles(new File(basePath), extensions, true);
\r
121 public static List<String> getBlueprintNames(String pathName) {
\r
122 File blueprintDir = new File(pathName);
\r
123 Preconditions.checkNotNull(blueprintDir, "failed to find the blueprint pathName file");
\r
124 String[] dirs = blueprintDir.list(DirectoryFileFilter.INSTANCE);
\r
125 Preconditions.checkNotNull(dirs, "failed to find the blueprint directories" + blueprintDir.getAbsolutePath());
\r
126 return Arrays.asList(dirs);
\r