diff options
Diffstat (limited to 'catalog-fe/src')
3 files changed, 102 insertions, 48 deletions
diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/PluginStatusBL.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/PluginStatusBL.java index f4cbe9a70b..460d6deeee 100644 --- a/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/PluginStatusBL.java +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/impl/PluginStatusBL.java @@ -24,7 +24,6 @@ public class PluginStatusBL { private final Gson gson; private final CloseableHttpClient client; private final PluginsConfiguration pluginsConfiguration; - private Integer connectionTimeout; private RequestConfig requestConfig; public PluginStatusBL() { @@ -41,7 +40,7 @@ public class PluginStatusBL { } - public String checkPluginsListAvailability() { + public String getPluginsList() { String result = null; if (pluginsConfiguration == null || pluginsConfiguration.getPluginsList() == null) { @@ -50,20 +49,36 @@ public class PluginStatusBL { } else { log.debug("The value returned from getConfig is {}", pluginsConfiguration); - connectionTimeout = pluginsConfiguration.getConnectionTimeout(); + + result = gson.toJson(pluginsConfiguration.getPluginsList()); + } + return result; + } + + public String getPluginAvailability(String pluginId) { + String result = null; + + if (pluginsConfiguration == null || pluginsConfiguration.getPluginsList() == null) { + log.warn("Configuration of type {} was not found", PluginsConfiguration.class); + throw new InvalidArgumentException("the plugin configuration was not read successfully."); + + } else { + log.debug("The value returned from getConfig is {}", pluginsConfiguration); + Integer connectionTimeout = pluginsConfiguration.getConnectionTimeout(); this.requestConfig = RequestConfig.custom() .setSocketTimeout(connectionTimeout) .setConnectTimeout(connectionTimeout) .setConnectionRequestTimeout(connectionTimeout).build(); - List<Plugin> availablePluginsList = new ArrayList<>(); - pluginsConfiguration.getPluginsList().forEach(plugin -> { - plugin.setOnline(checkPluginAvailability(plugin)); + Plugin wantedPlugin = pluginsConfiguration.getPluginsList().stream() + .filter(plugin -> plugin.getPluginId().equals(pluginId)) + .findAny() + .orElse(null); - availablePluginsList.add(plugin); - }); - result = gson.toJson(availablePluginsList); + if (wantedPlugin != null) { + result = gson.toJson(checkPluginAvailability(wantedPlugin)); + } } return result; } diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/ConfigServlet.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/ConfigServlet.java index 271a3b2d22..073c79e683 100644 --- a/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/ConfigServlet.java +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/ConfigServlet.java @@ -7,9 +7,9 @@ * 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. @@ -30,6 +30,7 @@ import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.GET; import javax.ws.rs.Path; +import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; @@ -42,42 +43,74 @@ import javax.ws.rs.core.Response.Status; @Path("/config") public class ConfigServlet extends LoggingServlet { - private static final Logger log = LoggerFactory.getLogger(ConfigServlet.class.getName()); + private static final Logger log = LoggerFactory.getLogger(ConfigServlet.class.getName()); - @GET - @Path("/ui/plugins") - @Produces(MediaType.APPLICATION_JSON) - public Response getPluginsConfiguration(@Context final HttpServletRequest request) { + @GET + @Path("/ui/plugins") + @Produces(MediaType.APPLICATION_JSON) + public Response getPluginsConfiguration(@Context final HttpServletRequest request) { - try { - logFeRequest(request); + try { + logFeRequest(request); - ServletContext context = request.getSession().getServletContext(); + ServletContext context = request.getSession().getServletContext(); - PluginStatusBL pluginStatusBL = (PluginStatusBL) context.getAttribute(Constants.PLUGIN_BL_COMPONENT); + PluginStatusBL pluginStatusBL = (PluginStatusBL) context.getAttribute(Constants.PLUGIN_BL_COMPONENT); - String result = pluginStatusBL.checkPluginsListAvailability(); + String result = pluginStatusBL.getPluginsList(); - Response response = Response.status(Status.OK).entity(result).build(); + Response response = Response.status(Status.OK).entity(result).build(); - logFeResponse(request, response); + logFeResponse(request, response); - return response; - } catch (Exception e) { - FeEcompErrorManager.getInstance().logFeHttpLoggingError("FE Response"); - log.error("Unexpected FE response logging error :", e); - return Response.status(Status.INTERNAL_SERVER_ERROR).entity("{}").build(); - } + return response; + } catch (Exception e) { + FeEcompErrorManager.getInstance().logFeHttpLoggingError("FE Response"); + log.error("Unexpected FE response logging error :", e); + return Response.status(Status.INTERNAL_SERVER_ERROR).entity("{}").build(); + } - } + } + + @GET + @Path("/ui/plugins/{pluginId}/online") + @Produces(MediaType.APPLICATION_JSON) + public Response getPluginOnlineState(@PathParam("pluginId") final String pluginId, @Context final HttpServletRequest request) { + + try { + logFeRequest(request); + + ServletContext context = request.getSession().getServletContext(); + + PluginStatusBL pluginStatusBL = (PluginStatusBL) context.getAttribute(Constants.PLUGIN_BL_COMPONENT); + + String result = pluginStatusBL.getPluginAvailability(pluginId); + + if (result == null) { + log.debug("Plugin with pluginId: {} was not found in the configuration", pluginId); + return Response.status(Status.NOT_FOUND).entity("Plugin with pluginId:\"" + pluginId + "\" was not found in the configuration").build(); + } + + Response response = Response.status(Status.OK).entity(result).build(); + + logFeResponse(request, response); + + return response; + } catch (Exception e) { + FeEcompErrorManager.getInstance().logFeHttpLoggingError("FE Response"); + log.error("Unexpected FE response logging error :", e); + return Response.status(Status.INTERNAL_SERVER_ERROR).entity("{}").build(); + } + } - protected void inHttpRequest(HttpServletRequest httpRequest) { + protected void inHttpRequest(HttpServletRequest httpRequest) { log.info("{} {} {}", httpRequest.getMethod(), httpRequest.getRequestURI(), httpRequest.getProtocol()); } /** * Extracted for purpose of clear method name, for logback %M parameter + * * @param response http response */ protected void outHttpResponse(Response response) { diff --git a/catalog-fe/src/test/java/org/openecomp/sdc/fe/servlets/PluginStatusBLTest.java b/catalog-fe/src/test/java/org/openecomp/sdc/fe/servlets/PluginStatusBLTest.java index e1d93b702d..731516e65b 100644 --- a/catalog-fe/src/test/java/org/openecomp/sdc/fe/servlets/PluginStatusBLTest.java +++ b/catalog-fe/src/test/java/org/openecomp/sdc/fe/servlets/PluginStatusBLTest.java @@ -20,6 +20,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.when; @@ -63,24 +64,33 @@ public class PluginStatusBLTest { } @Test - public void TestOfflinePluginBeingReturnedWithIsOnlineValueFalse() throws ClientProtocolException, IOException { + public void TestPluginsConfigurationListReturnsWithWantedPlugins() { testPluginsList.add(offlinePlugin); + testPluginsList.add(onlinePlugin); when(pluginsConfiguration.getPluginsList()).thenReturn(testPluginsList); - - when(statusLine.getStatusCode()).thenReturn(404); - when(httpResponse.getStatusLine()).thenReturn(statusLine); - when(httpClient.execute(Mockito.any(HttpHead.class))).thenReturn(httpResponse); - offlinePlugin.setOnline(false); assertPluginList.add(offlinePlugin); + assertPluginList.add(onlinePlugin); String result = gson.toJson(assertPluginList); - String actualResult = pluginStatusBL.checkPluginsListAvailability(); + String actualResult = pluginStatusBL.getPluginsList(); - System.out.println(result); - System.out.println(actualResult); + assertEquals(actualResult, result); + } + + @Test + public void TestGetPluginAvailabilityShouldReturnFalseWhenPluginIsOffline() throws ClientProtocolException, IOException { + testPluginsList.add(offlinePlugin); + when(pluginsConfiguration.getPluginsList()).thenReturn(testPluginsList); - assertTrue(pluginStatusBL.checkPluginsListAvailability().equals(result)); + when(statusLine.getStatusCode()).thenReturn(404); + when(httpResponse.getStatusLine()).thenReturn(statusLine); + when(httpClient.execute(Mockito.any(HttpHead.class))).thenReturn(httpResponse); + + String result = gson.toJson(false); + String actualResult = pluginStatusBL.getPluginAvailability(offlinePlugin.getPluginId()); + + assertEquals(actualResult, result); } @Test @@ -92,13 +102,9 @@ public class PluginStatusBLTest { when(httpResponse.getStatusLine()).thenReturn(statusLine); when(httpClient.execute(Mockito.any())).thenReturn(httpResponse); - onlinePlugin.setOnline(true); - assertPluginList.add(onlinePlugin); + String result = gson.toJson(true); + String actualResult = pluginStatusBL.getPluginAvailability(onlinePlugin.getPluginId()); - String result = gson.toJson(assertPluginList); - - assertTrue(pluginStatusBL.checkPluginsListAvailability().equals(result)); - + assertEquals(actualResult, result); } - } |