359e6fea85623b342edc2e930fc66652a20cc599
[appc.git] / appc-inbound / appc-artifact-handler / provider / src / main / java / org / onap / appc / artifact / handler / utils / ArtifactHandlerProviderUtil.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP : APPC
4  * ================================================================================
5  * Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Copyright (C) 2017 Amdocs
8  * =============================================================================
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  * ============LICENSE_END=========================================================
21  */
22
23 package org.onap.appc.artifact.handler.utils;
24
25 import com.att.eelf.configuration.EELFLogger;
26 import com.att.eelf.configuration.EELFManager;
27 import java.io.IOException;
28 import java.security.SecureRandom;
29 import java.util.HashMap;
30 import org.apache.commons.lang3.StringUtils;
31 import org.json.JSONObject;
32 import org.onap.appc.artifact.handler.node.ArtifactHandlerNode;
33 import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
34 import org.opendaylight.yang.gen.v1.org.onap.appc.artifacthandler.rev170321.UploadartifactInput;
35
36 public class ArtifactHandlerProviderUtil {
37
38     private static final EELFLogger log = EELFManager.getInstance().getLogger(ArtifactHandlerProviderUtil.class);
39     private UploadartifactInput templateData;
40     private SvcLogicContext context = null;
41
42     public ArtifactHandlerProviderUtil() { /*default constructor*/}
43
44     public ArtifactHandlerProviderUtil(UploadartifactInput input) {
45         this.templateData = input;
46         log.info("templateData " + this.templateData);
47     }
48
49     public static void loadProperties() {
50         // TODO Auto-generated method stub
51     }
52
53     public void processTemplate(String requestInfo) throws Exception {
54         if (context == null) {
55             context = new SvcLogicContext();
56         }
57
58         ArtifactHandlerNode node = new ArtifactHandlerNode();
59         try {
60
61             HashMap<String, String> processdata = new HashMap<>();
62             processdata.put("postData", requestInfo);
63             log.info("Post data = " + requestInfo);
64             node.processArtifact(processdata, context);
65         } catch (Exception e) {
66             log.error("Failed to process template", e);
67             throw e;
68         }
69     }
70
71     public String createDummyRequestData() throws IOException {
72
73         JSONObject info = new JSONObject(this.templateData);
74         log.info("INFO = " + info);
75
76         JSONObject json = new JSONObject();
77         JSONObject requestInfo = new JSONObject();
78         String random = getRandom();
79
80         requestInfo.put(SdcArtifactHandlerConstants.REQUEST_ID, "TLRID-" + random);
81         requestInfo.put(SdcArtifactHandlerConstants.REQUEST_ACTION, "StoreSdcDocumentRequest");
82         requestInfo.put(SdcArtifactHandlerConstants.SOURCE, "TemplateLoader");
83
84         JSONObject docParams = new JSONObject();
85         docParams.put(SdcArtifactHandlerConstants.SERVICE_UUID,
86                 "TLSUUID" + templateData.getRequestInformation().getRequestId());
87         docParams.put(SdcArtifactHandlerConstants.DISTRIBUTION_ID, "TLDID" + random);
88         docParams.put(SdcArtifactHandlerConstants.SERVICE_NAME, "TLServiceName");
89         docParams.put(SdcArtifactHandlerConstants.SERVICE_DESCRIPTION, "Template Loader Test");
90         docParams.put(SdcArtifactHandlerConstants.SERVICE_ARTIFACTS, "[]");
91         docParams.put(SdcArtifactHandlerConstants.RESOURCE_UUID, "TLRUID" + random);
92         docParams.put(SdcArtifactHandlerConstants.RESOURCE_INSTANCE_NAME, "TLRIName");
93         docParams.put(SdcArtifactHandlerConstants.RESOURCE_NAME, "TLResourceName");
94         docParams.put(SdcArtifactHandlerConstants.RESOURCE_VERSION, "TLResourceVersion");
95         docParams.put(SdcArtifactHandlerConstants.RESOURCE_TYPE, "TLResourceType");
96         docParams.put(SdcArtifactHandlerConstants.ARTIFACT_UUID, "TLAUUID" + random);
97         docParams
98                 .put(SdcArtifactHandlerConstants.ARTIFACT_NAME, templateData.getDocumentParameters().getArtifactName());
99         docParams.put(SdcArtifactHandlerConstants.ARTIFACT_TYPE, "APPC-CONFIG");
100         docParams.put(SdcArtifactHandlerConstants.ARTIFACT_VERSION,
101                 templateData.getDocumentParameters().getArtifactVersion());
102         docParams.put(SdcArtifactHandlerConstants.ARTIFACT_DESCRIPTION, "SdcTestDescription");
103         docParams.put("artifact-contents", templateData.getDocumentParameters().getArtifactContents());
104         json.put(SdcArtifactHandlerConstants.REQUEST_INFORMATION, requestInfo);
105         json.put(SdcArtifactHandlerConstants.DOCUMENT_PARAMETERS, docParams);
106
107         log.info("Final data = " + this.templateData);
108         return String.format("{\"input\": %s}", json.toString());
109     }
110
111     private String getRandom() {
112         SecureRandom random = new SecureRandom();
113         int num = random.nextInt(100000);
114         return String.format("%05d", num);
115     }
116
117     public String escapeSql(String str) {
118         if (str == null) {
119             return null;
120         }
121         String[] searchList = new String[]{"'", "\\"};
122         String[] replacementList = new String[]{"''", "\\\\"};
123         return StringUtils.replaceEach(str, searchList, replacementList);
124     }
125
126     public String createRequestData() throws IOException {
127
128         JSONObject info = new JSONObject(templateData);
129         log.info("INFO = " + info);
130         JSONObject json = new JSONObject();
131         JSONObject requestInfo = new JSONObject();
132
133         requestInfo.put(SdcArtifactHandlerConstants.REQUEST_ID, templateData.getRequestInformation().getRequestId());
134         requestInfo.put(SdcArtifactHandlerConstants.REQUEST_ACTION, "StoreSdcDocumentRequest");
135         requestInfo.put(SdcArtifactHandlerConstants.SOURCE, templateData.getRequestInformation().getSource());
136
137         String serviceDescription = serviceDescriptionData(
138                 templateData.getDocumentParameters().getServiceDescription());
139
140         JSONObject docParams = new JSONObject();
141         docParams.put(SdcArtifactHandlerConstants.SERVICE_UUID, templateData.getDocumentParameters().getResourceUuid());
142         docParams.put(SdcArtifactHandlerConstants.DISTRIBUTION_ID,
143                 templateData.getDocumentParameters().getDistributionId());
144         docParams.put(SdcArtifactHandlerConstants.SERVICE_NAME, templateData.getDocumentParameters().getServiceName());
145         docParams.put(SdcArtifactHandlerConstants.SERVICE_DESCRIPTION, serviceDescription);
146         docParams.put(SdcArtifactHandlerConstants.SERVICE_ARTIFACTS,
147                 templateData.getDocumentParameters().getServiceArtifacts());
148         docParams
149                 .put(SdcArtifactHandlerConstants.RESOURCE_UUID, templateData.getDocumentParameters().getResourceUuid());
150         docParams.put(SdcArtifactHandlerConstants.RESOURCE_INSTANCE_NAME,
151                 templateData.getDocumentParameters().getResourceInstanceName());
152         docParams
153                 .put(SdcArtifactHandlerConstants.RESOURCE_NAME, templateData.getDocumentParameters().getResourceName());
154         docParams.put(SdcArtifactHandlerConstants.RESOURCE_VERSION,
155                 templateData.getDocumentParameters().getResourceVersion());
156         docParams
157                 .put(SdcArtifactHandlerConstants.RESOURCE_TYPE, templateData.getDocumentParameters().getResourceType());
158         docParams
159                 .put(SdcArtifactHandlerConstants.ARTIFACT_UUID, templateData.getDocumentParameters().getArtifactUuid());
160         docParams
161                 .put(SdcArtifactHandlerConstants.ARTIFACT_NAME, templateData.getDocumentParameters().getArtifactName());
162         docParams
163                 .put(SdcArtifactHandlerConstants.ARTIFACT_TYPE, templateData.getDocumentParameters().getArtifactType());
164         docParams.put(SdcArtifactHandlerConstants.ARTIFACT_VERSION,
165                 templateData.getDocumentParameters().getArtifactVersion());
166         docParams.put(SdcArtifactHandlerConstants.ARTIFACT_DESCRIPTION,
167                 templateData.getDocumentParameters().getArtifactDescription());
168
169         docParams.put("artifact-contents", templateData.getDocumentParameters().getArtifactContents());
170
171         json.put(SdcArtifactHandlerConstants.REQUEST_INFORMATION, requestInfo);
172         json.put(SdcArtifactHandlerConstants.DOCUMENT_PARAMETERS, docParams);
173         log.info("Final data = " + this.templateData);
174         return String.format("{\"input\": %s}", json.toString());
175     }
176
177     private String serviceDescriptionData(String serviceDescription) {
178         if (!StringUtils.isBlank(serviceDescription) && serviceDescription.length() > 255) {
179             return serviceDescription.substring(0, 255);
180         }
181         return serviceDescription;
182     }
183
184     public enum DistributionStatusEnum {
185         DOWNLOAD_OK,
186         DOWNLOAD_ERROR,
187         ALREADY_DOWNLOADED,
188         DEPLOY_OK,
189         DEPLOY_ERROR,
190         ALREADY_DEPLOYED;
191     }
192 }