From c72d565bb58226b20625b2bce5f0019046bee649 Mon Sep 17 00:00:00 2001 From: "Sonsino, Ofir (os0695)" Date: Tue, 10 Jul 2018 14:20:54 +0300 Subject: Merge 1806 code of vid-common Change-Id: I75d52abed4a24dfe3827d79edc4a2938726aa87a Issue-ID: VID-208 Signed-off-by: Sonsino, Ofir (os0695) --- .../org/onap/vid/controllers/AaiController.java | 161 +++++++++++---------- .../vid/controllers/AsyncControllerForTests.java | 56 +++++++ .../controllers/AsyncInstantiationController.java | 78 ++++++++++ .../controllers/ChangeManagementController.java | 18 +-- .../org/onap/vid/controllers/ControllersUtils.java | 7 + .../vid/controllers/FeatureTogglingController.java | 29 ++++ .../vid/controllers/HealthCheckController.java | 8 +- .../vid/controllers/MaintenanceController.java | 37 +++-- .../java/org/onap/vid/controllers/MsoConfig.java | 5 +- .../org/onap/vid/controllers/MsoController.java | 84 +++++------ .../OperationalEnvironmentController.java | 25 +--- .../org/onap/vid/controllers/PolicyController.java | 6 +- .../org/onap/vid/controllers/ProbeController.java | 27 ++++ .../onap/vid/controllers/PropertyController.java | 10 +- .../vid/controllers/RoleGeneratorController.java | 9 +- .../org/onap/vid/controllers/VidController.java | 38 +++-- .../controllers/VidRestrictedBaseController.java | 43 ++++++ .../java/org/onap/vid/controllers/WebConfig.java | 148 ++++++++++--------- 18 files changed, 520 insertions(+), 269 deletions(-) create mode 100644 vid-app-common/src/main/java/org/onap/vid/controllers/AsyncControllerForTests.java create mode 100644 vid-app-common/src/main/java/org/onap/vid/controllers/AsyncInstantiationController.java create mode 100644 vid-app-common/src/main/java/org/onap/vid/controllers/FeatureTogglingController.java create mode 100644 vid-app-common/src/main/java/org/onap/vid/controllers/ProbeController.java create mode 100644 vid-app-common/src/main/java/org/onap/vid/controllers/VidRestrictedBaseController.java (limited to 'vid-app-common/src/main/java/org/onap/vid/controllers') diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/AaiController.java b/vid-app-common/src/main/java/org/onap/vid/controllers/AaiController.java index b7dfd37c..1a426ed2 100644 --- a/vid-app-common/src/main/java/org/onap/vid/controllers/AaiController.java +++ b/vid-app-common/src/main/java/org/onap/vid/controllers/AaiController.java @@ -20,13 +20,15 @@ package org.onap.vid.controllers; -import org.codehaus.jackson.JsonGenerationException; -import org.codehaus.jackson.map.JsonMappingException; +import org.apache.commons.lang3.tuple.ImmutablePair; +import org.apache.commons.lang3.tuple.Pair; import org.codehaus.jackson.map.ObjectMapper; import org.onap.vid.aai.AaiResponse; +import org.onap.vid.aai.AaiResponseTranslator.PortMirroringConfigData; import org.onap.vid.aai.ServiceInstancesSearchResults; import org.onap.vid.aai.SubscriberData; import org.onap.vid.aai.SubscriberFilteredResults; +import org.onap.vid.aai.model.AaiGetInstanceGroupsByCloudRegion; import org.onap.vid.aai.model.AaiGetOperationalEnvironments.OperationalEnvironmentList; import org.onap.vid.aai.model.AaiGetPnfs.Pnf; import org.onap.vid.aai.model.AaiGetTenatns.GetTenantsResponse; @@ -49,16 +51,15 @@ import org.springframework.web.servlet.ModelAndView; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.BadRequestException; import javax.ws.rs.DefaultValue; import javax.ws.rs.QueryParam; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Response; -import java.io.File; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; +import java.util.stream.Collectors; import static org.onap.vid.utils.Logging.getMethodName; @@ -67,8 +68,7 @@ import static org.onap.vid.utils.Logging.getMethodName; */ @RestController -public class -AaiController extends RestrictedBaseController { +public class AaiController extends RestrictedBaseController { /** * The Constant dateFormat. */ @@ -98,14 +98,8 @@ AaiController extends RestrictedBaseController { @Autowired private RoleProvider roleProvider; - public AaiController() { - - } - - public AaiController(ServletContext servletContext) { - this.servletContext = servletContext; - - } + @Autowired + private AAIRestInterface aaiRestInterface; /** * Welcome method. @@ -120,28 +114,32 @@ AaiController extends RestrictedBaseController { } @RequestMapping(value = {"/aai_get_aic_zones"}, method = RequestMethod.GET) - public ResponseEntity getAicZones(HttpServletRequest request) throws JsonGenerationException, JsonMappingException, IOException { + public ResponseEntity getAicZones(HttpServletRequest request) throws IOException { LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== getAicZones controller start"); AaiResponse response = aaiService.getAaiZones(); return aaiResponseToResponseEntity(response); } @RequestMapping(value = {"/aai_get_aic_zone_for_pnf/{globalCustomerId}/{serviceType}/{serviceId}"}, method = RequestMethod.GET) - public ResponseEntity getAicZoneForPnf(@PathVariable("globalCustomerId") String globalCustomerId ,@PathVariable("serviceType") String serviceType , @PathVariable("serviceId") String serviceId ,HttpServletRequest request) throws JsonGenerationException, JsonMappingException, IOException { + public ResponseEntity getAicZoneForPnf(@PathVariable("globalCustomerId") String globalCustomerId ,@PathVariable("serviceType") String serviceType , @PathVariable("serviceId") String serviceId ,HttpServletRequest request) throws IOException { LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== getAicZoneForPnf controller start"); AaiResponse response = aaiService.getAicZoneForPnf(globalCustomerId , serviceType , serviceId); return aaiResponseToResponseEntity(response); } + @RequestMapping(value = {"/aai_get_instance_groups_by_vnf_instance_id/{vnfInstanceId}"}, method = RequestMethod.GET) + public ResponseEntity getInstanceGroupsByVnfInstanceId(@PathVariable("vnfInstanceId") String vnfInstanceId ,HttpServletRequest request) throws IOException { + AaiResponse response = aaiService.getInstanceGroupsByVnfInstanceId(vnfInstanceId); + return aaiResponseToResponseEntity(response); + } /** * Get services from a&ai. * * @return ResponseEntity The response entity with the logged in user uuid. * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException the interrupted exception */ @RequestMapping(value = {"/getuserID"}, method = RequestMethod.GET) - public ResponseEntity getUserID(HttpServletRequest request) throws IOException, InterruptedException { + public ResponseEntity getUserID(HttpServletRequest request) { String userId = ControllersUtils.extractUserId(request); @@ -153,10 +151,9 @@ AaiController extends RestrictedBaseController { * * @return ResponseEntity The response entity * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException the interrupted exception */ @RequestMapping(value = "/aai_get_services", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity doGetServices(HttpServletRequest request) throws IOException, InterruptedException { + public ResponseEntity doGetServices(HttpServletRequest request) throws IOException { RoleValidator roleValidator = new RoleValidator(roleProvider.getUserRoles(request)); AaiResponse subscriberList = aaiService.getServices(roleValidator); @@ -167,7 +164,7 @@ AaiController extends RestrictedBaseController { @RequestMapping(value = {"/aai_get_version_by_invariant_id"}, method = RequestMethod.POST) - public ResponseEntity getVersionByInvariantId(HttpServletRequest request, @RequestBody VersionByInvariantIdsRequest versions) throws IOException { + public ResponseEntity getVersionByInvariantId(HttpServletRequest request, @RequestBody VersionByInvariantIdsRequest versions) { ResponseEntity responseEntity; ObjectMapper objectMapper = new ObjectMapper(); @@ -178,7 +175,7 @@ AaiController extends RestrictedBaseController { private ResponseEntity aaiResponseToResponseEntity(AaiResponse aaiResponseData) - throws IOException, JsonGenerationException, JsonMappingException { + throws IOException { ResponseEntity responseEntity; ObjectMapper objectMapper = new ObjectMapper(); if (aaiResponseData.getHttpCode() == 200) { @@ -195,19 +192,17 @@ AaiController extends RestrictedBaseController { * @param serviceInstanceId the service instance Id * @return ResponseEntity The response entity * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException the interrupted exception */ @RequestMapping(value = "/aai_get_service_instance/{service-instance-id}/{service-instance-type}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity doGetServiceInstance(@PathVariable("service-instance-id") String serviceInstanceId, @PathVariable("service-instance-type") String serviceInstanceType) throws IOException, InterruptedException { - File certiPath = GetCertificatesPath(); + public ResponseEntity doGetServiceInstance(@PathVariable("service-instance-id") String serviceInstanceId, @PathVariable("service-instance-type") String serviceInstanceType) { Response resp = null; if (serviceInstanceType.equalsIgnoreCase("Service Instance Id")) { - resp = doAaiGet(certiPath.getAbsolutePath(), + resp = doAaiGet( "search/nodes-query?search-node-type=service-instance&filter=service-instance-id:EQUALS:" + serviceInstanceId, false); } else { - resp = doAaiGet(certiPath.getAbsolutePath(), + resp = doAaiGet( "search/nodes-query?search-node-type=service-instance&filter=service-instance-name:EQUALS:" + serviceInstanceId, false); } @@ -221,13 +216,11 @@ AaiController extends RestrictedBaseController { * @param serviceSubscriptionId the service subscription id * @return ResponseEntity The response entity * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException the interrupted exception */ @RequestMapping(value = "/aai_get_service_subscription/{global-customer-id}/{service-subscription-id}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity doGetServices(@PathVariable("global-customer-id") String globalCustomerId, - @PathVariable("service-subscription-id") String serviceSubscriptionId) throws IOException, InterruptedException { - File certiPath = GetCertificatesPath(); - Response resp = doAaiGet(certiPath.getAbsolutePath(), "business/customers/customer/" + globalCustomerId + @PathVariable("service-subscription-id") String serviceSubscriptionId) { + Response resp = doAaiGet("business/customers/customer/" + globalCustomerId + "/service-subscriptions/service-subscription/" + serviceSubscriptionId + "?depth=0", false); return convertResponseToResponseEntity(resp); } @@ -238,10 +231,9 @@ AaiController extends RestrictedBaseController { * @param fullSet the full set * @return ResponseEntity The response entity * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException the interrupted exception */ @RequestMapping(value = "/aai_get_subscribers", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity doGetSubscriberList(HttpServletRequest request, @DefaultValue("n") @QueryParam("fullSet") String fullSet) throws IOException, InterruptedException { + public ResponseEntity doGetSubscriberList(HttpServletRequest request, @DefaultValue("n") @QueryParam("fullSet") String fullSet) throws IOException { return getFullSubscriberList(request); } @@ -250,10 +242,9 @@ AaiController extends RestrictedBaseController { * * @return ResponseEntity The response entity * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException the interrupted exception */ @RequestMapping(value = "/get_system_prop_vnf_prov_status", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity getTargetProvStatus() throws IOException, InterruptedException { + public ResponseEntity getTargetProvStatus() { String p = SystemProperties.getProperty("aai.vnf.provstatus"); return new ResponseEntity(p, HttpStatus.OK); } @@ -264,11 +255,10 @@ AaiController extends RestrictedBaseController { * * @return ResponseEntity The response entity * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException the interrupted exception */ @RequestMapping(value = "/get_operational_environments", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) public AaiResponse getOperationalEnvironments(@RequestParam(value="operationalEnvironmentType", required = false) String operationalEnvironmentType, - @RequestParam(value="operationalEnvironmentStatus", required = false) String operationalEnvironmentStatus) throws IOException, InterruptedException { + @RequestParam(value="operationalEnvironmentStatus", required = false) String operationalEnvironmentStatus) { LOGGER.debug(EELFLoggerDelegate.debugLogger, "start {}({}, {})", getMethodName(), operationalEnvironmentType, operationalEnvironmentStatus); AaiResponse response = aaiService.getOperationalEnvironments(operationalEnvironmentType,operationalEnvironmentStatus); if (response.getHttpCode() != 200) { @@ -288,10 +278,9 @@ AaiController extends RestrictedBaseController { * g @return ResponseEntity The response entity * * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException the interrupted exception */ @RequestMapping(value = "/aai_get_full_subscribers", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity getFullSubscriberList(HttpServletRequest request) throws IOException, InterruptedException { + public ResponseEntity getFullSubscriberList(HttpServletRequest request) throws IOException { ObjectMapper objectMapper = new ObjectMapper(); ResponseEntity responseEntity; RoleValidator roleValidator = new RoleValidator(roleProvider.getUserRoles(request)); @@ -312,7 +301,7 @@ AaiController extends RestrictedBaseController { produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity getVnfDataByGlobalIdAndServiceType(HttpServletRequest request, @PathVariable("globalCustomerId") String globalCustomerId, - @PathVariable("serviceType") String serviceType) throws IOException { + @PathVariable("serviceType") String serviceType) { Response resp = aaiService.getVNFData(globalCustomerId, serviceType); return convertResponseToResponseEntity(resp); @@ -326,7 +315,7 @@ AaiController extends RestrictedBaseController { * @throws IOException Signals that an I/O exception has occurred. */ @RequestMapping(value = "/aai_refresh_subscribers", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity doRefreshSubscriberList() throws IOException { + public ResponseEntity doRefreshSubscriberList() { Response resp = getSubscribers(false); return convertResponseToResponseEntity(resp); } @@ -338,7 +327,7 @@ AaiController extends RestrictedBaseController { * @throws IOException Signals that an I/O exception has occurred. */ @RequestMapping(value = "/aai_refresh_full_subscribers", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity doRefreshFullSubscriberList() throws IOException { + public ResponseEntity doRefreshFullSubscriberList() { Response resp = getSubscribers(false); return convertResponseToResponseEntity(resp); } @@ -421,9 +410,8 @@ AaiController extends RestrictedBaseController { @PathVariable("serviceInstance") String serviceInstance) { String componentListPayload = getComponentListPutPayload(namedQueryId, globalCustomerId, serviceType, serviceInstance); - File certiPath = GetCertificatesPath(); - Response resp = doAaiPost(certiPath.getAbsolutePath(), "search/named-query", componentListPayload, false); + Response resp = doAaiPost("search/named-query", componentListPayload, false); return convertResponseToResponseEntity(resp); } @@ -453,9 +441,8 @@ AaiController extends RestrictedBaseController { @PathVariable("serviceType") String serviceType) { String componentListPayload = getModelsByServiceTypePayload(namedQueryId, globalCustomerId, serviceType); - File certiPath = GetCertificatesPath(); - Response resp = doAaiPost(certiPath.getAbsolutePath(), "search/named-query", componentListPayload, false); + Response resp = doAaiPost("search/named-query", componentListPayload, false); return convertResponseToResponseEntity(resp); } @@ -471,24 +458,48 @@ AaiController extends RestrictedBaseController { return new ResponseEntity(resp.getT(), HttpStatus.valueOf(resp.getHttpCode())); } + @RequestMapping(value = "/aai_get_network_collection_details/{serviceInstanceId}", method = RequestMethod.GET) + public ResponseEntity getNetworkCollectionDetails(@PathVariable("serviceInstanceId") String serviceInstanceId) throws IOException { + com.fasterxml.jackson.databind.ObjectMapper objectMapper = new com.fasterxml.jackson.databind.ObjectMapper(); + AaiResponse resp = aaiService.getNetworkCollectionDetails(serviceInstanceId); + + String httpMessage = resp.getT() != null ? + objectMapper.writeValueAsString(resp.getT()) : + resp.getErrorMessage(); + return new ResponseEntity(httpMessage, HttpStatus.valueOf(resp.getHttpCode())); + } + + @RequestMapping(value = "/aai_get_instance_groups_by_cloudregion/{cloudOwner}/{cloudRegionId}/{networkFunction}", method = RequestMethod.GET) + public ResponseEntity getInstanceGroupsByCloudRegion(@PathVariable("cloudOwner") String cloudOwner, + @PathVariable("cloudRegionId") String cloudRegionId, + @PathVariable("networkFunction") String networkFunction) throws IOException { + com.fasterxml.jackson.databind.ObjectMapper objectMapper = new com.fasterxml.jackson.databind.ObjectMapper(); + AaiResponse resp = aaiService.getInstanceGroupsByCloudRegion(cloudOwner, cloudRegionId, networkFunction); + + String httpMessage = resp.getT() != null ? + objectMapper.writeValueAsString(resp.getT()) : + resp.getErrorMessage(); + return new ResponseEntity(httpMessage, HttpStatus.valueOf(resp.getHttpCode())); + } + @RequestMapping(value = "/aai_get_by_uri/**", method = RequestMethod.GET) public ResponseEntity getByUri(HttpServletRequest request) { - File certiPath = GetCertificatesPath(); String restOfTheUrl = (String) request.getAttribute( HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE); String formattedUri = restOfTheUrl.replaceFirst("/aai_get_by_uri/", "").replaceFirst("^aai/v[\\d]+/", ""); - Response resp = doAaiGet(certiPath.getAbsolutePath(), formattedUri, false); + Response resp = doAaiGet(formattedUri, false); return convertResponseToResponseEntity(resp); } + + @RequestMapping(value = "/aai_get_configuration/{configuration_id}", method = RequestMethod.GET) public ResponseEntity getSpecificConfiguration(@PathVariable("configuration_id") String configurationId) { - File certiPath = GetCertificatesPath(); - Response resp = doAaiGet(certiPath.getAbsolutePath(), "network/configurations/configuration/"+configurationId, false); + Response resp = doAaiGet("network/configurations/configuration/"+configurationId, false); return convertResponseToResponseEntity(resp); } @@ -563,6 +574,24 @@ AaiController extends RestrictedBaseController { return new ResponseEntity(resp.getT(), HttpStatus.valueOf(resp.getHttpCode())); } + @RequestMapping(value = "/aai_getPortMirroringConfigsData", method = RequestMethod.GET) + public Map getPortMirroringConfigsData( + @RequestParam ("configurationIds") List configurationIds) { + + return configurationIds.stream() + .map(id -> ImmutablePair.of(id, aaiService.getPortMirroringConfigData(id))) + .collect(Collectors.toMap(Pair::getKey, Pair::getValue)); + } + + @RequestMapping(value = "/aai_getPortMirroringSourcePorts", method = RequestMethod.GET) + public Map getPortMirroringSourcePorts( + @RequestParam ("configurationIds") List configurationIds) { + + return configurationIds.stream() + .map(id -> ImmutablePair.of(id, aaiService.getPortMirroringSourcePorts(id))) + .collect(Collectors.toMap(Pair::getKey, Pair::getValue)); + } + private ResponseEntity convertResponseToResponseEntity(Response resp) { ResponseEntity respEnt; ObjectMapper objectMapper = new ObjectMapper(); @@ -582,10 +611,9 @@ AaiController extends RestrictedBaseController { */ private Response getSubscribers(boolean isFullSet) { - File certiPath = GetCertificatesPath(); String depth = "0"; - Response resp = doAaiGet(certiPath.getAbsolutePath(), "business/customers?subscriber-type=INFRA&depth=" + depth, false); + Response resp = doAaiGet("business/customers?subscriber-type=INFRA&depth=" + depth, false); if (resp != null) { LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "getSubscribers() resp=" + resp.getStatusInfo().toString()); } @@ -599,33 +627,20 @@ AaiController extends RestrictedBaseController { * @return the subscriber details */ private Response getSubscriberDetails(String subscriberId) { - File certiPath = GetCertificatesPath(); - Response resp = doAaiGet(certiPath.getAbsolutePath(), "business/customers/customer/" + subscriberId + "?depth=2", false); + Response resp = doAaiGet("business/customers/customer/" + subscriberId + "?depth=2", false); //String resp = doAaiGet(certiPath.getAbsolutePath(), "business/customers/customer/" + subscriberId, false); LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "getSubscriberDetails() resp=" + resp.getStatusInfo().toString()); return resp; } - /** - * Gets the certificates path. - * - * @return the file - */ - private File GetCertificatesPath() { - if (servletContext != null) - return new File(servletContext.getRealPath("/WEB-INF/cert/")); - return null; - } - /** * Send a GET request to a&ai. * - * @param certiPath the certi path * @param uri the uri * @param xml the xml * @return String The response */ - protected Response doAaiGet(String certiPath, String uri, boolean xml) { + protected Response doAaiGet(String uri, boolean xml) { String methodName = "getSubscriberList"; String transId = UUID.randomUUID().toString(); LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start"); @@ -633,11 +648,11 @@ AaiController extends RestrictedBaseController { Response resp = null; try { - AAIRestInterface restContrller = new AAIRestInterface(certiPath); - resp = restContrller.RestGet(fromAppId, transId, uri, xml); + + resp = aaiRestInterface.RestGet(fromAppId, transId, uri, xml).getResponse(); } catch (WebApplicationException e) { - final String message = ((BadRequestException) e).getResponse().readEntity(String.class); + final String message = e.getResponse().readEntity(String.class); LOGGER.info(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + message); LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + message); } catch (Exception e) { @@ -651,13 +666,12 @@ AaiController extends RestrictedBaseController { /** * Send a POST request to a&ai. * - * @param certiPath the certi path * @param uri the uri * @param payload the payload * @param xml the xml * @return String The response */ - protected Response doAaiPost(String certiPath, String uri, String payload, boolean xml) { + protected Response doAaiPost(String uri, String payload, boolean xml) { String methodName = "getSubscriberList"; String transId = UUID.randomUUID().toString(); LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start"); @@ -665,8 +679,7 @@ AaiController extends RestrictedBaseController { Response resp = null; try { - AAIRestInterface restContrller = new AAIRestInterface(certiPath); - resp = restContrller.RestPost(fromAppId, transId, uri, payload, xml); + resp = aaiRestInterface.RestPost(fromAppId, uri, payload, xml); } catch (Exception e) { LOGGER.info(EELFLoggerDelegate.errorLogger, dateFormat.format(new Date()) + "<== " + "." + methodName + e.toString()); diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/AsyncControllerForTests.java b/vid-app-common/src/main/java/org/onap/vid/controllers/AsyncControllerForTests.java new file mode 100644 index 00000000..c4d82932 --- /dev/null +++ b/vid-app-common/src/main/java/org/onap/vid/controllers/AsyncControllerForTests.java @@ -0,0 +1,56 @@ +package org.onap.vid.controllers; + +import org.onap.vid.exceptions.GenericUncheckedException; +import org.onap.vid.model.ExceptionResponse; +import org.onap.vid.model.JobBulk; +import org.onap.vid.model.JobModel; +import org.onap.vid.services.BulkInstantiationService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; + +import javax.ws.rs.WebApplicationException; +import java.util.Map; +import java.util.UUID; + +import static org.springframework.http.HttpStatus.BAD_REQUEST; + +@RestController +@RequestMapping("asyncForTests") +public class AsyncControllerForTests extends VidRestrictedBaseController { + + private BulkInstantiationService bulkInstantiationService; + + @Autowired + public AsyncControllerForTests(BulkInstantiationService bulkInstantiationService) { + this.bulkInstantiationService = bulkInstantiationService; + } + + @RequestMapping(method = RequestMethod.POST) + public JobBulk createAsyncJob(@RequestBody Map body) { + return bulkInstantiationService.saveBulk(body); + } + + @RequestMapping(value = "/job/{uuid}", method = RequestMethod.GET) + public JobModel getJob(@PathVariable UUID uuid) { + return bulkInstantiationService.getJob(uuid); + } + + @RequestMapping(value = "/error", method = RequestMethod.GET) + public void throwError() { + throw new GenericUncheckedException("dummy error"); + } + + @ExceptionHandler({IllegalArgumentException.class}) + @ResponseStatus(value=BAD_REQUEST) + private ExceptionResponse exceptionHandlerBadRequest(Exception e) { + return ControllersUtils.handleException(e, LOGGER); + } + + @ExceptionHandler(WebApplicationException.class) + private ResponseEntity webApplicationExceptionHandler(WebApplicationException e) { + return ControllersUtils.handleWebApplicationException(e, LOGGER); + } + +} diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/AsyncInstantiationController.java b/vid-app-common/src/main/java/org/onap/vid/controllers/AsyncInstantiationController.java new file mode 100644 index 00000000..c5621a30 --- /dev/null +++ b/vid-app-common/src/main/java/org/onap/vid/controllers/AsyncInstantiationController.java @@ -0,0 +1,78 @@ +package org.onap.vid.controllers; + + +import org.onap.vid.exceptions.OperationNotAllowedException; +import org.onap.vid.model.ExceptionResponse; + +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.exception.ExceptionUtils; + +import org.onap.vid.model.JobAuditStatus; +import org.onap.vid.model.ServiceInfo; +import org.onap.vid.model.serviceInstantiation.ServiceInstantiation; +import org.onap.vid.mso.MsoResponseWrapper2; +import org.onap.vid.services.AsyncInstantiationBusinessLogic; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.UUID; +import static org.springframework.http.HttpStatus.METHOD_NOT_ALLOWED; + + +@RestController +@RequestMapping(AsyncInstantiationController.ASYNC_INSTANTIATION) +public class AsyncInstantiationController extends VidRestrictedBaseController { + + public static final String ASYNC_INSTANTIATION = "asyncInstantiation"; + + protected final AsyncInstantiationBusinessLogic asyncInstantiationBL; + + @Autowired + public AsyncInstantiationController(AsyncInstantiationBusinessLogic asyncInstantiationBL) { + this.asyncInstantiationBL = asyncInstantiationBL; + } + + @ExceptionHandler(OperationNotAllowedException.class) + @ResponseStatus(value=METHOD_NOT_ALLOWED) + public ExceptionResponse illegalStateExceptionHandler(Exception e) { + return ControllersUtils.handleException(e, LOGGER); + } + + /** + * Gets the new services status. + * @param request the request + * @return the services list + */ + @RequestMapping(method = RequestMethod.GET) + public List getServicesInfo(HttpServletRequest request) { + return asyncInstantiationBL.getAllServicesInfo(); + } + + @RequestMapping(value = "bulk", method = RequestMethod.POST) + public MsoResponseWrapper2> createBulkOfServices(@RequestBody ServiceInstantiation request, HttpServletRequest httpServletRequest) { + //Push to DB according the model + + String userId = ControllersUtils.extractUserId(httpServletRequest); + List uuids = asyncInstantiationBL.pushBulkJob(request, userId); + + return new MsoResponseWrapper2(200, uuids); + } + + @RequestMapping(value = "job/{jobId}", method = RequestMethod.DELETE) + public void deleteServiceInfo(@PathVariable("jobId") UUID jobId) { + asyncInstantiationBL.deleteJob(jobId); + } + + @RequestMapping(value = "hide/{jobId}", method = RequestMethod.POST) + public void hideServiceInfo(@PathVariable("jobId") UUID jobId) { + asyncInstantiationBL.hideServiceInfo(jobId); + } + + @RequestMapping(value = "auditStatus/{jobId}", method = RequestMethod.GET) + public List getJobAuditStatus(HttpServletRequest request, @PathVariable(value="jobId") UUID jobId, @RequestParam(value="source") JobAuditStatus.SourceStatus source){ + return asyncInstantiationBL.getAuditStatuses(jobId, source); + } + + +} diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/ChangeManagementController.java b/vid-app-common/src/main/java/org/onap/vid/controllers/ChangeManagementController.java index fc5bc0b2..59fe61fd 100644 --- a/vid-app-common/src/main/java/org/onap/vid/controllers/ChangeManagementController.java +++ b/vid-app-common/src/main/java/org/onap/vid/controllers/ChangeManagementController.java @@ -23,7 +23,6 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.WebApplicationException; -import java.io.IOException; import java.util.Collection; import java.util.Collections; @@ -36,7 +35,6 @@ import static org.springframework.http.HttpStatus.*; @RestController @RequestMapping(ChangeManagementController.CHANGE_MANAGEMENT) public class ChangeManagementController extends UnRestrictedBaseController { - private static final String GetWorkflowsResponse = null; public static final String VNF_WORKFLOW_RELATION = "vnf_workflow_relation"; public static final String CHANGE_MANAGEMENT = "change-management"; public static final String GET_VNF_WORKFLOW_RELATION = "get_vnf_workflow_relation"; @@ -57,13 +55,13 @@ public class ChangeManagementController extends UnRestrictedBaseController { } @RequestMapping(value = {"/workflow"}, method = RequestMethod.GET) - public ResponseEntity> getWorkflow(@RequestParam("vnfs") Collection vnfs) throws IOException, InterruptedException { + public ResponseEntity> getWorkflow(@RequestParam("vnfs") Collection vnfs) { Collection result = this.workflowService.getWorkflowsForVNFs(vnfs); return new ResponseEntity<>(result, OK); } @RequestMapping(value = {"/mso"}, method = RequestMethod.GET) - public ResponseEntity> getMSOChangeManagements() throws Exception, IOException, InterruptedException { + public ResponseEntity> getMSOChangeManagements() { Collection result = this.changeManagementService.getMSOChangeManagements(); return new ResponseEntity<>(result, OK); @@ -94,20 +92,20 @@ public class ChangeManagementController extends UnRestrictedBaseController { @RequestMapping(value = {"/scheduler"}, method = RequestMethod.GET) - public ResponseEntity getSchedulerChangeManagements() throws IOException, InterruptedException { + public ResponseEntity getSchedulerChangeManagements() { JSONArray result = this.changeManagementService.getSchedulerChangeManagements(); return new ResponseEntity<>(result, OK); } @RequestMapping(value = {SCHEDULER_BY_SCHEDULE_ID}, method = RequestMethod.DELETE) - public ResponseEntity deleteSchedule(@PathVariable("scheduleId") String scheduleId) throws IOException, InterruptedException { + public ResponseEntity deleteSchedule(@PathVariable("scheduleId") String scheduleId) { Pair result = this.changeManagementService.deleteSchedule(scheduleId); return ResponseEntity.status(result.getRight()).build(); } @RequestMapping(value = {GET_VNF_WORKFLOW_RELATION}, method = RequestMethod.POST) - public ResponseEntity getWorkflows(@RequestBody GetVnfWorkflowRelationRequest getVnfWorkflowRelationRequest) throws IOException, InterruptedException { + public ResponseEntity getWorkflows(@RequestBody GetVnfWorkflowRelationRequest getVnfWorkflowRelationRequest) { try { GetWorkflowsResponse response = new GetWorkflowsResponse(changeManagementService.getWorkflowsForVnf(getVnfWorkflowRelationRequest)); return ResponseEntity.status(OK).body(response); @@ -122,7 +120,7 @@ public class ChangeManagementController extends UnRestrictedBaseController { } @RequestMapping(value = {VNF_WORKFLOW_RELATION}, method = RequestMethod.POST) - public ResponseEntity createWorkflowRelation(@RequestBody VnfWorkflowRelationRequest vnfWorkflowRelationRequest) throws IOException, InterruptedException { + public ResponseEntity createWorkflowRelation(@RequestBody VnfWorkflowRelationRequest vnfWorkflowRelationRequest) { VnfWorkflowRelationResponse vnfWorkflowRelationResponse; try { vnfWorkflowRelationResponse = changeManagementService.addVnfWorkflowRelation(vnfWorkflowRelationRequest); @@ -135,7 +133,7 @@ public class ChangeManagementController extends UnRestrictedBaseController { } @RequestMapping(value = {VNF_WORKFLOW_RELATION}, method = RequestMethod.GET) - public ResponseEntity getAllWorkflowRelation() throws IOException, InterruptedException { + public ResponseEntity getAllWorkflowRelation() { try { VnfWorkflowRelationAllResponse vnfWorkflowRelationAllResponse = changeManagementService.getAllVnfWorkflowRelations(); @@ -147,7 +145,7 @@ public class ChangeManagementController extends UnRestrictedBaseController { } @RequestMapping(value = {VNF_WORKFLOW_RELATION}, method = RequestMethod.DELETE) - public ResponseEntity deleteWorkflowRelation(@RequestBody VnfWorkflowRelationRequest vnfWorkflowRelationRequest) throws IOException, InterruptedException { + public ResponseEntity deleteWorkflowRelation(@RequestBody VnfWorkflowRelationRequest vnfWorkflowRelationRequest) { VnfWorkflowRelationResponse vnfWorkflowRelationResponse; try { vnfWorkflowRelationResponse = changeManagementService.deleteVnfWorkflowRelation(vnfWorkflowRelationRequest); diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/ControllersUtils.java b/vid-app-common/src/main/java/org/onap/vid/controllers/ControllersUtils.java index 3f8cfa6a..1abe300e 100644 --- a/vid-app-common/src/main/java/org/onap/vid/controllers/ControllersUtils.java +++ b/vid-app-common/src/main/java/org/onap/vid/controllers/ControllersUtils.java @@ -6,9 +6,11 @@ import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; import org.onap.portalsdk.core.util.SystemProperties; import org.onap.vid.model.ExceptionResponse; import org.slf4j.MDC; +import org.springframework.http.ResponseEntity; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; +import javax.ws.rs.WebApplicationException; import static com.att.eelf.configuration.Configuration.MDC_KEY_REQUEST_ID; import static org.onap.vid.utils.Logging.getMethodName; @@ -37,4 +39,9 @@ public class ControllersUtils { ExceptionResponse exceptionResponse = new ExceptionResponse(e); return exceptionResponse; } + + public static ResponseEntity handleWebApplicationException(WebApplicationException e, EELFLoggerDelegate logger) { + return ResponseEntity.status(e.getResponse().getStatus()).body(ControllersUtils.handleException(e, logger)); + } + } diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/FeatureTogglingController.java b/vid-app-common/src/main/java/org/onap/vid/controllers/FeatureTogglingController.java new file mode 100644 index 00000000..36dfdaa0 --- /dev/null +++ b/vid-app-common/src/main/java/org/onap/vid/controllers/FeatureTogglingController.java @@ -0,0 +1,29 @@ +package org.onap.vid.controllers; + +import org.onap.vid.properties.Features; +import org.onap.portalsdk.core.controller.RestrictedBaseController; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import java.util.HashMap; +import java.util.Map; + +@RestController +@RequestMapping("flags") +public class FeatureTogglingController extends RestrictedBaseController { + + @RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) + public @ResponseBody Map getFeatureToggles() + { + HashMap flags = new HashMap (); + for(Features flag : Features.values()){ + flags.put(flag.name(), flag.isActive()); + } + return flags; + + + } +} diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/HealthCheckController.java b/vid-app-common/src/main/java/org/onap/vid/controllers/HealthCheckController.java index 149c5bda..c3871da9 100644 --- a/vid-app-common/src/main/java/org/onap/vid/controllers/HealthCheckController.java +++ b/vid-app-common/src/main/java/org/onap/vid/controllers/HealthCheckController.java @@ -116,10 +116,9 @@ public class HealthCheckController extends UnRestrictedBaseController { * Used by IDNS for redundancy * @return ResponseEntity The response entity * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException the interrupted exception - */ + */ @RequestMapping(value="/healthCheck",method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) - public HealthStatus gethealthCheckStatusforIDNS() throws IOException, InterruptedException { + public HealthStatus gethealthCheckStatusforIDNS() { String driver = SystemProperties.getProperty("db.driver"); String URL = SystemProperties.getProperty("db.connectionURL"); @@ -151,13 +150,12 @@ public class HealthCheckController extends UnRestrictedBaseController { * * @return ResponseEntity The response entity * @throws IOException Signals that an I/O exception has occurred. - * @throws InterruptedException the interrupted exception * Project : */ @RequestMapping(value="rest/healthCheck/{User-Agent}/{X-ECOMP-RequestID}",method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) public HealthStatus getHealthCheck( @PathVariable("User-Agent") String UserAgent, - @PathVariable("X-ECOMP-RequestID") String ECOMPRequestID) throws IOException, InterruptedException { + @PathVariable("X-ECOMP-RequestID") String ECOMPRequestID) { String driver = SystemProperties.getProperty("db.driver"); String URL = SystemProperties.getProperty("db.connectionURL"); diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/MaintenanceController.java b/vid-app-common/src/main/java/org/onap/vid/controllers/MaintenanceController.java index c961f593..0976f403 100644 --- a/vid-app-common/src/main/java/org/onap/vid/controllers/MaintenanceController.java +++ b/vid-app-common/src/main/java/org/onap/vid/controllers/MaintenanceController.java @@ -21,17 +21,17 @@ import javax.ws.rs.ForbiddenException; import java.util.Arrays; import java.util.Collections; -import static org.onap.vid.utils.Logging.getMethodName; +import static org.onap.vid.utils.Logging.getMethodCallerName; /** * Controler for APIs that are used only by vid operators */ @RestController -@RequestMapping(MaintenanceController.Maintenance) +@RequestMapping(MaintenanceController.MAINTENANCE) public class MaintenanceController extends UnRestrictedBaseController { - public static final String Maintenance = "maintenance"; + public static final String MAINTENANCE = "maintenance"; @Autowired protected CategoryParameterService categoryParameterService; @@ -45,12 +45,12 @@ public class MaintenanceController extends UnRestrictedBaseController { */ @RequestMapping(value = "/category_parameter/{categoryName}", method = RequestMethod.POST) public ResponseEntity addCategoryOptions ( - HttpServletRequest request, @PathVariable String categoryName, @RequestBody AddCategoryOptionsRequest option) throws Exception { - LOGGER.debug(EELFLoggerDelegate.debugLogger, "start {}({})", getMethodName()); + HttpServletRequest request, @PathVariable String categoryName, @RequestBody AddCategoryOptionsRequest option) { + debugStartLog(); try { AddCategoryOptionResponse response = categoryParameterService.createCategoryParameterOptions(categoryName, option); HttpStatus httpStatus = response.getErrors().size()>0 ? HttpStatus.MULTI_STATUS : HttpStatus.OK; - LOGGER.debug(EELFLoggerDelegate.debugLogger, "end {}() => {}", getMethodName(), response); + debugEndLog(response); return new ResponseEntity<>(response, httpStatus); } catch (CategoryParameterServiceImpl.UnfoundedCategoryException exception) { @@ -64,12 +64,12 @@ public class MaintenanceController extends UnRestrictedBaseController { @RequestMapping(value = "/category_parameter/{categoryName}", method = RequestMethod.PUT) public ResponseEntity updateNameForOption ( - HttpServletRequest request, @PathVariable String categoryName, @RequestBody CategoryParameterOptionRep option) throws Exception { - LOGGER.debug(EELFLoggerDelegate.debugLogger, "start {}({})", getMethodName()); + HttpServletRequest request, @PathVariable String categoryName, @RequestBody CategoryParameterOptionRep option) { + debugStartLog(); try { AddCategoryOptionResponse response = categoryParameterService.updateCategoryParameterOption(categoryName, option); HttpStatus httpStatus = response.getErrors().size()>0 ? HttpStatus.MULTI_STATUS : HttpStatus.OK; - LOGGER.debug(EELFLoggerDelegate.debugLogger, "end {}() => {}", getMethodName(), response); + debugEndLog(response); return new ResponseEntity<>(response, httpStatus); } catch (ForbiddenException exception) { @@ -94,11 +94,11 @@ public class MaintenanceController extends UnRestrictedBaseController { * @throws Exception the exception */ @RequestMapping(value = "/category_parameter", method = RequestMethod.GET) - public ResponseEntity getCategoryParameter(HttpServletRequest request, @RequestParam(value="familyName", required = true) Family familyName) throws Exception { - LOGGER.debug(EELFLoggerDelegate.debugLogger, "start {}({})", getMethodName()); + public ResponseEntity getCategoryParameter(HttpServletRequest request, @RequestParam(value="familyName", required = true) Family familyName) { + debugStartLog(); try { CategoryParametersResponse response = categoryParameterService.getCategoryParameters(familyName); - LOGGER.debug(EELFLoggerDelegate.debugLogger, "end {}() => {}", getMethodName(), response); + debugEndLog(response); return new ResponseEntity<>(response, HttpStatus.OK); } catch (Exception exception) { @@ -115,12 +115,12 @@ public class MaintenanceController extends UnRestrictedBaseController { */ @RequestMapping(value = "/delete_category_parameter/{categoryName}", method = RequestMethod.POST) public ResponseEntity deleteCategoryOption ( - HttpServletRequest request, @PathVariable String categoryName, @RequestBody CategoryParameterOption option) throws Exception { - LOGGER.debug(EELFLoggerDelegate.debugLogger, "start {}({})", getMethodName()); + HttpServletRequest request, @PathVariable String categoryName, @RequestBody CategoryParameterOption option) { + debugStartLog(); try { categoryParameterService.deleteCategoryOption(categoryName, option); - LOGGER.debug(EELFLoggerDelegate.debugLogger, "end {}() => {}", getMethodName(), HttpStatus.OK); + debugEndLog(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK); } catch (CategoryParameterServiceImpl.UnfoundedCategoryException exception) { @@ -132,4 +132,11 @@ public class MaintenanceController extends UnRestrictedBaseController { } } + private void debugStartLog() { + LOGGER.debug(EELFLoggerDelegate.debugLogger, "start {}({})", getMethodCallerName()); + } + + private void debugEndLog(Object response) { + LOGGER.debug(EELFLoggerDelegate.debugLogger, "end {}() => {}", getMethodCallerName(), response); + } } diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/MsoConfig.java b/vid-app-common/src/main/java/org/onap/vid/controllers/MsoConfig.java index f3dbf5df..aa0b1ad3 100644 --- a/vid-app-common/src/main/java/org/onap/vid/controllers/MsoConfig.java +++ b/vid-app-common/src/main/java/org/onap/vid/controllers/MsoConfig.java @@ -8,6 +8,7 @@ import org.onap.vid.mso.MsoInterface; import org.onap.vid.mso.rest.MsoRestClientNew; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.togglz.core.manager.FeatureManager; @Configuration @@ -34,8 +35,8 @@ public class MsoConfig { } @Bean - public MsoBusinessLogic getMsoBusinessLogic(){ - return new MsoBusinessLogicImpl(getMsoClient()); + public MsoBusinessLogic getMsoBusinessLogic(MsoInterface msoClient, FeatureManager featureManager){ + return new MsoBusinessLogicImpl(msoClient, featureManager); } diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/MsoController.java b/vid-app-common/src/main/java/org/onap/vid/controllers/MsoController.java index deebb2b7..62c64b75 100644 --- a/vid-app-common/src/main/java/org/onap/vid/controllers/MsoController.java +++ b/vid-app-common/src/main/java/org/onap/vid/controllers/MsoController.java @@ -27,6 +27,7 @@ import org.onap.vid.mso.MsoBusinessLogic; import org.onap.vid.mso.MsoResponseWrapper; 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.portalsdk.core.controller.RestrictedBaseController; import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; @@ -46,6 +47,8 @@ import java.util.Date; import java.util.LinkedHashMap; import java.util.List; +import static org.onap.vid.utils.Logging.getMethodName; + //import java.util.UUID; //import org.springframework.http.ResponseEntity; //import org.springframework.http.RequestEntity; @@ -65,7 +68,7 @@ public class MsoController extends RestrictedBaseController { /** * The Constant dateFormat. */ - final static DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss:SSSS"); + private final static DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss:SSSS"); /** * The Constant SVC_INSTANCE_ID. @@ -98,7 +101,7 @@ public class MsoController extends RestrictedBaseController { * @throws Exception the exception */ @RequestMapping(value = "/mso_create_svc_instance", method = RequestMethod.POST) - public ResponseEntity createSvcInstance(HttpServletRequest request, @RequestBody RequestDetails mso_request) throws Exception { + public ResponseEntity createSvcInstance(HttpServletRequest request, @RequestBody RequestDetails mso_request) { String methodName = "createSvcInstance"; LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start"); @@ -119,7 +122,7 @@ public class MsoController extends RestrictedBaseController { * @throws Exception the exception */ @RequestMapping(value = "/mso_create_e2e_svc_instance", method = RequestMethod.POST) - public ResponseEntity createE2eSvcInstance(HttpServletRequest request, @RequestBody LinkedHashMap mso_request) throws Exception { + public ResponseEntity createE2eSvcInstance(HttpServletRequest request, @RequestBody LinkedHashMap mso_request) { String methodName = "createE2eSvcInstance"; LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start"); @@ -141,7 +144,7 @@ public class MsoController extends RestrictedBaseController { * @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 mso_request) throws Exception { + public ResponseEntity createVnf(@PathVariable("serviceInstanceId") String serviceInstanceId, HttpServletRequest request, @RequestBody RequestDetails mso_request) { MsoResponseWrapper w = msoBusinessLogic.createVnf(mso_request, serviceInstanceId); @@ -160,7 +163,7 @@ public class MsoController extends RestrictedBaseController { * @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 mso_request) throws Exception { + public ResponseEntity 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); @@ -181,7 +184,7 @@ public class MsoController extends RestrictedBaseController { */ @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 mso_request) throws Exception { + HttpServletRequest request, @RequestBody RequestDetails mso_request) { String methodName = "createVolumeGroupInstance"; LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start"); @@ -202,7 +205,7 @@ public class MsoController extends RestrictedBaseController { */ @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 mso_request) throws Exception { + @PathVariable("vnfInstanceId") String vnfInstanceId, HttpServletRequest request, @RequestBody RequestDetails mso_request) { String methodName = "createVfModuleInstance"; LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start"); @@ -224,7 +227,7 @@ public class MsoController extends RestrictedBaseController { */ @RequestMapping(value = "/mso_create_configuration_instance/{serviceInstanceId}/configurations/", method = RequestMethod.POST) public ResponseEntity createConfigurationInstance(@PathVariable("serviceInstanceId") String serviceInstanceId, - HttpServletRequest request, @RequestBody RequestDetails mso_request) throws Exception { + HttpServletRequest request, @RequestBody RequestDetailsWrapper mso_request) { String methodName = "createConfigurationInstance"; LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start"); @@ -245,10 +248,10 @@ public class MsoController extends RestrictedBaseController { */ @RequestMapping(value = "/mso_delete_e2e_svc_instance/{serviceInstanceId}", method = RequestMethod.POST) public ResponseEntity deleteE2eSvcInstance(@PathVariable("serviceInstanceId") String serviceInstanceId, - HttpServletRequest request, @RequestBody LinkedHashMap mso_request) throws Exception { + HttpServletRequest request, @RequestBody LinkedHashMap mso_request) { String methodName = "deleteE2eSvcInstance"; - LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start"); + LOGGER.debug(EELFLoggerDelegate.debugLogger, "start {}({})", getMethodName(), mso_request); MsoResponseWrapper w = msoBusinessLogic.deleteE2eSvcInstance(mso_request.get("requestDetails"), serviceInstanceId); @@ -267,20 +270,18 @@ public class MsoController extends RestrictedBaseController { * @return the response entity * @throws Exception the exception */ + @RequestMapping(value = "/mso_delete_svc_instance/{serviceInstanceId}", method = RequestMethod.POST) - public ResponseEntity deleteSvcInstance(@PathVariable("serviceInstanceId") String serviceInstanceId, - HttpServletRequest request, @RequestBody RequestDetails mso_request) throws Exception { + 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, dateFormat.format(new Date()) + "<== " + methodName + " start"); - - MsoResponseWrapper w = msoBusinessLogic.deleteSvcInstance(mso_request, serviceInstanceId); - - LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " w=" + w.getResponse()); + 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 (new ResponseEntity(w.getResponse(), HttpStatus.OK)); - + return w.getResponse(); } /** @@ -295,7 +296,7 @@ public class MsoController extends RestrictedBaseController { @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 mso_request) throws Exception { + HttpServletRequest request, @RequestBody RequestDetails mso_request) { String methodName = "deleteVnf"; LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start"); @@ -320,7 +321,7 @@ public class MsoController extends RestrictedBaseController { public ResponseEntity deleteConfiguration( @PathVariable("serviceInstanceId") String serviceInstanceId, @PathVariable ("configurationId") String configurationId, - @RequestBody RequestDetails mso_request) throws Exception { + @RequestBody RequestDetailsWrapper mso_request) { String methodName = "deleteConfiguration"; LOGGER.debug(EELFLoggerDelegate.debugLogger, @@ -345,7 +346,7 @@ public class MsoController extends RestrictedBaseController { public ResponseEntity activateConfiguration( @PathVariable("serviceInstanceId") String serviceInstanceId, @PathVariable("configurationId") String configurationId, - @RequestBody RequestDetails mso_request) throws Exception { + @RequestBody RequestDetails mso_request) { MsoResponseWrapper w = msoBusinessLogic.setConfigurationActiveStatus(mso_request, serviceInstanceId, configurationId, true); @@ -366,7 +367,7 @@ public class MsoController extends RestrictedBaseController { public ResponseEntity deactivateConfiguration( @PathVariable("serviceInstanceId") String serviceInstanceId, @PathVariable("configurationId") String configurationId, - @RequestBody RequestDetails mso_request) throws Exception { + @RequestBody RequestDetails mso_request) { MsoResponseWrapper w = msoBusinessLogic.setConfigurationActiveStatus(mso_request, serviceInstanceId, configurationId, false); @@ -387,7 +388,7 @@ public class MsoController extends RestrictedBaseController { public ResponseEntity disablePortOnConfiguration( @PathVariable("serviceInstanceId") String serviceInstanceId, @PathVariable("configurationId") String configurationId, - @RequestBody RequestDetails mso_request) throws Exception { + @RequestBody RequestDetails mso_request) { MsoResponseWrapper w = msoBusinessLogic.setPortOnConfigurationStatus(mso_request, serviceInstanceId, configurationId, false); @@ -408,7 +409,7 @@ public class MsoController extends RestrictedBaseController { public ResponseEntity enablePortOnConfiguration( @PathVariable("serviceInstanceId") String serviceInstanceId, @PathVariable("configurationId") String configurationId, - @RequestBody RequestDetails mso_request) throws Exception { + @RequestBody RequestDetails mso_request) { MsoResponseWrapper w = msoBusinessLogic.setPortOnConfigurationStatus(mso_request, serviceInstanceId, configurationId, true); @@ -430,7 +431,7 @@ public class MsoController extends RestrictedBaseController { @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 mso_request) throws Exception { + @PathVariable("vfModuleId") String vfModuleId, HttpServletRequest request, @RequestBody RequestDetails mso_request) { String methodName = "deleteVfModule"; LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start"); @@ -439,7 +440,6 @@ public class MsoController extends RestrictedBaseController { // always return OK, the MSO status code is embedded in the body return (new ResponseEntity(w.getResponse(), HttpStatus.OK)); - } /** @@ -455,7 +455,7 @@ public class MsoController extends RestrictedBaseController { @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 mso_request) throws Exception { + HttpServletRequest request, @RequestBody RequestDetails mso_request) { String methodName = "deleteVolumeGroupInstance"; LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start"); @@ -476,7 +476,7 @@ public class MsoController extends RestrictedBaseController { */ @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 mso_request) throws Exception { + @PathVariable("networkInstanceId") String networkInstanceId, HttpServletRequest request, @RequestBody RequestDetails mso_request) { String methodName = "deleteNwInstance"; LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start"); @@ -484,7 +484,6 @@ public class MsoController extends RestrictedBaseController { // always return OK, the MSO status code is embedded in the body return (new ResponseEntity(w.getResponse(), HttpStatus.OK)); - } /** @@ -497,7 +496,7 @@ public class MsoController extends RestrictedBaseController { */ @RequestMapping(value = "/mso_get_orch_req/{requestId}", method = RequestMethod.GET) public ResponseEntity getOrchestrationRequest(@PathVariable("requestId") String requestId, - HttpServletRequest request) throws Exception { + HttpServletRequest request) { String methodName = "getOrchestrationRequest"; LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start"); @@ -509,7 +508,6 @@ public class MsoController extends RestrictedBaseController { return (new ResponseEntity(w.getResponse(), HttpStatus.OK)); } - /** * Gets the orchestration requests. * @@ -520,7 +518,7 @@ public class MsoController extends RestrictedBaseController { */ @RequestMapping(value = "/mso_get_orch_reqs/{filterString}", method = RequestMethod.GET) public ResponseEntity getOrchestrationRequests(@PathVariable("filterString") String filterString, - HttpServletRequest request) throws Exception { + HttpServletRequest request) { String methodName = "getOrchestrationRequests"; LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start"); @@ -532,7 +530,6 @@ public class MsoController extends RestrictedBaseController { return (new ResponseEntity(w.getResponse(), HttpStatus.OK)); } - /** * activate to a pnf instance. * @@ -542,7 +539,7 @@ public class MsoController extends RestrictedBaseController { * @throws Exception the exception */ @RequestMapping(value = "/mso_activate_service_instance/{serviceInstanceId}", method = RequestMethod.POST) - public ResponseEntity activateServiceInstance(@PathVariable("serviceInstanceId") String serviceInstanceId, @RequestBody RequestDetails requestDetails) throws Exception { + public ResponseEntity activateServiceInstance(@PathVariable("serviceInstanceId") String serviceInstanceId, @RequestBody RequestDetails requestDetails) { String methodName = "activateServiceInstance"; LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start"); @@ -559,7 +556,7 @@ public class MsoController extends RestrictedBaseController { * @throws Exception the exception */ @RequestMapping(value = "/mso_deactivate_service_instance/{serviceInstanceId}", method = RequestMethod.POST) - public ResponseEntity deactivateServiceInstance(@PathVariable("serviceInstanceId") String serviceInstanceId, @RequestBody RequestDetails requestDetails) throws Exception { + public ResponseEntity deactivateServiceInstance(@PathVariable("serviceInstanceId") String serviceInstanceId, @RequestBody RequestDetails requestDetails) { String methodName = "deactivateServiceInstance"; LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start"); @@ -567,7 +564,6 @@ public class MsoController extends RestrictedBaseController { 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. @@ -575,7 +571,7 @@ public class MsoController extends RestrictedBaseController { * @throws Exception the exception */ @RequestMapping(value = "/mso_get_orch_reqs/dashboard", method = RequestMethod.GET) - public List getOrchestrationRequestsForDashboard() throws Exception { + public List getOrchestrationRequestsForDashboard() { String methodName = "getOrchestrationRequestsForDashboard"; LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start"); @@ -592,7 +588,7 @@ public class MsoController extends RestrictedBaseController { * @throws Exception the exception */ @RequestMapping(value = "/mso_get_man_task/{originalRequestId}", method = RequestMethod.GET) - public List getManualTasksByRequestId(@PathVariable("originalRequestId") String originalRequestId) throws Exception { + public List getManualTasksByRequestId(@PathVariable("originalRequestId") String originalRequestId) { String methodName = "getManualTasksByRequestId"; LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start"); @@ -600,8 +596,6 @@ public class MsoController extends RestrictedBaseController { return msoBusinessLogic.getManualTasksByRequestId(originalRequestId); } - - /** * Complete the manual task. * @@ -611,7 +605,7 @@ public class MsoController extends RestrictedBaseController { * @throws Exception the exception */ @RequestMapping(value = "/mso_post_man_task/{taskId}", method = RequestMethod.POST) - public ResponseEntity manualTaskComplete(@PathVariable("taskId") String taskId , @RequestBody RequestDetails requestDetails) throws Exception { + public ResponseEntity manualTaskComplete(@PathVariable("taskId") String taskId , @RequestBody RequestDetails requestDetails) { String methodName = "manualTaskComplete"; LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start"); @@ -622,7 +616,7 @@ public class MsoController extends RestrictedBaseController { @RequestMapping(value = "/mso_remove_relationship/{serviceInstanceId}", method = RequestMethod.POST) public ResponseEntity removeRelationshipFromServiceInstance(@PathVariable("serviceInstanceId") String serviceInstanceId , - @RequestBody RequestDetails requestDetails) throws Exception { + @RequestBody RequestDetails requestDetails) { String methodName = "removeRelationshipFromServiceInstance"; LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start"); @@ -639,7 +633,7 @@ public class MsoController extends RestrictedBaseController { @RequestMapping(value = "/mso_add_relationship/{serviceInstanceId}", method = RequestMethod.POST) public ResponseEntity addRelationshipToServiceInstance(@PathVariable("serviceInstanceId") String serviceInstanceId , - @RequestBody RequestDetails requestDetails) throws Exception { + @RequestBody RequestDetails requestDetails) { String methodName = "addRelationshipToServiceInstance"; LOGGER.debug(EELFLoggerDelegate.debugLogger, dateFormat.format(new Date()) + "<== " + methodName + " start"); @@ -654,7 +648,6 @@ public class MsoController extends RestrictedBaseController { return new ResponseEntity<>(w.getResponse(), HttpStatus.OK); } - /** * Exception handler. * @@ -697,5 +690,4 @@ public class MsoController extends RestrictedBaseController { response.flushBuffer(); } - } diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/OperationalEnvironmentController.java b/vid-app-common/src/main/java/org/onap/vid/controllers/OperationalEnvironmentController.java index fd8ae140..3b6a3f78 100644 --- a/vid-app-common/src/main/java/org/onap/vid/controllers/OperationalEnvironmentController.java +++ b/vid-app-common/src/main/java/org/onap/vid/controllers/OperationalEnvironmentController.java @@ -5,8 +5,6 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.MoreObjects; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.exception.ExceptionUtils; -import org.onap.portalsdk.core.controller.RestrictedBaseController; -import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; import org.onap.vid.changeManagement.RequestDetailsWrapper; import org.onap.vid.model.ExceptionResponse; import org.onap.vid.model.RequestReferencesContainer; @@ -19,6 +17,7 @@ import org.onap.vid.mso.model.OperationalEnvironmentDeactivateInfo; import org.onap.vid.mso.rest.MsoRestClientNew; import org.onap.vid.mso.rest.OperationalEnvironment.OperationEnvironmentRequestDetails; import org.onap.vid.mso.rest.RequestDetails; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.web.bind.MissingServletRequestParameterException; @@ -35,13 +34,11 @@ import java.util.stream.Stream; import static org.onap.vid.utils.Logging.getMethodCallerName; import static org.onap.vid.utils.Logging.getMethodName; -import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR; @RestController @RequestMapping("operationalEnvironment") -public class OperationalEnvironmentController extends RestrictedBaseController { +public class OperationalEnvironmentController extends VidRestrictedBaseController { - private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(OperationalEnvironmentController.class); private final RestMsoImplementation restMso; private final MsoBusinessLogic msoBusinessLogic; @@ -55,8 +52,8 @@ public class OperationalEnvironmentController extends RestrictedBaseController { } @RequestMapping(value = "/create", method = RequestMethod.POST) - public MsoResponseWrapper2 createOperationalEnvironment(HttpServletRequest request, @RequestBody OperationalEnvironmentCreateBody operationalEnvironment) throws Exception { - LOGGER.debug(EELFLoggerDelegate.debugLogger, "start {}({})", getMethodName(), operationalEnvironment); + public MsoResponseWrapper2 createOperationalEnvironment(HttpServletRequest request, @RequestBody OperationalEnvironmentCreateBody operationalEnvironment) { + debugStart(operationalEnvironment); String userId = ControllersUtils.extractUserId(request); RequestDetailsWrapper requestDetailsWrapper = msoBusinessLogic.convertParametersToRequestDetails(operationalEnvironment, userId); String path = msoBusinessLogic.getOperationalEnvironmentCreationPath(); @@ -69,7 +66,7 @@ public class OperationalEnvironmentController extends RestrictedBaseController { @RequestMapping(value = "/activate", method = RequestMethod.POST) public MsoResponseWrapper2 activate(HttpServletRequest request, @RequestParam("operationalEnvironment") String operationalEnvironmentId, - @RequestBody OperationalEnvironmentActivateBody activateRequest) throws Exception { + @RequestBody OperationalEnvironmentActivateBody activateRequest) throws MissingServletRequestParameterException { verifyIsNotEmpty(operationalEnvironmentId, "operationalEnvironment"); @@ -96,7 +93,7 @@ public class OperationalEnvironmentController extends RestrictedBaseController { @RequestMapping(value = "/deactivate", method = RequestMethod.POST) public MsoResponseWrapper2 deactivate(HttpServletRequest request, @RequestParam("operationalEnvironment") String operationalEnvironmentId, - @RequestBody Map deactivationRequest) throws Exception { + @RequestBody Map deactivationRequest) throws MissingServletRequestParameterException { verifyIsNotEmpty(operationalEnvironmentId, "operationalEnvironment"); @@ -116,9 +113,9 @@ public class OperationalEnvironmentController extends RestrictedBaseController { } @RequestMapping(value = "/requestStatus", method = RequestMethod.GET) - public MsoResponseWrapper2 status(HttpServletRequest request, @RequestParam("requestId") String requestId) throws Exception { + public MsoResponseWrapper2 status(HttpServletRequest request, @RequestParam("requestId") String requestId) throws MissingServletRequestParameterException { - LOGGER.debug(EELFLoggerDelegate.debugLogger, "start {}({})", getMethodName(), requestId); + debugStart(requestId); verifyIsNotEmpty(requestId, "requestId"); String path = msoBusinessLogic.getCloudResourcesRequestsStatusPath(requestId); @@ -129,12 +126,6 @@ public class OperationalEnvironmentController extends RestrictedBaseController { return new MsoResponseWrapper2<>(msoResponse); } - @ExceptionHandler(Exception.class) - @ResponseStatus(value=INTERNAL_SERVER_ERROR) - private ExceptionResponse exceptionHandler(Exception e) { - return ControllersUtils.handleException(e, LOGGER); - } - @ExceptionHandler({ org.springframework.web.bind.MissingServletRequestParameterException.class, BadManifestException.class diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/PolicyController.java b/vid-app-common/src/main/java/org/onap/vid/controllers/PolicyController.java index 7519053a..80b4739d 100644 --- a/vid-app-common/src/main/java/org/onap/vid/controllers/PolicyController.java +++ b/vid-app-common/src/main/java/org/onap/vid/controllers/PolicyController.java @@ -21,9 +21,9 @@ package org.onap.vid.controllers; import org.json.simple.JSONObject; +import org.onap.vid.policy.*; import org.onap.portalsdk.core.controller.RestrictedBaseController; import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; -import org.onap.vid.policy.*; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestBody; @@ -45,7 +45,7 @@ public class PolicyController extends RestrictedBaseController{ private static final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(PolicyController.class); @RequestMapping(value="/get_policy",method = RequestMethod.POST) - public ResponseEntity getPolicyInfo( HttpServletRequest request, @RequestBody JSONObject policy_request) throws Exception { + public ResponseEntity getPolicyInfo( HttpServletRequest request, @RequestBody JSONObject policy_request) { LOGGER.debug("#####################POLICY API CALL STARTED ###############"+ PolicyProperties.POLICY_GET_CONFIG_VAL); LOGGER.debug("#####################Policy Request ###############"+policy_request.toString()); @@ -58,7 +58,7 @@ public class PolicyController extends RestrictedBaseController{ return ( new ResponseEntity(policyResWrapper.getResponse(), HttpStatus.valueOf(policyResWrapper.getStatus())) ); } - protected static PolicyResponseWrapper getPolicyConfig(JSONObject request, String path) throws Exception { + protected static PolicyResponseWrapper getPolicyConfig(JSONObject request, String path) { String methodName = "getPolicyConfig"; String uuid = UUID.randomUUID().toString(); LOGGER.debug( "starting getPolicyConfig "); diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/ProbeController.java b/vid-app-common/src/main/java/org/onap/vid/controllers/ProbeController.java new file mode 100644 index 00000000..a2145de3 --- /dev/null +++ b/vid-app-common/src/main/java/org/onap/vid/controllers/ProbeController.java @@ -0,0 +1,27 @@ +package org.onap.vid.controllers; + +import org.onap.vid.aai.AaiClient; +import org.onap.vid.model.probes.ExternalComponentStatus; +import org.onap.portalsdk.core.controller.RestrictedBaseController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.List; + +@RestController +@RequestMapping("probe") +public class ProbeController extends RestrictedBaseController { + @Autowired + private AaiClient aaiClient; + + @RequestMapping(method= RequestMethod.GET) + public List getProbe(){ + List componentStatuses = new ArrayList<>(); + componentStatuses.add(aaiClient.probeAaiGetAllSubscribers()); + return componentStatuses; + } + +} diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/PropertyController.java b/vid-app-common/src/main/java/org/onap/vid/controllers/PropertyController.java index 8066507a..2c823863 100644 --- a/vid-app-common/src/main/java/org/onap/vid/controllers/PropertyController.java +++ b/vid-app-common/src/main/java/org/onap/vid/controllers/PropertyController.java @@ -20,12 +20,12 @@ package org.onap.vid.controllers; -import org.onap.portalsdk.core.controller.RestrictedBaseController; -import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; -import org.onap.portalsdk.core.util.SystemProperties; import org.onap.vid.category.CategoryParametersResponse; import org.onap.vid.model.CategoryParameter.Family; import org.onap.vid.services.CategoryParameterService; +import org.onap.portalsdk.core.controller.RestrictedBaseController; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.onap.portalsdk.core.util.SystemProperties; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -79,7 +79,7 @@ public class PropertyController extends RestrictedBaseController{ */ @RequestMapping(value = "/get_property/{name}/{defaultvalue}", method = RequestMethod.GET) public ResponseEntity getProperty (@PathVariable("name") String name, @PathVariable("defaultvalue") String defaultvalue, - HttpServletRequest request) throws Exception { + HttpServletRequest request) { String methodName = "getProperty"; ResponseEntity resp = null; @@ -115,7 +115,7 @@ public class PropertyController extends RestrictedBaseController{ * @throws Exception the exception */ @RequestMapping(value = "/category_parameter", method = RequestMethod.GET) - public ResponseEntity getCategoryParameter(HttpServletRequest request, @RequestParam(value="familyName", required = true) Family familyName) throws Exception { + public ResponseEntity getCategoryParameter(HttpServletRequest request, @RequestParam(value="familyName", required = true) Family familyName) { LOGGER.debug(EELFLoggerDelegate.debugLogger, "start {}({})", getMethodName()); try { CategoryParametersResponse response = categoryParameterService.getCategoryParameters(familyName); diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/RoleGeneratorController.java b/vid-app-common/src/main/java/org/onap/vid/controllers/RoleGeneratorController.java index 2dbb4d11..dd6388d8 100644 --- a/vid-app-common/src/main/java/org/onap/vid/controllers/RoleGeneratorController.java +++ b/vid-app-common/src/main/java/org/onap/vid/controllers/RoleGeneratorController.java @@ -1,27 +1,22 @@ package org.onap.vid.controllers; -import fj.test.Bool; -import org.json.JSONObject; -import org.onap.portalsdk.core.controller.UnRestrictedBaseController; import org.onap.vid.services.RoleGeneratorService; +import org.onap.portalsdk.core.controller.UnRestrictedBaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; -import javax.servlet.http.HttpServletRequest; - @RestController public class RoleGeneratorController extends UnRestrictedBaseController { @Autowired private RoleGeneratorService roleGeneratorService; public static final String GENERATE_ROLE_SCRIPT = "generateRoleScript"; @RequestMapping(value = GENERATE_ROLE_SCRIPT +"/{firstRun}", method = RequestMethod.GET ) - public ResponseEntity generateRoleScript (@PathVariable("firstRun") boolean firstRun) throws Exception { + public ResponseEntity generateRoleScript (@PathVariable("firstRun") boolean firstRun) { ResponseEntity response = null; String query = roleGeneratorService.generateRoleScript(firstRun); response = new ResponseEntity(query, HttpStatus.OK); diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/VidController.java b/vid-app-common/src/main/java/org/onap/vid/controllers/VidController.java index 41abdee5..6d6ffb31 100644 --- a/vid-app-common/src/main/java/org/onap/vid/controllers/VidController.java +++ b/vid-app-common/src/main/java/org/onap/vid/controllers/VidController.java @@ -20,22 +20,21 @@ package org.onap.vid.controllers; -import org.onap.portalsdk.core.controller.RestrictedBaseController; -import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; -import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException; import org.onap.vid.asdc.AsdcCatalogException; import org.onap.vid.asdc.beans.SecureServices; import org.onap.vid.exceptions.VidServiceUnavailableException; +import org.onap.vid.model.PombaInstance.PombaRequest; import org.onap.vid.model.ServiceModel; import org.onap.vid.roles.Role; import org.onap.vid.roles.RoleProvider; import org.onap.vid.services.AaiService; +import org.onap.vid.services.PombaService; import org.onap.vid.services.VidService; +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.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; @@ -51,8 +50,7 @@ public class VidController extends RestrictedBaseController { private final VidService service; @Autowired - public VidController(VidService vidService) throws SdcToscaParserException{ - + public VidController(VidService vidService) { service = vidService; } @@ -62,6 +60,9 @@ public class VidController extends RestrictedBaseController { @Autowired RoleProvider roleProvider; + @Autowired + private PombaService pombaService; + // /** // * Gets the services. // * @@ -112,7 +113,6 @@ public class VidController extends RestrictedBaseController { } catch (Exception t) { LOG.debug("Unexpected error while retrieving service definitions from A&AI: " + t.getMessage() + ":", t); - t.printStackTrace(); throw new VidServiceUnavailableException("Unexpected error while retrieving service definitions from A&AI: " + t.getMessage(), t); } } @@ -131,11 +131,16 @@ public class VidController extends RestrictedBaseController { try { return service.getService(uuid); } catch (AsdcCatalogException e) { - LOG.error("Failed to retrieve service definitions from SDC", e); + LOG.error("Failed to retrieve service definitions from SDC. Error: "+e.getMessage() , e); throw new VidServiceUnavailableException("Failed to retrieve service definitions from SDC", e); } } + @RequestMapping(value = "/rest/models/reset", method = RequestMethod.POST) + @ResponseStatus(HttpStatus.ACCEPTED) + public void invalidateServiceModelCache(HttpServletRequest request) { + service.invalidateServiceCache(); + } /** * Gets the services view. @@ -145,7 +150,12 @@ public class VidController extends RestrictedBaseController { * @throws VidServiceUnavailableException the vid service unavailable exception */ @RequestMapping(value={"/serviceModels"}, method=RequestMethod.GET) - public ModelAndView getServicesView(HttpServletRequest request) throws VidServiceUnavailableException { - return new ModelAndView("serviceModels"); - } + public ModelAndView getServicesView(HttpServletRequest request) { + return new ModelAndView("serviceModels"); + } + + @RequestMapping(value = {"/rest/models/services/verifyService"}, method = RequestMethod.POST) + public void verifyServiceInstance(HttpServletRequest request, @RequestBody PombaRequest pombaRequest) { + pombaService.verify(pombaRequest); + } } diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/VidRestrictedBaseController.java b/vid-app-common/src/main/java/org/onap/vid/controllers/VidRestrictedBaseController.java new file mode 100644 index 00000000..b520bc02 --- /dev/null +++ b/vid-app-common/src/main/java/org/onap/vid/controllers/VidRestrictedBaseController.java @@ -0,0 +1,43 @@ +package org.onap.vid.controllers; + +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.exception.ExceptionUtils; +import org.onap.vid.model.ExceptionResponse; +import org.onap.portalsdk.core.controller.RestrictedBaseController; +import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; + +import static org.onap.vid.utils.Logging.getMethodCallerName; +import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR; + +public abstract class VidRestrictedBaseController extends RestrictedBaseController { + + protected final EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(this.getClass().getName()); + + @ExceptionHandler(MethodArgumentTypeMismatchException.class) + @ResponseBody + public ResponseEntity handleMethodArgumentTypeMismatchException(MethodArgumentTypeMismatchException e) { + LOGGER.error(EELFLoggerDelegate.errorLogger, "{}: {}", getMethodCallerName(), ExceptionUtils.getMessage(e), e); + Class type = e.getRequiredType(); + String message; + if (type.isEnum()) { + message = "The parameter " + e.getName() + " must have a value among : " + StringUtils.join(type.getEnumConstants(), ", "); + } + else { + message = "The parameter " + e.getName() + " must be of type " + type.getTypeName(); + } + ResponseEntity response = new ResponseEntity(message, HttpStatus.BAD_REQUEST); + return response; + } + + @ExceptionHandler(Exception.class) + @ResponseStatus(value=INTERNAL_SERVER_ERROR) + public ExceptionResponse exceptionHandler(Exception e) { + return ControllersUtils.handleException(e, LOGGER); + } +} diff --git a/vid-app-common/src/main/java/org/onap/vid/controllers/WebConfig.java b/vid-app-common/src/main/java/org/onap/vid/controllers/WebConfig.java index 295a5fce..22e47600 100644 --- a/vid-app-common/src/main/java/org/onap/vid/controllers/WebConfig.java +++ b/vid-app-common/src/main/java/org/onap/vid/controllers/WebConfig.java @@ -1,36 +1,30 @@ package org.onap.vid.controllers; import com.fasterxml.jackson.databind.ObjectMapper; -import org.apache.commons.io.IOUtils; -import org.json.JSONObject; -import org.json.JSONTokener; -import org.onap.vid.aai.AaiClient; -import org.onap.vid.aai.AaiClientInterface; +import org.onap.vid.aai.*; +import org.onap.vid.aai.model.PortDetailsTranslator; +import org.onap.vid.aai.util.AAIRestInterface; +import org.onap.vid.aai.util.HttpsAuthClient; import org.onap.vid.asdc.AsdcClient; -import org.onap.vid.asdc.local.LocalAsdcClient; -import org.onap.vid.asdc.memory.InMemoryAsdcClient; import org.onap.vid.asdc.parser.ToscaParserImpl2; import org.onap.vid.asdc.rest.RestfulAsdcClient; -import org.onap.vid.controllers.VidController; +import org.onap.vid.exceptions.GenericUncheckedException; import org.onap.vid.properties.AsdcClientConfiguration; -import org.onap.vid.properties.AsdcClientConfiguration.AsdcClientType; -import org.onap.vid.services.AaiService; -import org.onap.vid.services.AaiServiceImpl; -import org.onap.vid.services.VidService; -import org.onap.vid.services.VidServiceImpl; +import org.onap.vid.services.*; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.togglz.core.manager.FeatureManager; import javax.net.ssl.SSLContext; +import javax.servlet.ServletContext; import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; -import java.io.IOException; -import java.io.InputStream; +import java.io.File; import java.net.URI; import java.net.URISyntaxException; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; -import java.util.Arrays; @Configuration public class WebConfig { @@ -46,73 +40,76 @@ public class WebConfig { } + @Bean + public VidService vidService(AsdcClient asdcClient, FeatureManager featureManager) { + return new VidServiceImpl(asdcClient, featureManager); + } + @Bean + public AaiService getAaiService() { + return new AaiServiceImpl(); + } @Bean - public VidService vidService(AsdcClient asdcClient) { - return new VidServiceImpl(asdcClient); + public AaiResponseTranslator aaiResponseTranslator() { + return new AaiResponseTranslator(); } @Bean - public AaiService getAaiService(){ - return new AaiServiceImpl(); + public PortDetailsTranslator portDetailsTranslator() { + return new PortDetailsTranslator(); + } + + @Bean + public AaiClientInterface getAaiRestInterface(@Qualifier("aaiRestInterface") AAIRestInterface restController, PortDetailsTranslator portsDetailsTranslator) { + return new AaiClient(restController, portsDetailsTranslator); + } + + @Bean(name = "aaiRestInterface") + public AAIRestInterface aaiRestInterface(HttpsAuthClient httpsAuthClientFactory) { + return new AAIRestInterface(httpsAuthClientFactory); } @Bean - public AaiClientInterface getAaiClientInterface(){ - return new AaiClient(); + public PombaRestInterface getPombaRestInterface(HttpsAuthClient httpsAuthClientFactory) { + return new PombaRestInterface(httpsAuthClientFactory); } @Bean - public AsdcClient asdcClient(AsdcClientConfiguration asdcClientConfig) throws IOException { - switch (asdcClientConfig.getAsdcClientType()) { - case IN_MEMORY: - final InputStream asdcCatalogFile = VidController.class.getClassLoader().getResourceAsStream("catalog.json"); - final JSONTokener tokener = new JSONTokener(asdcCatalogFile); - final JSONObject catalog = new JSONObject(tokener); - - return new InMemoryAsdcClient.Builder().catalog(catalog).build(); - case REST: - - final String protocol = asdcClientConfig.getAsdcClientProtocol(); - final String host = asdcClientConfig.getAsdcClientHost(); - final int port = asdcClientConfig.getAsdcClientPort(); - final String auth = asdcClientConfig.getAsdcClientAuth(); - Client cl = null; - if (protocol.equalsIgnoreCase("https")) { - try { - SSLContext ctx = SSLContext.getInstance("TLSv1.2"); - ctx.init(null, null, null); - cl = ClientBuilder.newBuilder().sslContext(ctx).build(); - } catch (NoSuchAlgorithmException n) { - throw new RuntimeException("SDC Client could not be instantiated due to unsupported protocol TLSv1.2", n); - } catch (KeyManagementException k) { - throw new RuntimeException("SDC Client could not be instantiated due to a key management exception", k); - } - } else { - cl = ClientBuilder.newBuilder().build(); - } - - try { - final URI uri = new URI(protocol + "://" + host + ":" + port + "/"); - return new RestfulAsdcClient.Builder(cl, uri) - .auth(auth) - .build(); - } catch (URISyntaxException e) { - throw new RuntimeException("SDC Client could not be instantiated due to a syntax error in the URI", e); - } - - case LOCAL: - - final InputStream asdcServicesFile = VidController.class.getClassLoader().getResourceAsStream("sdcservices.json"); - - final JSONTokener jsonTokener = new JSONTokener(IOUtils.toString(asdcServicesFile)); - final JSONObject sdcServicesCatalog = new JSONObject(jsonTokener); - - return new LocalAsdcClient.Builder().catalog(sdcServicesCatalog).build(); - - default: - throw new RuntimeException(asdcClientConfig.getAsdcClientType() + " is invalid; must be one of " + Arrays.toString(AsdcClientType.values())); + public HttpsAuthClient httpsAuthClientFactory(ServletContext servletContext) { + final String certFilePath = new File(servletContext.getRealPath("/WEB-INF/cert/")).getAbsolutePath(); + return new HttpsAuthClient(certFilePath); + } + + @Bean + public AsdcClient asdcClient(AsdcClientConfiguration asdcClientConfig) { + + final String protocol = asdcClientConfig.getAsdcClientProtocol(); + final String host = asdcClientConfig.getAsdcClientHost(); + final int port = asdcClientConfig.getAsdcClientPort(); + final String auth = asdcClientConfig.getAsdcClientAuth(); + Client cl = null; + if (protocol.equalsIgnoreCase("https")) { + try { + SSLContext ctx = SSLContext.getInstance("TLSv1.2"); + ctx.init(null, null, null); + cl = ClientBuilder.newBuilder().sslContext(ctx).build(); + } catch (NoSuchAlgorithmException n) { + throw new GenericUncheckedException("SDC Client could not be instantiated due to unsupported protocol TLSv1.2", n); + } catch (KeyManagementException k) { + throw new GenericUncheckedException("SDC Client could not be instantiated due to a key management exception", k); + } + } else { + cl = ClientBuilder.newBuilder().build(); + } + + try { + final URI uri = new URI(protocol + "://" + host + ":" + port + "/"); + return new RestfulAsdcClient.Builder(cl, uri) + .auth(auth) + .build(); + } catch (URISyntaxException e) { + throw new GenericUncheckedException("SDC Client could not be instantiated due to a syntax error in the URI", e); } } @@ -121,4 +118,13 @@ public class WebConfig { return new ToscaParserImpl2(); } + @Bean + public PombaService getVerifyServiceInstanceService() { + return new PombaServiceImpl(); + } + + @Bean + public PombaClientInterface getVerifyServiceInstanceClientInterface() { + return new PombaClientImpl(); + } } -- cgit 1.2.3-korg