add persistance mapping payload and volume attachement to ec2

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

Branch: refs/heads/master
Commit: b94f586c8169bb1bfe883e193d18b30f361ea3f5
Parents: 0d08123
Author: Udara Liyanage <[email protected]>
Authored: Mon Jan 13 10:17:03 2014 -0500
Committer: Udara Liyanage <[email protected]>
Committed: Mon Jan 13 10:17:03 2014 -0500

----------------------------------------------------------------------
 .../impl/CloudControllerServiceImpl.java        | 30 ++++++++++++++++++++
 1 file changed, 30 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/b94f586c/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index 6e91035..ce3eae9 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@ -41,6 +41,7 @@ import 
org.apache.stratos.cloud.controller.validate.interfaces.PartitionValidato
 import org.jclouds.compute.ComputeService;
 import org.jclouds.compute.domain.NodeMetadata;
 import org.jclouds.compute.domain.Template;
+import org.jclouds.ec2.compute.options.EC2TemplateOptions;
 import org.wso2.carbon.ntask.common.TaskException;
 import org.wso2.carbon.ntask.core.TaskInfo;
 import org.wso2.carbon.ntask.core.TaskInfo.TriggerInfo;
@@ -264,6 +265,20 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
             addToPayload(payload, "NETWORK_PARTITION_ID", 
memberContext.getNetworkPartitionId());
             addToPayload(payload, "PARTITION_ID", partitionId);
             
+            StringBuilder persistancePayload = new StringBuilder();            
+            if(isPersistanceMappingAvailable(cartridge)){
+               int i=0;
+               for(; i<cartridge.getPeristanceMappings().size()-1;i++){
+                       if(log.isDebugEnabled()){
+                               log.debug("Adding persistance mapping " + 
cartridge.getPeristanceMappings().get(i).toString());
+                       }
+                       
persistancePayload.append(cartridge.getPeristanceMappings().get(i).getDevice());
+                       persistancePayload.append("|");
+               }
+               
persistancePayload.append(cartridge.getPeristanceMappings().get(i).getDevice());
+            }
+            addToPayload(payload, "PERSISTANCE_MAPPING", 
persistancePayload.toString());
+            
             if (log.isDebugEnabled()) {
                 log.debug("Payload: " + payload.toString());
             }
@@ -291,6 +306,17 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
             // get the pre built ComputeService from provider or region or 
zone or host
             computeService = iaasProvider.getComputeService();
             template = iaasProvider.getTemplate();
+            
+            // set volume mappings
+            if(isPersistanceMappingAvailable(cartridge)){
+               Iterator< PersistanceMapping> it = 
cartridge.getPeristanceMappings().iterator();
+               while(it.hasNext()){                            
+                       PersistanceMapping maping = it.next();
+                       template.getOptions().as(EC2TemplateOptions.class)
+                       .mapEBSSnapshotToDeviceName(maping.getDevice(), 
maping.getSnapshotId(), maping.getSize(), maping.isRemoveOntermination());
+               }
+               
+            }
 
             if (template == null) {
                 String msg =
@@ -347,6 +373,10 @@ public class CloudControllerServiceImpl implements 
CloudControllerService {
 
     }
 
+       private boolean isPersistanceMappingAvailable(Cartridge cartridge) {
+               return cartridge.getPeristanceMappings() != null && 
!cartridge.getPeristanceMappings().isEmpty();
+       }
+
        private void addToPayload(StringBuilder payload, String name, String 
value) {
            payload.append(",");
         payload.append(name+"=" + value);

Reply via email to