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