You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by sa...@apache.org on 2014/10/06 19:43:09 UTC

[3/7] code review changes to cluster monitors

http://git-wip-us.apache.org/repos/asf/stratos/blob/31056109/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
index 4f58e8d..e7c16fe 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoscalerUtil.java
@@ -19,39 +19,16 @@
 
 package org.apache.stratos.autoscaler.util;
 
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+
 import org.apache.axiom.om.OMElement;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.autoscaler.KubernetesClusterContext;
-import org.apache.stratos.autoscaler.MemberStatsContext;
-import org.apache.stratos.autoscaler.NetworkPartitionContext;
-import org.apache.stratos.autoscaler.NetworkPartitionLbHolder;
-import org.apache.stratos.autoscaler.PartitionContext;
-import org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
-import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
-import org.apache.stratos.autoscaler.exception.PartitionValidationException;
-import org.apache.stratos.autoscaler.exception.PolicyValidationException;
-import org.apache.stratos.autoscaler.monitor.VMServiceClusterMonitor;
-import org.apache.stratos.autoscaler.monitor.DockerServiceClusterMonitor;
-import org.apache.stratos.autoscaler.monitor.VMLbClusterMonitor;
-import org.apache.stratos.autoscaler.partition.PartitionGroup;
-import org.apache.stratos.autoscaler.partition.PartitionManager;
-import org.apache.stratos.autoscaler.policy.PolicyManager;
-import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
-import org.apache.stratos.cloud.controller.stub.deployment.partition.Partition;
-import org.apache.stratos.cloud.controller.stub.pojo.MemberContext;
-import org.apache.stratos.cloud.controller.stub.pojo.Property;
 import org.apache.stratos.cloud.controller.stub.pojo.Properties;
