Repository: stratos
Updated Branches:
  refs/heads/master a2c62001f -> 7d4abd0bc


Fixing STRATOS-893


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

Branch: refs/heads/master
Commit: 27f2a6d3c9fde825eca2a13f553c6c774f9dc5f7
Parents: 8105f27
Author: R-Rajkumar <[email protected]>
Authored: Tue Oct 14 19:07:20 2014 +0530
Committer: R-Rajkumar <[email protected]>
Committed: Tue Oct 14 19:07:20 2014 +0530

----------------------------------------------------------------------
 .../monitor/ClusterMonitorFactory.java          | 28 ++++++++++++++++++++
 .../controller/topology/TopologyBuilder.java    |  3 ++-
 .../topology/TopologyEventPublisher.java        |  4 ++-
 .../conf/LoadBalancerConfiguration.java         |  4 ++-
 .../messaging/domain/topology/Member.java       | 13 ++++++---
 .../event/topology/InstanceSpawnedEvent.java    |  8 +++++-
 .../InstanceSpawnedMessageProcessor.java        |  2 +-
 7 files changed, 54 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/27f2a6d3/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ClusterMonitorFactory.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ClusterMonitorFactory.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ClusterMonitorFactory.java
index 9724690..d3932ea 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ClusterMonitorFactory.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/ClusterMonitorFactory.java
@@ -142,15 +142,24 @@ public class ClusterMonitorFactory {
                         MemberContext memberContext = new MemberContext();
                         memberContext.setClusterId(member.getClusterId());
                         memberContext.setMemberId(memberId);
+                        memberContext.setInitTime(member.getInitTime());
                         memberContext.setPartition(partition);
                         
memberContext.setProperties(convertMemberPropsToMemberContextProps(member.getProperties()));
 
                         if (MemberStatus.Activated.equals(member.getStatus())) 
{
+                               if (log.isDebugEnabled()) {
+                                       String msg = String.format("Active 
member loaded from topology and added to active member list, %s", 
member.toString());
+                                               log.debug(msg);
+                                       }
                             partitionContext.addActiveMember(memberContext);
 //                            
networkPartitionContext.increaseMemberCountOfPartition(partition.getNetworkPartitionId(),
 1);
 //                            
partitionContext.incrementCurrentActiveMemberCount(1);
 
                         } else if 
(MemberStatus.Created.equals(member.getStatus()) || 
MemberStatus.Starting.equals(member.getStatus())) {
+                               if (log.isDebugEnabled()) {
+                                       String msg = String.format("Pending 
member loaded from topology and added to pending member list, %s", 
member.toString());
+                                               log.debug(msg);
+                                       }
                             partitionContext.addPendingMember(memberContext);
 
 //                            
networkPartitionContext.increaseMemberCountOfPartition(partition.getNetworkPartitionId(),
 1);
@@ -273,13 +282,22 @@ public class ClusterMonitorFactory {
                     memberContext.setClusterId(member.getClusterId());
                     memberContext.setMemberId(memberId);
                     memberContext.setPartition(partition);
+                    memberContext.setInitTime(member.getInitTime());
 
                     if (MemberStatus.Activated.equals(member.getStatus())) {
+                       if (log.isDebugEnabled()) {
+                               String msg = String.format("Active member 
loaded from topology and added to active member list, %s", member.toString());
+                                               log.debug(msg);
+                                       }
                         partitionContext.addActiveMember(memberContext);
 //                        
networkPartitionContext.increaseMemberCountOfPartition(partition.getNetworkPartitionId(),
 1);
 //                        
partitionContext.incrementCurrentActiveMemberCount(1);
                     } else if (MemberStatus.Created.equals(member.getStatus()) 
||
                                
MemberStatus.Starting.equals(member.getStatus())) {
+                       if (log.isDebugEnabled()) {
+                               String msg = String.format("Pending member 
loaded from topology and added to pending member list, %s", member.toString());
+                                               log.debug(msg);
+                                       }
                         partitionContext.addPendingMember(memberContext);
 //                        
networkPartitionContext.increaseMemberCountOfPartition(partition.getNetworkPartitionId(),
 1);
                     } else if 
(MemberStatus.Suspended.equals(member.getStatus())) {
@@ -384,17 +402,27 @@ public class ClusterMonitorFactory {
             MemberContext memberContext = new MemberContext();
             memberContext.setMemberId(memberId);
             memberContext.setClusterId(clusterId);
+            memberContext.setInitTime(member.getInitTime());
             
             // if there is at least one member in the topology, that means 
service has been created already
             // this is to avoid calling startContainer() method again
             kubernetesClusterCtxt.setServiceClusterCreated(true);
             
             if (MemberStatus.Activated.equals(member.getStatus())) {
+               if (log.isDebugEnabled()) {
+                       String msg = String.format("Active member loaded from 
topology and added to active member list, %s", member.toString());
+                                       log.debug(msg);
+                               }
                 
dockerClusterMonitor.getKubernetesClusterCtxt().addActiveMember(memberContext);
             } else if (MemberStatus.Created.equals(member.getStatus())
                        || MemberStatus.Starting.equals(member.getStatus())) {
+               if (log.isDebugEnabled()) {
+                       String msg = String.format("Pending member loaded from 
topology and added to pending member list, %s", member.toString());
+                                       log.debug(msg);
+                               }
                 
dockerClusterMonitor.getKubernetesClusterCtxt().addPendingMember(memberContext);
             }
+            
             kubernetesClusterCtxt.addMemberStatsContext(new 
MemberStatsContext(memberId));
             if (log.isInfoEnabled()) {
                 log.info(String.format("Member stat context has been added: 
[member] %s", memberId));

http://git-wip-us.apache.org/repos/asf/stratos/blob/27f2a6d3/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 2c7b77b..2b91e46 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
@@ -240,6 +240,7 @@ public class TopologyBuilder {
                String memberId = context.getMemberId();
                String networkPartitionId = context.getNetworkPartitionId();
                String lbClusterId = context.getLbClusterId();
+               long initTime = context.getInitTime();
 
                if (cluster.memberExists(memberId)) {
                        log.warn(String.format("Member %s already exists", 
memberId));
@@ -249,7 +250,7 @@ public class TopologyBuilder {
                try {
                        TopologyManager.acquireWriteLock();
                        Member member = new Member(serviceName, clusterId,
-                                       networkPartitionId, partitionId, 
memberId);
+                                       networkPartitionId, partitionId, 
memberId, initTime);
                        member.setStatus(MemberStatus.Created);
                        member.setMemberIp(privateIp);
                        member.setLbClusterId(lbClusterId);

http://git-wip-us.apache.org/repos/asf/stratos/blob/27f2a6d3/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java
index db3059d..4a48a13 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java
@@ -144,9 +144,11 @@ public class TopologyEventPublisher {
                        String clusterId, String networkPartitionId, String 
partitionId,
                        String memberId, String lbClusterId, String publicIp,
                        String privateIp, MemberContext context) {
+               
+               long initTime = context.getInitTime();
                InstanceSpawnedEvent instanceSpawnedEvent = new 
InstanceSpawnedEvent(
                                serviceName, clusterId, networkPartitionId, 
partitionId,
-                               memberId);
+                               memberId, initTime);
                instanceSpawnedEvent.setLbClusterId(lbClusterId);
                instanceSpawnedEvent.setMemberIp(privateIp);
                instanceSpawnedEvent.setMemberPublicIp(publicIp);

http://git-wip-us.apache.org/repos/asf/stratos/blob/27f2a6d3/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/LoadBalancerConfiguration.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/LoadBalancerConfiguration.java
 
b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/LoadBalancerConfiguration.java
index 3c6c5d1..e6589fa 100644
--- 
a/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/LoadBalancerConfiguration.java
+++ 
b/components/org.apache.stratos.load.balancer/src/main/java/org/apache/stratos/load/balancer/conf/LoadBalancerConfiguration.java
@@ -470,7 +470,9 @@ public class LoadBalancerConfiguration {
 
                         for (Node memberNode : membersNode.getChildNodes()) {
                             String memberId = memberNode.getName();
-                            Member member = new 
Member(cluster.getServiceName(), cluster.getClusterId(), 
Constants.STATIC_NETWORK_PARTITION, Constants.STATIC_PARTITION, memberId);
+                            // we are making it as 1 because we are not using 
this for static loadbalancer configuration
+                            long initTime = -1;
+                            Member member = new 
Member(cluster.getServiceName(), cluster.getClusterId(), 
Constants.STATIC_NETWORK_PARTITION, Constants.STATIC_PARTITION, memberId, 
initTime);
                             String ip = 
memberNode.getProperty(Constants.CONF_PROPERTY_IP);
                             
validateRequiredPropertyInNode(Constants.CONF_PROPERTY_IP, ip, 
String.format("member %s", memberId));
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/27f2a6d3/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Member.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Member.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Member.java
index c3d9e79..70872c5 100644
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Member.java
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Member.java
@@ -39,6 +39,8 @@ public class Member implements Serializable {
     private final String networkPartitionId;
     private final String partitionId;
     private final String memberId;
+    // member initiated time
+    private final long initTime;
     // Key: Port.proxy
     @XmlJavaTypeAdapter(MapAdapter.class)
     private final Map<Integer, Port> portMap;
@@ -49,13 +51,14 @@ public class Member implements Serializable {
     private Properties properties;
     private String lbClusterId;
 
-    public Member(String serviceName, String clusterId, String 
networkPartitionId, String partitionId, String memberId) {
+    public Member(String serviceName, String clusterId, String 
networkPartitionId, String partitionId, String memberId, long initTime) {
         this.serviceName = serviceName;
         this.clusterId = clusterId;
         this.networkPartitionId = networkPartitionId;
         this.partitionId = partitionId;
         this.memberId = memberId;
         this.portMap = new HashMap<Integer, Port>();
+        this.initTime = initTime;
     }
 
     public String getServiceName() {
@@ -69,7 +72,11 @@ public class Member implements Serializable {
     public String getMemberId() {
         return memberId;
     }
-
+    
+    public long getInitTime() {
+        return initTime;
+    }
+    
     public MemberStatus getStatus() {
         return status;
     }
@@ -154,7 +161,7 @@ public class Member implements Serializable {
     @Override
     public String toString() {
         return "Member [serviceName=" + serviceName + ", clusterId=" + 
clusterId + ", networkPartitionId="
-                + networkPartitionId + ", partitionId=" + partitionId + ", 
memberId=" + memberId + ", portMap="
+                + networkPartitionId + ", partitionId=" + partitionId + ", 
memberId=" + memberId + ", initTime=" + initTime + ", portMap="
                 + portMap + ", memberPublicIp=" + memberPublicIp + ", status=" 
+ status + ", memberIp=" + memberIp
                 + ", properties=" + properties + ", lbClusterId=" + 
lbClusterId + "]";
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/27f2a6d3/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/InstanceSpawnedEvent.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/InstanceSpawnedEvent.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/InstanceSpawnedEvent.java
index 3e99a30..bcb1da2 100644
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/InstanceSpawnedEvent.java
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/InstanceSpawnedEvent.java
@@ -34,18 +34,20 @@ public class InstanceSpawnedEvent extends TopologyEvent 
implements Serializable
     private final String networkPartitionId;
     private final String partitionId;
     private final String memberId;
+    private final long initTime;
     private String lbClusterId;
     private String memberPublicIp;
     private String memberIp;
     private Properties properties;
 
 
-    public InstanceSpawnedEvent(String serviceName, String clusterId, String 
networkPartitionId, String partitionId, String memberId) {
+    public InstanceSpawnedEvent(String serviceName, String clusterId, String 
networkPartitionId, String partitionId, String memberId, long initTime) {
         this.serviceName = serviceName;
         this.clusterId = clusterId;
         this.networkPartitionId = networkPartitionId;
         this.partitionId = partitionId;
         this.memberId = memberId;
+        this.initTime = initTime;
     }
 
     public String getServiceName() {
@@ -67,6 +69,10 @@ public class InstanceSpawnedEvent extends TopologyEvent 
implements Serializable
     public String getMemberId() {
         return memberId;
     }
+    
+    public long getInitTime() {
+       return initTime;
+    }
 
     public String getLbClusterId() {
         return lbClusterId;

http://git-wip-us.apache.org/repos/asf/stratos/blob/27f2a6d3/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/InstanceSpawnedMessageProcessor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/InstanceSpawnedMessageProcessor.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/InstanceSpawnedMessageProcessor.java
index db7cc20..eec6474 100644
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/InstanceSpawnedMessageProcessor.java
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/InstanceSpawnedMessageProcessor.java
@@ -109,7 +109,7 @@ public class InstanceSpawnedMessageProcessor extends 
MessageProcessor {
             } else {
                
                // Apply changes to the topology
-               Member member = new Member(event.getServiceName(), 
event.getClusterId(), event.getNetworkPartitionId(), event.getPartitionId(), 
event.getMemberId());
+               Member member = new Member(event.getServiceName(), 
event.getClusterId(), event.getNetworkPartitionId(), event.getPartitionId(), 
event.getMemberId(), event.getInitTime());
                member.setStatus(MemberStatus.Created);
                member.setMemberPublicIp(event.getMemberPublicIp());
                member.setMemberIp(event.getMemberIp());

Reply via email to