1 package org.openecomp.vid.mso;
3 import com.fasterxml.jackson.databind.DeserializationFeature;
4 import com.fasterxml.jackson.databind.ObjectMapper;
5 import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
6 import org.openecomp.portalsdk.core.util.SystemProperties;
7 import org.openecomp.vid.controller.MsoController;
8 import org.openecomp.vid.mso.rest.*;
10 import java.text.DateFormat;
11 import java.text.SimpleDateFormat;
12 import java.util.ArrayList;
13 import java.util.Date;
14 import java.util.List;
16 import static org.openecomp.vid.controller.MsoController.SVC_INSTANCE_ID;
17 import static org.openecomp.vid.controller.MsoController.REQUEST_TYPE;
18 import static org.openecomp.vid.controller.MsoController.VNF_INSTANCE_ID;
21 * Created by pickjonathan on 19/06/2017.
23 public class MsoBusinessLogic {
27 * This should be replaced with mso client factory.
29 private MsoInterface msoClientInterface;
34 EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MsoController.class);
37 * The Constant dateFormat.
39 final static DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss:SSSS");
41 public MsoBusinessLogic() {
42 msoClientInterface = MsoRestInterfaceFactory.getInstance();
45 // this function should get params from tosca and send them to instance at mso, then return success response.
46 public MsoResponseWrapper createSvcInstance(RequestDetails msoRequest) throws Exception {
47 String methodName = "createSvcInstance ";
48 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
52 endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_SVC_INSTANCE);
53 } catch (Exception exception) {
57 return msoClientInterface.createSvcInstance(msoRequest, endpoint);
60 public MsoResponseWrapper createVnf(RequestDetails requestDetails, String serviceInstanceId) throws Exception {
61 String methodName = "createVnf";
62 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
66 endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VNF_INSTANCE);
67 } catch (Exception exception) {
71 String vnf_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
72 return msoClientInterface.createVnf(requestDetails, vnf_endpoint);
75 public MsoResponseWrapper createNwInstance(RequestDetails requestDetails, String serviceInstanceId) throws Exception {
76 String methodName = "createNwInstance";
77 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
81 endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_NETWORK_INSTANCE);
82 } catch (Exception exception) {
86 String nw_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
87 return msoClientInterface.createNwInstance(requestDetails, nw_endpoint);
90 public MsoResponseWrapper createVolumeGroupInstance(RequestDetails requestDetails, String serviceInstanceId, String vnfInstanceId) throws Exception {
91 String methodName = "createVolumeGroupInstance";
92 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
96 endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VOLUME_GROUP_INSTANCE);
97 } catch (Exception exception) {
101 String vnf_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
102 vnf_endpoint = vnf_endpoint.replaceFirst(VNF_INSTANCE_ID, vnfInstanceId);
104 return msoClientInterface.createVolumeGroupInstance(requestDetails, vnf_endpoint);
107 public MsoResponseWrapper createVfModuleInstance(RequestDetails requestDetails, String serviceInstanceId, String vnfInstanceId) throws Exception{
108 String methodName = "createVfModuleInstance";
109 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
113 endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VF_MODULE_INSTANCE);
114 } catch (Exception exception) {
118 String partial_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
119 String vf_module_endpoint = partial_endpoint.replaceFirst(VNF_INSTANCE_ID, vnfInstanceId);
121 return msoClientInterface.createVfModuleInstance(requestDetails, vf_module_endpoint);
124 public MsoResponseWrapper deleteSvcInstance(RequestDetails requestDetails, String serviceInstanceId) throws Exception{
125 String methodName = "deleteSvcInstance";
126 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
130 endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_SVC_INSTANCE);
131 } catch (Exception exception) {
135 String svc_endpoint = endpoint + "/" + serviceInstanceId;
137 return msoClientInterface.deleteSvcInstance(requestDetails, svc_endpoint);
140 public MsoResponseWrapper deleteVnf(RequestDetails requestDetails, String serviceInstanceId, String vnfInstanceId) throws Exception{
141 String methodName = "deleteVnf";
142 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
146 endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VNF_INSTANCE);
147 } catch (Exception exception) {
150 String vnf_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
151 vnf_endpoint = vnf_endpoint + '/' + vnfInstanceId;
153 return msoClientInterface.deleteVnf(requestDetails, vnf_endpoint);
156 public MsoResponseWrapper deleteVfModule(RequestDetails requestDetails, String serviceInstanceId, String vnfInstanceId, String vfModuleId) throws Exception{
157 String methodName = "deleteVfModule";
158 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
162 endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VF_MODULE_INSTANCE);
163 } catch (Exception exception) {
167 String vf__modules_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId).replaceFirst(VNF_INSTANCE_ID, vnfInstanceId);
169 String delete_vf_endpoint = vf__modules_endpoint + '/' + vfModuleId;
171 return msoClientInterface.deleteVfModule(requestDetails, delete_vf_endpoint);
174 public MsoResponseWrapper deleteVolumeGroupInstance(RequestDetails requestDetails, String serviceInstanceId, String vnfInstanceId, String volumeGroupId)throws Exception{
175 String methodName = "deleteVolumeGroupInstance";
176 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
180 endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VOLUME_GROUP_INSTANCE);
181 } catch (Exception exception) {
185 String svc_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
186 String vnf_endpoint = svc_endpoint.replaceFirst(VNF_INSTANCE_ID, vnfInstanceId);
187 String delete_volume_group_endpoint = vnf_endpoint + "/" + volumeGroupId;
189 return msoClientInterface.deleteVolumeGroupInstance(requestDetails, delete_volume_group_endpoint);
192 public MsoResponseWrapper deleteNwInstance(RequestDetails requestDetails, String serviceInstanceId, String networkInstanceId) throws Exception{
193 String methodName = "deleteNwInstance";
194 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
198 endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_NETWORK_INSTANCE);
199 } catch (Exception exception) {
203 String svc_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
204 String delete_nw_endpoint = svc_endpoint + "/" + networkInstanceId;
206 return msoClientInterface.deleteNwInstance(requestDetails, delete_nw_endpoint);
209 public MsoResponseWrapper getOrchestrationRequest(String requestId)throws Exception{
210 String methodName = "getOrchestrationRequest";
211 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
212 MsoResponseWrapper w = null;
214 String p = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_ORC_REQ);
215 String path = p + "/" + requestId;
217 RestObject<String> restObjStr = new RestObject<String>();
218 String str = new String();
221 msoClientInterface.getOrchestrationRequest(str, "", path, restObjStr);
223 return MsoUtil.wrapResponse(restObjStr);
225 } catch (Exception e) {
226 logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
227 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
232 public MsoResponseWrapper getOrchestrationRequests(String filterString)throws Exception{
233 String methodName = "getOrchestrationRequest";
234 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
235 MsoResponseWrapper w = null;
237 String p = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_ORC_REQS);
238 String path = p + filterString;
240 RestObject<String> restObjStr = new RestObject<String>();
241 String str = new String();
244 msoClientInterface.getOrchestrationRequest(str, "", path, restObjStr);
246 return MsoUtil.wrapResponse(restObjStr);
248 } catch (Exception e) {
249 logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
250 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
255 public List<Request> getOrchestrationRequestsForDashboard()throws Exception{
256 String methodName = "getOrchestrationRequestsForDashboard";
257 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
260 String path = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_ORC_REQS);
261 path += "filter=modelType:EQUALS:vnf";
262 RestObject<String> restObjStr = new RestObject<String>();
263 String str = new String();
266 MsoResponseWrapper msoResponseWrapper = msoClientInterface.getOrchestrationRequestsForDashboard(str, "", path, restObjStr);
267 List<RequestWrapper> allOrchestrationRequests = deserializeOrchestrationRequestsJson(msoResponseWrapper.getEntity());
269 List<Request> filteredOrchestrationRequests = new ArrayList<>();
270 for (RequestWrapper currentRequest:allOrchestrationRequests){
271 if ((currentRequest.getRequest() != null) && (currentRequest.getRequest().getRequestScope() == Request.RequestScope.VNF) && ((currentRequest.getRequest().getRequestType() ==
272 Request.RequestType.REPLACE_INSTANCE)||(currentRequest.getRequest().getRequestType() ==
273 Request.RequestType.UPDATE_INSTANCE) )) {
274 filteredOrchestrationRequests.add(currentRequest.getRequest());
277 return filteredOrchestrationRequests;
278 } catch (Exception e) {
279 logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
280 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
286 private List<RequestWrapper> deserializeOrchestrationRequestsJson(String orchestrationRequestsJson) throws Exception {
287 String methodName = "deserializeOrchestrationRequestsJson";
288 logger.debug(dateFormat.format(new Date()) + "<== " + methodName + " start");
290 ObjectMapper mapper = new ObjectMapper();
291 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
292 mapper.configure(DeserializationFeature.READ_ENUMS_USING_TO_STRING, true);
293 RequestList requestList = mapper.readValue(orchestrationRequestsJson , RequestList.class);
294 return requestList.getRequestList();
298 public List<Task> getManualTasksByRequestId(String originalRequestId)throws Exception{
299 String methodName = "getManualTasksByRequestId";
300 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
303 String p = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_MAN_TASKS);
304 String path = p + "?originalRequestId=" + originalRequestId;
306 RestObject<String> restObjStr = new RestObject<String>();
307 String str = new String();
310 MsoResponseWrapper msoResponseWrapper = msoClientInterface.getManualTasksByRequestId(str, "", path, restObjStr);
311 return deserializeManualTasksJson(msoResponseWrapper.getEntity());
313 } catch (Exception e) {
314 logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
315 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
320 private List<Task> deserializeManualTasksJson(String manualTasksJson) throws Exception{
321 String methodName = "deserializeManualTasksJson";
322 logger.debug(dateFormat.format(new Date()) + "<== " + methodName + " start");
324 ObjectMapper mapper = new ObjectMapper();
325 TaskList taskList = mapper.readValue(manualTasksJson , TaskList.class);
326 return taskList.getTaskList();
330 public MsoResponseWrapper completeManualTask(RequestDetails requestDetails , String taskId)throws Exception{
331 String methodName = "completeManualTask";
332 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
333 MsoResponseWrapper w = null;
335 String p = SystemProperties.getProperty(MsoProperties.MSO_REST_API_GET_MAN_TASKS);
336 String path = p + "/" + taskId + "/complete";
338 RestObject<String> restObjStr = new RestObject<String>();
339 String str = new String();
342 msoClientInterface.completeManualTask(requestDetails , str, "", path, restObjStr);
344 return MsoUtil.wrapResponse(restObjStr);
346 } catch (Exception e) {
347 logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
348 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
353 public MsoResponseWrapper activateServiceInstance(RequestDetails requestDetails , String serviceInstanceId)throws Exception{
354 String methodName = "activateServiceInstance";
355 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
357 String path ="/" + serviceInstanceId + "/activate";
359 RestObject<String> restObjStr = new RestObject<>();
363 msoClientInterface.activateServiceInstance(requestDetails , str, "", path, restObjStr);
365 return MsoUtil.wrapResponse(restObjStr);
367 } catch (Exception e) {
368 logger.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
369 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
377 private String validateEndpointPath(String endpointEnvVariable) throws Exception {
378 String endpoint = SystemProperties.getProperty(endpointEnvVariable);
379 if (endpoint == null || endpoint.isEmpty()) {
380 throw new Exception(endpointEnvVariable + " env variable is not defined");
385 public MsoResponseWrapper updateVnf(org.openecomp.vid.changeManagement.RequestDetails requestDetails, String serviceInstanceId, String vnfInstanceId) throws Exception {
386 String methodName = "updateVnf";
387 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
391 endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VNF_INSTANCE);
392 } catch (Exception exception) {
395 String vnf_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
396 vnf_endpoint = vnf_endpoint + '/' + vnfInstanceId;
397 return msoClientInterface.updateVnf(requestDetails, vnf_endpoint);
400 public MsoResponseWrapper replaceVnf(org.openecomp.vid.changeManagement.RequestDetails requestDetails, String serviceInstanceId, String vnfInstanceId) throws Exception {
401 String methodName = "replaceVnf";
402 logger.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
406 endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VNF_CHANGE_MANAGEMENT_INSTANCE);
407 } catch (Exception exception) {
410 String vnf_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, serviceInstanceId);
411 vnf_endpoint = vnf_endpoint.replace(VNF_INSTANCE_ID, vnfInstanceId);
412 vnf_endpoint = vnf_endpoint.replace(REQUEST_TYPE, "replace"); //No Constants file, TODO: once you create - add it.
413 return msoClientInterface.replaceVnf(requestDetails, vnf_endpoint);