You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by mc...@apache.org on 2013/06/12 20:22:50 UTC

[41/50] [abbrv] git commit: updated refs/heads/object_store to 18aeef3

CLOUDSTACK-2286: Volume created from snapshot state is in allocated state instead of Ready state which is letting Primary storage not to increment the resources.


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

Branch: refs/heads/object_store
Commit: da5c4619c394eaedec55c277bc5e71de379d6600
Parents: e218a6d
Author: Sanjay Tripathi <sa...@citrix.com>
Authored: Fri Jun 7 17:08:31 2013 +0530
Committer: Devdeep Singh <de...@gmail.com>
Committed: Fri Jun 7 17:17:54 2013 +0530

----------------------------------------------------------------------
 .../storage/volume/VolumeServiceImpl.java       | 79 ++++++++++----------
 1 file changed, 40 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/da5c4619/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
index 7fdf6bb..54dcbd2 100644
--- a/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
+++ b/engine/storage/volume/src/org/apache/cloudstack/storage/volume/VolumeServiceImpl.java
@@ -428,51 +428,52 @@ public class VolumeServiceImpl implements VolumeService {
     public AsyncCallFuture<VolumeApiResult> createVolumeFromSnapshot(
             VolumeInfo volume, DataStore store, SnapshotInfo snapshot) {
         AsyncCallFuture<VolumeApiResult> future = new AsyncCallFuture<VolumeApiResult>();
-        
+
         try {
-        	DataObject volumeOnStore = store.create(volume);
-        	volume.processEvent(Event.CreateOnlyRequested);
-        	 CreateVolumeFromBaseImageContext<VolumeApiResult> context = new CreateVolumeFromBaseImageContext<VolumeApiResult>(null, 
-        			 (VolumeObject)volume, store, volumeOnStore, future);
-             AsyncCallbackDispatcher<VolumeServiceImpl, CopyCommandResult> caller =  AsyncCallbackDispatcher.create(this);
-             caller.setCallback(caller.getTarget().createVolumeFromSnapshotCallback(null, null))
-             .setContext(context);
-        	this.motionSrv.copyAsync(snapshot, volumeOnStore, caller);
+            DataObject volumeOnStore = store.create(volume);
+            volume = this.volFactory.getVolume(volume.getId(), store);
+            volume.processEvent(Event.CreateOnlyRequested);
+            CreateVolumeFromBaseImageContext<VolumeApiResult> context = new CreateVolumeFromBaseImageContext<VolumeApiResult>(null,
+                    (VolumeObject)volume, store, volumeOnStore, future);
+            AsyncCallbackDispatcher<VolumeServiceImpl, CopyCommandResult> caller =  AsyncCallbackDispatcher.create(this);
+            caller.setCallback(caller.getTarget().createVolumeFromSnapshotCallback(null, null))
+            .setContext(context);
+            this.motionSrv.copyAsync(snapshot, volumeOnStore, caller);
         } catch (Exception e) {
-        	s_logger.debug("create volume from snapshot failed", e);
-        	VolumeApiResult result = new VolumeApiResult(volume);
-        	result.setResult(e.toString());
-        	future.complete(result);
+            s_logger.debug("create volume from snapshot failed", e);
+            VolumeApiResult result = new VolumeApiResult(volume);
+            result.setResult(e.toString());
+            future.complete(result);
         }
-        
+
         return future;
     }
-    
-    protected Void createVolumeFromSnapshotCallback(AsyncCallbackDispatcher<VolumeServiceImpl, CopyCommandResult> callback, 
-    		CreateVolumeFromBaseImageContext<VolumeApiResult> context) {
-    	CopyCommandResult result = callback.getResult();
-    	VolumeInfo volume = context.vo;
-    	VolumeApiResult apiResult = new VolumeApiResult(volume);
-    	Event event = null;
-    	if (result.isFailed()) {
-    		apiResult.setResult(result.getResult());
-    		event = Event.OperationFailed;
-    	} else {
-    		event = Event.OperationSuccessed;
-    	}
-    	
-    	try {
-    		volume.processEvent(event);
-    	} catch (Exception e) {
-    		s_logger.debug("create volume from snapshot failed", e);
-    		apiResult.setResult(e.toString());
-    	}
-    	
-    	AsyncCallFuture<VolumeApiResult> future = context.future;
-    	future.complete(apiResult);
-    	return null;
+
+    protected Void createVolumeFromSnapshotCallback(AsyncCallbackDispatcher<VolumeServiceImpl, CopyCommandResult> callback,
+            CreateVolumeFromBaseImageContext<VolumeApiResult> context) {
+        CopyCommandResult result = callback.getResult();
+        VolumeInfo volume = context.vo;
+        VolumeApiResult apiResult = new VolumeApiResult(volume);
+        Event event = null;
+        if (result.isFailed()) {
+            apiResult.setResult(result.getResult());
+            event = Event.OperationFailed;
+        } else {
+            event = Event.OperationSuccessed;
+        }
+
+        try {
+            volume.processEvent(event);
+        } catch (Exception e) {
+            s_logger.debug("create volume from snapshot failed", e);
+            apiResult.setResult(e.toString());
+        }
+
+        AsyncCallFuture<VolumeApiResult> future = context.future;
+        future.complete(apiResult);
+        return null;
     }
-    
+
     protected VolumeVO duplicateVolumeOnAnotherStorage(Volume volume, StoragePool pool) {
         Long lastPoolId = volume.getPoolId();
         VolumeVO newVol = new VolumeVO(volume);