Repository: stratos
Updated Branches:
  refs/heads/4.1.0-beta-deployment-policy-fix 714cbc5f3 -> 067b303c0


Moving cloud controller client operations to common bundle. Removing unused 
methods in autoscaler


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

Branch: refs/heads/4.1.0-beta-deployment-policy-fix
Commit: 067b303c0e61fa99825bd9303639fbb2be41b9c1
Parents: 714cbc5
Author: sajhak <[email protected]>
Authored: Thu Feb 19 13:12:59 2015 +0530
Committer: sajhak <[email protected]>
Committed: Thu Feb 19 13:13:12 2015 +0530

----------------------------------------------------------------------
 .../parser/DefaultApplicationParser.java        |   6 +-
 .../client/CloudControllerClient.java           | 146 +------------------
 .../monitor/cluster/ClusterMonitor.java         |  80 +++++++---
 .../autoscaler/rule/RuleTasksDelegator.java     |  13 +-
 .../services/impl/AutoscalerServiceImpl.java    |  86 ++---------
 .../client/CloudControllerServiceClient.java    |  44 +++++-
 6 files changed, 121 insertions(+), 254 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/067b303c/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
index 6646802..578834d 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
@@ -40,8 +40,10 @@ import org.apache.stratos.autoscaler.pojo.ServiceGroup;
 import org.apache.stratos.autoscaler.registry.RegistryManager;
 import org.apache.stratos.autoscaler.util.AutoscalerConstants;
 import org.apache.stratos.autoscaler.util.AutoscalerUtil;
+import 
org.apache.stratos.cloud.controller.stub.CloudControllerServiceCartridgeNotFoundExceptionException;
 import org.apache.stratos.cloud.controller.stub.domain.CartridgeInfo;
 import org.apache.stratos.common.Properties;
+import org.apache.stratos.common.client.CloudControllerServiceClient;
 import org.apache.stratos.messaging.domain.application.*;
 import org.wso2.carbon.identity.oauth.stub.OAuthAdminServiceException;
 
