From 3504f84909d1ee1963931e63bed694a533a84cd3 Mon Sep 17 00:00:00 2001 From: Idan Amit Date: Tue, 9 Oct 2018 18:45:52 +0300 Subject: Plugin load by the UI Changed the original plugin API to only return the plugins list Changed the plugin Iframe to check if the plugin is online on every init Change-Id: I7916668de17c49a2639047ef243939889a933067 Issue-ID: SDC-1400 Signed-off-by: Idan Amit --- .../org/openecomp/sdc/fe/impl/PluginStatusBL.java | 33 +++++++--- .../openecomp/sdc/fe/servlets/ConfigServlet.java | 77 +++++++++++++++------- .../sdc/fe/servlets/PluginStatusBLTest.java | 40 ++++++----- 3 files changed, 102 insertions(+), 48 deletions(-) (limited to 'catalog-fe') 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 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); } - } -- cgit 1.2.3-korg