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/18 18:42:17 UTC
[1/3] stratos git commit: adding removing runtime support back which
got removed in the refactoring and fixing float issue
Repository: stratos
Updated Branches:
refs/heads/master f784929b9 -> ff9379f66
adding removing runtime support back which got removed in the refactoring and fixing float issue
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/3745d568
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/3745d568
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/3745d568
Branch: refs/heads/master
Commit: 3745d5685c20816312f734894d2c96865b8347e8
Parents: f784929
Author: reka <rt...@gmail.com>
Authored: Thu Dec 18 19:31:17 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Thu Dec 18 19:31:44 2014 +0530
----------------------------------------------------------------------
.../applications/topic/ApplicationBuilder.java | 75 +++++++++++++++++++-
.../autoscaler/rule/RuleTasksDelegator.java | 3 +-
2 files changed, 76 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/3745d568/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
index ffaa00c..d1de9ce 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
@@ -25,6 +25,7 @@ import org.apache.stratos.autoscaler.applications.pojo.ApplicationClusterContext
import org.apache.stratos.autoscaler.client.CloudControllerClient;
import org.apache.stratos.autoscaler.context.AutoscalerContext;
import org.apache.stratos.autoscaler.context.partition.network.GroupLevelNetworkPartitionContext;
+import org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher;
import org.apache.stratos.autoscaler.exception.policy.InvalidPolicyException;
import org.apache.stratos.autoscaler.monitor.Monitor;
import org.apache.stratos.autoscaler.monitor.component.ApplicationMonitor;
@@ -32,10 +33,15 @@ import org.apache.stratos.autoscaler.monitor.component.GroupMonitor;
import org.apache.stratos.autoscaler.pojo.policy.PolicyManager;
import org.apache.stratos.messaging.domain.applications.*;
import org.apache.stratos.messaging.domain.instance.ApplicationInstance;
+import org.apache.stratos.messaging.domain.instance.ClusterInstance;
import org.apache.stratos.messaging.domain.instance.GroupInstance;
+import org.apache.stratos.messaging.domain.topology.Cluster;
+import org.apache.stratos.messaging.domain.topology.Service;
+import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
import org.wso2.carbon.base.MultitenantConstants;
import org.wso2.carbon.context.PrivilegedCarbonContext;
+import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
@@ -200,7 +206,8 @@ public class ApplicationBuilder {
PolicyManager.getInstance().getDeploymentPolicyByApplication(appId);
if (policy != null) {
log.warn(String.format("Application has been found in the ApplicationsTopology" +
- ": [application-id] %s, Please unDeploy the Application Policy before deleting the Application definition.",
+ ": [application-id] %s, Please unDeploy the Application Policy " +
+ "before deleting the Application definition.",
appId));
return;
}
@@ -286,6 +293,72 @@ public class ApplicationBuilder {
}
}
+ public static boolean handleApplicationPolicyUndeployed(String appId) {
+ if (log.isDebugEnabled()) {
+ log.debug("Handling application terminating event: [application-id] " + appId);
+ }
+ Set<ClusterDataHolder> clusterData;
+ ApplicationHolder.acquireWriteLock();
+ try {
+ Applications applications = ApplicationHolder.getApplications();
+ Application application = applications.getApplication(appId);
+ //update the status of the Group
+ if (application == null) {
+ log.warn(String.format("Application does not exist: [application-id] %s",
+ appId));
+ return false;
+ }
+ clusterData = application.getClusterDataRecursively();
+ Collection<ApplicationInstance> context = application.
+ getInstanceIdToInstanceContextMap().values();
+ ApplicationStatus status = ApplicationStatus.Terminating;
+ for (ApplicationInstance context1 : context) {
+ if (context1.isStateTransitionValid(status)) {
+ //setting the status, persist and publish
+ application.setStatus(status, context1.getInstanceId());
+ updateApplicationMonitor(appId, status, context1.getInstanceId());
+ ApplicationHolder.persistApplication(application);
+ ApplicationsEventPublisher.sendApplicationInstanceTerminatingEvent(appId, context1.getInstanceId());
+ } else {
+ log.warn(String.format("Application Instance state transition is not valid: [application-id] %s " +
+ " [instance-id] %s [current-status] %s [status-requested] %s", appId,
+ context1.getInstanceId() + context1.getStatus(), status));
+ }
+ }
+ } finally {
+ ApplicationHolder.releaseWriteLock();
+ }
+
+ // if monitors is not found for any cluster, assume cluster is not there and send cluster terminating event.
+ // this assumes the cluster monitor will not fail after creating members, but will only fail before
+ for (ClusterDataHolder aClusterData : clusterData) {
+ if (AutoscalerContext.getInstance().getClusterMonitor(aClusterData.getClusterId()) == null) {
+ TopologyManager.acquireReadLockForCluster(aClusterData.getServiceType(),
+ aClusterData.getClusterId());
+ try {
+ Service service = TopologyManager.getTopology().getService(aClusterData.getServiceType());
+ if (service != null) {
+ Cluster cluster = service.getCluster(aClusterData.getClusterId());
+ if (cluster != null) {
+ for (ClusterInstance instance : cluster.getInstanceIdToInstanceContextMap().values()) {
+ ClusterStatusEventPublisher.sendClusterTerminatingEvent(appId,
+ aClusterData.getServiceType(),
+ aClusterData.getClusterId(),
+ instance.getInstanceId());
+ }
+ }
+ }
+ } finally {
+ TopologyManager.releaseReadLockForCluster(aClusterData.getServiceType(),
+ aClusterData.getClusterId());
+ }
+
+ }
+ }
+ return true;
+ }
+
+
public static void handleGroupInstanceTerminatedEvent(String appId, String groupId, String instanceId) {
if (log.isDebugEnabled()) {
log.debug("Handling group terminated event: [group-id] " + groupId +
http://git-wip-us.apache.org/repos/asf/stratos/blob/3745d568/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 b7b50e7..6b51ea6 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
@@ -319,7 +319,8 @@ public class RuleTasksDelegator {
}
//Notify parent for checking scaling dependencies
AbstractClusterMonitor clusterMonitor = AutoscalerContext.getInstance().getClusterMonitor(clusterId);
- float factor = requiredInstanceCount / minimumInstanceCount;
+ float fMinimumInstanceCount = minimumInstanceCount;
+ float factor = requiredInstanceCount / fMinimumInstanceCount;
if (clusterMonitor instanceof VMClusterMonitor) {
VMClusterMonitor vmClusterMonitor = (VMClusterMonitor) clusterMonitor;
[3/3] stratos git commit: fixing undeployment flow after the
refactoring of application deployment
Posted by re...@apache.org.
fixing undeployment flow after the refactoring of application deployment
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/ff9379f6
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/ff9379f6
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/ff9379f6
Branch: refs/heads/master
Commit: ff9379f66cd5c66dfa3bcba42df4c949407f2883
Parents: 4e0d793
Author: reka <rt...@gmail.com>
Authored: Thu Dec 18 23:11:53 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Thu Dec 18 23:11:53 2014 +0530
----------------------------------------------------------------------
.../stratos/autoscaler/applications/topic/ApplicationBuilder.java | 2 ++
.../apache/stratos/autoscaler/monitor/component/GroupMonitor.java | 3 +--
2 files changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/ff9379f6/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
index 8e45985..a07f5c6 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
@@ -284,6 +284,8 @@ public class ApplicationBuilder {
}
ApplicationsEventPublisher.sendApplicationInstanceTerminatedEvent(appId, instanceId);
+ //removing the clusters and persisted application
+ handleApplicationRemoval(appId);
} else {
log.warn(String.format("Application state transition is not valid: [application-id] %s " +
" [current-status] %s [status-requested] %s", appId,
http://git-wip-us.apache.org/repos/asf/stratos/blob/ff9379f6/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
index 97af0b0..668aac4 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
@@ -186,10 +186,9 @@ public class GroupMonitor extends ParentComponentMonitor {
// as it has group scaling enabled.
Group group = application.getGroupRecursively(this.id);
if (group != null) {
- GroupInstance context = group.getInstanceContexts(instanceId);
// notify parent
log.info("[Group] " + this.id + "is notifying the [parent] " + this.parent.getId() +
- " [instance] " + context.getParentId());
+ " [instance] " + parentInstanceId);
MonitorStatusEventBuilder.handleGroupStatusEvent(this.parent,
status, this.id, parentInstanceId);
}
[2/3] stratos git commit: fixing undeployment issue
Posted by re...@apache.org.
fixing undeployment issue
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/4e0d7938
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/4e0d7938
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/4e0d7938
Branch: refs/heads/master
Commit: 4e0d79388733b588e1147e238bbfc6df4c47a2b2
Parents: 3745d56
Author: reka <rt...@gmail.com>
Authored: Thu Dec 18 19:50:26 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Thu Dec 18 19:50:26 2014 +0530
----------------------------------------------------------------------
.../autoscaler/applications/topic/ApplicationBuilder.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/4e0d7938/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
index d1de9ce..8e45985 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
@@ -185,7 +185,7 @@ public class ApplicationBuilder {
}
}
- public static void handleApplicationUndeployed(String appId) {
+ public static void handleApplicationRemoval(String appId) {
if (log.isDebugEnabled()) {
log.debug("Handling application unDeployment for [application-id] " + appId);
}
@@ -293,7 +293,7 @@ public class ApplicationBuilder {
}
}
- public static boolean handleApplicationPolicyUndeployed(String appId) {
+ public static boolean handleApplicationUndeployed(String appId) {
if (log.isDebugEnabled()) {
log.debug("Handling application terminating event: [application-id] " + appId);
}