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/01 17:51:42 UTC

[2/3] stratos git commit: fixing cartridge deployment issues and global deployment policy deployment issues

fixing cartridge deployment issues and global deployment policy deployment issues


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

Branch: refs/heads/master
Commit: 2c07846c3b8ef6c66446908fce427e827af281d4
Parents: f6c912b
Author: reka <rt...@gmail.com>
Authored: Mon Dec 1 22:21:04 2014 +0530
Committer: reka <rt...@gmail.com>
Committed: Mon Dec 1 22:21:27 2014 +0530

----------------------------------------------------------------------
 .../autoscaler/api/AutoScalerServiceImpl.java   |   27 +
 .../AutoscalerTopologyEventReceiver.java        |  169 +-
 .../autoscaler/pojo/policy/PolicyManager.java   |    9 +
 .../pojo/policy/deployment/ChildPolicy.java     |    4 +-
 .../partition/network/ChildLevelPartition.java  |   22 +-
 .../stratos/autoscaler/util/AutoscalerUtil.java |   54 +-
 .../org.apache.stratos.cloud.controller/pom.xml |    2 -
 .../src/main/resources/META-INF/services.xml    |    2 +-
 .../clustering/DistributedObjectProvider.java   |    3 +-
 .../src/main/resources/AutoScalerService.wsdl   | 1490 +++++++++---------
 10 files changed, 982 insertions(+), 800 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/2c07846c/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 739ae9d..91745d8 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
@@ -21,6 +21,7 @@ package org.apache.stratos.autoscaler.api;
 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.context.AutoscalerContext;
 //import org.apache.stratos.autoscaler.NetworkPartitionLbHolder;
 import org.apache.stratos.autoscaler.applications.parser.ApplicationParser;
@@ -45,12 +46,14 @@ import org.apache.stratos.autoscaler.pojo.policy.autoscale.AutoscalePolicy;
 import org.apache.stratos.autoscaler.pojo.policy.deployment.DeploymentPolicy;
 import org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.Partition;
 import org.apache.stratos.autoscaler.registry.RegistryManager;
+import org.apache.stratos.autoscaler.util.AutoscalerUtil;
 import org.apache.stratos.common.Properties;
 import org.apache.stratos.common.Property;
 import org.apache.stratos.common.kubernetes.KubernetesGroup;
 import org.apache.stratos.common.kubernetes.KubernetesHost;
 import org.apache.stratos.common.kubernetes.KubernetesMaster;
 import org.apache.stratos.messaging.domain.applications.Application;
+import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
 import org.apache.stratos.metadata.client.defaults.DefaultMetaDataServiceClient;
 import org.apache.stratos.metadata.client.defaults.MetaDataServiceClient;
 import org.apache.stratos.metadata.client.exception.MetaDataServiceClientException;
@@ -112,6 +115,30 @@ public class AutoScalerServiceImpl implements AutoScalerServiceInterface {
         boolean hasDeployed = PolicyManager.getInstance().deployDeploymentPolicy(deploymentPolicy);
         //Need to start the application Monitor after validation of the deployment policies.
 
+        //Check whether all the clusters are there
+        ApplicationHolder.acquireReadLock();
+        boolean allClusterInitialized = false;
+
+        try {
+            Application application = ApplicationHolder.getApplications().
+                    getApplication(deploymentPolicy.getApplicationId());
+            if(application != null) {
+                allClusterInitialized = AutoscalerUtil.allClustersInitialized(application);
+            }
+
+        } finally {
+            ApplicationHolder.releaseReadLock();
+        }
+
+        if(allClusterInitialized) {
+            AutoscalerUtil.getInstance().
+                    startApplicationMonitor(deploymentPolicy.getApplicationId());
+
+        } else {
+            log.info("The application clusters are not yet created. " +
+                    "Waiting for them to be created");
+        }
+
         return hasDeployed;
     }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/2c07846c/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
index 73bd6db..98c0afa 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
@@ -27,14 +27,14 @@ import org.apache.stratos.autoscaler.context.cluster.ClusterContextFactory;
 import org.apache.stratos.autoscaler.context.cluster.VMClusterContext;
 import org.apache.stratos.autoscaler.event.publisher.ClusterStatusEventPublisher;
 import org.apache.stratos.autoscaler.event.publisher.InstanceNotificationPublisher;
