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);
