7aa2d438a37e4b91b32253ab1cca37bd5ce43b19
[ccsdk/features.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"); you may not use this file except\r
5  * in compliance with the License. You may obtain a copy of the License at\r
6  * \r
7  * http://www.apache.org/licenses/LICENSE-2.0\r
8  * \r
9  * Unless required by applicable law or agreed to in writing, software distributed under the License\r
10  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express\r
11  * or implied. See the License for the specific language governing permissions and limitations under\r
12  * the License.\r
13  */\r
14 \r
15 package org.onap.ccsdk.config.assignment.service;\r
16 \r
17 import java.util.HashMap;\r
18 import java.util.List;\r
19 import java.util.Map;\r
20 import org.apache.commons.collections.CollectionUtils;\r
21 import org.apache.commons.lang3.StringUtils;\r
22 import org.onap.ccsdk.config.assignment.data.ResourceAssignmentData;\r
23 import org.onap.ccsdk.config.data.adaptor.domain.ConfigResource;\r
24 import org.onap.ccsdk.config.data.adaptor.service.ConfigResourceService;\r
25 import org.onap.ccsdk.config.generator.data.ConfigGeneratorInfo;\r
26 import org.onap.ccsdk.config.generator.service.ConfigGeneratorService;\r
27 import org.onap.ccsdk.config.model.ConfigModelConstant;\r
28 import org.onap.ccsdk.config.model.service.ConfigModelService;\r
29 import org.onap.ccsdk.sli.core.sli.SvcLogicException;\r
30 import com.att.eelf.configuration.EELFLogger;\r
31 import com.att.eelf.configuration.EELFManager;\r
32 \r
33 public class ConfigPreviewService {\r
34     private static EELFLogger logger = EELFManager.getInstance().getLogger(ConfigAssignmentPersistService.class);\r
35     private ConfigResourceService configResourceService;\r
36     private ConfigModelService configModelService;\r
37     private ConfigGeneratorService configGeneratorService;\r
38     \r
39     public ConfigPreviewService(ConfigResourceService configResourceService, ConfigModelService configModelService,\r
40             ConfigGeneratorService configGeneratorService) {\r
41         this.configResourceService = configResourceService;\r
42         this.configModelService = configModelService;\r
43         this.configGeneratorService = configGeneratorService;\r
44     }\r
45     \r
46     public String generatePreview(String templateContent, String templateData) throws SvcLogicException {\r
47         String mashedData = "";\r
48         ConfigGeneratorInfo configGeneratorInfo =\r
49                 configGeneratorService.generateConfiguration(templateContent, templateData);\r
50         if (configGeneratorInfo != null) {\r
51             mashedData = configGeneratorInfo.getMashedData();\r
52         }\r
53         return mashedData;\r
54     }\r
55     \r
56     public ResourceAssignmentData generateTemplateResourceMash(ResourceAssignmentData resourceAssignmentData)\r
57             throws SvcLogicException {\r
58         if (resourceAssignmentData == null) {\r
59             throw new SvcLogicException("Resource assignment data is missing");\r
60         }\r
61         if (StringUtils.isBlank(resourceAssignmentData.getServiceTemplateName())) {\r
62             throw new SvcLogicException("Service template name is missing");\r
63         }\r
64         if (StringUtils.isBlank(resourceAssignmentData.getServiceTemplateVersion())) {\r
65             throw new SvcLogicException("Service template version is missing");\r
66         }\r
67         if (StringUtils.isBlank(resourceAssignmentData.getResourceType())) {\r
68             throw new SvcLogicException("Resource type is missing");\r
69         }\r
70         if (StringUtils.isBlank(resourceAssignmentData.getResourceId())) {\r
71             throw new SvcLogicException("Resource Id is missing");\r
72         }\r
73         if (StringUtils.isBlank(resourceAssignmentData.getActionName())) {\r
74             throw new SvcLogicException("Action name is missing");\r
75         }\r
76         \r
77         String serviceTemplateName = resourceAssignmentData.getServiceTemplateName();\r
78         String serviceTemplateVersion = resourceAssignmentData.getServiceTemplateVersion();\r
79         String actionName = resourceAssignmentData.getActionName();\r
80         String resourceId = resourceAssignmentData.getResourceId();\r
81         String resourceType = resourceAssignmentData.getResourceType();\r
82         String inputData = "{}";\r
83         \r
84         Map<String, String> context = new HashMap<>();\r
85         context.put(ConfigModelConstant.PROPERTY_ACTION_NAME, actionName);\r
86         context = configModelService.prepareContext(context, inputData, serviceTemplateName, serviceTemplateVersion);\r
87         \r
88         ConfigResource configResourceQuery = new ConfigResource();\r
89         configResourceQuery.setServiceTemplateVersion(serviceTemplateName);\r
90         configResourceQuery.setServiceTemplateVersion(serviceTemplateVersion);\r
91         configResourceQuery.setRecipeName(actionName);\r
92         configResourceQuery.setResourceId(resourceId);\r
93         configResourceQuery.setResourceType(resourceType);\r
94         \r
95         List<ConfigResource> configResources = configResourceService.getConfigResource(configResourceQuery);\r
96         if (CollectionUtils.isNotEmpty(configResources)) {\r
97             for (ConfigResource cr : configResources) {\r
98                 String templateContent = context\r
99                         .get(ConfigModelConstant.PROPERTY_NODE_TEMPLATES_DOT + cr.getTemplateName() + ".content");\r
100                 String templateData = cr.getResourceData();\r
101                 String previewContent = generatePreview(templateContent, templateData);\r
102                 resourceAssignmentData.getTemplatesMashedContents().put(cr.getTemplateName(), previewContent);\r
103                 logger.info("Preview generated for template name ({}) ", cr.getTemplateName());\r
104                 logger.trace("Preview generated for preview ({}) ", previewContent);\r
105             }\r
106         } else {\r
107             logger.info(\r
108                     "Couldn't get config resource for service template name ({}) service template version ({})"\r
109                             + " action ({}) resource id ({}) resource type ({})",\r
110                     serviceTemplateName, serviceTemplateVersion, actionName, resourceId, resourceType);\r
111         }\r
112         return resourceAssignmentData;\r
113         \r
114     }\r
115     \r
116 }\r