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%2FAdminController.java;h=9e4922671abd682eaa54d264fcc6abf5dafbb25d;hb=848677173191182d46aa22ab83bee0de84999a81;hp=ce52f7a04d2e077472716e585d79d9bd2a5dce12;hpb=64a5e9470799236f0af4ce2df98f77c94eb1bed3;p=portal%2Fric-dashboard.git diff --git a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/AdminController.java b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/AdminController.java index ce52f7a0..9e492267 100644 --- a/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/AdminController.java +++ b/dashboard/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/AdminController.java @@ -19,30 +19,37 @@ */ package org.oransc.ric.portal.dashboard.controller; +import java.io.IOException; import java.lang.invoke.MethodHandles; import java.util.List; -import javax.servlet.http.HttpServletResponse; - import org.onap.portalsdk.core.restful.domain.EcompUser; +import org.oransc.ric.portal.dashboard.AppStatsManager; import org.oransc.ric.portal.dashboard.DashboardApplication; import org.oransc.ric.portal.dashboard.DashboardConstants; import org.oransc.ric.portal.dashboard.DashboardUserManager; -import org.oransc.ric.portal.dashboard.model.ErrorTransport; +import org.oransc.ric.portal.dashboard.exception.StatsManagerException; +import org.oransc.ric.portal.dashboard.model.AppStats; import org.oransc.ric.portal.dashboard.model.IDashboardResponse; import org.oransc.ric.portal.dashboard.model.RicRegion; import org.oransc.ric.portal.dashboard.model.RicRegionList; import org.oransc.ric.portal.dashboard.model.RicRegionTransport; +import org.oransc.ric.portal.dashboard.model.StatsDetailsTransport; import org.oransc.ric.portal.dashboard.model.SuccessTransport; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import org.springframework.security.access.annotation.Secured; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +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 io.swagger.annotations.ApiOperation; @@ -63,16 +70,14 @@ public class AdminController { public static final String USER_METHOD = "user"; public static final String VERSION_METHOD = DashboardConstants.VERSION_METHOD; public static final String XAPPMETRICS_METHOD = "metrics"; - - @Value("${metrics.url.ac}") - private String acAppMetricsUrl; - - @Value("${metrics.url.mc}") - private String mcAppMetricsUrl; + public static final String STATAPPMETRIC_METHOD = "appmetric"; @Autowired private DashboardUserManager dashboardUserManager; + @Autowired + private AppStatsManager appStatsManager; + @Autowired private RicRegionList instanceConfig; @@ -111,22 +116,53 @@ public class AdminController { return instanceConfig.getSimpleInstances(); } - @ApiOperation(value = "Gets the kibana metrics URL for the specified app.", response = SuccessTransport.class) - @GetMapping(XAPPMETRICS_METHOD) + @ApiOperation(value = "Gets all xApp statistics reporting details.", response = StatsDetailsTransport.class, responseContainer = "List") + @GetMapping(DashboardConstants.RIC_INSTANCE_KEY + "/{" + DashboardConstants.RIC_INSTANCE_KEY + "}/" + + STATAPPMETRIC_METHOD) @Secured({ DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD }) - public IDashboardResponse getAppMetricsUrl(@RequestParam String app, HttpServletResponse response) { - String metricsUrl = null; - if (DashboardConstants.APP_NAME_AC.equals(app)) - metricsUrl = acAppMetricsUrl; - else if (DashboardConstants.APP_NAME_MC.equals(app)) - metricsUrl = mcAppMetricsUrl; - logger.debug("getAppMetricsUrl: app {} metricsurl {}", app, metricsUrl); - if (metricsUrl != null) - return new SuccessTransport(200, metricsUrl); - else { - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - return new ErrorTransport(400, "Client provided app name is invalid as: " + app); - } + public List getStats(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey) { + logger.debug("getStats for instance {}", instanceKey); + return appStatsManager.getStatsByInstance(instanceKey); } -} + @ApiOperation(value = "Gets a xApp's metrics status by Id.", response = StatsDetailsTransport.class, responseContainer = "List") + @GetMapping(DashboardConstants.RIC_INSTANCE_KEY + "/{" + DashboardConstants.RIC_INSTANCE_KEY + "}/" + + STATAPPMETRIC_METHOD + "/" + DashboardConstants.APP_ID + "/{" + DashboardConstants.APP_ID + "}") + @Secured({ DashboardConstants.ROLE_ADMIN, DashboardConstants.ROLE_STANDARD }) + public AppStats getStatsById(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey, + @PathVariable(DashboardConstants.APP_ID) int appId) { + logger.debug("getStatsById for instance {} by app id {}", instanceKey, appId); + return appStatsManager.getStatsById(instanceKey, appId); + } + + @ApiOperation(value = "Creates xApp metrics status.") + @PostMapping(DashboardConstants.RIC_INSTANCE_KEY + "/{" + DashboardConstants.RIC_INSTANCE_KEY + "}/" + + STATAPPMETRIC_METHOD) + @Secured({ DashboardConstants.ROLE_ADMIN }) + public IDashboardResponse createStats(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey, + @Validated @RequestBody StatsDetailsTransport statsSetupRequest) throws StatsManagerException, IOException { + logger.debug("createStats with instance {} request {}", instanceKey, statsSetupRequest); + return appStatsManager.createStats(instanceKey, statsSetupRequest); + } + + @ApiOperation(value = "Updates xApp metrics status.") + @PutMapping(DashboardConstants.RIC_INSTANCE_KEY + "/{" + DashboardConstants.RIC_INSTANCE_KEY + "}/" + + STATAPPMETRIC_METHOD) + @Secured({ DashboardConstants.ROLE_ADMIN }) + public void updateStats(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey, + @Validated @RequestBody StatsDetailsTransport statsSetupRequest) throws StatsManagerException, IOException { + logger.debug("updateStats for instance {} request {}", instanceKey, statsSetupRequest); + appStatsManager.updateStats(instanceKey, statsSetupRequest); + } + + @ApiOperation(value = "Deletes xApp metric status.") + @DeleteMapping(DashboardConstants.RIC_INSTANCE_KEY + "/{" + DashboardConstants.RIC_INSTANCE_KEY + "}/" + + STATAPPMETRIC_METHOD + "/" + DashboardConstants.APP_ID + "/{" + DashboardConstants.APP_ID + "}") + @Secured({ DashboardConstants.ROLE_ADMIN }) + public ResponseEntity deleteStats(@PathVariable(DashboardConstants.RIC_INSTANCE_KEY) String instanceKey, + @PathVariable(DashboardConstants.APP_ID) int appId) throws StatsManagerException, IOException { + logger.debug("deleteStats instance {} request {}", instanceKey, appId); + appStatsManager.deleteStats(instanceKey, appId); + return ResponseEntity.ok(null); + } +} \ No newline at end of file