X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=webapp-backend%2Fsrc%2Fmain%2Fjava%2Forg%2Foransc%2Fric%2Fportal%2Fdashboard%2Fcontroller%2FA1MediatorController.java;h=30f4092d70330f3c17ffbd9ed242011555f93f32;hb=9cf5b95a5bc9810d739d14d324dd7d80cbdb4a7d;hp=98a48558c0ee2061ef93add64ffb79313496c036;hpb=e020df304f6faa1d90f64ddea14407aec1c15dcb;p=portal%2Fric-dashboard.git diff --git a/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/A1MediatorController.java b/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/A1MediatorController.java index 98a48558..30f4092d 100644 --- a/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/A1MediatorController.java +++ b/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/A1MediatorController.java @@ -20,10 +20,12 @@ package org.oransc.ric.portal.dashboard.controller; import java.lang.invoke.MethodHandles; +import java.util.List; import javax.servlet.http.HttpServletResponse; import org.oransc.ric.a1med.client.api.A1MediatorApi; +import org.oransc.ric.a1med.client.model.PolicyTypeSchema; import org.oransc.ric.portal.dashboard.DashboardApplication; import org.oransc.ric.portal.dashboard.DashboardConstants; import org.oransc.ric.portal.dashboard.config.A1MediatorApiBuilder; @@ -59,13 +61,14 @@ public class A1MediatorController { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - /** This path lacks the RIC instance pattern */ + // Publish paths in constants so tests are easy to write public static final String CONTROLLER_PATH = DashboardConstants.ENDPOINT_PREFIX + "/a1-p"; - // Path parameters - public static final String PP_POLICIES = "policies"; - // The get and put methods use the same path - private static final String POLICY_METHOD_PATH = /* controller path + */ DashboardConstants.RIC_INSTANCE_KEY + "/{" - + DashboardConstants.RIC_INSTANCE_KEY + "}/" + PP_POLICIES + "/{" + PP_POLICIES + "}"; + public static final String PP_TYPE_ID = "poltype"; + public static final String PP_INST_ID = "polinst"; + // The get- and put-instance methods use the same path + private static final String POLICY_INSTANCE_METHOD_PATH = /* controller path + */ DashboardConstants.RIC_INSTANCE_KEY + + "/{" + DashboardConstants.RIC_INSTANCE_KEY + "}/" + PP_TYPE_ID + "/{" + PP_TYPE_ID + "}/" + PP_INST_ID + + "/{" + PP_INST_ID + "}"; // Populated by the autowired constructor private final A1MediatorApiBuilder a1MediatorClientBuilder; @@ -85,24 +88,51 @@ public class A1MediatorController { return new SuccessTransport(200, DashboardApplication.getImplementationVersion(A1MediatorApi.class)); } - @ApiOperation(value = "Gets the specified policy from the A1 Mediator") - @GetMapping(POLICY_METHOD_PATH) + @ApiOperation(value = "Gets the registered policy type IDs from the A1 Mediator", response = Integer.class, responseContainer = "List") + @GetMapping(DashboardConstants.RIC_INSTANCE_KEY + "/{" + DashboardConstants.RIC_INSTANCE_KEY + "}/" + PP_TYPE_ID) @Secured({ DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD }) - public Object getPolicy(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey, - @PathVariable(PP_POLICIES) String policyName) { - logger.debug("getPolicy instance {} policy {}", instanceKey, policyName); - return a1MediatorClientBuilder.getA1MediatorApi(instanceKey).a1ControllerGetHandler(policyName); + public List getAllPolicyTypes(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey) { + logger.debug("getAllPolicyTypes: instance {}", instanceKey); + Object result = a1MediatorClientBuilder.getA1MediatorApi(instanceKey).a1ControllerGetAllPolicyTypes(); + @SuppressWarnings("unchecked") + List result2 = (List) result; + return result2; } - @ApiOperation(value = "Puts the specified policy to the A1 Mediator") - @PutMapping(POLICY_METHOD_PATH) + @ApiOperation(value = "Gets the specified policy type from the A1 Mediator", response = PolicyTypeSchema.class) + @GetMapping(DashboardConstants.RIC_INSTANCE_KEY + "/{" + DashboardConstants.RIC_INSTANCE_KEY + "}/" + PP_TYPE_ID + + "/{" + PP_TYPE_ID + "}") + @Secured({ DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD }) + public PolicyTypeSchema getPolicyType(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey, + @PathVariable(PP_TYPE_ID) Integer policyTypeId) { + logger.debug("getPolicyType: instance {} typeId {}", instanceKey, policyTypeId); + return a1MediatorClientBuilder.getA1MediatorApi(instanceKey).a1ControllerGetPolicyType(policyTypeId); + } + + @ApiOperation(value = "Gets the specified policy instance from the A1 Mediator") + @GetMapping(POLICY_INSTANCE_METHOD_PATH) + @Secured({ DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD }) + public Object getPolicyInstance(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey, + @PathVariable(PP_TYPE_ID) Integer policyTypeId, // + @PathVariable(PP_INST_ID) String policyInstanceId) { + logger.debug("getPolicyInstance: instance {} typeId {} instanceId {}", instanceKey, policyTypeId, + policyInstanceId); + return a1MediatorClientBuilder.getA1MediatorApi(instanceKey).a1ControllerGetPolicyInstance(policyTypeId, + policyInstanceId); + } + + @ApiOperation(value = "Creates or replaces the specified policy instance at the A1 Mediator") + @PutMapping(POLICY_INSTANCE_METHOD_PATH) @Secured({ DashboardConstants.ROLE_ADMIN }) - public void putPolicy(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey, - @PathVariable(PP_POLICIES) String policyName, @ApiParam(value = "Policy body") @RequestBody String policy, // + public void createPolicyInstance(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey, + @PathVariable(PP_TYPE_ID) Integer policyTypeId, // + @PathVariable(PP_INST_ID) String policyInstanceId, + @ApiParam(value = "Policy body") @RequestBody String policyBody, // HttpServletResponse response) { - logger.debug("putPolicy instance {} name {} value {}", instanceKey, policyName, policy); + logger.debug("createPolicyInstance: instance {} typeId {} instanceId {}", instanceKey, policyTypeId, + policyInstanceId); A1MediatorApi api = a1MediatorClientBuilder.getA1MediatorApi(instanceKey); - api.a1ControllerPutHandler(policyName, policy); + api.a1ControllerCreateOrReplacePolicyInstance(policyTypeId, policyInstanceId, policyBody); response.setStatus(api.getApiClient().getStatusCode().value()); }