From 6ad41e3ccd398a2721f41ad61c80b7bb03f7d127 Mon Sep 17 00:00:00 2001 From: Ittay Stern Date: Mon, 31 Dec 2018 17:21:27 +0200 Subject: Merge from ECOMP's repository Main Features -------------- - Async-Instantiation jobs mechanism major update; still WIP (package `org.onap.vid.job`) - New features in View/Edit: Activate fabric configuration; show related networks; soft delete - Support AAI service-tree traversal (`AAIServiceTree`) - In-memory cache for SDC models and certain A&AI queries (`CacheProviderWithLoadingCache`) - Upgrade TOSCA Parser and add parsing options; fix malformed TOSCA models - Resolve Cloud-Owner values for MSO - Pass X-ONAP headers to MSO Infrastructure -------------- - Remove codehaus' jackson mapper; use soley fasterxml 2.9.7 - Surefire invokes both TestNG and JUnit tests - Support Kotlin source files - AaiController2 which handles errors in a "Spring manner" - Inline generated-sources and remove jsonschema2pojo Quality -------- - Cumulative bug fixes (A&AI API, UI timeouts, and many more) - Many Sonar issues cleaned-up - Some unused classes removed - Minor changes in vid-automation project, allowing some API verification to run Hard Merges ------------ - HTTP Clients (MSO, A&AI, WebConfig, OutgoingRequestHeadersTest) - Moved `package org.onap.vid.controllers` to `controller`, without plural -- just to keep semantic sync with ECOMP. Reference commit in ECOMP: 3d1141625 Issue-ID: VID-378 Change-Id: I9c8d1e74caa41815891d441fc0760bb5f29c5788 Signed-off-by: Ittay Stern --- .../org/onap/vid/controller/MsoController.java | 705 +++++++++++++++++++++ 1 file changed, 705 insertions(+) create mode 100644 vid-app-common/src/main/java/org/onap/vid/controller/MsoController.java (limited to 'vid-app-common/src/main/java/org/onap/vid/controller/MsoController.java') diff --git a/vid-app-common/src/main/java/org/onap/vid/controller/MsoController.java b/vid-app-common/src/main/java/org/onap/vid/controller/MsoController.java new file mode 100644 index 000000000..716267afa --- /dev/null +++ b/vid-app-common/src/main/java/org/onap/vid/controller/MsoController.java @@ -0,0 +1,705 @@ +/*- + * ============LICENSE_START======================================================= + * VID + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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.vid.controller; + + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.onap.portalsdk.core.controller.RestrictedBaseController; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.onap.vid.model.ExceptionResponse; +import org.onap.vid.model.SoftDeleteRequest; +import org.onap.vid.mso.MsoBusinessLogic; +import org.onap.vid.mso.MsoResponseWrapper; +import org.onap.vid.mso.MsoResponseWrapper2; +import org.onap.vid.mso.rest.Request; +import org.onap.vid.mso.rest.RequestDetails; +import org.onap.vid.mso.rest.RequestDetailsWrapper; +import org.onap.vid.mso.rest.Task; +import org.onap.vid.services.CloudOwnerService; +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.util.LinkedHashMap; +import java.util.List; + +import static org.onap.vid.utils.Logging.getMethodName; + +/** + * The Class MsoController. + */ +@RestController +@RequestMapping("mso") +public class MsoController extends RestrictedBaseController { + + /** + * The logger. + */ + private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(MsoController.class); + + /** + * The Constant SVC_INSTANCE_ID. + */ + public static final String SVC_INSTANCE_ID = ""; + public static final String REQUEST_TYPE = ""; + + /** + * The Constant CONFIGURATION_ID + */ + public static final String CONFIGURATION_ID = ""; + + /** + * The Constant VNF_INSTANCE_ID. + */ + public static final String VNF_INSTANCE_ID = ""; + public static final String START_LOG = " start"; + + private final MsoBusinessLogic msoBusinessLogic; + private final CloudOwnerService cloudOwnerService; + + @Autowired + public MsoController(MsoBusinessLogic msoBusinessLogic, CloudOwnerService cloudOwnerService) { + this.msoBusinessLogic = msoBusinessLogic; + this.cloudOwnerService = cloudOwnerService; + } + + /** + * 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 createSvcInstance(HttpServletRequest request, @RequestBody RequestDetails msoRequest) { + String methodName = "createSvcInstance"; + + LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + START_LOG); + + // always return OK, the MSO status code is embedded in the body + + cloudOwnerService.enrichRequestWithCloudOwner(msoRequest); + MsoResponseWrapper w = msoBusinessLogic.createSvcInstance(msoRequest); + + 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 createE2eSvcInstance(HttpServletRequest request, @RequestBody LinkedHashMap msoRequest) { + String methodName = "createE2eSvcInstance"; + + LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + START_LOG); + + // always return OK, the MSO status code is embedded in the body + + //cloudOwnerService.enrichRequestWithCloudOwner(msoRequest); + MsoResponseWrapper w = msoBusinessLogic.createE2eSvcInstance(msoRequest.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 createVnf(@PathVariable("serviceInstanceId") String serviceInstanceId, HttpServletRequest request, @RequestBody RequestDetails msoRequest) { + + cloudOwnerService.enrichRequestWithCloudOwner(msoRequest); + MsoResponseWrapper w = msoBusinessLogic.createVnf(msoRequest, serviceInstanceId); + + // always return OK, the MSO status code is embedded in the body + + return (new ResponseEntity(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 createNwInstance(@PathVariable("serviceInstanceId") String serviceInstanceId, HttpServletRequest request, @RequestBody RequestDetails msoRequest) { + String methodName = "createNwInstance"; + LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + " start, serviceInstanceId = " + serviceInstanceId); + + cloudOwnerService.enrichRequestWithCloudOwner(msoRequest); + MsoResponseWrapper w = msoBusinessLogic.createNwInstance(msoRequest, serviceInstanceId); + + return (new ResponseEntity(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 createVolumeGroupInstance(@PathVariable("serviceInstanceId") String serviceInstanceId, @PathVariable("vnfInstanceId") String vnfInstanceId, + HttpServletRequest request, @RequestBody RequestDetails msoRequest) { + String methodName = "createVolumeGroupInstance"; + LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + START_LOG); + + cloudOwnerService.enrichRequestWithCloudOwner(msoRequest); + MsoResponseWrapper w = msoBusinessLogic.createVolumeGroupInstance(msoRequest, serviceInstanceId, vnfInstanceId); + + // always return OK, the MSO status code is embedded in the body + return (new ResponseEntity(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 createVfModuleInstance(@PathVariable("serviceInstanceId") String serviceInstanceId, + @PathVariable("vnfInstanceId") String vnfInstanceId, HttpServletRequest request, @RequestBody RequestDetails msoRequest) { + String methodName = "createVfModuleInstance"; + + LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + START_LOG); + + cloudOwnerService.enrichRequestWithCloudOwner(msoRequest); + MsoResponseWrapper w = msoBusinessLogic.createVfModuleInstance(msoRequest, serviceInstanceId, vnfInstanceId); + + // always return OK, the MSO status code is embedded in the body + + return (new ResponseEntity(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 createConfigurationInstance(@PathVariable("serviceInstanceId") String serviceInstanceId, + HttpServletRequest request, @RequestBody RequestDetailsWrapper msoRequest) { + String methodName = "createConfigurationInstance"; + LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + START_LOG); + + cloudOwnerService.enrichRequestWithCloudOwner(msoRequest.getRequestDetails()); + MsoResponseWrapper w = msoBusinessLogic.createConfigurationInstance(msoRequest, 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 deleteE2eSvcInstance(@PathVariable("serviceInstanceId") String serviceInstanceId, + HttpServletRequest request, @RequestBody LinkedHashMap msoRequest) { + + LOGGER.debug(EELFLoggerDelegate.debugLogger, "start {}({})", getMethodName(), msoRequest); + MsoResponseWrapper w = msoBusinessLogic.deleteE2eSvcInstance(msoRequest.get("requestDetails"), serviceInstanceId); + // always return OK, the MSO status code is embedded in the body + + return (new ResponseEntity(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 msoRequest, + @RequestParam(value = "serviceStatus") String serviceStatus) { + + LOGGER.debug(EELFLoggerDelegate.debugLogger, "start {}({})", getMethodName(), msoRequest); + MsoResponseWrapper w = msoBusinessLogic.deleteSvcInstance(msoRequest, 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 deleteVnf(@PathVariable("serviceInstanceId") String serviceInstanceId, @PathVariable("vnfInstanceId") String vnfInstanceId, + HttpServletRequest request, @RequestBody RequestDetails msoRequest) { + String methodName = "deleteVnf"; + + LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + START_LOG); + cloudOwnerService.enrichRequestWithCloudOwner(msoRequest); + MsoResponseWrapper w = msoBusinessLogic.deleteVnf(msoRequest, serviceInstanceId, vnfInstanceId); + + // always return OK, the MSO status code is embedded in the body + return (new ResponseEntity(w.getResponse(), HttpStatus.OK)); + + } + + /** + * Delete configuration instance + * @param serviceInstanceId the service instance id + * @param configurationId the configuration id + * @param msoRequest the request + * @return the response entity + * @throws Exception the exception + */ + @RequestMapping(value = "mso_delete_configuration/{serviceInstanceId}/configurations/{configurationId}", + method = RequestMethod.POST) + public ResponseEntity deleteConfiguration( + @PathVariable("serviceInstanceId") String serviceInstanceId, + @PathVariable ("configurationId") String configurationId, + @RequestBody RequestDetailsWrapper msoRequest) { + + String methodName = "deleteConfiguration"; + LOGGER.debug(EELFLoggerDelegate.debugLogger, + "<== " + methodName + START_LOG); + + cloudOwnerService.enrichRequestWithCloudOwner(msoRequest.getRequestDetails()); + MsoResponseWrapper w = msoBusinessLogic.deleteConfiguration(msoRequest, serviceInstanceId, configurationId); + + // always return OK, the MSO status code is embedded in the body + return (new ResponseEntity(w.getResponse(), HttpStatus.OK)); + } + + /** + * Activate configuration instance + * @param serviceInstanceId the service instace id + * @param configurationId the configuration id + * @param msoRequest the request + * @return the response entity + * @throws Exception the exception + */ + @RequestMapping(value = "mso_activate_configuration/{serviceInstanceId}/configurations/{configurationId}", + method = RequestMethod.POST) + public ResponseEntity activateConfiguration( + @PathVariable("serviceInstanceId") String serviceInstanceId, + @PathVariable("configurationId") String configurationId, + @RequestBody RequestDetails msoRequest) { + + cloudOwnerService.enrichRequestWithCloudOwner(msoRequest); + MsoResponseWrapper w = msoBusinessLogic.setConfigurationActiveStatus(msoRequest, serviceInstanceId, configurationId, true); + + // always return OK, the MSO status code is embedded in the body + return (new ResponseEntity(w.getResponse(), HttpStatus.OK)); + } + + /** + * Deactivate configuration instance + * @param serviceInstanceId the service instace id + * @param configurationId the configuration id + * @param msoRequest the request + * @return the response entity + * @throws Exception the exception + */ + @RequestMapping(value = "mso_deactivate_configuration/{serviceInstanceId}/configurations/{configurationId}", + method = RequestMethod.POST) + public ResponseEntity deactivateConfiguration( + @PathVariable("serviceInstanceId") String serviceInstanceId, + @PathVariable("configurationId") String configurationId, + @RequestBody RequestDetails msoRequest) { + + cloudOwnerService.enrichRequestWithCloudOwner(msoRequest); + MsoResponseWrapper w = msoBusinessLogic.setConfigurationActiveStatus(msoRequest, serviceInstanceId, configurationId, false); + + // always return OK, the MSO status code is embedded in the body + return (new ResponseEntity(w.getResponse(), HttpStatus.OK)); + } + + /** + * Disable port on configuration instance + * @param serviceInstanceId the service instance id + * @param configurationId the configuration instance id + * @param msoRequest the request + * @return the response entity + * @throws Exception the exception + */ + @RequestMapping(value = "mso_disable_port_configuration/{serviceInstanceId}/configurations/{configurationId}", + method = RequestMethod.POST) + public ResponseEntity disablePortOnConfiguration( + @PathVariable("serviceInstanceId") String serviceInstanceId, + @PathVariable("configurationId") String configurationId, + @RequestBody RequestDetails msoRequest) { + + cloudOwnerService.enrichRequestWithCloudOwner(msoRequest); + MsoResponseWrapper w = msoBusinessLogic.setPortOnConfigurationStatus(msoRequest, serviceInstanceId, configurationId, false); + + // always return OK, the MSO status code is embedded in the body + return (new ResponseEntity(w.getResponse(), HttpStatus.OK)); + } + + /** + * Enable port on configuration instance + * @param serviceInstanceId the service instance id + * @param configurationId the configuration instance id + * @param msoRequest the request + * @return the response entity + * @throws Exception the exception + */ + @RequestMapping(value = "mso_enable_port_configuration/{serviceInstanceId}/configurations/{configurationId}", + method = RequestMethod.POST) + public ResponseEntity enablePortOnConfiguration( + @PathVariable("serviceInstanceId") String serviceInstanceId, + @PathVariable("configurationId") String configurationId, + @RequestBody RequestDetails msoRequest) { + + cloudOwnerService.enrichRequestWithCloudOwner(msoRequest); + MsoResponseWrapper w = msoBusinessLogic.setPortOnConfigurationStatus(msoRequest, serviceInstanceId, configurationId, true); + + // always return OK, the MSO status code is embedded in the body + return (new ResponseEntity(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 deleteVfModule( + @PathVariable("serviceInstanceId") String serviceInstanceId, @PathVariable("vnfInstanceId") String vnfInstanceId, + @PathVariable("vfModuleId") String vfModuleId, HttpServletRequest request, @RequestBody RequestDetails msoRequest) { + + String methodName = "deleteVfModule"; + LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + START_LOG); + + cloudOwnerService.enrichRequestWithCloudOwner(msoRequest); + MsoResponseWrapper w = msoBusinessLogic.deleteVfModule(msoRequest, serviceInstanceId, vnfInstanceId, vfModuleId); + + // always return OK, the MSO status code is embedded in the body + return (new ResponseEntity(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 deleteVolumeGroupInstance( + @PathVariable("serviceInstanceId") String serviceInstanceId, @PathVariable("vnfInstanceId") String vnfInstanceId, @PathVariable("volumeGroupId") String volumeGroupId, + HttpServletRequest request, @RequestBody RequestDetails msoRequest) { + String methodName = "deleteVolumeGroupInstance"; + LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + START_LOG); + + cloudOwnerService.enrichRequestWithCloudOwner(msoRequest); + MsoResponseWrapper w = msoBusinessLogic.deleteVolumeGroupInstance(msoRequest, serviceInstanceId, vnfInstanceId, volumeGroupId); + + // always return OK, the MSO status code is embedded in the body + return (new ResponseEntity(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 deleteNwInstance(@PathVariable("serviceInstanceId") String serviceInstanceId, + @PathVariable("networkInstanceId") String networkInstanceId, HttpServletRequest request, @RequestBody RequestDetails msoRequest) { + String methodName = "deleteNwInstance"; + LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + START_LOG); + + cloudOwnerService.enrichRequestWithCloudOwner(msoRequest); + MsoResponseWrapper w = msoBusinessLogic.deleteNwInstance(msoRequest, serviceInstanceId, networkInstanceId); + + // always return OK, the MSO status code is embedded in the body + return (new ResponseEntity(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 getOrchestrationRequest(@PathVariable("requestId") String requestId, + HttpServletRequest request) { + + String methodName = "getOrchestrationRequest"; + LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + START_LOG); + + + MsoResponseWrapper w = msoBusinessLogic.getOrchestrationRequest(requestId); + + // always return OK, the MSO status code is embedded in the body + return (new ResponseEntity(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 getOrchestrationRequests(@PathVariable("filterString") String filterString, + HttpServletRequest request) { + + String methodName = "getOrchestrationRequests"; + LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + START_LOG); + + + MsoResponseWrapper w = msoBusinessLogic.getOrchestrationRequests(filterString); + + // always return OK, the MSO status code is embedded in the body + return (new ResponseEntity(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 activateServiceInstance(@PathVariable("serviceInstanceId") String serviceInstanceId, @RequestBody RequestDetails requestDetails) { + String methodName = "activateServiceInstance"; + LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + START_LOG); + + 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 deactivateServiceInstance(@PathVariable("serviceInstanceId") String serviceInstanceId, @RequestBody RequestDetails requestDetails) { + String methodName = "deactivateServiceInstance"; + LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + START_LOG); + + 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 getOrchestrationRequestsForDashboard() { + + String methodName = "getOrchestrationRequestsForDashboard"; + LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + START_LOG); + + + 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 getManualTasksByRequestId(@PathVariable("originalRequestId") String originalRequestId) { + + String methodName = "getManualTasksByRequestId"; + LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + START_LOG); + + 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 manualTaskComplete(@PathVariable("taskId") String taskId , @RequestBody RequestDetails requestDetails) { + + String methodName = "manualTaskComplete"; + LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + START_LOG); + + MsoResponseWrapper w = msoBusinessLogic.completeManualTask(requestDetails, taskId); + return new ResponseEntity<>(w.getResponse(), HttpStatus.OK); + } + + @RequestMapping(value = "/mso_remove_relationship/{serviceInstanceId}", method = RequestMethod.POST) + public ResponseEntity removeRelationshipFromServiceInstance(@PathVariable("serviceInstanceId") String serviceInstanceId , + @RequestBody RequestDetails requestDetails) { + + String methodName = "removeRelationshipFromServiceInstance"; + LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + START_LOG); + + 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 addRelationshipToServiceInstance(@PathVariable("serviceInstanceId") String serviceInstanceId , + @RequestBody RequestDetails requestDetails) { + + String methodName = "addRelationshipToServiceInstance"; + LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + START_LOG); + + 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); + } + + @RequestMapping(value = "/mso_activate_fabric_configuration/{serviceInstanceId}", method = RequestMethod.POST) + public MsoResponseWrapper2 activateFabricConfiguration( + @PathVariable("serviceInstanceId") String serviceInstanceId , + @RequestBody RequestDetails requestDetails) { + + String methodName = "activateFabricConfiguration"; + LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + START_LOG); + + return msoBusinessLogic.activateFabricConfiguration(serviceInstanceId, requestDetails); + } + + @RequestMapping(value = "/mso_vfmodule_soft_delete/{serviceInstanceId}/{vnfInstanceId}/{vfModuleInstanceId}", method = RequestMethod.POST) + public MsoResponseWrapper2 deactivateAndCloudDelete( + @PathVariable("serviceInstanceId") String serviceInstanceId, + @PathVariable("vnfInstanceId") String vnfInstanceId, + @PathVariable("vfModuleInstanceId") String vfModuleInstanceId, + @RequestBody SoftDeleteRequest softDeleteRequest) { + + String methodName = "deactivateAndCloudDelete"; + LOGGER.debug(EELFLoggerDelegate.debugLogger, "<== " + methodName + START_LOG); + + RequestDetails requestDetails = msoBusinessLogic.buildRequestDetailsForSoftDelete(softDeleteRequest); + + cloudOwnerService.enrichRequestWithCloudOwner(requestDetails); + return msoBusinessLogic.deactivateAndCloudDelete(serviceInstanceId, vnfInstanceId, vfModuleInstanceId, requestDetails); + } + + + /** + * 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 { + + ControllersUtils.handleException(e, LOGGER); + + 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(); + + } +} -- cgit 1.2.3-korg