From c175a0de2f05d37c1c774684318a525eb96bb59b Mon Sep 17 00:00:00 2001 From: Avi Ziv Date: Thu, 15 Mar 2018 13:21:44 +0200 Subject: Create on boarding docker Add BE and Cassandra init docker images Change-Id: Id9d767c73fc946819cec821b4634ce650cbb22fd Issue-ID: SDC-781 Signed-off-by: Michael Lando --- catalog-fe/pom.xml | 1 - .../sdc-catalog-fe/files/default/FE-logback.xml | 4 +- .../recipes/FE_2_setup_configuration.rb | 15 +- .../templates/default/FE-configuration.yaml.erb | 26 +-- .../default/FE-onboarding-configuration.yaml.erb | 6 +- .../templates/default/ready-probe.sh.erb | 2 +- .../main/java/org/openecomp/sdc/fe/Constants.java | 17 +- .../java/org/openecomp/sdc/fe/mdc/MdcData.java | 38 ++++ .../openecomp/sdc/fe/servlets/FeProxyServlet.java | 196 +++++++++++++-------- .../sdc/fe/servlets/HealthCheckService.java | 8 +- .../openecomp/sdc/fe/servlets/SSLProxyServlet.java | 14 +- .../org/openecomp/sdc/fe/utils/BeProtocol.java | 14 ++ .../openecomp/sdc/servlets/FeProxyServletTest.java | 62 ++++++- 13 files changed, 273 insertions(+), 130 deletions(-) create mode 100644 catalog-fe/src/main/java/org/openecomp/sdc/fe/mdc/MdcData.java create mode 100644 catalog-fe/src/main/java/org/openecomp/sdc/fe/utils/BeProtocol.java (limited to 'catalog-fe') diff --git a/catalog-fe/pom.xml b/catalog-fe/pom.xml index 3b5bcab4b6..2d3e2a48bc 100644 --- a/catalog-fe/pom.xml +++ b/catalog-fe/pom.xml @@ -503,7 +503,6 @@ ${project.basedir}/sdc-frontend ${docker.tag} - ${docker.latest.tag} ${parsedVersion.majorVersion}.${parsedVersion.minorVersion}-STAGING-latest diff --git a/catalog-fe/sdc-frontend/chef-repo/cookbooks/sdc-catalog-fe/files/default/FE-logback.xml b/catalog-fe/sdc-frontend/chef-repo/cookbooks/sdc-catalog-fe/files/default/FE-logback.xml index 2f793f386b..7ae4438959 100644 --- a/catalog-fe/sdc-frontend/chef-repo/cookbooks/sdc-catalog-fe/files/default/FE-logback.xml +++ b/catalog-fe/sdc-frontend/chef-repo/cookbooks/sdc-catalog-fe/files/default/FE-logback.xml @@ -1,8 +1,8 @@ - - + + diff --git a/catalog-fe/sdc-frontend/chef-repo/cookbooks/sdc-catalog-fe/recipes/FE_2_setup_configuration.rb b/catalog-fe/sdc-frontend/chef-repo/cookbooks/sdc-catalog-fe/recipes/FE_2_setup_configuration.rb index abefd28588..2f747c308d 100644 --- a/catalog-fe/sdc-frontend/chef-repo/cookbooks/sdc-catalog-fe/recipes/FE_2_setup_configuration.rb +++ b/catalog-fe/sdc-frontend/chef-repo/cookbooks/sdc-catalog-fe/recipes/FE_2_setup_configuration.rb @@ -29,14 +29,9 @@ end template "onboarding-fe-config" do - path "#{ENV['JETTY_BASE']}/config/onboarding-fe/onboarding_configuration.yaml" - source "FE-onboarding-configuration.yaml.erb" - owner "jetty" - group "jetty" - mode "0755" - variables({ - :catalog_ip => node['Nodes']['BE'], - :catalog_port => node['BE'][:http_port], - :ssl_port => node['BE'][:https_port] -}) + path "#{ENV['JETTY_BASE']}/config/onboarding-fe/onboarding_configuration.yaml" + source "FE-onboarding-configuration.yaml.erb" + owner "jetty" + group "jetty" + mode "0755" end \ No newline at end of file diff --git a/catalog-fe/sdc-frontend/chef-repo/cookbooks/sdc-catalog-fe/templates/default/FE-configuration.yaml.erb b/catalog-fe/sdc-frontend/chef-repo/cookbooks/sdc-catalog-fe/templates/default/FE-configuration.yaml.erb index 1a245d24b5..b4368709c4 100644 --- a/catalog-fe/sdc-frontend/chef-repo/cookbooks/sdc-catalog-fe/templates/default/FE-configuration.yaml.erb +++ b/catalog-fe/sdc-frontend/chef-repo/cookbooks/sdc-catalog-fe/templates/default/FE-configuration.yaml.erb @@ -32,15 +32,23 @@ healthCheckSocketTimeoutInMs: 5000 healthCheckIntervalInSeconds: 5 onboarding: - host: <%= @fe_host_ip %> + hostFe: <%= @fe_host_ip %> <% if node[:disableHttp] -%> - protocol: https - port: <%= node['FE'][:https_port] %> + protocolFe: https + portFe: <%= node['FE'][:https_port] %> <% else %> - protocol: http - port: <%= node['FE'][:http_port] %> + protocolFe: http + portFe: <%= node['FE'][:http_port] %> + <% end -%> + healthCheckUriFe: "/onboarding/v1.0/healthcheck" + hostBe: <%= node['ONBOARDING_BE_VIP'] %> + <% if node[:disableHttp] -%> + protocolBe: https + portBe: <%= node['ONBOARDING_BE'][:https_port] %> + <% else %> + protocolBe: http + portBe: <%= node['ONBOARDING_BE'][:http_port] %> <% end -%> - healthCheckUri: "/onboarding/v1.0/healthcheck" dcae: host: <%= @fe_host_ip %> @@ -53,12 +61,6 @@ dcae: <% end -%> healthCheckUri: "/dcae/healthCheck" -dcae: - protocol: http - host: localhost - port: 8181 - healthCheckUri: "/dcae/healthCheck" - identificationHeaderFields: - - &HTTP_IV_USER HTTP_IV_USER diff --git a/catalog-fe/sdc-frontend/chef-repo/cookbooks/sdc-catalog-fe/templates/default/FE-onboarding-configuration.yaml.erb b/catalog-fe/sdc-frontend/chef-repo/cookbooks/sdc-catalog-fe/templates/default/FE-onboarding-configuration.yaml.erb index 71ed876ee7..beb774b4a9 100644 --- a/catalog-fe/sdc-frontend/chef-repo/cookbooks/sdc-catalog-fe/templates/default/FE-onboarding-configuration.yaml.erb +++ b/catalog-fe/sdc-frontend/chef-repo/cookbooks/sdc-catalog-fe/templates/default/FE-onboarding-configuration.yaml.erb @@ -1,9 +1,9 @@ notifications: pollingIntervalMsec: 2000 selectionSize: 100 - beHost: <%= @catalog_ip %> + beHost: <%= node['ONBOARDING_BE_VIP'] %> <% if node[:disableHttp] -%> - beHttpPort: <%= node['BE'][:https_port] %> + beHttpPort: <%= node['ONBOARDING_BE'][:https_port] %> <% else %> - beHttpPort: <%= node['BE'][:http_port] %> + beHttpPort: <%= node['ONBOARDING_BE'][:http_port] %> <% end -%> \ No newline at end of file diff --git a/catalog-fe/sdc-frontend/chef-repo/cookbooks/sdc-catalog-fe/templates/default/ready-probe.sh.erb b/catalog-fe/sdc-frontend/chef-repo/cookbooks/sdc-catalog-fe/templates/default/ready-probe.sh.erb index f721f9a694..d09880d825 100644 --- a/catalog-fe/sdc-frontend/chef-repo/cookbooks/sdc-catalog-fe/templates/default/ready-probe.sh.erb +++ b/catalog-fe/sdc-frontend/chef-repo/cookbooks/sdc-catalog-fe/templates/default/ready-probe.sh.erb @@ -2,7 +2,7 @@ health_Check_http_code=$(curl --max-time 5 -o /dev/null -w '%{http_code}' http://127.0.0.1:8181/sdc1/rest/healthCheck) if [[ "$health_Check_http_code" -eq 200 ]]; then - exit 200 + exit 0 else exit $health_Check_http_code fi \ No newline at end of file diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/Constants.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/Constants.java index a64ba08d69..e42644466e 100644 --- a/catalog-fe/src/main/java/org/openecomp/sdc/fe/Constants.java +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/Constants.java @@ -22,15 +22,14 @@ package org.openecomp.sdc.fe; public class Constants { - public static String HTTP_IV_USER = "HTTP_IV_USER"; - public static String USER_ID = "USER_ID"; - public static String ECOMP_PORTAL_COOKIE = "UserId"; - public static String HTTP_CSP_FIRSTNAME = "HTTP_CSP_FIRSTNAME"; - public static String HTTP_CSP_LASTNAME = "HTTP_CSP_LASTNAME"; - public static String HTTP_IV_REMOTE_ADDRESS = "HTTP_IV_REMOTE_ADDRESS"; - public static String HTTP_CSP_WSTYPE = "HTTP_CSP_WSTYPE"; - public static String HTTP_CSP_EMAIL = "HTTP_CSP_EMAIL"; - + public static final String HTTP_IV_USER = "HTTP_IV_USER"; + public static final String USER_ID = "USER_ID"; + public static final String ECOMP_PORTAL_COOKIE = "UserId"; + public static final String HTTP_CSP_FIRSTNAME = "HTTP_CSP_FIRSTNAME"; + public static final String HTTP_CSP_LASTNAME = "HTTP_CSP_LASTNAME"; + public static final String HTTP_IV_REMOTE_ADDRESS = "HTTP_IV_REMOTE_ADDRESS"; + public static final String HTTP_CSP_WSTYPE = "HTTP_CSP_WSTYPE"; + public static final String HTTP_CSP_EMAIL = "HTTP_CSP_EMAIL"; public static final String WEBSEAL_USER_ID_HEADER = "csp-attuid"; } diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/mdc/MdcData.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/mdc/MdcData.java new file mode 100644 index 0000000000..aa78a89eaf --- /dev/null +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/mdc/MdcData.java @@ -0,0 +1,38 @@ +package org.openecomp.sdc.fe.mdc; + +public class MdcData { + private String serviceInstanceID; + private String userId; + private String remoteAddr; + private String localAddr; + private Long transactionStartTime; + + public MdcData(String serviceInstanceID, String userId, String remoteAddr, String localAddr, Long transactionStartTime) { + super(); + this.serviceInstanceID = serviceInstanceID; + this.userId = userId; + this.remoteAddr = remoteAddr; + this.localAddr = localAddr; + this.transactionStartTime = transactionStartTime; + } + + public Long getTransactionStartTime() { + return transactionStartTime; + } + + public String getUserId() { + return userId; + } + + public String getRemoteAddr() { + return remoteAddr; + } + + public String getLocalAddr() { + return localAddr; + } + + public String getServiceInstanceID() { + return serviceInstanceID; + } +} 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 f9ac666933..511592afe2 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 @@ -20,7 +20,6 @@ package org.openecomp.sdc.fe.servlets; -import java.net.URI; import java.util.concurrent.TimeUnit; import javax.servlet.http.HttpServletRequest; @@ -28,10 +27,11 @@ import javax.servlet.http.HttpServletResponse; import org.eclipse.jetty.client.api.Response; import org.openecomp.sdc.common.api.Constants; -import org.openecomp.sdc.common.config.EcompErrorName; import org.openecomp.sdc.fe.config.Configuration; import org.openecomp.sdc.fe.config.ConfigurationManager; import org.openecomp.sdc.fe.config.FeEcompErrorManager; +import org.openecomp.sdc.fe.mdc.MdcData; +import org.openecomp.sdc.fe.utils.BeProtocol; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; @@ -41,12 +41,30 @@ import com.google.common.cache.CacheBuilder; public class FeProxyServlet extends SSLProxyServlet { private static final long serialVersionUID = 1L; - private static final String URL = "%s://%s:%s%s"; - private static Logger log = LoggerFactory.getLogger(FeProxyServlet.class.getName()); + 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 Logger log = LoggerFactory.getLogger(FeProxyServlet.class.getName()); private static Cache mdcDataCache = CacheBuilder.newBuilder().expireAfterWrite(10, TimeUnit.SECONDS).build(); +// @Override +// public URI rewriteURI(HttpServletRequest request) { +// try { +// logFeRequest(request); +// } catch (Exception e) { +// FeEcompErrorManager.getInstance().logFeHttpLoggingError("FE Request"); +// log.error("Unexpected FE request logging error :", e); +// } +// String originalUrl = request.getRequestURL().toString(); +// String redirectedUrl = getModifiedUrl(request); +// +// log.debug("FeProxyServlet Redirecting request from: {} , to: {}", originalUrl, redirectedUrl); +// +// return URI.create(redirectedUrl); +// } + @Override - public URI rewriteURI(HttpServletRequest request) { + protected String rewriteTarget(HttpServletRequest request) { try { logFeRequest(request); } catch (Exception e) { @@ -58,18 +76,29 @@ public class FeProxyServlet extends SSLProxyServlet { log.debug("FeProxyServlet Redirecting request from: {} , to: {}", originalUrl, redirectedUrl); - return URI.create(redirectedUrl); + return redirectedUrl; } +// @Override +// protected void onResponseSuccess(HttpServletRequest request, HttpServletResponse response, Response proxyResponse) { +// try { +// logFeResponse(request, proxyResponse); +// } catch (Exception e) { +// FeEcompErrorManager.getInstance().logFeHttpLoggingError("FE Response"); +// log.error("Unexpected FE response logging error :", e); +// } +// super.onResponseSuccess(request, response, proxyResponse); +// } +//protected void onProxyResponseSuccess(HttpServletRequest clientRequest, HttpServletResponse proxyResponse, Response serverResponse) { @Override - protected void onResponseSuccess(HttpServletRequest request, HttpServletResponse response, Response proxyResponse) { + protected void onProxyResponseSuccess(HttpServletRequest request, HttpServletResponse proxyResponse, Response response) { try { - logFeResponse(request, proxyResponse); + logFeResponse(request, response); } catch (Exception e) { FeEcompErrorManager.getInstance().logFeHttpLoggingError("FE Response"); log.error("Unexpected FE response logging error :", e); } - super.onResponseSuccess(request, response, proxyResponse); + super.onProxyResponseSuccess(request, proxyResponse, response); } private void logFeRequest(HttpServletRequest httpRequest) { @@ -135,79 +164,104 @@ public class FeProxyServlet extends SSLProxyServlet { MDC.put("timer", transactionStartTime); } - private class MdcData { - private String serviceInstanceID; - private String userId; - private String remoteAddr; - private String localAddr; - private Long transactionStartTime; - - public MdcData(String serviceInstanceID, String userId, String remoteAddr, String localAddr, Long transactionStartTime) { - super(); - this.serviceInstanceID = serviceInstanceID; - this.userId = userId; - this.remoteAddr = remoteAddr; - this.localAddr = localAddr; - this.transactionStartTime = transactionStartTime; + private String getModifiedUrl(HttpServletRequest request) { + Configuration config = getConfiguration(request); + if (config == null) { + log.error("failed to retrive configuration."); + throw new RuntimeException("failed to read FE configuration"); } - - public Long getTransactionStartTime() { - return transactionStartTime; + String uri = request.getRequestURI(); + String protocol; + String host; + String port; + if (uri.contains(ONBOARDING_CONTEXT)){ + uri = uri.replace("/sdc1/feProxy"+ONBOARDING_CONTEXT,ONBOARDING_CONTEXT); + protocol = config.getOnboarding().getProtocolBe(); + host = config.getOnboarding().getHostBe(); + port = config.getOnboarding().getPortBe().toString(); } - - public String getUserId() { - return userId; + else if(uri.contains(DCAED_CONTEXT)){ + uri = uri.replace("/sdc1/feProxy"+DCAED_CONTEXT,DCAED_CONTEXT); + protocol = config.getBeProtocol(); + host = config.getBeHost(); + if (config.getBeProtocol().equals(BeProtocol.HTTP.getProtocolName())) { + port = config.getBeHttpPort().toString(); + } else { + port = config.getBeSslPort().toString(); + } } + else{ + uri = uri.replace("/sdc1/feProxy","/sdc2"); + protocol = config.getBeProtocol(); + host = config.getBeHost(); + if (config.getBeProtocol().equals(BeProtocol.HTTP.getProtocolName())) { + port = config.getBeHttpPort().toString(); + } else { + port = config.getBeSslPort().toString(); + } - public String getRemoteAddr() { - return remoteAddr; } - public String getLocalAddr() { - return localAddr; - } + String authority = getAuthority(host, port); + String queryString = getQueryString(request); + return String.format(URL,protocol,authority,uri,queryString); + + + + +// String scheme = config.getBeProtocol(); +// String uri = request.getRequestURI().toString(); +// StringBuilder url = new StringBuilder(); +// url.append(scheme).append("://").append(config.getBeHost()); +// url.append(":"); +// if (config.getBeProtocol().equals(BeProtocol.HTTP.getProtocolName())) { +// url.append(config.getBeHttpPort()); +// } else { +// url.append(config.getBeSslPort()); +// } +// url.append(uri); +// String queryString = request.getQueryString(); // d=789 +// if (queryString != null) { +// url.append("?").append(queryString); +// } +// +// String redirectedUrl = url.toString(); +// String onboardingForwardContext = config.getOnboardingForwardContext(); +// if (onboardingForwardContext == null || onboardingForwardContext.isEmpty()) { +// onboardingForwardContext = "/onboarding-api"; +// } +// redirectedUrl = redirectedUrl.replace("/sdc1/feProxy/dcae-api", "/dcae"); +// redirectedUrl = redirectedUrl.replace("/sdc1/feProxy/onboarding-api", onboardingForwardContext); +// redirectedUrl = redirectedUrl.replace("/sdc1/feProxy", "/sdc2"); +// return redirectedUrl; - public String getServiceInstanceID() { - return serviceInstanceID; - } } - public String getModifiedUrl(HttpServletRequest request) { - Configuration config = getConfiguration(request); - if (config == null) { - log.error("failed to retrive configuration."); - } - String scheme = config.getBeProtocol(); - String uri = request.getRequestURI().toString(); - StringBuilder url = new StringBuilder(); - url.append(scheme).append("://").append(config.getBeHost()); - url.append(":"); - if (config.getBeProtocol().equals(BE_PROTOCOL.HTTP.getProtocolName())) { - url.append(config.getBeHttpPort()); - } else { - url.append(config.getBeSslPort()); - } - url.append(uri); - String queryString = request.getQueryString(); // d=789 - if (queryString != null) { - url.append("?").append(queryString); - } - - String redirectedUrl = url.toString(); - String onboardingForwardContext = config.getOnboardingForwardContext(); - if (onboardingForwardContext == null || onboardingForwardContext.isEmpty()) { - onboardingForwardContext = "/onboarding-api"; - } - redirectedUrl = redirectedUrl.replace("/sdc1/feProxy/dcae-api", "/dcae"); - redirectedUrl = redirectedUrl.replace("/sdc1/feProxy/onboarding-api", onboardingForwardContext); - redirectedUrl = redirectedUrl.replace("/sdc1/feProxy", "/sdc2"); - return redirectedUrl; + private Configuration getConfiguration(HttpServletRequest request) { + return ((ConfigurationManager) request.getSession().getServletContext().getAttribute(Constants.CONFIGURATION_MANAGER_ATTR)).getConfiguration(); } - private Configuration getConfiguration(HttpServletRequest request) { - Configuration config = ((ConfigurationManager) request.getSession().getServletContext().getAttribute(Constants.CONFIGURATION_MANAGER_ATTR)).getConfiguration(); - return config; - } + private String getAuthority(String host, String port) { + String authority; + if (port==null){ + authority=host; + } + else{ + authority=host+":"+port; + } + return authority; + } + + private String getQueryString(HttpServletRequest request) { + String queryString = request.getQueryString(); + if (queryString != null) { + queryString="?"+queryString; + } + else{ + queryString=""; + } + return queryString; + } } diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/HealthCheckService.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/HealthCheckService.java index fce5d35d20..7f5ea06b97 100644 --- a/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/HealthCheckService.java +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/HealthCheckService.java @@ -295,10 +295,10 @@ public class HealthCheckService { Configuration.OnboardingConfig onboardingConfig = config.getOnboarding(); if (onboardingConfig != null) { - String protocol = onboardingConfig.getProtocol(); - String host = onboardingConfig.getHost(); - Integer port = onboardingConfig.getPort(); - String uri = onboardingConfig.getHealthCheckUri(); + String protocol = onboardingConfig.getProtocolFe(); + String host = onboardingConfig.getHostFe(); + Integer port = onboardingConfig.getPortFe(); + String uri = onboardingConfig.getHealthCheckUriFe(); return protocol + "://" + host + ":" + port + uri; } diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/SSLProxyServlet.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/SSLProxyServlet.java index c3ba279c8c..4edcfe1286 100644 --- a/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/SSLProxyServlet.java +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/servlets/SSLProxyServlet.java @@ -33,6 +33,7 @@ import org.eclipse.jetty.util.ssl.SslContextFactory; import org.openecomp.sdc.common.api.Constants; import org.openecomp.sdc.fe.config.Configuration; import org.openecomp.sdc.fe.config.ConfigurationManager; +import org.openecomp.sdc.fe.utils.BeProtocol; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -41,18 +42,7 @@ public abstract class SSLProxyServlet extends ProxyServlet { private static final long serialVersionUID = 1L; private static Logger log = LoggerFactory.getLogger(SSLProxyServlet.class.getName()); - public enum BE_PROTOCOL { - HTTP("http"), SSL("ssl"); - private String protocolName; - public String getProtocolName() { - return protocolName; - } - - BE_PROTOCOL(String protocolName) { - this.protocolName = protocolName; - } - }; @Override public void customizeProxyRequest(Request proxyRequest, HttpServletRequest request) { @@ -77,7 +67,7 @@ public abstract class SSLProxyServlet extends ProxyServlet { protected HttpClient createHttpClient() throws ServletException { Configuration config = ((ConfigurationManager) getServletConfig().getServletContext() .getAttribute(Constants.CONFIGURATION_MANAGER_ATTR)).getConfiguration(); - boolean isSecureClient = !config.getBeProtocol().equals(BE_PROTOCOL.HTTP.getProtocolName()); + boolean isSecureClient = !config.getBeProtocol().equals(BeProtocol.HTTP.getProtocolName()); HttpClient client = (isSecureClient) ? getSecureHttpClient() : super.createHttpClient(); setTimeout(600000); client.setIdleTimeout(600000); diff --git a/catalog-fe/src/main/java/org/openecomp/sdc/fe/utils/BeProtocol.java b/catalog-fe/src/main/java/org/openecomp/sdc/fe/utils/BeProtocol.java new file mode 100644 index 0000000000..923728672e --- /dev/null +++ b/catalog-fe/src/main/java/org/openecomp/sdc/fe/utils/BeProtocol.java @@ -0,0 +1,14 @@ +package org.openecomp.sdc.fe.utils; + +public enum BeProtocol { + HTTP("http"), SSL("ssl"); + private String protocolName; + + public String getProtocolName() { + return protocolName; + } + + BeProtocol(String protocolName) { + this.protocolName = protocolName; + } + }; \ No newline at end of file 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 4c4eb1ca2a..f3bd9a75b8 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 @@ -52,18 +52,22 @@ public class FeProxyServletTest { * http://localhost:8080/sdc1/feProxy/dummy/not/working --> * http://localhost:8090/sdc2/dummy/not/working */ - FeProxyServlet feProxy = new FeProxyServlet(); + FeProxyServletForTest feProxy = new FeProxyServletForTest(); final static HttpServletRequest servletRequest = Mockito.mock(HttpServletRequest.class); final static HttpSession httpSession = Mockito.mock(HttpSession.class); final static ServletContext servletContext = Mockito.mock(ServletContext.class); final static ConfigurationManager configurationManager = Mockito.mock(ConfigurationManager.class); final static Configuration configuration = Mockito.mock(Configuration.class); + final static Configuration.OnboardingConfig onboardingConfiguration = Mockito.mock(Configuration.OnboardingConfig.class); final static Request proxyRequest = Mockito.spy(Request.class); final static HttpFields httpFields = Mockito.mock(HttpFields.class); final static String BE_PROTOCOL = "http"; final static String BE_HOST = "172.20.43.124"; final static int BE_PORT = 8090; + final static String ONBOARDING_BE_PROTOCOL = "http"; + final static String ONBOARDING_BE_HOST = "172.20.43.125"; + final static int ONBOARDING_BE_PORT = 8091; final static String HEADER_1 = "Header1"; final static String HEADER_2 = "Header2"; final static String HEADER_3 = "Header3"; @@ -81,6 +85,10 @@ public class FeProxyServletTest { when(configuration.getBeProtocol()).thenReturn(BE_PROTOCOL); when(configuration.getBeHost()).thenReturn(BE_HOST); when(configuration.getBeHttpPort()).thenReturn(BE_PORT); + when(configuration.getOnboarding()).thenReturn(onboardingConfiguration); + when(configuration.getOnboarding().getProtocolBe()).thenReturn(ONBOARDING_BE_PROTOCOL); + when(configuration.getOnboarding().getHostBe()).thenReturn(ONBOARDING_BE_HOST); + when(configuration.getOnboarding().getPortBe()).thenReturn(ONBOARDING_BE_PORT); List strList = new ArrayList(); strList.add(HEADER_1); @@ -110,13 +118,44 @@ public class FeProxyServletTest { when(servletRequest.getContextPath()).thenReturn("/sdc1"); when(servletRequest.getServletPath()).thenReturn("/feProxy/rest/dummyBeAPI"); - URI rewriteURI = feProxy.rewriteURI(servletRequest); + String rewriteURI = feProxy.rewriteTarget(servletRequest); - assertTrue(rewriteURI.toString().equals(expectedChangedUrl)); + assertTrue(rewriteURI.equals(expectedChangedUrl)); } + @Test + public void testRewriteURIWithOnboardingAPIRequest() { + when(servletRequest.getRequestURI()).thenReturn("/sdc1/feProxy/onboarding-api/gg%20g?subtype=VF"); + String requestResourceUrl = "http://localhost:8080/sdc1/feProxy/onboarding-api/gg%20g?subtype=VF"; + String expectedChangedUrl = ONBOARDING_BE_PROTOCOL + "://" + ONBOARDING_BE_HOST + ":" + ONBOARDING_BE_PORT + "/onboarding-api/gg%20g?subtype=VF"; + when(servletRequest.getRequestURL()).thenReturn(new StringBuffer(requestResourceUrl)); + + when(servletRequest.getContextPath()).thenReturn("/sdc1"); + when(servletRequest.getServletPath()).thenReturn("/feProxy/onboarding-api/gg%20g?subtype=VF"); + + String rewriteURI = feProxy.rewriteTarget(servletRequest); + + assertTrue(rewriteURI.equals(expectedChangedUrl)); + } + + @Test public void testRewriteURIWithQureyParam_APIRequest() { + when(servletRequest.getRequestURI()).thenReturn("/sdc1/feProxy/dcae-api/gg%20g?subtype=VF"); + String requestResourceUrl = "http://localhost:8080/sdc1/feProxy/dcae-api/gg%20g?subtype=VF"; + String expectedChangedUrl = BE_PROTOCOL + "://" + BE_HOST + ":" + BE_PORT + "/dcae-api/gg%20g?subtype=VF"; + when(servletRequest.getRequestURL()).thenReturn(new StringBuffer(requestResourceUrl)); + + when(servletRequest.getContextPath()).thenReturn("/sdc1"); + when(servletRequest.getServletPath()).thenReturn("/feProxy/dcae-api/gg%20g?subtype=VF"); + + String rewriteURI = feProxy.rewriteTarget(servletRequest); + + assertTrue(rewriteURI.equals(expectedChangedUrl)); + } + + @Test + public void testRewriteTargetWithRedeirectAPIRequest() { when(servletRequest.getRequestURI()).thenReturn("/sdc1/feProxy/rest/gg%20g?subtype=VF"); String requestResourceUrl = "http://localhost:8080/sdc1/feProxy/rest/gg%20g?subtype=VF"; String expectedChangedUrl = BE_PROTOCOL + "://" + BE_HOST + ":" + BE_PORT + "/sdc2/rest/gg%20g?subtype=VF"; @@ -125,11 +164,13 @@ public class FeProxyServletTest { when(servletRequest.getContextPath()).thenReturn("/sdc1"); when(servletRequest.getServletPath()).thenReturn("/feProxy/rest/gg%20g?subtype=VF"); - URI rewriteURI = feProxy.rewriteURI(servletRequest); + String rewriteURI = feProxy.rewriteTarget(servletRequest); - assertTrue(rewriteURI.toString().equals(expectedChangedUrl)); + assertTrue(rewriteURI.equals(expectedChangedUrl)); } + + @Test public void testCustomizeProxyRequest() { feProxy.customizeProxyRequest(proxyRequest, servletRequest); @@ -137,4 +178,15 @@ public class FeProxyServletTest { verify(proxyRequest, times(1)).header(Mockito.anyString(), Mockito.anyString()); } + + /** + * class for testing only exposes the protected method. + */ + public static class FeProxyServletForTest extends FeProxyServlet{ + + @Override + public String rewriteTarget(HttpServletRequest request) { + return super.rewriteTarget(request); + } + } } -- cgit 1.2.3-korg