You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ni...@apache.org on 2014/12/07 13:40:39 UTC
[06/16] stratos git commit: Autoscaler changes with partition
validation changes.
Autoscaler changes with partition validation changes.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/93e75006
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/93e75006
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/93e75006
Branch: refs/heads/master
Commit: 93e75006ae2af510a236144e79d19d62ca193806
Parents: d3fcf9b
Author: Nirmal Fernando <ni...@gmail.com>
Authored: Fri Dec 5 08:09:55 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Sun Dec 7 17:59:31 2014 +0530
----------------------------------------------------------------------
.../client/CloudControllerClient.java | 22 ++++-
.../monitor/cluster/ClusterMonitorFactory.java | 12 +--
.../autoscaler/rule/RuleTasksDelegator.java | 95 +++++++++++++++-----
3 files changed, 100 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/93e75006/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/CloudControllerClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/CloudControllerClient.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/CloudControllerClient.java
index 854e80f..bf68913 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/CloudControllerClient.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/client/CloudControllerClient.java
@@ -355,7 +355,10 @@ public class CloudControllerClient {
* cartridge not found for the given cluster id, or if the given
* kubernetes cluster id is not valid
*/
- public synchronized MemberContext[] startContainers(String kubernetesClusterId, String clusterId) throws SpawningException {
+ public synchronized MemberContext[] startContainers(Partition partition,
+ String clusterId,
+ String networkPartitionId,String instanceID, boolean isPrimary,
+ int minMemberCount) throws SpawningException {
try {
// KubernetesManager kubernetesManager = KubernetesManager.getInstance();
@@ -368,6 +371,23 @@ public class CloudControllerClient {
ContainerClusterContext context = new ContainerClusterContext();
context.setClusterId(clusterId);
+ context.setPartition(partition);
+ context.setNetworkPartitionId(networkPartitionId);
+ context.setInstanceId(instanceID);
+
+ Properties memberContextProps = new Properties();
+ Property isPrimaryProp = new Property();
+ isPrimaryProp.setName("PRIMARY");
+ isPrimaryProp.setValue(String.valueOf(isPrimary));
+
+ Property minCountProp = new Property();
+ minCountProp.setName("MIN_COUNT");
+ minCountProp.setValue(String.valueOf(minMemberCount));
+
+ memberContextProps.addProperty(isPrimaryProp);
+ memberContextProps.addProperty(minCountProp);
+ context.setProperties(AutoscalerUtil.toStubProperties(memberContextProps));
+
// Properties memberContextProps = new Properties();
// Property kubernetesClusterMasterIPProps = new Property();
// kubernetesClusterMasterIPProps.setName(StratosConstants.KUBERNETES_MASTER_IP);
http://git-wip-us.apache.org/repos/asf/stratos/blob/93e75006/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitorFactory.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitorFactory.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitorFactory.java
index f906f64..618c15a 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitorFactory.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitorFactory.java
@@ -46,13 +46,13 @@ public class ClusterMonitorFactory {
throws PolicyValidationException, PartitionValidationException {
AbstractClusterMonitor clusterMonitor;
- if (cluster.isKubernetesCluster()) {
- clusterMonitor = getDockerServiceClusterMonitor(cluster);
-// } else if (cluster.isLbCluster()) {
-// clusterMonitor = getVMLbClusterMonitor(cluster);
- } else {
+// if (cluster.isKubernetesCluster()) {
+// clusterMonitor = getDockerServiceClusterMonitor(cluster);
+//// } else if (cluster.isLbCluster()) {
+//// clusterMonitor = getVMLbClusterMonitor(cluster);
+// } else {
clusterMonitor = getVMClusterMonitor(cluster);
- }
+// }
return clusterMonitor;
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/93e75006/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
index 6a4766c..2bfd091 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
@@ -174,6 +174,57 @@ public class RuleTasksDelegator {
}
}
+ public void delegateStartContainers(ClusterLevelPartitionContext clusterMonitorPartitionContext, String clusterId, String instanceId, boolean isPrimary) {
+
+ try {
+
+ String nwPartitionId = clusterMonitorPartitionContext.getNetworkPartitionId();
+// NetworkPartitionLbHolder lbHolder =
+// PartitionManager.getInstance()
+// .getNetworkPartitionLbHolder(nwPartitionId);
+// String lbClusterId = getLbClusterId(lbRefType, clusterMonitorPartitionContext, lbHolder);
+ //Calculate accumulation of minimum counts of all the partition of current network partition
+ int minimumCountOfNetworkPartition = 0;
+ VMClusterMonitor vmClusterMonitor = (VMClusterMonitor) AutoscalerContext.getInstance().getClusterMonitor(clusterId);
+ VMClusterContext clusterContext = (VMClusterContext) vmClusterMonitor.getClusterContext();
+ ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext = clusterContext.getNetworkPartitionCtxt(nwPartitionId);
+ ClusterInstanceContext clusterInstanceContext = clusterLevelNetworkPartitionContext.getClusterInstanceContext(instanceId);
+ minimumCountOfNetworkPartition = clusterInstanceContext.getMinInstanceCount();
+ MemberContext[] memberContexts =
+ CloudControllerClient.getInstance()
+ .startContainers(clusterMonitorPartitionContext.getPartition(),
+ clusterId,
+ instanceId,
+ clusterMonitorPartitionContext.getNetworkPartitionId(),
+ isPrimary,
+ minimumCountOfNetworkPartition);
+ if (null != memberContexts) {
+ for (MemberContext memberContext : memberContexts) {
+ if (null != memberContext) {
+ clusterMonitorPartitionContext.addPendingMember(memberContext);
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Pending member added, [member] %s [partition] %s", memberContext.getMemberId(),
+ memberContext.getPartition().getId()));
+ }
+ } else {
+ if (log.isDebugEnabled()) {
+ log.debug("Returned member context is null, did not add any pending members");
+ }
+ }
+ }
+ } else {
+ if (log.isDebugEnabled()) {
+ log.debug("Returned member context is null, did not add to pending members");
+ }
+ }
+
+ } catch (Throwable e) {
+ String message = "Cannot spawn an instance";
+ log.error(message, e);
+ throw new RuntimeException(message, e);
+ }
+ }
+
public void delegateSpawn(ClusterLevelPartitionContext clusterMonitorPartitionContext, String clusterId, String instanceId, boolean isPrimary) {
try {
@@ -377,28 +428,28 @@ public class RuleTasksDelegator {
String kubernetesClusterId = kubernetesClusterContext.getKubernetesClusterID();
String clusterId = kubernetesClusterContext.getClusterId();
CloudControllerClient ccClient = CloudControllerClient.getInstance();
- MemberContext[] memberContexts = ccClient.startContainers(kubernetesClusterId, clusterId);
- if (null != memberContexts) {
- for (MemberContext memberContext : memberContexts) {
- if (null != memberContext) {
- kubernetesClusterContext.addPendingMember(memberContext);
- kubernetesClusterContext.setServiceClusterCreated(true);
- if (log.isDebugEnabled()) {
- log.debug(String.format(
- "Pending member added, [member] %s [kub cluster] %s",
- memberContext.getMemberId(), kubernetesClusterId));
- }
- } else {
- if (log.isDebugEnabled()) {
- log.debug("Returned member context is null, did not add any pending members");
- }
- }
- }
- } else {
- if (log.isDebugEnabled()) {
- log.debug("Returned member context is null, did not add to pending members");
- }
- }
+// MemberContext[] memberContexts = ccClient.startContainers(kubernetesClusterId, clusterId);
+// if (null != memberContexts) {
+// for (MemberContext memberContext : memberContexts) {
+// if (null != memberContext) {
+// kubernetesClusterContext.addPendingMember(memberContext);
+// kubernetesClusterContext.setServiceClusterCreated(true);
+// if (log.isDebugEnabled()) {
+// log.debug(String.format(
+// "Pending member added, [member] %s [kub cluster] %s",
+// memberContext.getMemberId(), kubernetesClusterId));
+// }
+// } else {
+// if (log.isDebugEnabled()) {
+// log.debug("Returned member context is null, did not add any pending members");
+// }
+// }
+// }
+// } else {
+// if (log.isDebugEnabled()) {
+// log.debug("Returned member context is null, did not add to pending members");
+// }
+// }
} catch (Exception e) {
log.error("Cannot create containers ", e);
}