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