Updated Branches:
  refs/heads/master 4e0e95681 -> ea115ab2f

Registry based Partition deployer


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

Branch: refs/heads/master
Commit: ee705646f5a7ff937e4ead764d34b507feafd271
Parents: c6829cd
Author: Udara Liyanage <[email protected]>
Authored: Sat Dec 7 12:57:42 2013 -0500
Committer: Udara Liyanage <[email protected]>
Committed: Sat Dec 7 12:57:42 2013 -0500

----------------------------------------------------------------------
 .../autoscaler/api/AutoScalerServiceImpl.java   |  7 ++-
 .../exception/AutoScalerException.java          | 37 +++++++++++++++
 .../autoscaler/partition/PartitionManager.java  | 47 +++++++++++++-------
 .../partition/deployers/PartitionDeployer.java  | 14 ++----
 .../autoscaler/registry/RegistryManager.java    | 21 ++++-----
 .../autoscaler/util/AutoScalerConstants.java    |  2 +-
 6 files changed, 89 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ee705646/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 e2e5132..584a724 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
@@ -24,13 +24,17 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import 
org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
 import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy;
+import org.apache.stratos.autoscaler.exception.AutoScalerException;
 import org.apache.stratos.autoscaler.exception.PartitionValidationException;
 import org.apache.stratos.autoscaler.interfaces.AutoScalerServiceInterface;
 import org.apache.stratos.autoscaler.partition.PartitionGroup;
 import org.apache.stratos.autoscaler.partition.PartitionManager;
 import org.apache.stratos.autoscaler.policy.PolicyManager;
 import org.apache.stratos.autoscaler.policy.model.AutoscalePolicy;
+import org.apache.stratos.autoscaler.registry.RegistryManager;
+import org.apache.stratos.autoscaler.util.AutoScalerConstants;
 import org.apache.stratos.cloud.controller.deployment.partition.Partition;
