e27d57a790765cae031db9dc6730209bff12a9fe
[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.List;\r
18 import org.apache.commons.collections.CollectionUtils;\r
19 import org.apache.commons.lang3.StringUtils;\r
20 import org.onap.ccsdk.config.data.adaptor.DataAdaptorConstants;\r
21 import org.onap.ccsdk.config.data.adaptor.domain.ConfigResource;\r
22 import org.onap.ccsdk.config.data.adaptor.domain.ResourceAssignmentData;\r
23 import org.onap.ccsdk.config.data.adaptor.domain.TransactionLog;\r
24 import org.onap.ccsdk.config.data.adaptor.service.ConfigResourceService;\r
25 import org.onap.ccsdk.config.model.ConfigModelConstant;\r
26 import org.onap.ccsdk.config.model.data.ResourceAssignment;\r
27 import org.onap.ccsdk.config.model.utils.ResourceAssignmentUtils;\r
28 import org.onap.ccsdk.config.model.utils.TransformationUtils;\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 ConfigAssignmentPersistService {\r
34     \r
35     private static EELFLogger logger = EELFManager.getInstance().getLogger(ConfigAssignmentPersistService.class);\r
36     \r
37     private ConfigResourceService configResourceService;\r
38     \r
39     public ConfigAssignmentPersistService(ConfigResourceService configResourceService) {\r
40         this.configResourceService = configResourceService;\r
41     }\r
42     \r
43     public void saveResourceMapping(org.onap.ccsdk.config.assignment.data.ResourceAssignmentData resourceAssignmentData,\r
44             String templateName, List<ResourceAssignment> resourceAssignments) throws SvcLogicException {\r
45         try {\r
46             \r
47             if (resourceAssignmentData == null) {\r
48                 throw new SvcLogicException("Resource assignment data is missing");\r
49             }\r
50             \r
51             if (StringUtils.isBlank(resourceAssignmentData.getRequestId())) {\r
52                 logger.warn("Request Id ({}) is missing, may be getting request for resource update.",\r
53                         resourceAssignmentData.getRequestId());\r
54             }\r
55             \r
56             if (StringUtils.isBlank(resourceAssignmentData.getResourceId())) {\r
57                 throw new SvcLogicException("Resource Id is missing");\r
58             }\r
59             \r
60             if (StringUtils.isBlank(resourceAssignmentData.getResourceType())) {\r
61                 throw new SvcLogicException("Resource type is missing");\r
62             }\r
63             \r
64             if (StringUtils.isBlank(resourceAssignmentData.getActionName())) {\r
65                 throw new SvcLogicException("Action name is missing");\r
66             }\r
67             \r
68             if (StringUtils.isBlank(templateName)) {\r
69                 throw new SvcLogicException("template name is missing");\r
70             }\r
71             \r
72             StringBuilder builder = new StringBuilder();\r
73             builder.append("Resource Assignment for Template Name :");\r
74             builder.append(templateName);\r
75             builder.append("\n");\r
76             builder.append(TransformationUtils.getJson(resourceAssignments, true));\r
77             \r
78             configResourceService.save(new TransactionLog(resourceAssignmentData.getRequestId(),\r
79                     DataAdaptorConstants.LOG_MESSAGE_TYPE_LOG, builder.toString()));\r
80             \r
81             // Resource Data should be Regenerated based on the new Updates\r
82             String resourceData = ResourceAssignmentUtils.generateResourceDataForAssignments(resourceAssignments);\r
83             \r
84             List<ResourceAssignmentData> resourceAssignmentDataList =\r
85                     ConfigAssignmentUtils.convertResoureAssignmentList(resourceAssignments);\r
86             \r
87             ConfigResource configResource = new ConfigResource();\r
88             configResource.setRequestId(resourceAssignmentData.getRequestId());\r
89             configResource.setServiceTemplateName(resourceAssignmentData.getServiceTemplateName());\r
90             configResource.setServiceTemplateVersion(resourceAssignmentData.getServiceTemplateVersion());\r
91             configResource.setRecipeName(resourceAssignmentData.getActionName());\r
92             configResource.setResourceId(resourceAssignmentData.getResourceId());\r
93             configResource.setResourceType(resourceAssignmentData.getResourceType());\r
94             configResource.setResourceData(resourceData);\r
95             configResource.setTemplateName(templateName);\r
96             configResource.setStatus(ConfigModelConstant.STATUS_SUCCESS);\r
97             configResource.setUpdatedBy(ConfigModelConstant.USER_SYSTEM);\r
98             \r
99             if (CollectionUtils.isNotEmpty(resourceAssignmentDataList)) {\r
100                 configResource.setResourceAssignments(resourceAssignmentDataList);\r
101             }\r
102             configResource = configResourceService.saveConfigResource(configResource);\r
103             logger.info("Resource data saved successfully for the template ({}) with resource id ({})", templateName,\r
104                     configResource.getResourceId());\r
105             \r
106             builder = new StringBuilder();\r
107             builder.append("Resource Data Template Name :");\r
108             builder.append(templateName);\r
109             builder.append("\n");\r
110             builder.append(resourceData);\r
111             configResourceService.save(new TransactionLog(resourceAssignmentData.getRequestId(),\r
112                     DataAdaptorConstants.LOG_MESSAGE_TYPE_LOG, builder.toString()));\r
113             \r
114         } catch (Exception e) {\r
115             throw new SvcLogicException("ConfigAssignmentPersistService : " + e.getMessage(), e);\r
116         }\r
117         \r
118     }\r
119     \r
120 }\r