Repository: stratos
Updated Branches:
  refs/heads/stratos-4.1.x ce2a71b15 -> 55abb9593


fixing port mapping for kubernetes


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/55abb959
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/55abb959
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/55abb959

Branch: refs/heads/stratos-4.1.x
Commit: 55abb959385e38d160c3d1e8b7031a8c547c184a
Parents: ce2a71b
Author: reka <[email protected]>
Authored: Fri Sep 4 13:56:05 2015 +0530
Committer: reka <[email protected]>
Committed: Fri Sep 4 13:56:05 2015 +0530

----------------------------------------------------------------------
 .../nginx/extension/NginxConfigWriter.java      | 186 ++++++++++++-------
 1 file changed, 115 insertions(+), 71 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/55abb959/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 d1c5cf1..11521bd 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,6 +32,7 @@ import java.io.FileWriter;
 import java.io.IOException;
 import java.io.StringWriter;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 
 /**
@@ -68,23 +69,46 @@ public class NginxConfigWriter {
                 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()) {
-                    for(Port availablePort : availablePorts) {
-                        if 
((!availablePort.getProtocol().equals(port.getProtocol())) ||
-                                
(availablePort.getProtocol().equals(port.getProtocol()) &&
-                                        availablePort.getProxy() != 
port.getProxy())) {
+                for (Member member : cluster.getMembers()) {
+                    Collection<Port> ports = member.getPorts();
+                    for(Port port : ports) {
+                        boolean protocolFound = false;
+                        for(Port availablePort : availablePorts) {
+                            if 
((availablePort.getProtocol().equals(port.getProtocol()))) {
+                                protocolFound = true;
+                                break;
+                            }
+                        }
+                        if(!protocolFound) {
+                            if (log.isDebugEnabled()) {
+                                log.debug("Available protocols : " + 
port.getProtocol() + " proxy val: " +
+                                        port.getProxy() + "\n");
+                            }
                             availablePorts.add(port);
+                        } else {
+                            boolean proxyFound = false;
+                            for(Port availablePort : availablePorts) {
+                                if 
(availablePort.getProtocol().equals(port.getProtocol()) &&
+                                        availablePort.getProxy() == 
port.getProxy()) {
+                                    proxyFound = true;
+                                    break;
+                                }
+                            }
+
+                            if(!proxyFound) {
+                                if (log.isDebugEnabled()) {
+                                    log.debug("Available protocols : " + 
port.getProtocol() + " proxy val: " +
+                                            port.getProxy() + "\n");
+                                }
+                                availablePorts.add(port);
+                            }
                         }
                     }
                 }
+
             }
         }
-        for (Port port1 : availablePorts) {
-            if (log.isDebugEnabled()) {
-                log.debug("Available protocols : " + port1.getProtocol() + " 
proxy val: " +
-                        port1.getProxy() + "\n");
-            }
-        }
+
         for (Port availPort : availablePorts) {
             // Start transport block
             configurationBuilder.append("http").append(" {").append(NEW_LINE);
@@ -97,22 +121,8 @@ public class NginxConfigWriter {
                         throw new RuntimeException(String.format("No ports 
found in service: %s",
                                 service.getServiceName()));
                     }
-                    Port selectedPort = null;
-                    for (Port port : service.getPorts()) {
-                        if 
((port.getProtocol().equals(availPort.getProtocol())) &&
-                                (port.getProxy() == availPort.getProxy())) {
-                            selectedPort = port;
-                        }
-                    }
+                    generateConfigurationForCluster(cluster, availPort, 
configurationBuilder);
 
-                    if (selectedPort != null) {
-                        if (log.isDebugEnabled()) {
-                            log.debug("The selected Port for cluster: " + 
cluster.getClusterId()
-                                    + " is " + selectedPort.getValue() + " " +
-                                    selectedPort.getProtocol() + " " + 
selectedPort.getProxy());
-                        }
-                        generateConfigurationForCluster(cluster, selectedPort, 
configurationBuilder);
-                    }
                 }
             }
             configurationBuilder.append("}").append(NEW_LINE);
@@ -182,59 +192,93 @@ public class NginxConfigWriter {
      * }
      *
      * @param cluster
-     * @param port
+     * @param availPort
      * @param text
      */
