CLOUDSTACK-4074: if hypervisor doesn't return size of volume/template, don't 
update it into db


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

Branch: refs/heads/master
Commit: a8ee45de7cb55f26fcee5a2696ab3889423e86c2
Parents: ec89e23
Author: Edison Su <[email protected]>
Authored: Mon Aug 5 16:21:15 2013 -0700
Committer: Min Chen <[email protected]>
Committed: Tue Aug 6 15:53:57 2013 -0700

----------------------------------------------------------------------
 .../src/org/apache/cloudstack/storage/to/VolumeObjectTO.java | 4 ++--
 .../org/apache/cloudstack/storage/volume/VolumeObject.java   | 8 ++++++--
 .../com/cloud/storage/resource/VmwareStorageProcessor.java   | 5 ++---
 3 files changed, 10 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a8ee45de/core/src/org/apache/cloudstack/storage/to/VolumeObjectTO.java
----------------------------------------------------------------------
diff --git a/core/src/org/apache/cloudstack/storage/to/VolumeObjectTO.java 
b/core/src/org/apache/cloudstack/storage/to/VolumeObjectTO.java
index 9f466ae..5685fad 100644
--- a/core/src/org/apache/cloudstack/storage/to/VolumeObjectTO.java
+++ b/core/src/org/apache/cloudstack/storage/to/VolumeObjectTO.java
@@ -30,7 +30,7 @@ public class VolumeObjectTO implements DataTO {
     private Volume.Type volumeType;
     private DataStoreTO dataStore;
     private String name;
-    private long size;
+    private Long size;
     private String path;
     private Long volumeId;
     private String vmName;
@@ -108,7 +108,7 @@ public class VolumeObjectTO implements DataTO {
         return this.name;
     }
 
-    public long getSize() {
+    public Long getSize() {
         return this.size;
     }
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a8ee45de/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeObject.java
----------------------------------------------------------------------
diff --git 
a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeObject.java
 
b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeObject.java
index de63d7d..404e3b2 100644
--- 
a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeObject.java
+++ 
b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeObject.java
@@ -564,7 +564,9 @@ public class VolumeObject implements VolumeInfo {
                     VolumeVO vol = this.volumeDao.findById(this.getId());
                     VolumeObjectTO newVol = (VolumeObjectTO) 
cpyAnswer.getNewData();
                     vol.setPath(newVol.getPath());
-                    vol.setSize(newVol.getSize());
+                    if (newVol.getSize() != null) {
+                        vol.setSize(newVol.getSize());
+                    }
                     vol.setPoolId(this.getDataStore().getId());
                     volumeDao.update(vol.getId(), vol);
                 } else if (answer instanceof CreateObjectAnswer) {
@@ -572,7 +574,9 @@ public class VolumeObject implements VolumeInfo {
                     VolumeObjectTO newVol = (VolumeObjectTO) 
createAnswer.getData();
                     VolumeVO vol = this.volumeDao.findById(this.getId());
                     vol.setPath(newVol.getPath());
-                    vol.setSize(newVol.getSize());
+                    if (newVol.getSize() != null) {
+                        vol.setSize(newVol.getSize());
+                    }
                     vol.setPoolId(this.getDataStore().getId());
                     volumeDao.update(vol.getId(), vol);
                 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a8ee45de/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
----------------------------------------------------------------------
diff --git 
a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
 
b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
index cc1a168..ffd192e 100644
--- 
a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
+++ 
b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareStorageProcessor.java
@@ -943,7 +943,7 @@ public class VmwareStorageProcessor implements 
StorageProcessor {
 
             TemplateObjectTO newTemplate = new TemplateObjectTO();
             newTemplate.setPath(result.first());
-            newTemplate.setSize(result.second());
+            newTemplate.setSize(result.third());
             newTemplate.setFormat(ImageFormat.OVA);
             return new CopyCmdAnswer(newTemplate);
         } catch (Throwable e) {
@@ -1651,12 +1651,11 @@ public class VmwareStorageProcessor implements 
StorageProcessor {
             }
 
             DatastoreMO primaryDsMo = new DatastoreMO(hyperHost.getContext(), 
morPrimaryDs);
-            Long size = restoreVolumeFromSecStorage(hyperHost, primaryDsMo,
+            restoreVolumeFromSecStorage(hyperHost, primaryDsMo,
                     newVolumeName, secondaryStorageUrl, backupPath, 
backedUpSnapshotUuid);
 
             VolumeObjectTO newVol = new VolumeObjectTO();
             newVol.setPath(newVolumeName);
-            newVol.setSize(size);
             return new CopyCmdAnswer(newVol);
         } catch (Throwable e) {
             if (e instanceof RemoteException) {

Reply via email to