Repository: stratos
Updated Branches:
  refs/heads/master 424a843f0 -> f27bbb3f0


Updating kubernetes member ports with generated service host port


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

Branch: refs/heads/master
Commit: 1d959abac55476585a21a9a46f8e1a4ec1f5c918
Parents: 9758c83
Author: Imesh Gunaratne <[email protected]>
Authored: Fri Oct 24 16:21:32 2014 +0530
Committer: Imesh Gunaratne <[email protected]>
Committed: Fri Oct 24 16:21:32 2014 +0530

----------------------------------------------------------------------
 .../impl/CloudControllerServiceImpl.java        |  2 +-
 .../InstanceStatusEventMessageListener.java     |  4 +-
 .../controller/topology/TopologyBuilder.java    | 46 ++++++++++++++------
 3 files changed, 36 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/1d959aba/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index 6189830..3da8d8d 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@ -1475,7 +1475,7 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
                        // persist in registry
                        persist();
 
-            LOG.info("Kubernetes entities are successfully starting up. 
"+memberContexts);
+            LOG.info("Kubernetes entities are successfully starting up: " + 
memberContexts);
 
             return memberContexts.toArray(new MemberContext[0]);
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/1d959aba/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topic/instance/status/InstanceStatusEventMessageListener.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topic/instance/status/InstanceStatusEventMessageListener.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topic/instance/status/InstanceStatusEventMessageListener.java
index 8dbddef..1f72e76 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topic/instance/status/InstanceStatusEventMessageListener.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topic/instance/status/InstanceStatusEventMessageListener.java
@@ -54,7 +54,7 @@ public class InstanceStatusEventMessageListener implements 
MqttCallback {
        }
 
        @Override
-       public void messageArrived(String arg0, MqttMessage message)
+       public void messageArrived(String topic, MqttMessage message)
                        throws Exception {
                if (message instanceof MqttMessage) {
 
@@ -68,7 +68,7 @@ public class InstanceStatusEventMessageListener implements 
MqttCallback {
                                }
                                receivedMessage.setText(new 
String(message.getPayload()));
                                
receivedMessage.setStringProperty(Constants.EVENT_CLASS_NAME,
-                                               
ORG_APACHE_STRATOS_MESSAGING_EVENT.concat(arg0.replace(
+                                               
ORG_APACHE_STRATOS_MESSAGING_EVENT.concat(topic.replace(
                                                                "/", ".")));
 
                                // Add received message to the queue

http://git-wip-us.apache.org/repos/asf/stratos/blob/1d959aba/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
index 2b91e46..dd15195 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
@@ -18,6 +18,7 @@
  */
 package org.apache.stratos.cloud.controller.topology;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import 
org.apache.stratos.cloud.controller.exception.InvalidCartridgeTypeException;
@@ -256,6 +257,35 @@ public class TopologyBuilder {
                        member.setLbClusterId(lbClusterId);
                        member.setMemberPublicIp(publicIp);
                        
member.setProperties(CloudControllerUtil.toJavaUtilProperties(context.getProperties()));
+            try {
+                // Update port mappings with generated service proxy port
+                // TODO: Need to properly fix with the latest Kubernetes 
version
+                String serviceHostPortStr = 
CloudControllerUtil.getProperty(context.getProperties(), 
StratosConstants.ALLOCATED_SERVICE_HOST_PORT);
+                if(StringUtils.isEmpty(serviceHostPortStr)) {
+                    log.warn("Kubernetes service host port not found for 
member: " + memberId);
+                }
+
+                Cartridge cartridge = FasterLookUpDataHolder.getInstance().
+                        getCartridge(serviceName);
+                List<PortMapping> portMappings = cartridge.getPortMappings();
+                Port port;
+                // Adding ports to the member
+                for (PortMapping portMapping : portMappings) {
+                    if (cluster.isKubernetesCluster() && 
(StringUtils.isNotEmpty(serviceHostPortStr))) {
+                        port = new Port(portMapping.getProtocol(),
+                                Integer.parseInt(serviceHostPortStr),
+                                Integer.parseInt(portMapping.getProxyPort()));
+                        member.addPort(port);
+                    } else {
+                        port = new Port(portMapping.getProtocol(),
+                                Integer.parseInt(portMapping.getPort()),
+                                Integer.parseInt(portMapping.getProxyPort()));
+                        member.addPort(port);
+                    }
+                }
+            } catch (Exception e) {
+                log.error("Could not update member port-map with generated 
service proxy port", e);
+            }
                        cluster.addMember(member);
                        TopologyManager.updateTopology(topology);
                } finally {
@@ -340,19 +370,9 @@ public class TopologyBuilder {
             TopologyManager.acquireWriteLock();
             member.setStatus(MemberStatus.Activated);
             log.info("member started event adding status activated");
-            Cartridge cartridge = FasterLookUpDataHolder.getInstance().
-                    getCartridge(instanceActivatedEvent.getServiceName());
-
-            List<PortMapping> portMappings = cartridge.getPortMappings();
-            Port port;
-            //adding ports to the event
-            for (PortMapping portMapping : portMappings) {
-                port = new Port(portMapping.getProtocol(),
-                        Integer.parseInt(portMapping.getPort()),
-                        Integer.parseInt(portMapping.getProxyPort()));
-                member.addPort(port);
-                memberActivatedEvent.addPort(port);
-            }
+            // Adding ports to the event
+            // TODO: Need to remove this since ports are now set in member 
spawned event
+            memberActivatedEvent.addPorts(member.getPorts());
 
             memberActivatedEvent.setMemberIp(member.getMemberIp());
             TopologyManager.updateTopology(topology);

Reply via email to