bug CS-15200: Introducing state transition when volume is getting copied from secondary storage and it is put into Creating state Reviewed-by: Kishan
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/3c68f1f8 Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/3c68f1f8 Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/3c68f1f8 Branch: refs/heads/vpc Commit: 3c68f1f8e842002a839a76003a86ddfe482d3f5d Parents: 6fd6d79 Author: Nitin Mehta <[email protected]> Authored: Fri Aug 3 17:18:13 2012 +0530 Committer: Nitin Mehta <[email protected]> Committed: Fri Aug 3 17:18:13 2012 +0530 ---------------------------------------------------------------------- api/src/com/cloud/storage/Volume.java | 7 ++++--- .../src/com/cloud/storage/StorageManagerImpl.java | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/3c68f1f8/api/src/com/cloud/storage/Volume.java ---------------------------------------------------------------------- diff --git a/api/src/com/cloud/storage/Volume.java b/api/src/com/cloud/storage/Volume.java index bd7e421..6e8e48e 100755 --- a/api/src/com/cloud/storage/Volume.java +++ b/api/src/com/cloud/storage/Volume.java @@ -36,7 +36,7 @@ public interface Volume extends ControlledEntity, BasedOn, StateObject<Volume.St Snapshotting("There is a snapshot created on this volume, not backed up to secondary storage yet"), Expunging("The volume is being expunging"), Destroy("The volume is destroyed, and can't be recovered."), - UploadOp ("The volume upload operation is in progress"); + UploadOp ("The volume upload operation is in progress or in short the volume is on secondary storage"); String _description; @@ -61,9 +61,10 @@ public interface Volume extends ControlledEntity, BasedOn, StateObject<Volume.St s_fsm.addTransition(Creating, Event.OperationSucceeded, Ready); s_fsm.addTransition(Creating, Event.DestroyRequested, Destroy); s_fsm.addTransition(Creating, Event.CreateRequested, Creating); - s_fsm.addTransition(Allocated, Event.UploadRequested, UploadOp); + s_fsm.addTransition(Allocated, Event.UploadRequested, UploadOp); + s_fsm.addTransition(UploadOp, Event.CopyRequested, Creating);// CopyRequested for volume from sec to primary storage s_fsm.addTransition(Creating, Event.CopySucceeded, Ready); - s_fsm.addTransition(UploadOp, Event.CopySucceeded, Ready); + s_fsm.addTransition(Creating, Event.CopyFailed, UploadOp);// Copying volume from sec to primary failed. s_fsm.addTransition(UploadOp, Event.DestroyRequested, Destroy); s_fsm.addTransition(Ready, Event.DestroyRequested, Destroy); s_fsm.addTransition(Destroy, Event.ExpungingRequested, Expunging); http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/3c68f1f8/server/src/com/cloud/storage/StorageManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/storage/StorageManagerImpl.java b/server/src/com/cloud/storage/StorageManagerImpl.java index a2ea98d..c7dda00 100755 --- a/server/src/com/cloud/storage/StorageManagerImpl.java +++ b/server/src/com/cloud/storage/StorageManagerImpl.java @@ -740,7 +740,8 @@ public class StorageManagerImpl implements StorageManager, Manager, ClusterManag // Find a suitable storage to create volume on StoragePoolVO destPool = findStoragePool(dskCh, dc, pod, clusterId, vm, avoidPools); - // Copy the volume from secondary storage to the destination storage pool + // Copy the volume from secondary storage to the destination storage pool + stateTransitTo(volume, Event.CopyRequested); VolumeHostVO volumeHostVO = _volumeHostDao.findByVolumeId(volume.getId()); HostVO secStorage = _hostDao.findById(volumeHostVO.getHostId()); String secondaryStorageURL = secStorage.getStorageUrl();