-    private void generateConfigurationForCluster(Cluster cluster, Port port, 
StringBuilder text) {
+    private void generateConfigurationForCluster(Cluster cluster, Port 
availPort, StringBuilder text) {
 
         for (String hostname : cluster.getHostNames()) {
-            // Start upstream block
-            text.append(TAB).append("upstream ").append(hostname).append(" 
{").append(NEW_LINE);
+            boolean memberFound = false;
+            //Checking whether at-least one member is available to create
+            // the upstream and server blocks
             for (Member member : cluster.getMembers()) {
-                // Start upstream server block
-                text.append(TAB).append(TAB).append("server 
").append(member.getHostName()).append(":")
-                        .append(port.getValue()).append(";").append(NEW_LINE);
-                // End upstream server block
-            }
-            text.append(TAB).append("}").append(NEW_LINE);
-            // End upstream block
-
-            // Start server block
-            text.append(NEW_LINE);
-            text.append(TAB).append("server {").append(NEW_LINE);
-            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);
-            }
-            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")) {
-                
text.append(TAB).append(TAB).append(TAB).append("proxy_pass").append(TAB)
-                        
.append("https://";).append(hostname).append(";").append(NEW_LINE);
-            } else {
-                
text.append(TAB).append(TAB).append(TAB).append("proxy_pass").append(TAB)
-                        
.append("http://";).append(hostname).append(";").append(NEW_LINE);
-            }
-            text.append(TAB).append(TAB).append("}").append(NEW_LINE);
-
-            text.append(TAB).append(TAB).append("location /nginx_status 
{").append(NEW_LINE);
-            text.append(TAB).append(TAB).append(TAB).append("stub_status 
on;").append(NEW_LINE);
-            text.append(TAB).append(TAB).append(TAB).append("access_log 
off;").append(NEW_LINE);
-            text.append(TAB).append(TAB).append(TAB).append("allow 
127.0.0.1;").append(NEW_LINE);
-            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")) {
-                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);
+                Collection<Port> ports = member.getPorts();
+                for (Port port : ports) {
+                    if ((port.getProtocol().equals(availPort.getProtocol())) &&
+                            (port.getProxy() == availPort.getProxy())) {
+                        memberFound = true;
+                        break;
+                    }
+                }
+                if(memberFound) {
+                    break;
+                }
             }
+            if(memberFound) {
+                // Start upstream block
+                text.append(TAB).append("upstream ").append(hostname).append(" 
{").append(NEW_LINE);
+                for (Member member : cluster.getMembers()) {
+                    Port selectedPort = null;
+                    Collection<Port> ports = member.getPorts();
+                    for (Port port : ports) {
+                        if 
((port.getProtocol().equals(availPort.getProtocol())) &&
+                                (port.getProxy() == availPort.getProxy())) {
+                            selectedPort = port;
+                            break;
+                        }
+                    }
+
+                    if (selectedPort != null) {
+                        if (log.isDebugEnabled()) {
+                            log.debug("The selected Port for cluster: " + 
cluster.getClusterId()
+                                    + " is " + selectedPort.getValue() + " " +
+                                    selectedPort.getProtocol() + " " + 
selectedPort.getProxy());
+                        }
+                        // Start upstream server block
+                        text.append(TAB).append(TAB).append("server 
").append(member.getHostName()).append(":")
+                                
.append(selectedPort.getValue()).append(";").append(NEW_LINE);
+                        // End upstream server block
+                    }
+                }
+                text.append(TAB).append("}").append(NEW_LINE);
+                // End upstream block
+
+                // Start server block
+                text.append(NEW_LINE);
+                text.append(TAB).append("server {").append(NEW_LINE);
+                if (availPort.getProtocol().equals("https")) {
+                    text.append(TAB).append(TAB).append("listen 
").append(availPort.getProxy()).append(" ssl;").append(NEW_LINE);
+                } else {
+                    text.append(TAB).append(TAB).append("listen 
").append(availPort.getProxy()).append(";").append(NEW_LINE);
+                }
+                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 (availPort.getProtocol().equals("https")) {
+                    
text.append(TAB).append(TAB).append(TAB).append("proxy_pass").append(TAB)
+                            
.append("https://";).append(hostname).append(";").append(NEW_LINE);
+                } else {
+                    
text.append(TAB).append(TAB).append(TAB).append("proxy_pass").append(TAB)
+                            
.append("http://";).append(hostname).append(";").append(NEW_LINE);
+                }
+                text.append(TAB).append(TAB).append("}").append(NEW_LINE);
 
-            text.append(TAB).append("}").append(NEW_LINE);
-            // End server block
+                text.append(TAB).append(TAB).append("location /nginx_status 
{").append(NEW_LINE);
+                text.append(TAB).append(TAB).append(TAB).append("stub_status 
on;").append(NEW_LINE);
+                text.append(TAB).append(TAB).append(TAB).append("access_log 
off;").append(NEW_LINE);
+                text.append(TAB).append(TAB).append(TAB).append("allow 
127.0.0.1;").append(NEW_LINE);
+                text.append(TAB).append(TAB).append(TAB).append("deny 
all;").append(NEW_LINE);
+                text.append(TAB).append(TAB).append("}").append(NEW_LINE);
 
+                if (availPort.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("}").append(NEW_LINE);
+                // End server block
+            }
         }
     }
 }

Reply via email to