2 * Copyright © 2017-2018 AT&T Intellectual Property.
\r
3 * Modifications Copyright © 2018 IBM.
\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
9 * http://www.apache.org/licenses/LICENSE-2.0
\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
18 package org.onap.ccsdk.features.assignment.service;
\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
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
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
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
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
64 if (StringUtils.isBlank(resourceAssignmentData.getServiceTemplateName())) {
\r
65 throw new SvcLogicException("Service template name is missing");
\r
67 if (StringUtils.isBlank(resourceAssignmentData.getServiceTemplateVersion())) {
\r
68 throw new SvcLogicException("Service template version is missing");
\r
70 if (StringUtils.isBlank(resourceAssignmentData.getResourceType())) {
\r
71 throw new SvcLogicException("Resource type is missing");
\r
73 if (StringUtils.isBlank(resourceAssignmentData.getResourceId())) {
\r
74 throw new SvcLogicException("Resource Id is missing");
\r
76 if (StringUtils.isBlank(resourceAssignmentData.getActionName())) {
\r
77 throw new SvcLogicException("Action name is missing");
\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
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
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
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
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
115 return resourceAssignmentData;
\r