Repository: stratos Updated Branches: refs/heads/stratos-4.1.x 8a4d372be -> ce2a71b15
fixing port mapping issue for kubernetes Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/ce2a71b1 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/ce2a71b1 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/ce2a71b1 Branch: refs/heads/stratos-4.1.x Commit: ce2a71b153725bc05f006e9827f56861ee6c51b3 Parents: 8a4d372 Author: reka <[email protected]> Authored: Thu Sep 3 12:21:09 2015 +0530 Committer: reka <[email protected]> Committed: Thu Sep 3 12:23:29 2015 +0530 ---------------------------------------------------------------------- .../nginx/extension/NginxConfigWriter.java | 80 +++++++++++--------- 1 file changed, 43 insertions(+), 37 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/ce2a71b1/extensions/load-balancer/modules/nginx-extension/src/main/java/org/apache/stratos/nginx/extension/NginxConfigWriter.java ---------------------------------------------------------------------- diff --git a/extensions/load-balancer/modules/nginx-extension/src/main/java/org/apache/stratos/nginx/extension/NginxConfigWriter.java b/extensions/load-balancer/modules/nginx-extension/src/main/java/org/apache/stratos/nginx/extension/NginxConfigWriter.java index 6efc474..d1c5cf1 100644 --- a/extensions/load-balancer/modules/nginx-extension/src/main/java/org/apache/stratos/nginx/extension/NginxConfigWriter.java +++ b/extensions/load-balancer/modules/nginx-extension/src/main/java/org/apache/stratos/nginx/extension/NginxConfigWriter.java @@ -32,7 +32,6 @@ import java.io.FileWriter; import java.io.IOException; import java.io.StringWriter; import java.util.ArrayList; -import java.util.Collection; import java.util.List; /** @@ -62,26 +61,31 @@ public class NginxConfigWriter { StringBuilder configurationBuilder = new StringBuilder(); - List<String> availableProtocols = new ArrayList<>(); + List<Port> availablePorts = new ArrayList<Port>(); for (Service service : topology.getServices()) { for (Cluster cluster : service.getClusters()) { if ((service.getPorts() == null) || (service.getPorts().size() == 0)) { throw new RuntimeException(String.format("No ports found in service: %s", service.getServiceName())); } - for(Port port : service.getPorts()) { - if(!availableProtocols.contains(port.getProtocol())) { - availableProtocols.add(port.getProtocol()); + for (Port port : service.getPorts()) { + for(Port availablePort : availablePorts) { + if ((!availablePort.getProtocol().equals(port.getProtocol())) || + (availablePort.getProtocol().equals(port.getProtocol()) && + availablePort.getProxy() != port.getProxy())) { + availablePorts.add(port); + } } } } } - for(String protocol1 : availableProtocols) { - if(log.isDebugEnabled()) { - log.debug("Available protocols : " + protocol1 + "\n"); + for (Port port1 : availablePorts) { + if (log.isDebugEnabled()) { + log.debug("Available protocols : " + port1.getProtocol() + " proxy val: " + + port1.getProxy() + "\n"); } } - for(String protocol : availableProtocols) { + for (Port availPort : availablePorts) { // Start transport block configurationBuilder.append("http").append(" {").append(NEW_LINE); configurationBuilder.append(TAB).append("server_names_hash_bucket_size "). @@ -94,14 +98,15 @@ public class NginxConfigWriter { service.getServiceName())); } Port selectedPort = null; - for(Port port : service.getPorts()) { - if(port.getProtocol().equals(protocol)) { + for (Port port : service.getPorts()) { + if ((port.getProtocol().equals(availPort.getProtocol())) && + (port.getProxy() == availPort.getProxy())) { selectedPort = port; } } - if(selectedPort != null) { - if(log.isDebugEnabled()) { + if (selectedPort != null) { + if (log.isDebugEnabled()) { log.debug("The selected Port for cluster: " + cluster.getClusterId() + " is " + selectedPort.getValue() + " " + selectedPort.getProtocol() + " " + selectedPort.getProxy()); @@ -111,7 +116,7 @@ public class NginxConfigWriter { } } configurationBuilder.append("}").append(NEW_LINE); - if(log.isDebugEnabled()) { + if (log.isDebugEnabled()) { log.debug("The generated niginx.conf is: \n" + configurationBuilder.toString()); } // End transport block @@ -155,26 +160,27 @@ public class NginxConfigWriter { /** * Generate configuration for a cluster with the following format: - * + * <p/> * <transport> { - * upstream <cluster-hostname> { - * server <hostname>:<port>; - * server <hostname>:<port>; - * } - * server { - * listen <proxy-port>; - * server_name <cluster-hostname>; - * location / { - * proxy_pass http://<cluster-hostname> - * } - * location /nginx_status { - * stub_status on; - * access_log off; - * allow 127.0.0.1; - * deny all; - * } - * } + * upstream <cluster-hostname> { + * server <hostname>:<port>; + * server <hostname>:<port>; + * } + * server { + * listen <proxy-port>; + * server_name <cluster-hostname>; + * location / { + * proxy_pass http://<cluster-hostname> + * } + * location /nginx_status { + * stub_status on; + * access_log off; + * allow 127.0.0.1; + * deny all; * } + * } + * } + * * @param cluster * @param port * @param text @@ -196,7 +202,7 @@ public class NginxConfigWriter { // Start server block text.append(NEW_LINE); text.append(TAB).append("server {").append(NEW_LINE); - if(port.getProtocol().equals("https")) { + if (port.getProtocol().equals("https")) { text.append(TAB).append(TAB).append("listen ").append(port.getProxy()).append(" ssl;").append(NEW_LINE); } else { text.append(TAB).append(TAB).append("listen ").append(port.getProxy()).append(";").append(NEW_LINE); @@ -204,7 +210,7 @@ public class NginxConfigWriter { text.append(TAB).append(TAB).append("server_name ").append(hostname).append(";").append(NEW_LINE); text.append(TAB).append(TAB).append("location / {").append(NEW_LINE); - if(port.getProtocol().equals("https")) { + if (port.getProtocol().equals("https")) { text.append(TAB).append(TAB).append(TAB).append("proxy_pass").append(TAB) .append("https://").append(hostname).append(";").append(NEW_LINE); } else { @@ -220,10 +226,10 @@ public class NginxConfigWriter { text.append(TAB).append(TAB).append(TAB).append("deny all;").append(NEW_LINE); text.append(TAB).append(TAB).append("}").append(NEW_LINE); - if(port.getProtocol().equals("https")) { + if (port.getProtocol().equals("https")) { text.append(TAB).append(TAB).append("ssl on;").append(NEW_LINE); - text.append(TAB).append(TAB).append("ssl_certificate ").append(System.getProperty("nginx.cert.path")).append (";").append(NEW_LINE); - text.append(TAB).append(TAB).append("ssl_certificate_key ").append(System.getProperty("nginx.key.path")).append (";").append(NEW_LINE); + text.append(TAB).append(TAB).append("ssl_certificate ").append(System.getProperty("nginx.cert.path")).append(";").append(NEW_LINE); + text.append(TAB).append(TAB).append("ssl_certificate_key ").append(System.getProperty("nginx.key.path")).append(";").append(NEW_LINE); } text.append(TAB).append("}").append(NEW_LINE);
