You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ud...@apache.org on 2014/01/13 06:08:43 UTC

[4/5] git commit: add persistance mapping payload and volume attachement to ec2

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 <ud...@wso2.com>
Authored: Mon Jan 13 10:17:03 2014 -0500
Committer: Udara Liyanage <ud...@wso2.com>
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);