You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by re...@apache.org on 2014/12/03 15:29:17 UTC
[2/2] stratos git commit: adding partition and network partition
support for cluster instances
adding partition and network partition support for cluster instances
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/b5f992b7
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/b5f992b7
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/b5f992b7
Branch: refs/heads/master
Commit: b5f992b736455867f081b471b82e6780b32507f8
Parents: 94839c6
Author: reka <rt...@gmail.com>
Authored: Wed Dec 3 19:58:33 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Wed Dec 3 19:58:51 2014 +0530
----------------------------------------------------------------------
.../autoscaler/api/AutoScalerServiceImpl.java | 16 +-
.../client/CloudControllerClient.java | 6 +-
.../autoscaler/context/AutoscalerContext.java | 4 +
.../context/cluster/ClusterContextFactory.java | 2 +-
.../context/cluster/VMClusterContext.java | 14 +-
.../autoscaler/monitor/MonitorFactory.java | 23 +-
.../monitor/component/ApplicationMonitor.java | 1 +
.../messaging/topology/TopologyBuilder.java | 8 +-
.../topology/TopologyEventPublisher.java | 3 +-
.../services/CloudControllerService.java | 4 +-
.../impl/CloudControllerServiceImpl.java | 7 +-
.../messaging/domain/instance/Instance.java | 10 +
.../topology/ClusterInstanceCreatedEvent.java | 21 +-
.../main/resources/CloudControllerService.wsdl | 1792 +++++++++---------
14 files changed, 1009 insertions(+), 902 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/b5f992b7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
index 7733520..37059fe 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/api/AutoScalerServiceImpl.java
@@ -131,13 +131,17 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface {
ApplicationHolder.releaseReadLock();
}
- if (allClusterInitialized && !AutoscalerContext.getInstance().containsPendingMonitor(appId)) {
- AutoscalerUtil.getInstance().
- startApplicationMonitor(appId);
-
+ if (!AutoscalerContext.getInstance().containsPendingMonitor(appId)
+ || !AutoscalerContext.getInstance().monitorExists(appId)) {
+ if(allClusterInitialized) {
+ AutoscalerUtil.getInstance().
+ startApplicationMonitor(appId);
+ } else {
+ log.info("The application clusters are not yet created. " +
+ "Waiting for them to be created");
+ }
} else {
- log.info("The application clusters are not yet created. " +
- "Waiting for them to be created");
+ log.info("The application Monitor has already been created for [Application] " + appId);
}
return policyId;
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b5f992b7/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 bb16bb6..a8e275a 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
@@ -285,9 +285,11 @@ public class CloudControllerClient {
}
- public void createClusterInstance (String serviceType, String clusterId, String alias, String instanceId){
+ public void createClusterInstance (String serviceType, String clusterId, String alias,
+ String instanceId, String partitionId, String networkPartitionId){
try {
- stub.createClusterInstance(serviceType, clusterId, alias, instanceId);
+ stub.createClusterInstance(serviceType, clusterId, alias, instanceId,
+ partitionId, networkPartitionId);
} catch (RemoteException e) {
String msg = e.getMessage();
http://git-wip-us.apache.org/repos/asf/stratos/blob/b5f992b7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java
index 51fad05..2452255 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/AutoscalerContext.java
@@ -111,4 +111,8 @@ public class AutoscalerContext {
public boolean containsPendingMonitor(String appId) {
return this.pendingApplicationMonitors.contains(appId);
}
+
+ public boolean monitorExists(String appId) {
+ return this.applicationMonitors.containsKey(appId);
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b5f992b7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContextFactory.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContextFactory.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContextFactory.java
index 76614f9..c92ee73 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContextFactory.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/ClusterContextFactory.java
@@ -65,7 +65,7 @@ public class ClusterContextFactory {
DeploymentPolicy deploymentPolicy;
ApplicationHolder.acquireReadLock();
try {
- deploymentPolicy = PolicyManager.getInstance().getDeploymentPolicy(cluster.getAppId());
+ deploymentPolicy = PolicyManager.getInstance().getDeploymentPolicyByApplication(cluster.getAppId());
} finally {
ApplicationHolder.releaseReadLock();
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b5f992b7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/VMClusterContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/VMClusterContext.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/VMClusterContext.java
index 3207f31..cf67481 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/VMClusterContext.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/context/cluster/VMClusterContext.java
@@ -154,27 +154,27 @@ public class VMClusterContext extends AbstractClusterContext {
private ClusterLevelNetworkPartitionContext parseDeploymentPolicy(
ClusterInstance instance,
Cluster cluster,
- ChildPolicy deploymentPolicy,
+ ChildPolicy childPolicy,
ClusterLevelNetworkPartitionContext clusterLevelNetworkPartitionContext)
throws PolicyValidationException, PartitionValidationException {
if (log.isDebugEnabled()) {
- log.debug("Deployment policy name: " + deploymentPolicy.getId());
+ log.debug("Deployment policy name: " + childPolicy.getId());
}
- if (deploymentPolicy == null) {
- String msg = "Deployment policy is null: [policy-name] " + deploymentPolicy.getId();
+ if (childPolicy == null) {
+ String msg = "Deployment policy is null: [policy-name] " + childPolicy.getId();
log.error(msg);
throw new PolicyValidationException(msg);
}
- ChildLevelPartition[] childLevelPartitions = deploymentPolicy.
+ ChildLevelPartition[] childLevelPartitions = childPolicy.
getChildLevelNetworkPartition(
clusterLevelNetworkPartitionContext.getId()).
getChildLevelPartitions();
if (childLevelPartitions == null) {
String msg =
"Partitions are null in deployment policy: [policy-name]: " +
- deploymentPolicy.getId();
+ childPolicy.getId();
log.error(msg);
throw new PolicyValidationException(msg);
}
@@ -188,7 +188,7 @@ public class VMClusterContext extends AbstractClusterContext {
ChildLevelNetworkPartition networkPartition;
- networkPartition = deploymentPolicy.getChildLevelNetworkPartition(instance.getNetworkPartitionId());
+ networkPartition = childPolicy.getChildLevelNetworkPartition(instance.getNetworkPartitionId());
String networkPartitionId = networkPartition.getId();
if (clusterLevelNetworkPartitionContext == null) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/b5f992b7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java
index ed0362f..23d36e4 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/MonitorFactory.java
@@ -18,6 +18,8 @@
*/
package org.apache.stratos.autoscaler.monitor;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.stratos.autoscaler.applications.ApplicationHolder;
import org.apache.stratos.autoscaler.applications.dependency.context.ApplicationChildContext;
import org.apache.stratos.autoscaler.applications.dependency.context.ClusterChildContext;
@@ -38,6 +40,7 @@ import org.apache.stratos.messaging.domain.applications.Application;
import org.apache.stratos.messaging.domain.applications.Group;
import org.apache.stratos.messaging.domain.instance.ApplicationInstance;
import org.apache.stratos.messaging.domain.instance.GroupInstance;
+import org.apache.stratos.messaging.domain.instance.Instance;
import org.apache.stratos.messaging.domain.topology.Cluster;
import org.apache.stratos.messaging.domain.topology.Service;
import org.apache.stratos.messaging.domain.topology.Topology;
@@ -49,6 +52,8 @@ import java.util.List;
* Factory class to get the Monitors.
*/
public class MonitorFactory {
+ private static final Log log = LogFactory.getLog(MonitorFactory.class);
+
/**
* Factor method used to create relevant monitors based on the given context
@@ -81,9 +86,16 @@ public class MonitorFactory {
addClusterMonitor((AbstractClusterMonitor) monitor);
// FIXME: passing null as alias for cluster instance temporarily. should be removed.
for(String parentInstanceId : parentInstanceIds) {
- createClusterInstance(clusterChildCtxt.getServiceName(),
- clusterMonitor.getClusterId(), null,
- parentInstanceId);
+ Instance instance = parentMonitor.getInstance(parentInstanceId);
+ if(instance != null) {
+ createClusterInstance(clusterChildCtxt.getServiceName(),
+ clusterMonitor.getClusterId(), null,
+ parentInstanceId, instance.getPartitionId(),
+ instance.getNetworkPartitionId());
+ } else {
+
+ }
+
}
}
@@ -94,8 +106,9 @@ public class MonitorFactory {
}
private static void createClusterInstance(String serviceType, String clusterId, String alias,
- String instanceId) {
- CloudControllerClient.getInstance().createClusterInstance(serviceType, clusterId, alias, instanceId);
+ String instanceId, String partitionId, String networkPartitionId) {
+ CloudControllerClient.getInstance().createClusterInstance(serviceType, clusterId, alias,
+ instanceId, partitionId, networkPartitionId);
}
/**
http://git-wip-us.apache.org/repos/asf/stratos/blob/b5f992b7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
index ca70ba5..262b34a 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
@@ -219,6 +219,7 @@ public class ApplicationMonitor extends ParentComponentMonitor {
ApplicationInstance instance = new ApplicationInstance(appId, instanceId);
instance.setStatus(ApplicationStatus.Created);
+ instance.setNetworkPartitionId(networkPartition.getId());
this.applicationInstanceIdMap.put(instanceId, instance);
this.networkPartitionCtxts.put(context.getId(), context);
http://git-wip-us.apache.org/repos/asf/stratos/blob/b5f992b7/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java
index 991a355..a70a5ab 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyBuilder.java
@@ -277,7 +277,9 @@ public class TopologyBuilder {
}
- public static void handleClusterInstanceCreated(String serviceType, String clusterId, String alias, String instanceId) {
+ public static void handleClusterInstanceCreated(String serviceType, String clusterId,
+ String alias, String instanceId, String partitionId,
+ String networkPartitionId) {
TopologyManager.acquireWriteLock();
@@ -308,7 +310,9 @@ public class TopologyBuilder {
TopologyManager.updateTopology(topology);
ClusterInstanceCreatedEvent clusterInstanceCreatedEvent =
- new ClusterInstanceCreatedEvent(alias, serviceType, clusterId, instanceId);
+ new ClusterInstanceCreatedEvent(alias, serviceType, clusterId,
+ instanceId, networkPartitionId);
+ clusterInstanceCreatedEvent.setPartitionId(partitionId);
TopologyEventPublisher.sendClusterInstanceCreatedEvent(clusterInstanceCreatedEvent);
} finally {
http://git-wip-us.apache.org/repos/asf/stratos/blob/b5f992b7/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyEventPublisher.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyEventPublisher.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyEventPublisher.java
index 7000c16..eea941c 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyEventPublisher.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/messaging/topology/TopologyEventPublisher.java
@@ -253,8 +253,9 @@ public class TopologyEventPublisher {
public static void sendClusterInstanceCreatedEvent(ClusterInstanceCreatedEvent clusterInstanceCreatedEvent) {
if (log.isInfoEnabled()) {
log.info(String.format("Publishing cluster Instance Created event: [service] %s [cluster] %s " +
- "[instance-id] %s",
+ " in [network partition] %s [instance-id] %s",
clusterInstanceCreatedEvent.getServiceName(), clusterInstanceCreatedEvent.getClusterId(),
+ clusterInstanceCreatedEvent.getNetworkPartitionId(),
clusterInstanceCreatedEvent.getInstanceId()));
}
publishEvent(clusterInstanceCreatedEvent);
http://git-wip-us.apache.org/repos/asf/stratos/blob/b5f992b7/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/CloudControllerService.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/CloudControllerService.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/CloudControllerService.java
index 87e8913..d0dd730 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/CloudControllerService.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/CloudControllerService.java
@@ -228,7 +228,9 @@ public interface CloudControllerService {
* @param instanceId instance id
* @throws ClusterInstanceCreationException if an y error occurs in cluster instance creation
*/
- public void createClusterInstance (String serviceType, String clusterId, String alias, String instanceId) throws
+ public void createClusterInstance (String serviceType, String clusterId, String alias,
+ String instanceId, String partitionId,
+ String networkPartitionId) throws
ClusterInstanceCreationException;
/**
http://git-wip-us.apache.org/repos/asf/stratos/blob/b5f992b7/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
index 01e41df..4843565 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
@@ -2046,10 +2046,13 @@ public class CloudControllerServiceImpl implements CloudControllerService {
}
- public void createClusterInstance (String serviceType, String clusterId, String alias, String instanceId) throws
+ public void createClusterInstance (String serviceType, String clusterId,
+ String alias, String instanceId, String partitionId,
+ String networkPartitionId) throws
ClusterInstanceCreationException {
- TopologyBuilder.handleClusterInstanceCreated(serviceType, clusterId, alias, instanceId);
+ TopologyBuilder.handleClusterInstanceCreated(serviceType, clusterId, alias,
+ instanceId, partitionId, networkPartitionId);
persist();
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b5f992b7/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/instance/Instance.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/instance/Instance.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/instance/Instance.java
index 60d15ff..e6fb55f 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/instance/Instance.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/instance/Instance.java
@@ -39,6 +39,8 @@ public abstract class Instance<T extends LifeCycleState> implements Serializable
private String parentId;
//Network partition id
private String networkPartitionId;
+ //partitionId
+ private String partitionId;
public Instance(String alias, String instanceId) {
this.alias = alias;
@@ -95,5 +97,13 @@ public abstract class Instance<T extends LifeCycleState> implements Serializable
public void setNetworkPartitionId(String networkPartitionId) {
this.networkPartitionId = networkPartitionId;
}
+
+ public String getPartitionId() {
+ return partitionId;
+ }
+
+ public void setPartitionId(String partitionId) {
+ this.partitionId = partitionId;
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b5f992b7/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/ClusterInstanceCreatedEvent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/ClusterInstanceCreatedEvent.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/ClusterInstanceCreatedEvent.java
index be106ef..58055e0 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/ClusterInstanceCreatedEvent.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/event/topology/ClusterInstanceCreatedEvent.java
@@ -29,13 +29,17 @@ public class ClusterInstanceCreatedEvent extends Event {
private final String clusterId;
private String instanceId;
private String alias;
+ private String partitionId;
+ private String networkPartitionId;
- public ClusterInstanceCreatedEvent(String alias, String serviceName, String clusterId, String instanceId) {
+ public ClusterInstanceCreatedEvent(String alias, String serviceName, String clusterId,
+ String instanceId, String networkPartitionId) {
this.serviceName = serviceName;
this.clusterId = clusterId;
this.instanceId = instanceId;
this.alias = alias;
+ this.setNetworkPartitionId(networkPartitionId);
}
@@ -61,4 +65,19 @@ public class ClusterInstanceCreatedEvent extends Event {
return alias;
}
+ public String getPartitionId() {
+ return partitionId;
+ }
+
+ public void setPartitionId(String partitionId) {
+ this.partitionId = partitionId;
+ }
+
+ public String getNetworkPartitionId() {
+ return networkPartitionId;
+ }
+
+ public void setNetworkPartitionId(String networkPartitionId) {
+ this.networkPartitionId = networkPartitionId;
+ }
}