-import org.apache.stratos.common.constants.StratosConstants;
-import org.apache.stratos.messaging.domain.topology.Cluster;
-import org.apache.stratos.messaging.domain.topology.ClusterStatus;
-import org.apache.stratos.messaging.domain.topology.Member;
-import org.apache.stratos.messaging.domain.topology.MemberStatus;
-import org.apache.stratos.messaging.util.Constants;
-
-import javax.xml.namespace.QName;
-
-import java.util.*;
+import org.apache.stratos.cloud.controller.stub.pojo.Property;
 
 /**
  * This class contains utility methods used by Autoscaler.
@@ -64,302 +41,6 @@ public class AutoscalerUtil {
 
     }
 
-
-    /**
-     * Updates ClusterContext for given cluster
-     *
-     * @param cluster
-     * @return ClusterMonitor - Updated ClusterContext
-     * @throws PolicyValidationException
-     * @throws PartitionValidationException
-     */
-//    public static ClusterMonitor getClusterMonitor(Cluster cluster) throws PolicyValidationException, PartitionValidationException {
-//        // FIXME fix the following code to correctly update
-//        // AutoscalerContext context = AutoscalerContext.getInstance();
-//        if (null == cluster) {
-//            return null;
-//        }
-//
-//        String autoscalePolicyName = cluster.getAutoscalePolicyName();
-//        String deploymentPolicyName = cluster.getDeploymentPolicyName();
-//
-//        if (log.isDebugEnabled()) {
-//            log.debug("Deployment policy name: " + deploymentPolicyName);
-//            log.debug("Autoscaler policy name: " + autoscalePolicyName);
-//        }
-//
-//        AutoscalePolicy policy =
-//                                 PolicyManager.getInstance()
-//                                              .getAutoscalePolicy(autoscalePolicyName);
-//        DeploymentPolicy deploymentPolicy =
-//                                            PolicyManager.getInstance()
-//                                                         .getDeploymentPolicy(deploymentPolicyName);
-//
-//        if (deploymentPolicy == null) {
-//            String msg = "Deployment Policy is null. Policy name: " + deploymentPolicyName;
-//            log.error(msg);
-//            throw new PolicyValidationException(msg);
-//        }
-//
-//        Partition[] allPartitions = deploymentPolicy.getAllPartitions();
-//        if (allPartitions == null) {
-//            String msg =
-//                         "Deployment Policy's Partitions are null. Policy name: " +
-//                                 deploymentPolicyName;
-//            log.error(msg);
-//            throw new PolicyValidationException(msg);
-//        }
-//
-//        CloudControllerClient.getInstance().validateDeploymentPolicy(cluster.getServiceName(), deploymentPolicy);
-//
-//        ClusterMonitor clusterMonitor =
-//                                        new ClusterMonitor(cluster.getClusterId(),
-//                                                           cluster.getServiceName(),
-//                                                           deploymentPolicy, policy);
-//        clusterMonitor.setStatus(ClusterStatus.Created);
-//        
-//        for (PartitionGroup partitionGroup: deploymentPolicy.getPartitionGroups()){
-//
-//            NetworkPartitionContext networkPartitionContext = new NetworkPartitionContext(partitionGroup.getId(),
-//                    partitionGroup.getPartitionAlgo(), partitionGroup.getPartitions());
-//
-//            for(Partition partition: partitionGroup.getPartitions()){
-//                PartitionContext partitionContext = new PartitionContext(partition);
-//                partitionContext.setServiceName(cluster.getServiceName());
-//                partitionContext.setProperties(cluster.getProperties());
-//                partitionContext.setNetworkPartitionId(partitionGroup.getId());
-//                
-//                for (Member member: cluster.getMembers()){
-//                    String memberId = member.getMemberId();
-//                    if(member.getPartitionId().equalsIgnoreCase(partition.getId())){
-//                        MemberContext memberContext = new MemberContext();
-//                        memberContext.setClusterId(member.getClusterId());
-//                        memberContext.setMemberId(memberId);
-//                        memberContext.setPartition(partition);
-//                        memberContext.setProperties(convertMemberPropsToMemberContextProps(member.getProperties()));
-//                        
-//                        if(MemberStatus.Activated.equals(member.getStatus())){
-//                            partitionContext.addActiveMember(memberContext);
-////                            networkPartitionContext.increaseMemberCountOfPartition(partition.getNetworkPartitionId(), 1);
-////                            partitionContext.incrementCurrentActiveMemberCount(1);
-//
-//                        } else if(MemberStatus.Created.equals(member.getStatus()) || MemberStatus.Starting.equals(member.getStatus())){
-//                            partitionContext.addPendingMember(memberContext);
-//
-////                            networkPartitionContext.increaseMemberCountOfPartition(partition.getNetworkPartitionId(), 1);
-//                        } else if(MemberStatus.Suspended.equals(member.getStatus())){
-////                            partitionContext.addFaultyMember(memberId);
-//                        }
-//                        partitionContext.addMemberStatsContext(new MemberStatsContext(memberId));
-//                        if(log.isInfoEnabled()){
-//                            log.info(String.format("Member stat context has been added: [member] %s", memberId));
-//                        }
-//                    }
-//
-//                }
-//                networkPartitionContext.addPartitionContext(partitionContext);
-//                if(log.isInfoEnabled()){
-//                    log.info(String.format("Partition context has been added: [partition] %s",
-//                            partitionContext.getPartitionId()));
-//                }
-//            }
-//
-//            clusterMonitor.addNetworkPartitionCtxt(networkPartitionContext);
-//            if(log.isInfoEnabled()){
-//                log.info(String.format("Network partition context has been added: [network partition] %s",
-//                            networkPartitionContext.getId()));
-//            }
-//        }
-//        
-//        
-//        // find lb reference type
-//        java.util.Properties props = cluster.getProperties();
-//        
-//        if(props.containsKey(Constants.LOAD_BALANCER_REF)) {
-//            String value = props.getProperty(Constants.LOAD_BALANCER_REF);
-//            clusterMonitor.setLbReferenceType(value);
-//            if(log.isDebugEnabled()) {
-//                log.debug("Set the lb reference type: "+value);
-//            }
-//        }
-//        
-//        // set hasPrimary property
-//        // hasPrimary is true if there are primary members available in that cluster
-//        clusterMonitor.setHasPrimary(Boolean.parseBoolean(cluster.getProperties().getProperty(Constants.IS_PRIMARY)));
-//
-//        log.info("Cluster monitor created: "+clusterMonitor.toString());
-//        return clusterMonitor;
-//    }
-//    
-//    private static Properties convertMemberPropsToMemberContextProps(
-//			java.util.Properties properties) {
-//    	Properties props = new Properties();
-//    	for (Map.Entry<Object, Object> e : properties.entrySet()	) {
-//			Property prop = new Property();
-//			prop.setName((String)e.getKey());
-//			prop.setValue((String)e.getValue());
-//			props.addProperties(prop);
-//		}    	
-//		return props;
-//	}
-//
-//
-//	public static LbClusterMonitor getLBClusterMonitor(Cluster cluster) throws PolicyValidationException, PartitionValidationException {
-//        // FIXME fix the following code to correctly update
-//        // AutoscalerContext context = AutoscalerContext.getInstance();
-//        if (null == cluster) {
-//            return null;
-//        }
-//
-//        String autoscalePolicyName = cluster.getAutoscalePolicyName();
-//        String deploymentPolicyName = cluster.getDeploymentPolicyName();
-//
-//        if (log.isDebugEnabled()) {
-//            log.debug("Deployment policy name: " + deploymentPolicyName);
-//            log.debug("Autoscaler policy name: " + autoscalePolicyName);
-//        }
-//
-//        AutoscalePolicy policy =
-//                                 PolicyManager.getInstance()
-//                                              .getAutoscalePolicy(autoscalePolicyName);
-//        DeploymentPolicy deploymentPolicy =
-//                                            PolicyManager.getInstance()
-//                                                         .getDeploymentPolicy(deploymentPolicyName);
-//
-//        if (deploymentPolicy == null) {
-//            String msg = "Deployment Policy is null. Policy name: " + deploymentPolicyName;
-//            log.error(msg);
-//            throw new PolicyValidationException(msg);
-//        }
-//
-//        String clusterId = cluster.getClusterId();
-//        LbClusterMonitor clusterMonitor =
-//                                        new LbClusterMonitor(clusterId,
-//                                                           cluster.getServiceName(),
-//                                                           deploymentPolicy, policy);
-//        clusterMonitor.setStatus(ClusterStatus.Created);
-//        // partition group = network partition context
-//        for (PartitionGroup partitionGroup : deploymentPolicy.getPartitionGroups()) {
-//
-//            NetworkPartitionLbHolder networkPartitionLbHolder =
-//                                                              PartitionManager.getInstance()
-//                                                                              .getNetworkPartitionLbHolder(partitionGroup.getId());
-////                                                              PartitionManager.getInstance()
-////                                                                              .getNetworkPartitionLbHolder(partitionGroup.getId());
-//            // FIXME pick a random partition
-//            Partition partition =
-//                                  partitionGroup.getPartitions()[new Random().nextInt(partitionGroup.getPartitions().length)];
-//            PartitionContext partitionContext = new PartitionContext(partition);
-//            partitionContext.setServiceName(cluster.getServiceName());
-//            partitionContext.setProperties(cluster.getProperties());
-//            partitionContext.setNetworkPartitionId(partitionGroup.getId());
-//            partitionContext.setMinimumMemberCount(1);//Here it hard codes the minimum value as one for LB cartridge partitions
-//
-//            NetworkPartitionContext networkPartitionContext = new NetworkPartitionContext(partitionGroup.getId(),
-//                    partitionGroup.getPartitionAlgo(), partitionGroup.getPartitions()) ;
-//            for (Member member : cluster.getMembers()) {
-//                String memberId = member.getMemberId();
-//                if (member.getNetworkPartitionId().equalsIgnoreCase(networkPartitionContext.getId())) {
-//                    MemberContext memberContext = new MemberContext();
-//                    memberContext.setClusterId(member.getClusterId());
-//                    memberContext.setMemberId(memberId);
-//                    memberContext.setPartition(partition);
-//
-//                    if (MemberStatus.Activated.equals(member.getStatus())) {
-//                        partitionContext.addActiveMember(memberContext);
-////                        networkPartitionContext.increaseMemberCountOfPartition(partition.getNetworkPartitionId(), 1);
-////                        partitionContext.incrementCurrentActiveMemberCount(1);
-//                    } else if (MemberStatus.Created.equals(member.getStatus()) ||
-//                               MemberStatus.Starting.equals(member.getStatus())) {
-//                        partitionContext.addPendingMember(memberContext);
-////                        networkPartitionContext.increaseMemberCountOfPartition(partition.getNetworkPartitionId(), 1);
-//                    } else if (MemberStatus.Suspended.equals(member.getStatus())) {
-////                        partitionContext.addFaultyMember(memberId);
-//                    }
-//
-//                    partitionContext.addMemberStatsContext(new MemberStatsContext(memberId));
-//                    if(log.isInfoEnabled()){
-//                        log.info(String.format("Member stat context has been added: [member] %s", memberId));
-//                    }
-//                }
-//
-//            }
-//            networkPartitionContext.addPartitionContext(partitionContext);
-//            
-//            // populate lb cluster id in network partition context.
-//            java.util.Properties props = cluster.getProperties();
-//
-//            // get service type of load balanced cluster
-//            String loadBalancedServiceType = props.getProperty(Constants.LOAD_BALANCED_SERVICE_TYPE);
-//            
-//            if(props.containsKey(Constants.LOAD_BALANCER_REF)) {
-//                String value = props.getProperty(Constants.LOAD_BALANCER_REF);
-//                
-//                if (value.equals(org.apache.stratos.messaging.util.Constants.DEFAULT_LOAD_BALANCER)) {
-//                    networkPartitionLbHolder.setDefaultLbClusterId(clusterId);
-//
-//                } else if (value.equals(org.apache.stratos.messaging.util.Constants.SERVICE_AWARE_LOAD_BALANCER)) {
-//                    String serviceName = cluster.getServiceName();
-//                    // TODO: check if this is correct
-//                    networkPartitionLbHolder.addServiceLB(serviceName, clusterId);
-//
-//                    if (loadBalancedServiceType != null && !loadBalancedServiceType.isEmpty()) {
-//                        networkPartitionLbHolder.addServiceLB(loadBalancedServiceType, clusterId);
-//                        if (log.isDebugEnabled()) {
-//                            log.debug("Added cluster id " + clusterId + " as the LB cluster id for service type " + loadBalancedServiceType);
-//                        }
-//                    }
-//                }
-//            }
-//
-//            clusterMonitor.addNetworkPartitionCtxt(networkPartitionContext);
-//        }
-//
-//        log.info("LB Cluster monitor created: "+clusterMonitor.toString());
-//        return clusterMonitor;
-//    }
-//	
-//    public static DockerClusterMonitor getDockerClusterMonitor(Cluster cluster) {
-//
-//    	if (null == cluster) {
-//            return null;
-//        }
-//
-//        String autoscalePolicyName = cluster.getAutoscalePolicyName();
-//        if (log.isDebugEnabled()) {
-//            log.debug("Autoscaler policy name: " + autoscalePolicyName);
-//        }
-//
-//        AutoscalePolicy policy = PolicyManager.getInstance().getAutoscalePolicy(autoscalePolicyName);
-//        java.util.Properties props = cluster.getProperties();
-//        String kubernetesHostClusterID = props.getProperty(StratosConstants.KUBERNETES_CLUSTER_ID);
-//		KubernetesClusterContext kubernetesClusterCtxt = new KubernetesClusterContext(kubernetesHostClusterID);
-//
-//        DockerClusterMonitor dockerClusterMonitor = new DockerClusterMonitor(
-//        		kubernetesClusterCtxt, 
-//        		cluster.getClusterId(), 
-//        		cluster.getServiceName(), 
-//        		policy);
-//                                        
-//        dockerClusterMonitor.setStatus(ClusterStatus.Created);
-//        
-//        // find lb reference type
-//        if(props.containsKey(Constants.LOAD_BALANCER_REF)) {
-//            String value = props.getProperty(Constants.LOAD_BALANCER_REF);
-//            dockerClusterMonitor.setLbReferenceType(value);
-//            if(log.isDebugEnabled()) {
-//                log.debug("Set the lb reference type: "+value);
-//            }
-//        }
-//        
-////        // set hasPrimary property
-////        // hasPrimary is true if there are primary members available in that cluster
-////        dockerClusterMonitor.setHasPrimary(Boolean.parseBoolean(props.getProperty(Constants.IS_PRIMARY)));
-//
-//        log.info("Docker cluster monitor created: "+ dockerClusterMonitor.toString());
-//        return dockerClusterMonitor;
-//    }
-    
     public static Properties getProperties(final OMElement elt) {
 
         Iterator<?> it = elt.getChildrenWithName(new QName(AutoScalerConstants.PROPERTY_ELEMENT));
@@ -400,64 +81,4 @@ public class AutoscalerUtil {
         properties.setProperties(propertyArray);
         return properties;
     }
-
-//    public static LbClusterMonitor getLbClusterMonitor(Cluster cluster) throws PolicyValidationException, PartitionValidationException {
-//        if (null == cluster) {
-//               return null;
-//           }
-//
-//           String autoscalePolicyName = cluster.getAutoscalePolicyName();
-//           String deploymentPolicyName = cluster.getDeploymentPolicyName();
-//
-//           if (log.isDebugEnabled()) {
-//               log.debug("Deployment policy name: " + deploymentPolicyName);
-//               log.debug("Autoscaler policy name: " + autoscalePolicyName);
-//           }
-//
-//           AutoscalePolicy policy =
-//                                    PolicyManager.getInstance()
-//                                                 .getAutoscalePolicy(autoscalePolicyName);
-//           DeploymentPolicy deploymentPolicy =
-//                                               PolicyManager.getInstance()
-//                                                            .getDeploymentPolicy(deploymentPolicyName);
-//
-//           if (deploymentPolicy == null) {
-//               String msg = "Deployment Policy is null. Policy name: " + deploymentPolicyName;
-//               log.error(msg);
-//               throw new PolicyValidationException(msg);
-//           }
-//
-//           Partition[] allPartitions = deploymentPolicy.getAllPartitions();
-//           if (allPartitions == null) {
-//               String msg =
-//                            "Deployment Policy's Partitions are null. Policy name: " +
-//                                    deploymentPolicyName;
-//               log.error(msg);
-//               throw new PolicyValidationException(msg);
-//           }
-//
-//           try {
-//               validateExistenceOfPartions(allPartitions);
-//           } catch (InvalidPartitionException e) {
-//               String msg = "Deployment Policy is invalid. Policy name: " + deploymentPolicyName;
-//               log.error(msg, e);
-//               throw new PolicyValidationException(msg, e);
-//           }
-//
-//           CloudControllerClient.getInstance()
-//                                .validateDeploymentPolicy(cluster.getServiceName(),
-//                                                            allPartitions);
-//
-//           LbClusterMonitor clusterMonitor =
-//                                           new LbClusterMonitor(cluster.getClusterId(),
-//                                                              cluster.getServiceName(),
-//                                                              deploymentPolicy, policy);
-//           for (PartitionGroup partitionGroup: deploymentPolicy.getPartitionGroups()){
-//
-//               NetworkPartitionContext networkPartitionContext
-//                       = PartitionManager.getInstance().getNetworkPartitionLbHolder(partitionGroup.getNetworkPartitionId());
-//               clusterMonitor.addNetworkPartitionCtxt(networkPartitionContext);
-//           }
-//        return null;
-//    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/31056109/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/enums/ClusterType.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/enums/ClusterType.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/enums/ClusterType.java
deleted file mode 100644
index 8842fb6..0000000
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/enums/ClusterType.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package org.apache.stratos.common.enums;
-
-public enum ClusterType {
-	VMServiceCluster, VMLbCluster, DockerServiceCluster, DockerLbCluster;
-}