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);
