Revert "Add Option to proxy to plugins" 56/99756/2
authoraribeiro <anderson.ribeiro@est.tech>
Tue, 17 Dec 2019 10:23:13 +0000 (10:23 +0000)
committerOfir Sonsino <ofir.sonsino@intl.att.com>
Wed, 18 Dec 2019 13:26:17 +0000 (13:26 +0000)
This reverts commit ee4c4d72

Issue-ID: SDC-2648
Change-Id: I1f6cba80d3fb803530573c75f2fc54ca207e768a
Signed-off-by: aribeiro <anderson.ribeiro@est.tech>
catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/FeProxyServlet.java
catalog-fe/src/test/java/org/openecomp/sdc/servlets/FeProxyServletTest.java
catalog-ui/configurations/dev.js
catalog-ui/configurations/prod.js
common-app-api/src/main/java/org/openecomp/sdc/fe/config/PluginsConfiguration.java
docs/configuration.rst
sdc-os-chef/environments/plugins-configuration.yaml
sdc-os-chef/kubernetes/sdc/templates/configmaps/sdc-environment-configmap.yaml

index 1d7643f..1c7b174 100644 (file)
@@ -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) {
index 81e939b..4915936 100644 (file)
@@ -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);
-
        }
 
        /**
index be1f52a..bca5912 100644 (file)
@@ -49,7 +49,7 @@ const SDC_CONFIG = {
                "GET_lifecycle_state_UNDOCHECKOUT":"lifecycleState/UNDOCHECKOUT",
                "root": "/sdc1/feProxy/rest",
         "no_proxy_root": "/sdc1/rest",
-               "workflow_root": "/sdc1/feProxy/plugin/wf",
+               "workflow_root": "/sdc1/feProxy/wf",
                "POST_workflow_artifact": "sdc/v1/catalog",
                "PUT_service": "/v1/catalog/services/:id/metadata",
                "GET_download_artifact": "/v1/catalog/",
index 32c9ae2..496c576 100644 (file)
@@ -49,7 +49,7 @@ const SDC_CONFIG = {
                "GET_lifecycle_state_UNDOCHECKOUT":"lifecycleState/UNDOCHECKOUT",
                "root": "/sdc1/feProxy/rest",
         "no_proxy_root": "/sdc1/rest",
-               "workflow_root": "/sdc1/feProxy/plugin/wf",
+               "workflow_root": "/sdc1/feProxy/wf",
                "POST_workflow_artifact": "sdc/v1/catalog",
                "PUT_service": "/v1/catalog/services/:id/metadata",
                "GET_download_artifact": "/v1/catalog/",
index 55b0ea0..449c9ea 100644 (file)
 
 package org.openecomp.sdc.fe.config;
 
-import lombok.Getter;
-import lombok.Setter;
-import lombok.ToString;
 import org.openecomp.sdc.common.api.BasicConfiguration;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
-@Getter
-@Setter
-@ToString
 public class PluginsConfiguration extends BasicConfiguration {
 
     private List<Plugin> pluginsList;
     private Integer connectionTimeout;
 
+    public List<Plugin> getPluginsList() {
+        return pluginsList;
+    }
+
+    public void setPluginsList(List<Plugin> pluginsList) {
+        this.pluginsList = pluginsList;
+    }
+
+    public Integer getConnectionTimeout() {
+        return connectionTimeout;
+    }
+
+    public void setConnectionTimeout(Integer connectionTimeout) {
+        this.connectionTimeout = connectionTimeout;
+    }
+
     public PluginsConfiguration() {
         this.pluginsList = new ArrayList<>();
     }
 
-    @Getter
-    @Setter
     public static class Plugin {
+
         private String pluginId;
         private String pluginDiscoveryUrl;
         private String pluginSourceUrl;
         private String pluginStateUrl;
-        private String pluginFeProxyUrl; // this is optional in case it is different from the source url.
-        private String pluginProxyRedirectPath;
         private Map<String, PluginDisplayOptions> pluginDisplayOptions;
         private boolean isOnline;
 
+        public String getPluginId() {
+            return pluginId;
+        }
+
+        public void setPluginId(String pluginId) {
+            this.pluginId = pluginId;
+        }
+
+        public String getPluginDiscoveryUrl() {
+            return pluginDiscoveryUrl;
+        }
+
+        public void setPluginDiscoveryUrl(String pluginDiscoveryUrl) {
+            this.pluginDiscoveryUrl = pluginDiscoveryUrl;
+        }
+
+        public String getPluginSourceUrl() {
+            return pluginSourceUrl;
+        }
+
+        public void setPluginSourceUrl(String pluginSourceUrl) {
+            this.pluginSourceUrl = pluginSourceUrl;
+        }
+
+        public String getPluginStateUrl() {
+            return pluginStateUrl;
+        }
+
+        public void setPluginStateUrl(String pluginStateUrl) {
+            this.pluginStateUrl = pluginStateUrl;
+        }
+
+        public Map<String, PluginDisplayOptions> getPluginDisplayOptions() {
+            return pluginDisplayOptions;
+        }
+
+        public void setPluginDisplayOptions(Map<String, PluginDisplayOptions> pluginDisplayOptions) {
+            this.pluginDisplayOptions = pluginDisplayOptions;
+        }
+
     }
 
-    @Getter
-    @Setter
-    @ToString
     public static class PluginDisplayOptions {
+
         private String displayName;
         private List<String> displayContext;
         private List<String> displayRoles;
+
+        public String getDisplayName() {
+            return displayName;
+        }
+
+        public void setDisplayName(String displayName) {
+            this.displayName = displayName;
+        }
+
+        public List<String> getDisplayContext() {
+            return displayContext;
+        }
+
+        public void setDisplayContext(List<String> displayContext) {
+            this.displayContext = displayContext;
+        }
+
+        public List<String> getDisplayRoles() {
+            return displayRoles;
+        }
+
+        public void setDisplayRoles(List<String> displayRoles) {
+            this.displayRoles = displayRoles;
+        }
+
+        @Override
+        public String toString() {
+            return "PluginDisplayOptions["
+                    + "displayName='" + displayName
+                    + ", displayContext=" + displayContext
+                    + ", displayRoles=" + displayRoles
+                    + ']';
+        }
     }
 
+    @Override
+    public String toString() {
+        return "PluginsConfiguration[" + "pluginsList=" + pluginsList + ", connectionTimeout=" + connectionTimeout + ']';
+    }
 }
 
 
index 5156f6e..59f571d 100644 (file)
@@ -1382,10 +1382,6 @@ FE-plugins-configuration.yaml
    # definition of the plugins that exist in sdc
    # we have a pre-defined list of plugins that are connected to the system.
    # the plugins define where they are shown, to whom and on what elements
-   # in addition, the catalog can proxy to the plugin as well if the following 2 keys are set:
-   #     pluginFeProxyUrl - the pattern of the url that should be proxied after the sdc1/feProxy/plugin prefix
-   #     pluginProxyRedirectPath - the redirect path to the plugin (full url including protool/host and port)
-
    pluginsList:
         # the DCAE-DS is the SDC monitoring design studio this entry defines there use as part of the service level context
       - pluginId: DCAED
@@ -1418,8 +1414,6 @@ FE-plugins-configuration.yaml
       - pluginId: WORKFLOW
         pluginDiscoveryUrl: <%= @workflow_discovery_url %>
         pluginSourceUrl: <%= @workflow_source_url %>
-        pluginFeProxyUrl: <%= @workflow_fe_proxy_url %>
-        pluginProxyRedirectPath: <%= @workflow_redirect_path %>
         pluginStateUrl: "workflowDesigner"
         pluginDisplayOptions:
            tab:
index 1135cbb..21de746 100644 (file)
@@ -19,8 +19,6 @@ pluginsList:
    - pluginId: WORKFLOW
      pluginDiscoveryUrl: <%= @workflow_discovery_url %>
      pluginSourceUrl: <%= @workflow_source_url %>
-     pluginFeProxyUrl: <%= @workflow_fe_proxy_url %>
-     pluginProxyRedirectPath: <%= @workflow_redirect_path %>
      pluginStateUrl: "workflowDesigner"
      pluginDisplayOptions:
         tab:
index e332729..0eb5289 100644 (file)
@@ -57,9 +57,7 @@ data:
                 },
                 "WORKFLOW": {
                     "workflow_discovery_url": "10.0.2.15",
-                    "workflow_source_url": "10.0.2.15",
-                    "workflow_fe_proxy_url": "10.0.2.15",
-                    "workflow_redirect_path": "/wf"
+                    "workflow_source_url": "10.0.2.15"
                 }
             },
                "VnfRepo": {