-import org.apache.stratos.autoscaler.exception.application.DependencyBuilderException;
-import org.apache.stratos.autoscaler.exception.application.TopologyInConsistentException;
 import org.apache.stratos.autoscaler.exception.partition.PartitionValidationException;
 import org.apache.stratos.autoscaler.exception.policy.PolicyValidationException;
-import org.apache.stratos.autoscaler.monitor.MonitorFactory;
 import org.apache.stratos.autoscaler.monitor.cluster.AbstractClusterMonitor;
 import org.apache.stratos.autoscaler.monitor.component.ApplicationMonitor;
 import org.apache.stratos.autoscaler.monitor.events.ClusterStatusEvent;
+import org.apache.stratos.autoscaler.pojo.policy.PolicyManager;
+import org.apache.stratos.autoscaler.pojo.policy.deployment.DeploymentPolicy;
+import org.apache.stratos.autoscaler.util.AutoscalerUtil;
 import org.apache.stratos.autoscaler.util.ServiceReferenceHolder;
 import org.apache.stratos.messaging.domain.applications.Application;
 import org.apache.stratos.messaging.domain.applications.Applications;
@@ -143,7 +143,17 @@ public class AutoscalerTopologyEventReceiver implements Runnable {
                         if (applications != null) {
                             for (Application application : applications.getApplications().values()) {
                                 if (allClustersInitialized(application)) {
-                                    startApplicationMonitor(application.getUniqueIdentifier());
+                                    DeploymentPolicy policy = PolicyManager.getInstance().
+                                            getDeploymentPolicyByApplication(
+                                                    application.getUniqueIdentifier());
+                                    if(policy != null) {
+                                        AutoscalerUtil.getInstance().
+                                                startApplicationMonitor(application.getUniqueIdentifier());
+                                    } else {
+                                        log.info("The relevant application policy is not yet " +
+                                                "deployed for this [application] " +
+                                                application.getUniqueIdentifier());
+                                    }
                                 } else {
                                     log.error("Complete Topology is not consistent with the applications " +
                                             "which got persisted");
@@ -175,7 +185,7 @@ public class AutoscalerTopologyEventReceiver implements Runnable {
                         //acquire read lock
                         ApplicationHolder.acquireReadLock();
                         //start the application monitor
-                        startApplicationMonitor(appId);
+                        //startApplicationMonitor(appId);
                     } catch (Exception e) {
                         String msg = "Error processing event " + e.getLocalizedMessage();
                         log.error(msg, e);
@@ -432,81 +442,81 @@ public class AutoscalerTopologyEventReceiver implements Runnable {
         });
 
         topologyEventReceiver.addEventListener(new ClusterInstanceCreatedEventListener() {
-            @Override
-            protected void onEvent(Event event) {
-
-                ClusterInstanceCreatedEvent clusterInstanceCreatedEvent =
-                        (ClusterInstanceCreatedEvent) event;
-                AbstractClusterMonitor clusterMonitor = AutoscalerContext.getInstance().
-                        getClusterMonitor(clusterInstanceCreatedEvent.getClusterId());
-                String instanceId = ((ClusterInstanceCreatedEvent) event).getInstanceId();
-                //FIXME to take lock when clusterMonitor is running
-                if (clusterMonitor != null) {
-                    TopologyManager.acquireReadLockForCluster(clusterInstanceCreatedEvent.getServiceName(),
-                            clusterInstanceCreatedEvent.getClusterId());
-
-                    try {
-                        Service service = TopologyManager.getTopology().
-                                getService(clusterInstanceCreatedEvent.getServiceName());
-
-                        if (service != null) {
-                            Cluster cluster = service.getCluster(clusterInstanceCreatedEvent.getClusterId());
-                            if (cluster != null) {
-                                try {
-                                    if (cluster.isKubernetesCluster()) {
-                                        clusterMonitor.setClusterContext(
-                                                ClusterContextFactory.getKubernetesClusterContext(
-                                                                            instanceId,
-                                                                            cluster));
-                                    } else {
-                                        VMClusterContext clusterContext =
-                                                (VMClusterContext) clusterMonitor.getClusterContext();
-                                        if (clusterContext == null) {
-                                            clusterMonitor.setClusterContext(
-                                                    ClusterContextFactory.
-                                                            getVMServiceClusterContext(instanceId,
-                                                                                        cluster));
-                                        } else {
-                                            clusterContext.addInstanceContext(instanceId, cluster);
-                                        }
-
-                                    }
-                                    if (clusterMonitor.hasMonitoringStarted().compareAndSet(false, true)) {
-                                        clusterMonitor.startScheduler();
-                                        log.info("Monitoring task for Cluster Monitor with cluster id " +
-                                                clusterInstanceCreatedEvent.getClusterId() + " started successfully");
-                                    }
-                                } catch (PolicyValidationException e) {
-                                    log.error(e.getMessage(), e);
-                                } catch (PartitionValidationException e) {
-                                    log.error(e.getMessage(), e);
-                                }
-                            }
-
-                            } else {
-                                log.error("Service " + clusterInstanceCreatedEvent.getServiceName() +
-                                        " not found, no cluster instance added to ClusterMonitor " +
-                                        clusterInstanceCreatedEvent.getClusterId());
-                            }
-
-                        }finally{
-                            TopologyManager.releaseReadLockForCluster(clusterInstanceCreatedEvent.getServiceName(),
-                                    clusterInstanceCreatedEvent.getClusterId());
-                        }
-
-                    }else{
-                        log.error("No Cluster Monitor found for cluster id " +
-                                clusterInstanceCreatedEvent.getClusterId());
-                    }
-                }
-            }
-
-            );
-        }
+                                                   @Override
+                                                   protected void onEvent(Event event) {
+
+                                                       ClusterInstanceCreatedEvent clusterInstanceCreatedEvent =
+                                                               (ClusterInstanceCreatedEvent) event;
+                                                       AbstractClusterMonitor clusterMonitor = AutoscalerContext.getInstance().
+                                                               getClusterMonitor(clusterInstanceCreatedEvent.getClusterId());
+                                                       String instanceId = ((ClusterInstanceCreatedEvent) event).getInstanceId();
+                                                       //FIXME to take lock when clusterMonitor is running
+                                                       if (clusterMonitor != null) {
+                                                           TopologyManager.acquireReadLockForCluster(clusterInstanceCreatedEvent.getServiceName(),
+                                                                   clusterInstanceCreatedEvent.getClusterId());
+
+                                                           try {
+                                                               Service service = TopologyManager.getTopology().
+                                                                       getService(clusterInstanceCreatedEvent.getServiceName());
+
+                                                               if (service != null) {
+                                                                   Cluster cluster = service.getCluster(clusterInstanceCreatedEvent.getClusterId());
+                                                                   if (cluster != null) {
+                                                                       try {
+                                                                           if (cluster.isKubernetesCluster()) {
+                                                                               clusterMonitor.setClusterContext(
+                                                                                       ClusterContextFactory.getKubernetesClusterContext(
+                                                                                               instanceId,
+                                                                                               cluster));
+                                                                           } else {
+                                                                               VMClusterContext clusterContext =
+                                                                                       (VMClusterContext) clusterMonitor.getClusterContext();
+                                                                               if (clusterContext == null) {
+                                                                                   clusterMonitor.setClusterContext(
+                                                                                           ClusterContextFactory.
+                                                                                                   getVMServiceClusterContext(instanceId,
+                                                                                                           cluster));
+                                                                               } else {
+                                                                                   clusterContext.addInstanceContext(instanceId, cluster);
+                                                                               }
+
+                                                                           }
+                                                                           if (clusterMonitor.hasMonitoringStarted().compareAndSet(false, true)) {
+                                                                               clusterMonitor.startScheduler();
+                                                                               log.info("Monitoring task for Cluster Monitor with cluster id " +
+                                                                                       clusterInstanceCreatedEvent.getClusterId() + " started successfully");
+                                                                           }
+                                                                       } catch (PolicyValidationException e) {
+                                                                           log.error(e.getMessage(), e);
+                                                                       } catch (PartitionValidationException e) {
+                                                                           log.error(e.getMessage(), e);
+                                                                       }
+                                                                   }
+
+                                                               } else {
+                                                                   log.error("Service " + clusterInstanceCreatedEvent.getServiceName() +
+                                                                           " not found, no cluster instance added to ClusterMonitor " +
+                                                                           clusterInstanceCreatedEvent.getClusterId());
+                                                               }
+
+                                                           } finally {
+                                                               TopologyManager.releaseReadLockForCluster(clusterInstanceCreatedEvent.getServiceName(),
+                                                                       clusterInstanceCreatedEvent.getClusterId());
+                                                           }
+
+                                                       } else {
+                                                           log.error("No Cluster Monitor found for cluster id " +
+                                                                   clusterInstanceCreatedEvent.getClusterId());
+                                                       }
+                                                   }
+                                               }
+
+        );
+    }
 
