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%2FAdminController.java;h=bb3700ed414f301e8ff3329a5f18dfd8f6eba933;hb=09a0d3c769ba83727fe454093cd6054eca77cfdf;hp=9a785e89cd38b5d9037b948ddeaeee2d5dcab314;hpb=b8f4e986970eab6cfa5729c24680f2816f056edb;p=portal%2Fric-dashboard.git diff --git a/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/AdminController.java b/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/AdminController.java index 9a785e89..bb3700ed 100644 --- a/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/AdminController.java +++ b/webapp-backend/src/main/java/org/oransc/ric/portal/dashboard/controller/AdminController.java @@ -2,14 +2,14 @@ * ========================LICENSE_START================================= * O-RAN-SC * %% - * Copyright (C) 2019 AT&T Intellectual Property and Nokia + * Copyright (C) 2019 AT&T Intellectual Property * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -20,16 +20,26 @@ package org.oransc.ric.portal.dashboard.controller; 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.DashboardApplication; import org.oransc.ric.portal.dashboard.DashboardConstants; -import org.oransc.ric.portal.dashboard.model.DashboardUser; +import org.oransc.ric.portal.dashboard.DashboardUserManager; +import org.oransc.ric.portal.dashboard.model.ErrorTransport; +import org.oransc.ric.portal.dashboard.model.IDashboardResponse; 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.security.access.annotation.Secured; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import io.swagger.annotations.ApiOperation; @@ -48,42 +58,60 @@ public class AdminController { public static final String USER_METHOD = "user"; public static final String HEALTH_METHOD = "health"; public static final String VERSION_METHOD = DashboardConstants.VERSION_METHOD; + public static final String XAPPMETRICS_METHOD = "metrics"; - private final DashboardUser[] users; + @Value("${metrics.url.ac}") + private String acAppMetricsUrl; - private static final String ACTIVE = "Active"; - private static final String INACTIVE = "Inactive"; + @Value("${metrics.url.mc}") + private String mcAppMetricsUrl; - public AdminController() { - // Mock data - users = new DashboardUser[] { // - new DashboardUser(1, "John", "Doe", ACTIVE), // - new DashboardUser(2, "Alice", "Nolan", ACTIVE), // - new DashboardUser(3, "Pierce", "King", INACTIVE), // - new DashboardUser(4, "Paul", "Smith", INACTIVE), // - new DashboardUser(5, "Jack", "Reacher", ACTIVE) }; - } + @Autowired + private DashboardUserManager dashboardUserManager; @ApiOperation(value = "Gets the Dashboard MANIFEST.MF property Implementation-Version.", response = SuccessTransport.class) - @RequestMapping(value = VERSION_METHOD, method = RequestMethod.GET) + @GetMapping(VERSION_METHOD) + // No role required public SuccessTransport getVersion() { - logger.debug("getVersion"); + // These endpoints are invoked repeatedly by K8S + logger.trace("getVersion"); return new SuccessTransport(200, DashboardApplication.getImplementationVersion(MethodHandles.lookup().lookupClass())); } @ApiOperation(value = "Checks the health of the application.", response = SuccessTransport.class) - @RequestMapping(value = HEALTH_METHOD, method = RequestMethod.GET) + @GetMapping(HEALTH_METHOD) + // No role required public SuccessTransport getHealth() { - logger.debug("getHealth"); + // These endpoints are invoked repeatedly by K8S + logger.trace("getHealth"); return new SuccessTransport(200, "Dashboard is healthy!"); } - @ApiOperation(value = "Gets the list of application users.", response = DashboardUser.class, responseContainer = "List") - @RequestMapping(value = USER_METHOD, method = RequestMethod.GET) - public DashboardUser[] getUsers() { + @ApiOperation(value = "Gets the list of application users.", response = EcompUser.class, responseContainer = "List") + @GetMapping(USER_METHOD) + @Secured({ DashboardConstants.ROLE_ADMIN }) // regular users should not see this + public List getUsers() { logger.debug("getUsers"); - return users; + return dashboardUserManager.getUsers(); + } + + @ApiOperation(value = "Gets the kibana metrics URL for the specified app.", response = SuccessTransport.class) + @GetMapping(XAPPMETRICS_METHOD) + // No role required + 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); + } } }