+import org.wso2.carbon.registry.core.exceptions.RegistryException;
 
 /**
  * Auto Scaler Service API is responsible getting Partitions and Policies.
@@ -66,8 +70,7 @@ public class AutoScalerServiceImpl implements 
AutoScalerServiceInterface{
 
        @Override
        public boolean addPartition(Partition partition) {
-               // TODO Auto-generated method stub
-               return false;
+        return PartitionManager.getInstance().addPartition(partition);
        }
 
        @Override

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ee705646/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/AutoScalerException.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/AutoScalerException.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/AutoScalerException.java
new file mode 100644
index 0000000..d4ba903
--- /dev/null
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/AutoScalerException.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one 
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 
+ * KIND, either express or implied.  See the License for the 
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.stratos.autoscaler.exception;
+
+public class AutoScalerException extends RuntimeException {
+
+       private static final long serialVersionUID = 3131046757663797684L;
+
+       public AutoScalerException(String msg) {
+        super(msg);
+    }
+    
+    public AutoScalerException(String msg, Exception ex) {
+        super(msg, ex);
+    }
+    
+    public AutoScalerException(Exception ex) {
+        super(ex);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ee705646/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
index a17393d..52fd8f7 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/PartitionManager.java
@@ -19,15 +19,18 @@
 
 package org.apache.stratos.autoscaler.partition;
 
-import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import 
org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
+import org.apache.stratos.autoscaler.exception.AutoScalerException;
+import org.apache.stratos.autoscaler.exception.PartitionValidationException;
+import org.apache.stratos.autoscaler.registry.RegistryManager;
+import org.apache.stratos.autoscaler.util.AutoScalerConstants;
 import org.apache.stratos.cloud.controller.deployment.partition.Partition;
+import org.wso2.carbon.registry.core.exceptions.RegistryException;
 
 /**
  * The model class for managing Partitions.
@@ -54,18 +57,28 @@ private static final Log log = 
LogFactory.getLog(PartitionManager.class);
                return partitionListMap.containsKey(partitionId);
        }
        
-       public void addPartition(String partitionId, Partition partition){
-               if(partitionExist(partitionId))
-                       log.error("A partition with the ID " + partitionId +" 
already exist.");
-               else
-                       partitionListMap.put(partitionId, partition);           
 
-       }
-       
-       public void removePartition(String partitionId){
-               if(partitionExist(partitionId))
-                       partitionListMap.remove(partitionId);
-               else
-                       log.error("A partition with the ID " + partitionId +" 
already does not exist."); 
+       public boolean addPartition( Partition partition) throws 
AutoScalerException{
+               String partitionId = partition.getId();
+               if(this.partitionExist(partition.getId()))
+                       throw new AutoScalerException("A parition with the ID " 
+  partitionId + " already exist.");
+                               
+               String resourcePath = AutoScalerConstants.AUTOSCALER_RESOURCE 
+                       + AutoScalerConstants.PARTITION_RESOURCE + "/" + 
partition.getId();
+               
+        RegistryManager regManager = RegistryManager.getInstance();     
+        
+        try {
+               this.validatePartition(partition);
+                       regManager.persist(partition, resourcePath);
+               partitionListMap.put(partitionId, partition);   
+               } catch (RegistryException e) {
+                       throw new AutoScalerException(e);
+               } catch(PartitionValidationException e){
+                       throw new AutoScalerException(e);
+               }
+                
+               log.info("Partition :" + partition.getId() + " is deployed 
successfully.");
+               return true;
        }
        
        public Partition getPartitionById(String partitionId){
@@ -80,5 +93,9 @@ private static final Log log = 
LogFactory.getLog(PartitionManager.class);
                return partitionListMap.values().toArray(new Partition[0]);
                
        }
+       
+       public boolean validatePartition(Partition partition) throws 
PartitionValidationException{
+               return 
CloudControllerClient.getInstance().validatePartition(partition);
+       }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ee705646/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionDeployer.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionDeployer.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionDeployer.java
index eb869aa..840f227 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionDeployer.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/partition/deployers/PartitionDeployer.java
@@ -29,13 +29,12 @@ import org.apache.axis2.deployment.DeploymentException;
 import org.apache.axis2.deployment.repository.util.DeploymentFileData;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import 
org.apache.stratos.autoscaler.client.cloud.controller.CloudControllerClient;
 import org.apache.stratos.autoscaler.partition.PartitionManager;
 import org.apache.stratos.cloud.controller.deployment.partition.Partition;
 
 /**
  * 
- * The Axis2 deployer class for party definitions definitions.
+ * The Axis2 deployer class for partition definitions definitions.
  */
 public class PartitionDeployer extends AbstractDeployer {
        
@@ -85,18 +84,11 @@ public class PartitionDeployer extends AbstractDeployer {
             while (it.hasNext()) {
                 Partition partition = it.next();
                 try {
-                    if 
(PartitionManager.getInstance().partitionExist(partition.getId())) {
-                        log.warn("Partition already exists in the system " + 
partition.getId());
-                        continue;
-                    }
-
-                    
CloudControllerClient.getInstance().validatePartition(partition);
-                    
PartitionManager.getInstance().addPartition(partition.getId(), partition);
-                    log.info("Partition :" + partition.getId() + " is deployed 
successfully.");
+                    PartitionManager.getInstance().addPartition(partition);    
              
                 } catch (Exception e) {
                     String msg =
                                  "Invalid partition: " + partition.getId() + " 
in file: " +
-                                         partitionFile.getAbsolutePath()+". 
Cause: "+e.getMessage();
+                                         partitionFile.getAbsolutePath()+". 
Cause: "+ e.getMessage();
                     log.error(msg, e);
                     continue;
                 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ee705646/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
index 595b0bd..4322e7a 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/registry/RegistryManager.java
@@ -5,6 +5,7 @@ import org.apache.commons.logging.LogFactory;
 import org.wso2.carbon.registry.core.Registry;
 import org.wso2.carbon.registry.core.Resource;
 import org.wso2.carbon.registry.core.exceptions.RegistryException;
+import org.apache.stratos.autoscaler.exception.AutoScalerException;
 import org.apache.stratos.autoscaler.util.AutoScalerConstants;
 import org.apache.stratos.autoscaler.util.ServiceReferenceHolder;
 import org.apache.stratos.autoscaler.util.Serializer;
@@ -42,8 +43,7 @@ public class RegistryManager {
                     "Failed to create the registry resource " +
                                AutoScalerConstants.AUTOSCALER_RESOURCE;
             log.error(msg, e);
-            //throw new CloudControllerException(msg, e);
-            
+            throw new AutoScalerException(msg, e);            
         }
     }
     
@@ -51,30 +51,31 @@ public class RegistryManager {
      * Persist an object in the local registry.
      *
      * @param dataObj object to be persisted.
-     * @param path resource path to be persisted.
+     * @param resourcePath resource path to be persisted.
      */
-    public void persist(Object dataObj, String path) throws RegistryException {
+    public void persist(Object dataObj, String resourcePath) throws 
RegistryException {
        
         try {
+               if (registryService.resourceExists(resourcePath)) {
+                throw new AutoScalerException("Resource already exist in the 
registry: " + resourcePath);
+            }
             registryService.beginTransaction();
 
             Resource nodeResource = registryService.newResource();
-
             nodeResource.setContent(Serializer.serializeToByteArray(dataObj)); 
           
-
-            //registryService.put(AutoScalerConstants.AUTOSCALER_RESOURCE + 
AutoScalerConstants.DATA_RESOURCE + "/"+id, nodeResource);
-            registryService.put(path, nodeResource);
+            
+            registryService.put(resourcePath, nodeResource);
             registryService.commitTransaction();
             
             if(log.isDebugEnabled()){
                
             }
-
+        
         } catch (Exception e) {
             String msg = "Failed to persist the cloud controller data in 
registry.";
             registryService.rollbackTransaction();
             log.error(msg, e);
-            //throw new CloudControllerException(msg, e);
+            throw new AutoScalerException(msg, e);
 
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ee705646/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java
index da96b74..462f39f 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/util/AutoScalerConstants.java
@@ -34,6 +34,6 @@ public final class AutoScalerConstants {
         * Persistence
         */
        public static final String AUTOSCALER_RESOURCE = "/autoscaler";
-       public static final String DATA_RESOURCE = "/data";
+       public static final String PARTITION_RESOURCE = "/partitions";
        
 }

Reply via email to