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