-                /**
-                 * Terminate load balancer topology receiver thread.
-                 */
+    /**
+     * Terminate load balancer topology receiver thread.
+     */
 
     public void terminate() {
         topologyEventReceiver.terminate();
@@ -514,5 +524,4 @@ public class AutoscalerTopologyEventReceiver implements Runnable {
     }
 
 
-
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/2c07846c/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
index 31a1f74..ca9a4a7 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/PolicyManager.java
@@ -286,4 +286,13 @@ public class PolicyManager {
         return deploymentPolicyListMap.get(id);
     }
 
+    public DeploymentPolicy getDeploymentPolicyByApplication(String appId) {
+        for(DeploymentPolicy deploymentPolicy : deploymentPolicyListMap.values()) {
+            if(deploymentPolicy.getApplicationId().equals(appId)) {
+                return deploymentPolicy;
+            }
+        }
+        return null;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/2c07846c/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/ChildPolicy.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/ChildPolicy.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/ChildPolicy.java
index 1f4a8b4..9d78dcf 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/ChildPolicy.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/ChildPolicy.java
@@ -20,10 +20,12 @@ package org.apache.stratos.autoscaler.pojo.policy.deployment;
 
 import org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network.ChildLevelNetworkPartition;
 
+import java.io.Serializable;
+
 /**
  * This will keep the Children's policy in an application
  */
-public class ChildPolicy {
+public class ChildPolicy implements Serializable {
     private String id;
 
     private ChildLevelNetworkPartition[] childLevelNetworkPartitions;

http://git-wip-us.apache.org/repos/asf/stratos/blob/2c07846c/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ChildLevelPartition.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ChildLevelPartition.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ChildLevelPartition.java
index 691cb07..8c3b140 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ChildLevelPartition.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/pojo/policy/deployment/partition/network/ChildLevelPartition.java
@@ -19,17 +19,13 @@
 
 package org.apache.stratos.autoscaler.pojo.policy.deployment.partition.network;
 
-public class ChildLevelPartition {
+import java.io.Serializable;
+
+public class ChildLevelPartition implements Serializable {
     private String partitionId;
     private String networkPartitionId;
     private int max;
 
-    public ChildLevelPartition(String partitionId, String networkPartitionId, int max) {
-        this.partitionId = partitionId;
-        this.networkPartitionId = networkPartitionId;
-        this.max = max;
-    }
-
     public int getMax() {
         return max;
     }
@@ -41,4 +37,16 @@ public class ChildLevelPartition {
     public String getPartitionId() {
         return partitionId;
     }
+
+    public void setPartitionId(String partitionId) {
+        this.partitionId = partitionId;
+    }
+
+    public void setNetworkPartitionId(String networkPartitionId) {
+        this.networkPartitionId = networkPartitionId;
+    }
+
+    public void setMax(int max) {
+        this.max = max;
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/2c07846c/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 077a1a4..476e8bb 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
@@ -38,6 +38,10 @@ import org.apache.stratos.common.Properties;
 import org.apache.stratos.common.Property;
 import org.apache.stratos.messaging.domain.applications.Application;
 import org.apache.stratos.messaging.domain.applications.Applications;
+import org.apache.stratos.messaging.domain.applications.ClusterDataHolder;
+import org.apache.stratos.messaging.domain.topology.Service;
+import org.apache.stratos.messaging.domain.topology.Topology;
+import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
 
 
 /**
@@ -51,6 +55,13 @@ public class AutoscalerUtil {
 
     }
 
+    public static AutoscalerUtil getInstance() {
+        return Holder.INSTANCE;
+    }
+    private static class Holder {
+        private static final AutoscalerUtil INSTANCE = new AutoscalerUtil();
+    }
+
     public static Applications  getApplications () {
 
         Applications applications;
@@ -88,6 +99,47 @@ public class AutoscalerUtil {
         return clusterId.substring(0, clusterId.indexOf("."));
     }
 
+    public static boolean allClustersInitialized(Application application) {
+        boolean allClustersInitialized = false;
+        for (ClusterDataHolder holder : application.getClusterDataRecursively()) {
+            TopologyManager.acquireReadLockForCluster(holder.getServiceType(),
+                    holder.getClusterId());
+
+            try {
+                Topology topology = TopologyManager.getTopology();
+                if (topology != null) {
+                    Service service = topology.getService(holder.getServiceType());
+                    if (service != null) {
+                        if (service.clusterExists(holder.getClusterId())) {
+                            allClustersInitialized = true;
+                            return allClustersInitialized;
+                        } else {
+                            if (log.isDebugEnabled()) {
+                                log.debug("[Cluster] " + holder.getClusterId() + " is not found in " +
+                                        "the Topology");
+                            }
+                            allClustersInitialized = false;
+                        }
+                    } else {
+                        if (log.isDebugEnabled()) {
+                            log.debug("Service is null in the CompleteTopologyEvent");
+                        }
+                    }
+                } else {
+                    if (log.isDebugEnabled()) {
+                        log.debug("Topology is null in the CompleteTopologyEvent");
+                    }
+                }
+            } finally {
+                TopologyManager.releaseReadLockForCluster(holder.getServiceType(),
+                        holder.getClusterId());
+            }
+        }
+        return allClustersInitialized;
+    }
+
+
+
     /*public static LbClusterMonitor getLBClusterMonitor(Cluster cluster) throws PolicyValidationException, PartitionValidationException {
         // FIXME fix the following code to correctly update
         // AutoscalerContext context = AutoscalerContext.getInstance();
@@ -297,7 +349,7 @@ public class AutoscalerUtil {
         return toCommonProperties(properties);
     }
 
-    protected synchronized void startApplicationMonitor(String applicationId) {
+    public synchronized void startApplicationMonitor(String applicationId) {
         Thread th = null;
         if (AutoscalerContext.getInstance().getAppMonitor(applicationId) == null) {
             th = new Thread(new ApplicationMonitorAdder(applicationId));

http://git-wip-us.apache.org/repos/asf/stratos/blob/2c07846c/components/org.apache.stratos.cloud.controller/pom.xml
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/pom.xml b/components/org.apache.stratos.cloud.controller/pom.xml
index 5889c1d..1a9445a 100644
--- a/components/org.apache.stratos.cloud.controller/pom.xml
+++ b/components/org.apache.stratos.cloud.controller/pom.xml
@@ -49,12 +49,10 @@
                         <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                         <Bundle-Name>${project.artifactId}</Bundle-Name>
                         <Export-Package>
-			    !org.apache.stratos.cloud.controller.services.impl.*,
 			    !org.apache.stratos.cloud.controller.internal.*,
 			    org.apache.stratos.cloud.controller.*,
                         </Export-Package>
                         <Private-Package>
-			    org.apache.stratos.cloud.controller.services.impl.*,
 			    org.apache.stratos.cloud.controller.internal.*,
                         </Private-Package>
                         <Import-Package>

http://git-wip-us.apache.org/repos/asf/stratos/blob/2c07846c/components/org.apache.stratos.cloud.controller/src/main/resources/META-INF/services.xml
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/resources/META-INF/services.xml b/components/org.apache.stratos.cloud.controller/src/main/resources/META-INF/services.xml
index f0283f5..3f365e7 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/resources/META-INF/services.xml
+++ b/components/org.apache.stratos.cloud.controller/src/main/resources/META-INF/services.xml
@@ -22,7 +22,7 @@
 
 <serviceGroup>
     <service name="CloudControllerService" scope="application">
-        <parameter name="ServiceClass">org.apache.stratos.cloud.controller.services.CloudControllerServiceImpl</parameter>
+        <parameter name="ServiceClass">org.apache.stratos.cloud.controller.services.impl.CloudControllerServiceImpl</parameter>
         <messageReceivers>
         <messageReceiver mep="http://www.w3.org/ns/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>
         <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

http://git-wip-us.apache.org/repos/asf/stratos/blob/2c07846c/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/clustering/DistributedObjectProvider.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/clustering/DistributedObjectProvider.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/clustering/DistributedObjectProvider.java
index fe47ca4..428d3da 100644
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/clustering/DistributedObjectProvider.java
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/clustering/DistributedObjectProvider.java
@@ -26,6 +26,7 @@ import com.hazelcast.core.IMap;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -34,7 +35,7 @@ import java.util.concurrent.ConcurrentHashMap;
 /**
  * Provides objects to be managed in distributed and non-distributed environments.
  */
-public class DistributedObjectProvider {
+public class DistributedObjectProvider implements Serializable {
     private static final Log log = LogFactory.getLog(DistributedObjectProvider.class);
 
     private final boolean clustered;