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/04/30 12:09:26 UTC

git commit: maing remove-on-termination not mandatory

Repository: incubator-stratos
Updated Branches:
  refs/heads/master 0b8613377 -> a2f393338


maing remove-on-termination not mandatory

Signed-off-by: Udara Liyanage <ud...@wso2.com>


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

Branch: refs/heads/master
Commit: a2f393338448e229e64dc5a61cad5cce1ded1ad3
Parents: 0b86133
Author: Udara Liyanage <ud...@wso2.com>
Authored: Wed Apr 30 17:19:24 2014 +0000
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Wed Apr 30 19:33:47 2014 +0000

----------------------------------------------------------------------
 .../impl/CloudControllerServiceImpl.java        | 54 ++++++++++++--------
 .../controller/util/CloudControllerUtil.java    |  4 +-
 2 files changed, 36 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/a2f39333/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 b8386d5..4eb0ab3 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
@@ -20,7 +20,7 @@ package org.apache.stratos.cloud.controller.impl;
 
 import com.google.common.collect.ImmutableSet;
 import com.google.common.net.InetAddresses;
-
+import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stratos.cloud.controller.concurrent.PartitionValidatorCallable;
@@ -222,7 +222,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
     @Override
     public MemberContext startInstance(MemberContext memberContext) throws
         UnregisteredCartridgeException, InvalidIaasProviderException {
-    	
+
     	if(log.isDebugEnabled()) {
     		log.debug("CloudControllerServiceImpl:startInstance");
     	}
@@ -347,11 +347,11 @@ public class CloudControllerServiceImpl implements CloudControllerService {
             if(ctxt.isVolumeRequired()) {
             	if (ctxt.getVolumes() != null) {
             		for (Volume volume : ctxt.getVolumes()) {
-						
+
             			if (volume.getId() == null) {
             				// create a new volume
             				createVolumeAndSetInClusterContext(volume, iaasProvider);
-            			} 
+            			}
 					}
             	}
             }
@@ -381,7 +381,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
                 if(log.isDebugEnabled()) {
                     log.debug("Node id was set. "+memberContext.toString());
                 }
-                
+
                 // attach volumes
 			if (ctxt.isVolumeRequired()) {
 				// remove region prefix
@@ -397,7 +397,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
 						} catch (Exception e) {
 							// continue without throwing an exception, since
 							// there is an instance already running
-							log.error("Attaching Volume to Instance [ "
+							log.error("Attaching Volume " + volume.getId() + " to Instance [ "
 									+ instanceId + " ] failed!", e);
 						}
 					}
@@ -781,7 +781,6 @@ public class CloudControllerServiceImpl implements CloudControllerService {
 		ClusterContext clusterCtxt = dataHolder.getClusterContext(clusterId);
 		if (clusterCtxt.getVolumes() != null) {
 			for (Volume volume : clusterCtxt.getVolumes()) {
-				
 				try {
 					String volumeId = volume.getId();
 					if (volumeId == null) {
@@ -885,18 +884,26 @@ public class CloudControllerServiceImpl implements CloudControllerService {
         	Persistence persistenceData = cartridge.getPersistence();
         	
         	if(persistenceData != null) {
-        		Volume[] volumes = persistenceData.getVolumes();
+        		Volume[] cartridge_volumes = persistenceData.getVolumes();
         		
         		property = props.getProperty(Constants.SHOULD_DELETE_VOLUME);
-        		property = props.getProperty(Constants.VOLUME_SIZE);
-        		
-        		for (Volume volume : volumes) {
-        			int volumeSize = property != null ? Integer.parseInt(property) : volume.getSize();
-        			boolean shouldDeleteVolume = property != null ? Boolean.parseBoolean(property) : volume.isRemoveOntermination();
-        			volume.setSize(volumeSize);
-        			volume.setRemoveOntermination(shouldDeleteVolume);
+        		String property_volume_zize = props.getProperty(Constants.VOLUME_SIZE);
+
+                List<Volume> cluster_volume_list = new LinkedList<Volume>();
+
+        		for (Volume volume : cartridge_volumes) {
+        			int volumeSize = StringUtils.isNotEmpty(property_volume_zize) ? Integer.parseInt(property_volume_zize) : volume.getSize();
+        			boolean shouldDeleteVolume = StringUtils.isNotEmpty(property) ? Boolean.parseBoolean(property) : volume.isRemoveOntermination();
+
+                    Volume volume_cluster = new Volume();
+                    volume_cluster.setSize(volumeSize);
+                    volume_cluster.setRemoveOntermination(shouldDeleteVolume);
+                    volume_cluster.setDevice(volume.getDevice());
+                    volume_cluster.setIaasType(volume.getIaasType());
+                    volume_cluster.setMappingPath(volume.getMappingPath());
+                    cluster_volume_list.add(volume_cluster);
 				}
-        		ctxt.setVolumes(volumes);
+        		ctxt.setVolumes(cluster_volume_list.toArray(new Volume[cluster_volume_list.size()]));
         	} else {
         		// if we cannot find necessary data, we would not consider 
         		// this as a volume required instance.
@@ -1024,14 +1031,19 @@ public class CloudControllerServiceImpl implements CloudControllerService {
                          for (Volume volume : ctxt.getVolumes()) {
                             if(volume.getId() != null) {
                                 String iaasType = volume.getIaasType();
-                                Iaas iaas = dataHolder.getIaasProvider(iaasType).getIaas();
+                                //Iaas iaas = dataHolder.getIaasProvider(iaasType).getIaas();
+                                Iaas iaas = cartridge.getIaasProvider(iaasType).getIaas();
                                 if(iaas != null) {
                                     try {
-                                    // delete the volume
-                                    iaas.deleteVolume(volume.getId());
+                                    // delete the volumes if remove on unsubscription is true.
+                                    if(volume.isRemoveOntermination())
+                                    {
+                                        iaas.deleteVolume(volume.getId());
+                                        volume.setId(null);
+                                    }
                                     } catch(Exception ignore) {
-                                        if(log.isDebugEnabled()) {
-                                            log.debug(ignore);
+                                        if(log.isErrorEnabled()) {
+                                            log.error("Error while deleting volume [id] "+ volume.getId(), ignore);
                                         }
                                     }
                                 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/a2f39333/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
index a213adf..e770fd1 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/util/CloudControllerUtil.java
@@ -296,7 +296,9 @@ public class CloudControllerUtil {
         if (properties != null && properties.getProperties() != null) {
 
             for (org.apache.stratos.cloud.controller.pojo.Property property : properties.getProperties()) {
-                javaProps.put(property.getName(), property.getValue());
+                if(property.getValue() != null){
+                    javaProps.put(property.getName(), property.getValue());
+                }
             }
 
         }