blob: 53cdde7f2c7fcd651f73aba0b57e6361b0759c5d [file] [log] [blame]
/*-
* ============LICENSE_START=======================================================
* OSAM
* ================================================================================
* Copyright (C) 2018 AT&T
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============LICENSE_END=========================================================
*/
package org.onap.osam.controllers;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.onap.osam.model.ExceptionResponse;
import org.onap.osam.mso.MsoBusinessLogic;
import org.onap.osam.mso.MsoResponseWrapper;
import org.onap.osam.mso.rest.Request;
import org.onap.osam.mso.rest.RequestDetails;
import org.onap.osam.mso.rest.RequestDetailsWrapper;
import org.onap.osam.mso.rest.Task;
import org.onap.portalsdk.core.controller.RestrictedBaseController;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
import static org.onap.osam.utils.Logging.getMethodName;
//import java.util.UUID;
//import org.springframework.http.ResponseEntity;
//import org.springframework.http.RequestEntity;
@RestController
@RequestMapping("mso")
public class MsoController extends RestrictedBaseController {
private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(MsoController.class);
/**
* The Constant dateFormat.
*/
private final static DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss:SSSS");
/**
* The Constant SVC_INSTANCE_ID.
*/
public final static String SVC_INSTANCE_ID = "<service_instance_id>";
public final static String REQUEST_TYPE = "<request_type>";
/**
* The Constant CONFIGURATION_ID
*/
public final static String CONFIGURATION_ID = "<configuration_id>";
/**
* The Constant VNF_INSTANCE_ID.
*/
public final static String VNF_INSTANCE_ID = "<vnf_instance_id>";
private final MsoBusinessLogic msoBusinessLogic;
@Autowired
public MsoController(MsoBusinessLogic msoBusinessLogic) {
this.msoBusinessLogic = msoBusinessLogic;
}
/**
* Creates the svc instance.
*
* @param request the request
* @return the response entity
* @throws Exception the exception
*/
@RequestMapping(value = "/mso_create_svc_instance", method = RequestMethod.POST)
public ResponseEntity<String> createSvcInstance(HttpServletRequest request, @RequestBody RequestDetails mso_request) {
String methodName = "createSvcInstance";
LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
// always return OK, the MSO status code is embedded in the body
MsoResponseWrapper w = msoBusinessLogic.createSvcInstance(mso_request);
return (new ResponseEntity<>(w.getResponse(), HttpStatus.OK));
}
/**
* Creates the e2e svc instance.
*
* @param request the request
* @return the response entity
* @throws Exception the exception
*/
@RequestMapping(value = "/mso_create_e2e_svc_instance", method = RequestMethod.POST)
public ResponseEntity<String> createE2eSvcInstance(HttpServletRequest request, @RequestBody LinkedHashMap<String, Object> mso_request) {
String methodName = "createE2eSvcInstance";
LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
// always return OK, the MSO status code is embedded in the body
MsoResponseWrapper w = msoBusinessLogic.createE2eSvcInstance(mso_request.get("requestDetails"));
return (new ResponseEntity<>(w.getResponse(), HttpStatus.OK));
}
/**
* Creates the vnf.
*
* @param serviceInstanceId the service instance id
* @param request the request
* @return the response entity
* @throws Exception the exception
*/
@RequestMapping(value = "/mso_create_vnf_instance/{serviceInstanceId}", method = RequestMethod.POST)
public ResponseEntity<String> createVnf(@PathVariable("serviceInstanceId") String serviceInstanceId, HttpServletRequest request, @RequestBody RequestDetails mso_request) {
MsoResponseWrapper w = msoBusinessLogic.createVnf(mso_request, serviceInstanceId);
// always return OK, the MSO status code is embedded in the body
return (new ResponseEntity<String>(w.getResponse(), HttpStatus.OK));
}
/**
* Creates the nw instance.
*
* @param serviceInstanceId the service instance id
* @param request the request
* @return the response entity
* @throws Exception the exception
*/
@RequestMapping(value = "/mso_create_nw_instance/{serviceInstanceId}", method = RequestMethod.POST)
public ResponseEntity<String> createNwInstance(@PathVariable("serviceInstanceId") String serviceInstanceId, HttpServletRequest request, @RequestBody RequestDetails mso_request) {
String methodName = "createNwInstance";
LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start, serviceInstanceId = " + serviceInstanceId);
MsoResponseWrapper w = msoBusinessLogic.createNwInstance(mso_request, serviceInstanceId);
return (new ResponseEntity<String>(w.getResponse(), HttpStatus.OK));
}
/**
* Creates the volume group instance.
*
* @param serviceInstanceId the service instance id
* @param vnfInstanceId the vnf instance id
* @param request the request
* @return the response entity
* @throws Exception the exception
*/
@RequestMapping(value = "/mso_create_volumegroup_instance/{serviceInstanceId}/vnfs/{vnfInstanceId}", method = RequestMethod.POST)
public ResponseEntity<String> createVolumeGroupInstance(@PathVariable("serviceInstanceId") String serviceInstanceId, @PathVariable("vnfInstanceId") String vnfInstanceId,
HttpServletRequest request, @RequestBody RequestDetails mso_request) {
String methodName = "createVolumeGroupInstance";
LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
MsoResponseWrapper w = msoBusinessLogic.createVolumeGroupInstance(mso_request, serviceInstanceId, vnfInstanceId);
// always return OK, the MSO status code is embedded in the body
return (new ResponseEntity<String>(w.getResponse(), HttpStatus.OK));
}
/**
* Creates the vf module instance.
*
* @param serviceInstanceId the service instance id
* @param vnfInstanceId the vnf instance id
* @param request the request
* @return the response entity
* @throws Exception the exception
*/
@RequestMapping(value = "/mso_create_vfmodule_instance/{serviceInstanceId}/vnfs/{vnfInstanceId}", method = RequestMethod.POST)
public ResponseEntity<String> createVfModuleInstance(@PathVariable("serviceInstanceId") String serviceInstanceId,
@PathVariable("vnfInstanceId") String vnfInstanceId, HttpServletRequest request, @RequestBody RequestDetails mso_request) {
String methodName = "createVfModuleInstance";
LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
MsoResponseWrapper w = msoBusinessLogic.createVfModuleInstance(mso_request, serviceInstanceId, vnfInstanceId);
// always return OK, the MSO status code is embedded in the body
return (new ResponseEntity<String>(w.getResponse(), HttpStatus.OK));
}
/**
* Creates a configuration instance.
*
* @param serviceInstanceId the service instance id
* @param request the request
* @return the response entity
* @throws Exception the exception
*/
@RequestMapping(value = "/mso_create_configuration_instance/{serviceInstanceId}/configurations/", method = RequestMethod.POST)
public ResponseEntity<String> createConfigurationInstance(@PathVariable("serviceInstanceId") String serviceInstanceId,
HttpServletRequest request, @RequestBody RequestDetailsWrapper mso_request) {
String methodName = "createConfigurationInstance";
LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
MsoResponseWrapper w = msoBusinessLogic.createConfigurationInstance(mso_request, serviceInstanceId);
// always return OK, the MSO status code is embedded in the body
return (new ResponseEntity<>(w.getResponse(), HttpStatus.OK));
}
/**
* Delete E2e svc instance.
*
* @param serviceInstanceId the service instance id
* @param request the request
* @return the response entity
* @throws Exception the exception
*/
@RequestMapping(value = "/mso_delete_e2e_svc_instance/{serviceInstanceId}", method = RequestMethod.POST)
public ResponseEntity<String> deleteE2eSvcInstance(@PathVariable("serviceInstanceId") String serviceInstanceId,
HttpServletRequest request, @RequestBody LinkedHashMap<String, Object> mso_request) {
String methodName = "deleteE2eSvcInstance";
LOGGER.debug(EELFLoggerDelegate.debugLogger, "start {}({})", getMethodName(), mso_request);
MsoResponseWrapper w = msoBusinessLogic.deleteE2eSvcInstance(mso_request.get("requestDetails"), serviceInstanceId);
LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " w=" + w.getResponse());
// always return OK, the MSO status code is embedded in the body
return (new ResponseEntity<String>(w.getResponse(), HttpStatus.OK));
}
/**
* Delete svc instance.
*
* @param serviceInstanceId the service instance id
* @param request the request
* @return the response entity
* @throws Exception the exception
*/
@RequestMapping(value = "/mso_delete_svc_instance/{serviceInstanceId}", method = RequestMethod.POST)
public String deleteSvcInstance(@PathVariable("serviceInstanceId") String serviceInstanceId,
HttpServletRequest request, @RequestBody RequestDetails mso_request,
@RequestParam(value = "serviceStatus") String serviceStatus) {
String methodName = "deleteSvcInstance";
LOGGER.debug(EELFLoggerDelegate.debugLogger, "start {}({})", getMethodName(), mso_request);
MsoResponseWrapper w = msoBusinessLogic.deleteSvcInstance(mso_request, serviceInstanceId, serviceStatus);
// always return OK, the MSO status code is embedded in the body
return w.getResponse();
}
/**
* Delete vnf.
*
* @param serviceInstanceId the service instance id
* @param vnfInstanceId the vnf instance id
* @param request the request
* @return the response entity
* @throws Exception the exception
*/
@RequestMapping(value = "/mso_delete_vnf_instance/{serviceInstanceId}/vnfs/{vnfInstanceId}", method = RequestMethod.POST)
public ResponseEntity<String> deleteVnf(@PathVariable("serviceInstanceId") String serviceInstanceId, @PathVariable("vnfInstanceId") String vnfInstanceId,
HttpServletRequest request, @RequestBody RequestDetails mso_request) {
String methodName = "deleteVnf";
LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
MsoResponseWrapper w = msoBusinessLogic.deleteVnf(mso_request, serviceInstanceId, vnfInstanceId);
// always return OK, the MSO status code is embedded in the body
return (new ResponseEntity<String>(w.getResponse(), HttpStatus.OK));
}
/**
* Delete configuration instance
* @param serviceInstanceId the service instance id
* @param configurationId the configuration id
* @param mso_request the request
* @return the response entity
* @throws Exception the exception
*/
@RequestMapping(value = "mso_delete_configuration/{serviceInstanceId}/configurations/{configurationId}",
method = RequestMethod.POST)
public ResponseEntity<String> deleteConfiguration(
@PathVariable("serviceInstanceId") String serviceInstanceId,
@PathVariable ("configurationId") String configurationId,
@RequestBody RequestDetailsWrapper mso_request) {
String methodName = "deleteConfiguration";
LOGGER.debug(EELFLoggerDelegate.debugLogger,
dateFormat.format(new Date()) + "<== " + methodName + " start");
MsoResponseWrapper w = msoBusinessLogic.deleteConfiguration(mso_request, serviceInstanceId, configurationId);
// always return OK, the MSO status code is embedded in the body
return (new ResponseEntity<String>(w.getResponse(), HttpStatus.OK));
}
/**
* Activate configuration instance
* @param serviceInstanceId the service instace id
* @param configurationId the configuration id
* @param mso_request the request
* @return the response entity
* @throws Exception the exception
*/
@RequestMapping(value = "mso_activate_configuration/{serviceInstanceId}/configurations/{configurationId}",
method = RequestMethod.POST)
public ResponseEntity<String> activateConfiguration(
@PathVariable("serviceInstanceId") String serviceInstanceId,
@PathVariable("configurationId") String configurationId,
@RequestBody RequestDetails mso_request) {
MsoResponseWrapper w = msoBusinessLogic.setConfigurationActiveStatus(mso_request, serviceInstanceId, configurationId, true);
// always return OK, the MSO status code is embedded in the body
return (new ResponseEntity<String>(w.getResponse(), HttpStatus.OK));
}
/**
* Deactivate configuration instance
* @param serviceInstanceId the service instace id
* @param configurationId the configuration id
* @param mso_request the request
* @return the response entity
* @throws Exception the exception
*/
@RequestMapping(value = "mso_deactivate_configuration/{serviceInstanceId}/configurations/{configurationId}",
method = RequestMethod.POST)
public ResponseEntity<String> deactivateConfiguration(
@PathVariable("serviceInstanceId") String serviceInstanceId,
@PathVariable("configurationId") String configurationId,
@RequestBody RequestDetails mso_request) {
MsoResponseWrapper w = msoBusinessLogic.setConfigurationActiveStatus(mso_request, serviceInstanceId, configurationId, false);
// always return OK, the MSO status code is embedded in the body
return (new ResponseEntity<String>(w.getResponse(), HttpStatus.OK));
}
/**
* Disable port on configuration instance
* @param serviceInstanceId the service instance id
* @param configurationId the configuration instance id
* @param mso_request the request
* @return the response entity
* @throws Exception the exception
*/
@RequestMapping(value = "mso_disable_port_configuration/{serviceInstanceId}/configurations/{configurationId}",
method = RequestMethod.POST)
public ResponseEntity<String> disablePortOnConfiguration(
@PathVariable("serviceInstanceId") String serviceInstanceId,
@PathVariable("configurationId") String configurationId,
@RequestBody RequestDetails mso_request) {
MsoResponseWrapper w = msoBusinessLogic.setPortOnConfigurationStatus(mso_request, serviceInstanceId, configurationId, false);
// always return OK, the MSO status code is embedded in the body
return (new ResponseEntity<String>(w.getResponse(), HttpStatus.OK));
}
/**
* Enable port on configuration instance
* @param serviceInstanceId the service instance id
* @param configurationId the configuration instance id
* @param mso_request the request
* @return the response entity
* @throws Exception the exception
*/
@RequestMapping(value = "mso_enable_port_configuration/{serviceInstanceId}/configurations/{configurationId}",
method = RequestMethod.POST)
public ResponseEntity<String> enablePortOnConfiguration(
@PathVariable("serviceInstanceId") String serviceInstanceId,
@PathVariable("configurationId") String configurationId,
@RequestBody RequestDetails mso_request) {
MsoResponseWrapper w = msoBusinessLogic.setPortOnConfigurationStatus(mso_request, serviceInstanceId, configurationId, true);
// always return OK, the MSO status code is embedded in the body
return (new ResponseEntity<String>(w.getResponse(), HttpStatus.OK));
}
/**
* Delete vf module.
*
* @param serviceInstanceId the service instance id
* @param vnfInstanceId the vnf instance id
* @param vfModuleId the vf module id
* @param request the request
* @return the response entity
* @throws Exception the exception
*/
//mso_delete_vf_module/bc305d54-75b4-431b-adb2-eb6b9e546014/vnfs/fe9000-0009-9999/vfmodules/abeeee-abeeee-abeeee
@RequestMapping(value = "/mso_delete_vfmodule_instance/{serviceInstanceId}/vnfs/{vnfInstanceId}/vfModules/{vfModuleId}", method = RequestMethod.POST)
public ResponseEntity<String> deleteVfModule(
@PathVariable("serviceInstanceId") String serviceInstanceId, @PathVariable("vnfInstanceId") String vnfInstanceId,
@PathVariable("vfModuleId") String vfModuleId, HttpServletRequest request, @RequestBody RequestDetails mso_request) {
String methodName = "deleteVfModule";
LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
MsoResponseWrapper w = msoBusinessLogic.deleteVfModule(mso_request, serviceInstanceId, vnfInstanceId, vfModuleId);
// always return OK, the MSO status code is embedded in the body
return (new ResponseEntity<String>(w.getResponse(), HttpStatus.OK));
}
/**
* Delete volume group instance.
*
* @param serviceInstanceId the service instance id
* @param vnfInstanceId the vnf instance id
* @param volumeGroupId the volume group id
* @param request the request
* @return the response entity
* @throws Exception the exception
*/
@RequestMapping(value = "/mso_delete_volumegroup_instance/{serviceInstanceId}/vnfs/{vnfInstanceId}/volumeGroups/{volumeGroupId}", method = RequestMethod.POST)
public ResponseEntity<String> deleteVolumeGroupInstance(
@PathVariable("serviceInstanceId") String serviceInstanceId, @PathVariable("vnfInstanceId") String vnfInstanceId, @PathVariable("volumeGroupId") String volumeGroupId,
HttpServletRequest request, @RequestBody RequestDetails mso_request) {
String methodName = "deleteVolumeGroupInstance";
LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
MsoResponseWrapper w = msoBusinessLogic.deleteVolumeGroupInstance(mso_request, serviceInstanceId, vnfInstanceId, volumeGroupId);
// always return OK, the MSO status code is embedded in the body
return (new ResponseEntity<String>(w.getResponse(), HttpStatus.OK));
}
/**
* Delete nw instance.
*
* @param serviceInstanceId the service instance id
* @param networkInstanceId the network instance id
* @param request the request
* @return the response entity
* @throws Exception the exception
*/
@RequestMapping(value = "/mso_delete_nw_instance/{serviceInstanceId}/networks/{networkInstanceId}", method = RequestMethod.POST)
public ResponseEntity<String> deleteNwInstance(@PathVariable("serviceInstanceId") String serviceInstanceId,
@PathVariable("networkInstanceId") String networkInstanceId, HttpServletRequest request, @RequestBody RequestDetails mso_request) {
String methodName = "deleteNwInstance";
LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
MsoResponseWrapper w = msoBusinessLogic.deleteNwInstance(mso_request, serviceInstanceId, networkInstanceId);
// always return OK, the MSO status code is embedded in the body
return (new ResponseEntity<String>(w.getResponse(), HttpStatus.OK));
}
/**
* Gets the orchestration request.
*
* @param requestId the request id
* @param request the request
* @return the orchestration request
* @throws Exception the exception
*/
@RequestMapping(value = "/mso_get_orch_req/{requestId}", method = RequestMethod.GET)
public ResponseEntity<String> getOrchestrationRequest(@PathVariable("requestId") String requestId,
HttpServletRequest request) {
String methodName = "getOrchestrationRequest";
LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
MsoResponseWrapper w = msoBusinessLogic.getOrchestrationRequest(requestId);
// always return OK, the MSO status code is embedded in the body
return (new ResponseEntity<String>(w.getResponse(), HttpStatus.OK));
}
/**
* Gets the orchestration requests.
*
* @param filterString the filter string
* @param request the request
* @return the orchestration requests
* @throws Exception the exception
*/
@RequestMapping(value = "/mso_get_orch_reqs/{filterString}", method = RequestMethod.GET)
public ResponseEntity<String> getOrchestrationRequests(@PathVariable("filterString") String filterString,
HttpServletRequest request) {
String methodName = "getOrchestrationRequests";
LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
MsoResponseWrapper w = msoBusinessLogic.getOrchestrationRequests(filterString);
// always return OK, the MSO status code is embedded in the body
return (new ResponseEntity<String>(w.getResponse(), HttpStatus.OK));
}
/**
* activate to a pnf instance.
*
* @param serviceInstanceId the id of the service.
* @param requestDetails the body of the request.
* @return the response entity
* @throws Exception the exception
*/
@RequestMapping(value = "/mso_activate_service_instance/{serviceInstanceId}", method = RequestMethod.POST)
public ResponseEntity<String> activateServiceInstance(@PathVariable("serviceInstanceId") String serviceInstanceId, @RequestBody RequestDetails requestDetails) {
String methodName = "activateServiceInstance";
LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
MsoResponseWrapper w = msoBusinessLogic.setServiceInstanceStatus(requestDetails, serviceInstanceId, true);
return new ResponseEntity<>(w.getResponse(), HttpStatus.OK);
}
/**
* deactivate a service instance.
*
* @param serviceInstanceId the id of the service.
* @param requestDetails the body of the request.
* @return the response entity
* @throws Exception the exception
*/
@RequestMapping(value = "/mso_deactivate_service_instance/{serviceInstanceId}", method = RequestMethod.POST)
public ResponseEntity<String> deactivateServiceInstance(@PathVariable("serviceInstanceId") String serviceInstanceId, @RequestBody RequestDetails requestDetails) {
String methodName = "deactivateServiceInstance";
LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
MsoResponseWrapper w = msoBusinessLogic.setServiceInstanceStatus(requestDetails, serviceInstanceId, false);
return new ResponseEntity<>(w.getResponse(), HttpStatus.OK);
}
/**
* Gets the orchestration requests for the dashboard.
* currently its all the orchestration requests with RequestType updateInstance or replaceInstance.
* @return the orchestration requests
* @throws Exception the exception
*/
@RequestMapping(value = "/mso_get_orch_reqs/dashboard", method = RequestMethod.GET)
public List<Request> getOrchestrationRequestsForDashboard() {
String methodName = "getOrchestrationRequestsForDashboard";
LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
return msoBusinessLogic.getOrchestrationRequestsForDashboard();
}
/**
* Gets the Manual Tasks for the given request id.
*
* @param originalRequestId the id of the original request.
* @return the tasks
* @throws Exception the exception
*/
@RequestMapping(value = "/mso_get_man_task/{originalRequestId}", method = RequestMethod.GET)
public List<Task> getManualTasksByRequestId(@PathVariable("originalRequestId") String originalRequestId) {
String methodName = "getManualTasksByRequestId";
LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
return msoBusinessLogic.getManualTasksByRequestId(originalRequestId);
}
/**
* Complete the manual task.
*
* @param taskId the id of the task to complete.
* @param requestDetails the body of the request.
* @return the response entity
* @throws Exception the exception
*/
@RequestMapping(value = "/mso_post_man_task/{taskId}", method = RequestMethod.POST)
public ResponseEntity<String> manualTaskComplete(@PathVariable("taskId") String taskId , @RequestBody RequestDetails requestDetails) {
String methodName = "manualTaskComplete";
LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
MsoResponseWrapper w = msoBusinessLogic.completeManualTask(requestDetails, taskId);
return new ResponseEntity<String>(w.getResponse(), HttpStatus.OK);
}
@RequestMapping(value = "/mso_remove_relationship/{serviceInstanceId}", method = RequestMethod.POST)
public ResponseEntity<String> removeRelationshipFromServiceInstance(@PathVariable("serviceInstanceId") String serviceInstanceId ,
@RequestBody RequestDetails requestDetails) {
String methodName = "removeRelationshipFromServiceInstance";
LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
MsoResponseWrapper w;
try {
w = msoBusinessLogic.removeRelationshipFromServiceInstance(requestDetails, serviceInstanceId);
} catch (Exception e){
LOGGER.error("Internal error when calling MSO controller logic for {}", methodName, e);
return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
return new ResponseEntity<>(w.getResponse(), HttpStatus.OK);
}
@RequestMapping(value = "/mso_add_relationship/{serviceInstanceId}", method = RequestMethod.POST)
public ResponseEntity<String> addRelationshipToServiceInstance(@PathVariable("serviceInstanceId") String serviceInstanceId ,
@RequestBody RequestDetails requestDetails) {
String methodName = "addRelationshipToServiceInstance";
LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start");
MsoResponseWrapper w;
try {
w = msoBusinessLogic.addRelationshipToServiceInstance(requestDetails, serviceInstanceId);
} catch (Exception e){
LOGGER.error("Internal error when calling MSO controller logic for {}", methodName, e);
return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
return new ResponseEntity<>(w.getResponse(), HttpStatus.OK);
}
/**
* Exception handler.
*
* @param e the e
* @param response the response
* @throws IOException Signals that an I/O exception has occurred.
*/
@ExceptionHandler(Exception.class)
private void exceptionHandler(Exception e, HttpServletResponse response) throws IOException {
/*
* The following "logger.error" lines "should" be sufficient for logging the exception.
* However, the console output in my Eclipse environment is NOT showing ANY of the
* logger statements in this class. Thus the temporary "e.printStackTrace" statement
* is also included.
*/
String methodName = "exceptionHandler";
LOGGER.error(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString());
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
LOGGER.error(EELFLoggerDelegate.errorLogger, sw.toString());
/*
* Temporary - IF the above mentioned "logger.error" glitch is resolved ...
* this statement could be removed since it would then likely result in duplicate
* trace output.
*/
e.printStackTrace(System.err);
response.setContentType("application/json; charset=UTF-8");
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
ExceptionResponse exceptionResponse = new ExceptionResponse();
exceptionResponse.setException(e.getClass().toString().replaceFirst("^.*\\.", ""));
exceptionResponse.setMessage(e.getMessage());
response.getWriter().write(new ObjectMapper().writeValueAsString(exceptionResponse));
response.flushBuffer();
}
}