X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=dashboard%2Fwebapp-backend%2Fsrc%2Fmain%2Fjava%2Forg%2Foransc%2Fric%2Fportal%2Fdashboard%2Fcontroller%2FPolicyController.java;h=c01c7c6526f7a68ac017c054658eb3ddb5748f2f;hb=63c033af195f6b0dd4f12b92fa70965ee06bb60d;hp=410ad1df85afe2bc3d3ef525e10f0e0372e35ef7;hpb=766e6af8d8ddf946ad5cb45a560b040e4857065e;p=nonrtric.git diff --git a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/PolicyController.java b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/PolicyController.java index 410ad1df..c01c7c65 100644 --- a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/PolicyController.java +++ b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/PolicyController.java @@ -19,28 +19,19 @@ */ package org.oransc.ric.portal.dashboard.controller; +import io.swagger.annotations.ApiOperation; + import java.lang.invoke.MethodHandles; import javax.servlet.http.HttpServletResponse; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - -import org.oransc.ric.portal.dashboard.DashboardApplication; import org.oransc.ric.portal.dashboard.DashboardConstants; -import org.oransc.ric.portal.dashboard.exceptions.HttpBadRequestException; -import org.oransc.ric.portal.dashboard.exceptions.HttpInternalServerErrorException; -import org.oransc.ric.portal.dashboard.exceptions.HttpNotFoundException; -import org.oransc.ric.portal.dashboard.exceptions.HttpNotImplementedException; -import org.oransc.ric.portal.dashboard.model.PolicyInstances; -import org.oransc.ric.portal.dashboard.model.PolicyTypes; -import org.oransc.ric.portal.dashboard.model.SuccessTransport; import org.oransc.ric.portal.dashboard.policyagentapi.PolicyAgentApi; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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.security.access.annotation.Secured; import org.springframework.util.Assert; import org.springframework.web.bind.annotation.DeleteMapping; @@ -51,8 +42,6 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import java.util.Collection; -import io.swagger.annotations.ApiOperation; /** * Proxies calls from the front end to the Policy agent API. @@ -66,111 +55,85 @@ import io.swagger.annotations.ApiOperation; @RequestMapping(value = PolicyController.CONTROLLER_PATH, produces = MediaType.APPLICATION_JSON_VALUE) public class PolicyController { - private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - private static Gson gson = new GsonBuilder() // - .serializeNulls() // - .create(); // - - // Publish paths in constants so tests are easy to write - public static final String CONTROLLER_PATH = DashboardConstants.ENDPOINT_PREFIX + "/policy"; - // Endpoints - public static final String VERSION_METHOD = DashboardConstants.VERSION_METHOD; - public static final String POLICY_TYPES_METHOD = "policytypes"; - public static final String POLICY_TYPE_ID_NAME = "policy_type_id"; - public static final String POLICIES_NAME = "policies"; - public static final String POLICY_INSTANCE_ID_NAME = "policy_instance_id"; - - // Populated by the autowired constructor - private final PolicyAgentApi policyAgentApi; - - @Autowired - public PolicyController(final PolicyAgentApi policyAgentApi) { - Assert.notNull(policyAgentApi, "API must not be null"); - this.policyAgentApi = policyAgentApi; - logger.debug("ctor: configured with client type {}", policyAgentApi.getClass().getName()); - } - - /* - * The fields are defined in the Policy Control Typescript interface. - */ - @ApiOperation(value = "Gets the policy types from Near Realtime-RIC") - @GetMapping(POLICY_TYPES_METHOD) - @Secured({ DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD }) - public PolicyTypes getAllPolicyTypes(HttpServletResponse response) { - logger.debug("getAllPolicyTypes"); - return this.policyAgentApi.getAllPolicyTypes(); - } - - @ApiOperation(value = "Returns the policy instances for the given policy type.") - @GetMapping(POLICY_TYPES_METHOD + "/{" + POLICY_TYPE_ID_NAME + "}/" + POLICIES_NAME) - @Secured({ DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD }) - public String getPolicyInstances(@PathVariable(POLICY_TYPE_ID_NAME) String policyTypeIdString) { - logger.debug("getPolicyInstances {}", policyTypeIdString); - - PolicyInstances i = this.policyAgentApi.getPolicyInstancesForType(policyTypeIdString); - String json = gson.toJson(i); - return json; - } - - @ApiOperation(value = "Returns a policy instance of a type") - @GetMapping(POLICY_TYPES_METHOD + "/{" + POLICY_TYPE_ID_NAME + "}/" + POLICIES_NAME + "/{" + POLICY_INSTANCE_ID_NAME - + "}") - @Secured({ DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD }) - public String getPolicyInstance(@PathVariable(POLICY_TYPE_ID_NAME) String policyTypeIdString, - @PathVariable(POLICY_INSTANCE_ID_NAME) String policyInstanceId) { - logger.debug("getPolicyInstance {}:{}", policyTypeIdString, policyInstanceId); - return this.policyAgentApi.getPolicyInstance(policyInstanceId); - } - - @ApiOperation(value = "Creates the policy instances for the given policy type.") - @PutMapping(POLICY_TYPES_METHOD + "/{" + POLICY_TYPE_ID_NAME + "}/" + POLICIES_NAME + "/{" + POLICY_INSTANCE_ID_NAME - + "}") - @Secured({ DashboardConstants.ROLE_ADMIN }) - public void putPolicyInstance(@PathVariable(POLICY_TYPE_ID_NAME) String policyTypeIdString, - @RequestParam(name = "ric", required = true) String ric, - @PathVariable(POLICY_INSTANCE_ID_NAME) String policyInstanceId, @RequestBody String instance) { - logger.debug("putPolicyInstance typeId: {}, instanceId: {}, instance: {}", policyTypeIdString, policyInstanceId, - instance); - this.policyAgentApi.putPolicy(policyTypeIdString, policyInstanceId, instance, ric); - } - - @ApiOperation(value = "Deletes the policy instances for the given policy type.") - @DeleteMapping(POLICY_TYPES_METHOD + "/{" + POLICY_TYPE_ID_NAME + "}/" + POLICIES_NAME + "/{" - + POLICY_INSTANCE_ID_NAME + "}") - @Secured({ DashboardConstants.ROLE_ADMIN }) - public void deletePolicyInstance(@PathVariable(POLICY_TYPE_ID_NAME) String policyTypeIdString, - @PathVariable(POLICY_INSTANCE_ID_NAME) String policyInstanceId) { - logger.debug("deletePolicyInstance typeId: {}, instanceId: {}", policyTypeIdString, policyInstanceId); - this.policyAgentApi.deletePolicy(policyInstanceId); - } - - private void checkHttpError(String httpCode) { - logger.debug("Http Response Code: {}", httpCode); - if (httpCode.equals(String.valueOf(HttpStatus.NOT_FOUND.value()))) { - logger.error("Caught HttpNotFoundException"); - throw new HttpNotFoundException("Not Found Exception"); - } else if (httpCode.equals(String.valueOf(HttpStatus.BAD_REQUEST.value()))) { - logger.error("Caught HttpBadRequestException"); - throw new HttpBadRequestException("Bad Request Exception"); - } else if (httpCode.equals(String.valueOf(HttpStatus.INTERNAL_SERVER_ERROR.value()))) { - logger.error("Caught HttpInternalServerErrorException"); - throw new HttpInternalServerErrorException("Internal Server Error Exception"); - } else if (httpCode.equals(String.valueOf(HttpStatus.NOT_IMPLEMENTED.value()))) { - logger.error("Caught HttpNotImplementedException"); - throw new HttpNotImplementedException("Not Implemented Exception"); - } - } - - @ApiOperation(value = "Returns the rics supporting the given policy type.") - @GetMapping("/rics") - @Secured({ DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD }) - public String getRicsSupportingType( - @RequestParam(name = "policyType", required = true) String supportingPolicyType) { - logger.debug("getRicsSupportingType {}", supportingPolicyType); - - Collection result = this.policyAgentApi.getRicsSupportingType(supportingPolicyType); - String json = gson.toJson(result); - return json; - } - -}; + private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); + + // Publish paths in constants so tests are easy to write + public static final String CONTROLLER_PATH = DashboardConstants.ENDPOINT_PREFIX + "/policy"; + // Endpoints + public static final String VERSION_METHOD = DashboardConstants.VERSION_METHOD; + public static final String POLICY_TYPES_METHOD = "policytypes"; + public static final String POLICY_TYPE_ID_NAME = "policy_type_id"; + public static final String POLICIES_NAME = "policies"; + public static final String POLICY_INSTANCE_ID_NAME = "policy_instance_id"; + + // Populated by the autowired constructor + private final PolicyAgentApi policyAgentApi; + + @Autowired + public PolicyController(final PolicyAgentApi policyAgentApi) { + Assert.notNull(policyAgentApi, "API must not be null"); + this.policyAgentApi = policyAgentApi; + logger.debug("ctor: configured with client type {}", policyAgentApi.getClass().getName()); + } + + /* + * The fields are defined in the Policy Control Typescript interface. + */ + @ApiOperation(value = "Gets the policy types from Near Realtime-RIC") + @GetMapping(POLICY_TYPES_METHOD) + @Secured({DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD}) + public ResponseEntity getAllPolicyTypes(HttpServletResponse response) { + logger.debug("getAllPolicyTypes"); + return this.policyAgentApi.getAllPolicyTypes(); + } + + @ApiOperation(value = "Returns the policy instances for the given policy type.") + @GetMapping(POLICY_TYPES_METHOD + "/{" + POLICY_TYPE_ID_NAME + "}/" + POLICIES_NAME) + @Secured({DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD}) + public ResponseEntity getPolicyInstances(@PathVariable(POLICY_TYPE_ID_NAME) String policyTypeIdString) { + logger.debug("getPolicyInstances {}", policyTypeIdString); + return this.policyAgentApi.getPolicyInstancesForType(policyTypeIdString); + } + + @ApiOperation(value = "Returns a policy instance of a type") + @GetMapping(POLICY_TYPES_METHOD + "/{" + POLICY_TYPE_ID_NAME + "}/" + POLICIES_NAME + "/{" + POLICY_INSTANCE_ID_NAME + + "}") + @Secured({DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD}) + public ResponseEntity getPolicyInstance(@PathVariable(POLICY_TYPE_ID_NAME) String policyTypeIdString, + @PathVariable(POLICY_INSTANCE_ID_NAME) String policyInstanceId) { + logger.debug("getPolicyInstance {}:{}", policyTypeIdString, policyInstanceId); + return this.policyAgentApi.getPolicyInstance(policyInstanceId); + } + + @ApiOperation(value = "Creates the policy instances for the given policy type.") + @PutMapping(POLICY_TYPES_METHOD + "/{" + POLICY_TYPE_ID_NAME + "}/" + POLICIES_NAME + "/{" + POLICY_INSTANCE_ID_NAME + + "}") + @Secured({DashboardConstants.ROLE_ADMIN}) + public ResponseEntity putPolicyInstance(@PathVariable(POLICY_TYPE_ID_NAME) String policyTypeIdString, + @RequestParam(name = "ric", required = true) String ric, + @PathVariable(POLICY_INSTANCE_ID_NAME) String policyInstanceId, @RequestBody String instance) { + logger.debug("putPolicyInstance typeId: {}, instanceId: {}, instance: {}", policyTypeIdString, policyInstanceId, + instance); + return this.policyAgentApi.putPolicy(policyTypeIdString, policyInstanceId, instance, ric); + } + + @ApiOperation(value = "Deletes the policy instances for the given policy type.") + @DeleteMapping(POLICY_TYPES_METHOD + "/{" + POLICY_TYPE_ID_NAME + "}/" + POLICIES_NAME + "/{" + + POLICY_INSTANCE_ID_NAME + "}") + @Secured({DashboardConstants.ROLE_ADMIN}) + public ResponseEntity deletePolicyInstance(@PathVariable(POLICY_TYPE_ID_NAME) String policyTypeIdString, + @PathVariable(POLICY_INSTANCE_ID_NAME) String policyInstanceId) { + logger.debug("deletePolicyInstance typeId: {}, instanceId: {}", policyTypeIdString, policyInstanceId); + return this.policyAgentApi.deletePolicy(policyInstanceId); + } + + @ApiOperation(value = "Returns the rics supporting the given policy type.") + @GetMapping("/rics") + @Secured({DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD}) + public ResponseEntity getRicsSupportingType( + @RequestParam(name = "policyType", required = true) String supportingPolicyType) { + logger.debug("getRicsSupportingType {}", supportingPolicyType); + + return this.policyAgentApi.getRicsSupportingType(supportingPolicyType); + } +}