diff options
Diffstat (limited to 'catalog-fe/src')
-rw-r--r-- | catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/FeProxyServlet.java | 116 | ||||
-rw-r--r-- | catalog-fe/src/test/java/org/openecomp/sdc/servlets/FeProxyServletTest.java | 25 |
2 files changed, 39 insertions, 102 deletions
diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/FeProxyServlet.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/FeProxyServlet.java index 1d7643fe40..1c7b174c57 100644 --- a/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/FeProxyServlet.java +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/FeProxyServlet.java @@ -46,8 +46,9 @@ public class FeProxyServlet extends SSLProxyServlet { private static final String URL = "%s://%s%s%s"; private static final String ONBOARDING_CONTEXT = "/onboarding-api"; private static final String DCAED_CONTEXT = "/dcae-api"; + private static final String WORKFLOW_CONTEXT = "/wf"; private static final String SDC1_FE_PROXY = "/sdc1/feProxy"; - private static final String SDC1_PLUGIN_REDIRECT = SDC1_FE_PROXY + "/plugin"; + private static final String PLUGIN_ID_WORKFLOW = "WORKFLOW"; private static final Logger LOGGER = Logger.getLogger(FeProxyServlet.class); private static final int EXPIRE_DURATION = 10; @@ -153,24 +154,6 @@ public class FeProxyServlet extends SSLProxyServlet { } - /**** - * scan all the plugins from the configuration against the URL and the redicert path - * @param request - * @return - */ - private Plugin getPluginProxyForRequest(HttpServletRequest request) { - return getPluginConfiguration(request).getPluginsList() - .stream() - .filter(plugin -> { - if (plugin.getPluginProxyRedirectPath() != null && !plugin.getPluginProxyRedirectPath().isEmpty()) { - return request.getRequestURI().contains(SDC1_PLUGIN_REDIRECT + plugin.getPluginProxyRedirectPath()); - } else { - return false; - } - }) - .findFirst().orElse(null); - } - private String getModifiedUrl(HttpServletRequest request) throws MalformedURLException { Configuration config = getConfiguration(request); if (config == null) { @@ -178,77 +161,50 @@ public class FeProxyServlet extends SSLProxyServlet { throw new RuntimeException("failed to read FE configuration"); } String uri = request.getRequestURI(); - - // the modify logic is as follows: - // - proxy ONBOARDING to the onboarding context. this is not a plugin and hardcoded - // - proxy DCAE to the correct context. also - not a plugin but hardcoded - // - proxy to the plugin according to configuration if the path is found in the plugin patterns - // - proxy to the catalog backend if no other proxy was found - + String protocol; + String host; + String port; if (uri.contains(ONBOARDING_CONTEXT)) { uri = uri.replace(SDC1_FE_PROXY + ONBOARDING_CONTEXT, ONBOARDING_CONTEXT); - return getModifiedUrlString( - request, - uri, - config.getOnboarding().getHostBe(), - config.getOnboarding().getPortBe().toString(), - config.getOnboarding().getProtocolBe()); - } - if (uri.contains(DCAED_CONTEXT)) { + protocol = config.getOnboarding().getProtocolBe(); + host = config.getOnboarding().getHostBe(); + port = config.getOnboarding().getPortBe().toString(); + } else if (uri.contains(DCAED_CONTEXT)) { uri = uri.replace(SDC1_FE_PROXY + DCAED_CONTEXT, DCAED_CONTEXT); - return getModifiedUrlString( - request, - uri, - config.getBeHost(), - getCatalogBePort(config), - config.getBeProtocol()); - } - - if (uri.contains(SDC1_PLUGIN_REDIRECT)) { - Plugin proxyPlugin = getPluginProxyForRequest(request); - if (proxyPlugin != null) { - String proxyUrlStr = (proxyPlugin.getPluginFeProxyUrl() != null) ? proxyPlugin.getPluginFeProxyUrl() : proxyPlugin.getPluginSourceUrl(); - URL proxyUrl = new URL(proxyUrlStr); - uri = uri.replace(SDC1_PLUGIN_REDIRECT + proxyPlugin.getPluginProxyRedirectPath(), proxyUrl.getPath()); - return getModifiedUrlString(request, uri, proxyUrl); + protocol = config.getBeProtocol(); + host = config.getBeHost(); + if (config.getBeProtocol().equals(BeProtocol.HTTP.getProtocolName())) { + port = config.getBeHttpPort().toString(); + } else { + port = config.getBeSslPort().toString(); } - } - - Plugin proxyPlugin = getPluginProxyForRequest(request); - if (proxyPlugin != null) { - String proxyUrlStr = (proxyPlugin.getPluginFeProxyUrl() != null) ? proxyPlugin.getPluginFeProxyUrl() : proxyPlugin.getPluginSourceUrl(); - URL proxyUrl = new URL(proxyUrlStr); - uri = uri.replace(SDC1_FE_PROXY + proxyPlugin.getPluginProxyRedirectPath(), proxyUrl.getPath()); - return getModifiedUrlString(request, uri, proxyUrl); - } - - uri = uri.replace(SDC1_FE_PROXY, "/sdc2"); - return getModifiedUrlString( - request, - uri, - config.getBeHost(), - getCatalogBePort(config), - config.getBeProtocol()); - } - - - private String getCatalogBePort(Configuration config) { - if (config.getBeProtocol().equals(BeProtocol.HTTP.getProtocolName())) { - return config.getBeHttpPort().toString(); + } else if (uri.contains(WORKFLOW_CONTEXT)) { + String workflowPluginURL = getPluginConfiguration(request).getPluginsList() + .stream() + .filter(plugin -> plugin.getPluginId().equalsIgnoreCase(PLUGIN_ID_WORKFLOW)) + .map(Plugin::getPluginDiscoveryUrl) + .findFirst().orElse(null); + + java.net.URL workflowURL = new URL(workflowPluginURL); + protocol = workflowURL.getProtocol(); + host = workflowURL.getHost(); + port = String.valueOf(workflowURL.getPort()); + uri = uri.replace(SDC1_FE_PROXY + WORKFLOW_CONTEXT, workflowURL.getPath() + WORKFLOW_CONTEXT); } else { - return config.getBeSslPort().toString(); + uri = uri.replace(SDC1_FE_PROXY, "/sdc2"); + protocol = config.getBeProtocol(); + host = config.getBeHost(); + if (config.getBeProtocol().equals(BeProtocol.HTTP.getProtocolName())) { + port = config.getBeHttpPort().toString(); + } else { + port = config.getBeSslPort().toString(); + } } - } - private String getModifiedUrlString(HttpServletRequest request, String uri, URL url) { - String queryString = getQueryString(request); - return String.format(URL, url.getProtocol(), url.getAuthority(), uri, queryString); - } - - private String getModifiedUrlString(HttpServletRequest request, String uri, String host, String port, String protocol) { String authority = getAuthority(host, port); String queryString = getQueryString(request); return String.format(URL, protocol, authority, uri, queryString); + } private PluginsConfiguration getPluginConfiguration(HttpServletRequest request) { diff --git a/catalog-fe/src/test/java/org/openecomp/sdc/servlets/FeProxyServletTest.java b/catalog-fe/src/test/java/org/openecomp/sdc/servlets/FeProxyServletTest.java index 81e939b929..4915936b1d 100644 --- a/catalog-fe/src/test/java/org/openecomp/sdc/servlets/FeProxyServletTest.java +++ b/catalog-fe/src/test/java/org/openecomp/sdc/servlets/FeProxyServletTest.java @@ -113,12 +113,7 @@ public class FeProxyServletTest { when(plugin.getPluginId()).thenReturn("WORKFLOW"); when(plugin.getPluginSourceUrl()).thenReturn(WF_PROTOCOL + "://" + WF_HOST + ":" + WF_PORT); when(plugin.getPluginDiscoveryUrl()).thenReturn(WF_PROTOCOL + "://" + WF_HOST + ":" + WF_PORT + "/workflows"); - when(plugin.getPluginFeProxyUrl()).thenReturn(WF_PROTOCOL + "://" + WF_HOST + ":" + WF_PORT + "/workflows/wf/"); - when(plugin.getPluginProxyRedirectPath()).thenReturn("/wf/"); pluginList.add(plugin); - PluginsConfiguration.Plugin noConfigPlugin = new PluginsConfiguration.Plugin(); - noConfigPlugin.setPluginId("NO_CONFIG"); - pluginList.add(noConfigPlugin); when(configurationManager.getPluginsConfiguration()).thenReturn(pluginsConfiguration); when(pluginsConfiguration.getPluginsList()).thenReturn(pluginList); @@ -187,31 +182,17 @@ public class FeProxyServletTest { @Test public void testRewriteURIWithWFAPIRequest() { - when(servletRequest.getRequestURI()).thenReturn("/sdc1/feProxy/plugin/wf/workflows"); - String requestResourceUrl = "http://localhost:8080/sdc1/feProxy/plugin/wf/workflows"; - String expectedChangedUrl = WF_PROTOCOL + "://" + WF_HOST + ":" + WF_PORT + "/workflows/wf/workflows"; - when(servletRequest.getRequestURL()).thenReturn(new StringBuffer(requestResourceUrl)); - - when(servletRequest.getContextPath()).thenReturn("/sdc1"); - when(servletRequest.getServletPath()).thenReturn("/feProxy/plugin/wf/workflows"); - - String rewriteURI = feProxy.rewriteTarget(servletRequest); - - assertEquals(expectedChangedUrl, rewriteURI); - - // now test in case it did not go through the plugin when(servletRequest.getRequestURI()).thenReturn("/sdc1/feProxy/wf/workflows"); - requestResourceUrl = "http://localhost:8080/sdc1/feProxy/wf/workflows"; - expectedChangedUrl = BE_PROTOCOL + "://" + BE_HOST + ":" + BE_PORT + "/sdc2/wf/workflows"; + String requestResourceUrl = "http://localhost:8080/sdc1/feProxy/wf/workflows"; + String expectedChangedUrl = WF_PROTOCOL + "://" + WF_HOST + ":" + WF_PORT + "/workflows/wf/workflows"; when(servletRequest.getRequestURL()).thenReturn(new StringBuffer(requestResourceUrl)); when(servletRequest.getContextPath()).thenReturn("/sdc1"); when(servletRequest.getServletPath()).thenReturn("/feProxy/wf/workflows"); - rewriteURI = feProxy.rewriteTarget(servletRequest); + String rewriteURI = feProxy.rewriteTarget(servletRequest); assertEquals(expectedChangedUrl, rewriteURI); - } /** |