@@ -881,8 +883,8 @@ public class DefaultApplicationParser implements 
ApplicationParser {
     private CartridgeInfo getCartridge(String cartridgeType) throws 
ApplicationDefinitionException {
 
         try {
-            return 
CloudControllerClient.getInstance().getCartrdgeInformation(cartridgeType);
-        } catch (CartridgeInformationException e) {
+            return 
CloudControllerServiceClient.getInstance().getCartridgeInfo(cartridgeType);
+        } catch (Exception e) {
             throw new ApplicationDefinitionException(e);
         }
     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/067b303c/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 5279f44..ffebf6f 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
@@ -81,62 +81,7 @@ public class CloudControllerClient {
         }
     }
     
-    /*
-     * This will validate the given partitions against the given cartridge 
type.
-     */
-
-    public synchronized boolean validateDeploymentPolicy(String cartridgeType, 
org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.Partition[]
 partitions) throws PartitionValidationException {
-        try {
-            if (log.isInfoEnabled()) {
-                log.info(String.format("Validating partitions of policy via 
cloud controller: [cartridge-type] %s", cartridgeType));
-            }
-            long startTime = System.currentTimeMillis();
-            boolean result = stub.validateDeploymentPolicy(cartridgeType,
-                    
AutoscalerObjectConverter.convertASPartitionsToCCStubPartitions(partitions));
-            if (log.isDebugEnabled()) {
-                long endTime = System.currentTimeMillis();
-                log.debug(String.format("Service call 
validateDeploymentPolicy() returned in %dms", (endTime - startTime)));
-            }
-            return result;
-        } catch (RemoteException e) {
-            log.error(e.getMessage(), e);
-            throw new PartitionValidationException(e.getMessage(), e);
-        } catch (CloudControllerServiceInvalidPartitionExceptionException e) {
-            
log.error(e.getFaultMessage().getInvalidPartitionException().getMessage(), e);
-            throw new 
PartitionValidationException(e.getFaultMessage().getInvalidPartitionException().getMessage());
-        } catch (CloudControllerServiceInvalidCartridgeTypeExceptionException 
e) {
-            
log.error(e.getFaultMessage().getInvalidCartridgeTypeException().getMessage(), 
e);
-            throw new 
PartitionValidationException(e.getFaultMessage().getInvalidCartridgeTypeException().getMessage());
-        }
-
-    }
-
-    /*
-     * Calls the CC to validate the partition.
-     */
-    public synchronized boolean validatePartition(Partition partition) throws 
PartitionValidationException {
-
-        try {
-            if (log.isInfoEnabled()) {
-                log.info(String.format("Validating partition via cloud 
controller: [id] %s", partition.getId()));
-            }
-            long startTime = System.currentTimeMillis();
-            boolean result = stub.validatePartition(partition);
-            if (log.isDebugEnabled()) {
-                long endTime = System.currentTimeMillis();
-                log.debug(String.format("Service call validatePartition() 
returned in %dms", (endTime - startTime)));
-            }
-            return result;
-        } catch (RemoteException e) {
-            log.error(e.getMessage(), e);
-            throw new PartitionValidationException(e.getMessage(), e);
-        } catch (CloudControllerServiceInvalidPartitionExceptionException e) {
-            
log.error(e.getFaultMessage().getInvalidPartitionException().getMessage(), e);
-            throw new 
PartitionValidationException(e.getFaultMessage().getInvalidPartitionException().getMessage(),
 e);
-        }
-
-    }
-
+  
     public synchronized MemberContext startInstance(Partition partition,
                                                     String clusterId, String 
clusterInstanceId,
                                                     String networkPartitionId, 
boolean isPrimary,
@@ -200,29 +145,7 @@ public class CloudControllerClient {
         }
     }
 
-    public synchronized void terminateInstances(String clusterId) throws 
TerminationException {
-        try {
-            if (log.isInfoEnabled()) {
-                log.info(String.format("Terminating all instances of cluster 
via cloud controller: [cluster] %s", clusterId));
-            }
-            long startTime = System.currentTimeMillis();
-            stub.terminateInstances(clusterId);
-            if (log.isDebugEnabled()) {
-                long endTime = System.currentTimeMillis();
-                log.debug(String.format("Service call terminateInstances() 
returned in %dms", (endTime - startTime)));
-            }
-        } catch (RemoteException e) {
-            String msg = e.getMessage();
-            log.error(msg, e);
-            throw new TerminationException(msg, e);
-
-        } catch (CloudControllerServiceInvalidClusterExceptionException e) {
-            String message = 
e.getFaultMessage().getInvalidClusterException().getMessage();
-            log.error(message, e);
-            throw new TerminationException(message, e);
-        }
-    }
-
+    
     public synchronized void createApplicationClusters(String appId,
                                                        
ApplicationClusterContext[] applicationClusterContexts) {
         
List<org.apache.stratos.cloud.controller.stub.domain.ApplicationClusterContext> 
contextDTOs =
@@ -262,67 +185,6 @@ public class CloudControllerClient {
 
 
     }
-
-    public void createClusterInstance (String serviceType, String clusterId, 
String alias,
-                                       String instanceId, String partitionId, 
String networkPartitionId){
-        try {
-            stub.createClusterInstance(serviceType, clusterId, alias, 
instanceId,
-                    partitionId, networkPartitionId);
-
-        } catch (RemoteException e) {
-            String msg = e.getMessage();
-            log.error(msg, e);
-            throw new RuntimeException(msg, e);
-        } catch 
(CloudControllerServiceClusterInstanceCreationExceptionException e) {
-            String msg = e.getMessage();
-            log.error(msg, e);
-            throw new RuntimeException(msg, e);
-        }
-    }
-
-    public synchronized void terminateInstance(String memberId) throws 
TerminationException {
-        try {
-            if (log.isInfoEnabled()) {
-                log.info(String.format("Terminating instance via cloud 
controller: [member] %s", memberId));
-            }
-            long startTime = System.currentTimeMillis();
-            stub.terminateInstance(memberId);
-            if (log.isDebugEnabled()) {
-                long endTime = System.currentTimeMillis();
-                log.debug(String.format("Service call terminateInstance() 
returned in %dms", (endTime - startTime)));
-            }
-        } catch (RemoteException e) {
-            String msg = e.getMessage();
-            log.error(msg, e);
-            throw new TerminationException(msg, e);
-        } catch (CloudControllerServiceInvalidMemberExceptionException e) {
-            String msg = 
e.getFaultMessage().getInvalidMemberException().getMessage();
-            log.error(msg, e);
-            throw new TerminationException(msg, e);
-        } catch (CloudControllerServiceInvalidCartridgeTypeExceptionException 
e) {
-            String msg = 
e.getFaultMessage().getInvalidCartridgeTypeException().getMessage();
-            log.error(msg, e);
-            throw new TerminationException(msg, e);
-        } catch (CloudControllerServiceCloudControllerExceptionException e) {
-            String msg = e.getMessage();
-            log.error(msg, e);
-            throw new TerminationException(msg, e);
-        }
-    }
-
-    public CartridgeInfo getCartrdgeInformation(String cartridgeType) throws 
CartridgeInformationException {
-
-        try {
-            return stub.getCartridgeInfo(cartridgeType);
-
-        } catch (RemoteException e) {
-            String msg = e.getMessage();
-            log.error(msg, e);
-            throw new CartridgeInformationException(msg, e);
-        } catch (CloudControllerServiceCartridgeNotFoundExceptionException e) {
-            String msg = e.getMessage();
-            log.error(msg, e);
-            throw new CartridgeInformationException(msg, e);
-        }
-    }
+   
+    
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/067b303c/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
index e2db9e6..37a56af 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/cluster/ClusterMonitor.java
@@ -18,11 +18,23 @@
  */
 package org.apache.stratos.autoscaler.monitor.cluster;
 
+import java.rmi.RemoteException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import org.apache.axis2.AxisFault;
 import org.apache.commons.configuration.XMLConfiguration;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.autoscaler.client.CloudControllerClient;
 import org.apache.stratos.autoscaler.context.InstanceContext;
 import org.apache.stratos.autoscaler.context.cluster.AbstractClusterContext;
 import org.apache.stratos.autoscaler.context.cluster.ClusterContext;
@@ -34,7 +46,6 @@ import 
org.apache.stratos.autoscaler.context.partition.network.ClusterLevelNetwo
 import 
org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher;
 import 
org.apache.stratos.autoscaler.event.publisher.InstanceNotificationPublisher;
 import org.apache.stratos.autoscaler.exception.InvalidArgumentException;
-import org.apache.stratos.autoscaler.exception.cartridge.TerminationException;
 import 
org.apache.stratos.autoscaler.exception.partition.PartitionValidationException;
 import 
org.apache.stratos.autoscaler.exception.policy.PolicyValidationException;
 import org.apache.stratos.autoscaler.monitor.Monitor;
@@ -53,6 +64,7 @@ import 
org.apache.stratos.autoscaler.util.ServiceReferenceHolder;
 import org.apache.stratos.cloud.controller.stub.domain.MemberContext;
 import org.apache.stratos.common.Properties;
 import org.apache.stratos.common.Property;
+import org.apache.stratos.common.client.CloudControllerServiceClient;
 import org.apache.stratos.common.constants.StratosConstants;
 import org.apache.stratos.common.threading.StratosThreadPool;
 import org.apache.stratos.messaging.domain.application.ApplicationStatus;
@@ -64,18 +76,33 @@ 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.Service;
-import org.apache.stratos.messaging.event.health.stat.*;
-import org.apache.stratos.messaging.event.topology.*;
+import org.apache.stratos.messaging.event.health.stat.AverageLoadAverageEvent;
+import 
org.apache.stratos.messaging.event.health.stat.AverageMemoryConsumptionEvent;
+import 
org.apache.stratos.messaging.event.health.stat.AverageRequestsInFlightEvent;
+import 
org.apache.stratos.messaging.event.health.stat.AverageRequestsServingCapabilityEvent;
+import 
org.apache.stratos.messaging.event.health.stat.GradientOfLoadAverageEvent;
+import 
org.apache.stratos.messaging.event.health.stat.GradientOfMemoryConsumptionEvent;
+import 
org.apache.stratos.messaging.event.health.stat.GradientOfRequestsInFlightEvent;
+import 
org.apache.stratos.messaging.event.health.stat.MemberAverageLoadAverageEvent;
+import 
org.apache.stratos.messaging.event.health.stat.MemberAverageMemoryConsumptionEvent;
+import org.apache.stratos.messaging.event.health.stat.MemberFaultEvent;
+import 
org.apache.stratos.messaging.event.health.stat.MemberGradientOfLoadAverageEvent;
+import 
org.apache.stratos.messaging.event.health.stat.MemberGradientOfMemoryConsumptionEvent;
+import 
org.apache.stratos.messaging.event.health.stat.MemberSecondDerivativeOfLoadAverageEvent;
+import 
org.apache.stratos.messaging.event.health.stat.MemberSecondDerivativeOfMemoryConsumptionEvent;
+import 
org.apache.stratos.messaging.event.health.stat.SecondDerivativeOfLoadAverageEvent;
+import 
org.apache.stratos.messaging.event.health.stat.SecondDerivativeOfMemoryConsumptionEvent;
+import 
org.apache.stratos.messaging.event.health.stat.SecondDerivativeOfRequestsInFlightEvent;
+import org.apache.stratos.messaging.event.topology.ClusterRemovedEvent;
+import org.apache.stratos.messaging.event.topology.MemberActivatedEvent;
+import org.apache.stratos.messaging.event.topology.MemberMaintenanceModeEvent;
+import org.apache.stratos.messaging.event.topology.MemberReadyToShutdownEvent;
+import org.apache.stratos.messaging.event.topology.MemberStartedEvent;
+import org.apache.stratos.messaging.event.topology.MemberTerminatedEvent;
 import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
 import org.drools.runtime.StatefulKnowledgeSession;
 import org.drools.runtime.rule.FactHandle;
 
-import java.util.*;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicBoolean;
-
 /**
  * Is responsible for monitoring a service cluster. This runs periodically
  * and perform minimum instance check and scaling check using the underlying
@@ -378,20 +405,27 @@ public class ClusterMonitor extends Monitor implements 
Runnable {
 
         return groupScalingEnabledSubtree;
     }
-    private static void terminateMember(String memberId) {
-        try {
-            CloudControllerClient.getInstance().terminateInstance(memberId);
-
-        } catch (TerminationException e) {
-            log.error("Unable to terminate member: [member-id] " + memberId, 
e);
-        }
-    }
+    
+       private static void createClusterInstance(String serviceType,
+               String clusterId, String alias, String instanceId,
+               String partitionId, String networkPartitionId) {
+               
+                       try {
+                   
CloudControllerServiceClient.getInstance().createClusterInstance(
+                           serviceType, clusterId, alias, instanceId, 
partitionId,
+                           networkPartitionId);
+                       } catch (RemoteException e) {
+                               String msg = " Exception occurred in creating 
cluster instance with cluster-id [" + clusterId 
+                               + "] instance-id ["+instanceId+"] service-type 
["+serviceType+"]"
+                               + "] alias ["+alias+"] partition-id 
["+partitionId+"]"
+                               + "] network-parition-id 
["+networkPartitionId+"]"
+                                               + " .Reason 
["+e.getMessage()+"]" ;
+                   log.error(msg);
+                   throw new RuntimeException(msg, e);
+            }
+               
 
-    private static void createClusterInstance(String serviceType, String 
clusterId, String alias,
-                                              String instanceId, String 
partitionId, String networkPartitionId) {
-        CloudControllerClient.getInstance().createClusterInstance(serviceType, 
clusterId, alias,
-                instanceId, partitionId, networkPartitionId);
-    }
+       }
 
     public void 
addClusterLevelNWPartitionContext(ClusterLevelNetworkPartitionContext 
clusterLevelNWPartitionCtxt) {
         
networkPartitionIdToClusterLevelNetworkPartitionCtxts.put(clusterLevelNWPartitionCtxt.getId(),
 clusterLevelNWPartitionCtxt);

http://git-wip-us.apache.org/repos/asf/stratos/blob/067b303c/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 f69bf05..f61fce8 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
@@ -38,6 +38,7 @@ import 
org.apache.stratos.autoscaler.exception.cartridge.TerminationException;
 import org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitor;
 import org.apache.stratos.autoscaler.util.AutoscalerConstants;
 import org.apache.stratos.cloud.controller.stub.domain.MemberContext;
+import org.apache.stratos.common.client.CloudControllerServiceClient;
 import org.apache.stratos.common.constants.StratosConstants;
 
 /**
@@ -292,12 +293,10 @@ public class RuleTasksDelegator {
 
     public void terminateObsoleteInstance(String memberId) {
         try {
-            CloudControllerClient.getInstance().terminateInstance(memberId);
+            
CloudControllerServiceClient.getInstance().terminateInstance(memberId);
         } catch (Exception e) {
             log.error("Cannot terminate instance", e);
-        } catch (TerminationException e) {
-            log.error("Cannot terminate instance", e);
-        }
+        } 
     }
 
     //Grouping
@@ -306,15 +305,13 @@ public class RuleTasksDelegator {
             if (log.isDebugEnabled()) {
                 log.debug("delegateTerminateAll - begin");
             }
-            CloudControllerClient.getInstance().terminateInstances(clusterId);
+            
CloudControllerServiceClient.getInstance().terminateAllInstances(clusterId);
             if (log.isDebugEnabled()) {
                 log.debug("delegateTerminateAll - done");
             }
         } catch (Exception e) {
             log.error("Cannot terminate instance", e);
-        } catch (TerminationException e) {
-            log.error("Cannot terminate instance", e);
-        }
+        } 
     }
 
     public int getPredictedReplicasForStat(int minReplicas, float 
statUpperLimit, float statPredictedValue) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/067b303c/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
index 4f2dbbd..8793424 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
@@ -18,23 +18,33 @@
  */
 package org.apache.stratos.autoscaler.services.impl;
 
+import java.rmi.RemoteException;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
 import org.apache.commons.lang.StringUtils;
 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.parser.ApplicationParser;
 import 
org.apache.stratos.autoscaler.applications.parser.DefaultApplicationParser;
-import org.apache.stratos.autoscaler.applications.pojo.*;
+import 
org.apache.stratos.autoscaler.applications.pojo.ApplicationClusterContext;
+import org.apache.stratos.autoscaler.applications.pojo.ApplicationContext;
+import 
org.apache.stratos.autoscaler.applications.pojo.ArtifactRepositoryContext;
+import org.apache.stratos.autoscaler.applications.pojo.CartridgeContext;
+import org.apache.stratos.autoscaler.applications.pojo.ComponentContext;
+import org.apache.stratos.autoscaler.applications.pojo.GroupContext;
+import org.apache.stratos.autoscaler.applications.pojo.SubscribableInfoContext;
 import org.apache.stratos.autoscaler.applications.topic.ApplicationBuilder;
-import org.apache.stratos.autoscaler.client.CloudControllerClient;
 import org.apache.stratos.autoscaler.context.AutoscalerContext;
 import org.apache.stratos.autoscaler.exception.AutoScalerException;
 import org.apache.stratos.autoscaler.exception.InvalidArgumentException;
 import 
org.apache.stratos.autoscaler.exception.application.ApplicationDefinitionException;
 import 
org.apache.stratos.autoscaler.exception.application.InvalidApplicationPolicyException;
-import 
org.apache.stratos.autoscaler.exception.application.TopologyInConsistentException;
 import 
org.apache.stratos.autoscaler.exception.kubernetes.InvalidServiceGroupException;
-import 
org.apache.stratos.autoscaler.exception.partition.PartitionValidationException;
 import org.apache.stratos.autoscaler.exception.policy.InvalidPolicyException;
 import org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitor;
 import org.apache.stratos.autoscaler.pojo.Dependencies;
@@ -43,9 +53,7 @@ import 
org.apache.stratos.autoscaler.pojo.policy.PolicyManager;
 import org.apache.stratos.autoscaler.pojo.policy.autoscale.AutoscalePolicy;
 import org.apache.stratos.autoscaler.pojo.policy.deployment.ApplicationPolicy;
 import 
org.apache.stratos.autoscaler.pojo.policy.deployment.ApplicationPolicyNetworkPartitionReference;
-import org.apache.stratos.autoscaler.pojo.policy.deployment.ChildPolicy;
 import org.apache.stratos.autoscaler.pojo.policy.deployment.DeploymentPolicy;
-import 
org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.ChildLevelNetworkPartition;
 import 
org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.NetworkPartition;
 import 
org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.Partition;
 import org.apache.stratos.autoscaler.registry.RegistryManager;
@@ -60,16 +68,10 @@ import org.apache.stratos.common.util.CommonUtil;
 import 
org.apache.stratos.manager.service.stub.domain.application.signup.ApplicationSignUp;
 import 
org.apache.stratos.manager.service.stub.domain.application.signup.ArtifactRepository;
 import org.apache.stratos.messaging.domain.application.Application;
-import org.apache.stratos.messaging.domain.application.ClusterDataHolder;
-import org.apache.stratos.messaging.domain.application.Group;
 import 
org.apache.stratos.metadata.client.defaults.DefaultMetaDataServiceClient;
 import org.apache.stratos.metadata.client.defaults.MetaDataServiceClient;
 import 
org.apache.stratos.metadata.client.exception.MetaDataServiceClientException;
 import org.wso2.carbon.registry.api.RegistryException;
-import java.rmi.RemoteException;
-import com.google.gdata.wireformats.ObjectConverter;
-import java.text.MessageFormat;
-import java.util.*;
 
 /**
  * Auto Scaler Service API is responsible getting Partitions and Policies.
@@ -82,66 +84,6 @@ public class AutoscalerServiceImpl implements 
AutoscalerService {
         return PolicyManager.getInstance().getAutoscalePolicyList();
     }
 
-    private boolean validateDeploymentPolicy(DeploymentPolicy 
deploymentPolicy) {
-        try {
-            ApplicationHolder.acquireReadLock();
-
-            for (ChildPolicy childPolicy : 
deploymentPolicy.getChildPolicies()) {
-                String alias = childPolicy.getAlias();
-                List<Partition> partitionList = new ArrayList<Partition>();
-                for (ChildLevelNetworkPartition networkPartition : 
childPolicy.getChildLevelNetworkPartitions()) {
-                    Partition[] partitions = 
deploymentPolicy.getApplicationLevelNetworkPartition(
-                            networkPartition.getId()).getPartitions();
-                    for (Partition partition : partitions) {
-                        partitionList.add(partition);
-                    }
-                }
-
-                Application application = 
ApplicationHolder.getApplications().getApplication(
-                        deploymentPolicy.getApplicationId());
-                Partition[] partitions = new Partition[partitionList.size()];
-                if (application != null) {
-                    Group group = application.getGroupRecursively(alias);
-                    if (group != null) {
-                        Set<ClusterDataHolder> clusterDataHolders = 
group.getClusterDataHoldersOfGroup();
-                        //validating the group deployment policy against the 
leaf cartridges
-                        for (ClusterDataHolder clusterDataHolder : 
clusterDataHolders) {
-                            
CloudControllerClient.getInstance().validateDeploymentPolicy(
-                                    clusterDataHolder.getServiceType(), 
partitionList.toArray(partitions));
-                        }
-                    } else {
-                        //Validating the cartridge level deployment policy
-                        ClusterDataHolder clusterDataHolder = application.
-                                getClusterDataHolderRecursivelyByAlias(alias);
-                        if (clusterDataHolder != null) {
-                            
CloudControllerClient.getInstance().validateDeploymentPolicy(
-                                    clusterDataHolder.getServiceType(), 
partitionList.toArray(partitions));
-                        } else {
-                            String msg = "Error while retrieving the 
group/cluster for the deployment " +
-                                    "policy: " + alias;
-                            log.error(msg);
-                            throw new TopologyInConsistentException(msg);
-                        }
-                    }
-                } else {
-                    String msg = "Error while retrieving the application for 
the deployment policy: " +
-                            deploymentPolicy.getApplicationId();
-                    log.error(msg);
-                    throw new TopologyInConsistentException(msg);
-                }
-            }
-        } catch (PartitionValidationException e) {
-            log.error("Error while validating the deployment policy", e);
-            //TODO throw exception
-        } catch (TopologyInConsistentException e) {
-            log.error("Error while validating the deployment policy", e);
-            //TODO throw exception
-        } finally {
-            ApplicationHolder.releaseReadLock();
-        }
-        return true;
-    }
-
     @Override
     public boolean addAutoScalingPolicy(AutoscalePolicy autoscalePolicy) 
throws InvalidPolicyException {
         return PolicyManager.getInstance().addAutoscalePolicy(autoscalePolicy);

http://git-wip-us.apache.org/repos/asf/stratos/blob/067b303c/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/CloudControllerServiceClient.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/CloudControllerServiceClient.java
 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/CloudControllerServiceClient.java
index a6c4684..2e20ca6 100644
--- 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/CloudControllerServiceClient.java
+++ 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/CloudControllerServiceClient.java
@@ -112,9 +112,30 @@ public class CloudControllerServiceClient {
        return stub.getServiceGroup(name);
     }
 
+    public void terminateInstance(String memberId) throws Exception {
+               if (log.isInfoEnabled()) {
+                       log.info(String.format("Terminating instance via cloud 
controller: [member] %s", memberId));
+               }
+               long startTime = System.currentTimeMillis();
+               stub.terminateInstance(memberId);
+               if (log.isDebugEnabled()) {
+                       long endTime = System.currentTimeMillis();
+                       log.debug(String.format("Service call 
terminateInstance() returned in %dms", (endTime - startTime)));
+               }
+    }
+    
     public void terminateAllInstances(String clusterId) throws 
RemoteException, 
-    CloudControllerServiceInvalidClusterExceptionException {
-               stub.terminateInstances(clusterId);
+                                                               
CloudControllerServiceInvalidClusterExceptionException {
+       if (log.isInfoEnabled()) {
+            log.info(String.format("Terminating all instances of cluster via 
cloud controller: [cluster] %s", clusterId));
+        }
+        long startTime = System.currentTimeMillis();
+        stub.terminateInstances(clusterId);
+        
+        if (log.isDebugEnabled()) {
+            long endTime = System.currentTimeMillis();
+            log.debug(String.format("Service call terminateInstances() 
returned in %dms", (endTime - startTime)));
+        }
        }
 
        public String[] getRegisteredCartridges() throws RemoteException {
@@ -184,11 +205,6 @@ public class CloudControllerServiceClient {
         return stub.updateKubernetesHost(kubernetesHost);
     }
 
-    public void validatePartition(Partition partition) throws RemoteException,
-            CloudControllerServiceInvalidPartitionExceptionException {
-        stub.validatePartition(partition);
-    }
-
        public void addDeploymentPolicy(DeploymentPolicy deploymentPolicy)
                        throws 
CloudControllerServiceDeploymentPolicyAlreadyExistsExceptionException, 
RemoteException, 
                        
CloudControllerServiceInvalidDeploymentPolicyExceptionException {
@@ -237,4 +253,18 @@ public class CloudControllerServiceClient {
     public NetworkPartition getNetworkPartition(String networkPartitionId) 
throws RemoteException {
        return stub.getNetworkPartition(networkPartitionId);
     }
+    
+       public void createClusterInstance(String serviceType, String clusterId,
+               String alias, String instanceId, String partitionId,
+               String networkPartitionId) throws RemoteException {
+               try {
+                       stub.createClusterInstance(serviceType, clusterId, 
alias,
+                               instanceId, partitionId, networkPartitionId);
+
+               } catch 
(CloudControllerServiceClusterInstanceCreationExceptionException e) {
+                       String msg = 
e.getFaultMessage().getClusterInstanceCreationException().getMessage();
+                       log.error(msg, e);
+                       throw new RuntimeException(msg, e);
+               }
+       }
 }

Reply via email to