Updated Branches: refs/heads/simulatorStorageFixes a6bb56b10 -> a2ec1daf8
the plugin better not touch database Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/a2ec1daf Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/a2ec1daf Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/a2ec1daf Branch: refs/heads/simulatorStorageFixes Commit: a2ec1daf8422d0a1c789e331a3261b05a4501060 Parents: a6bb56b Author: Edison Su <[email protected]> Authored: Thu Jun 27 17:23:16 2013 -0700 Committer: Edison Su <[email protected]> Committed: Thu Jun 27 17:23:16 2013 -0700 ---------------------------------------------------------------------- .../storage/image/BaseImageStoreDriverImpl.java | 6 +- .../driver/SimulatorImageStoreDriverImpl.java | 89 ++++++-------------- 2 files changed, 30 insertions(+), 65 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a2ec1daf/engine/storage/src/org/apache/cloudstack/storage/image/BaseImageStoreDriverImpl.java ---------------------------------------------------------------------- diff --git a/engine/storage/src/org/apache/cloudstack/storage/image/BaseImageStoreDriverImpl.java b/engine/storage/src/org/apache/cloudstack/storage/image/BaseImageStoreDriverImpl.java index 44933f7..6a140bd 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/image/BaseImageStoreDriverImpl.java +++ b/engine/storage/src/org/apache/cloudstack/storage/image/BaseImageStoreDriverImpl.java @@ -68,7 +68,7 @@ public abstract class BaseImageStoreDriverImpl implements ImageStoreDriver { return null; } - class CreateContext<T> extends AsyncRpcContext<T> { + protected class CreateContext<T> extends AsyncRpcContext<T> { final DataObject data; public CreateContext(AsyncCompletionCallback<T> callback, DataObject data) { @@ -92,7 +92,7 @@ public abstract class BaseImageStoreDriverImpl implements ImageStoreDriver { } } - protected Void createTemplateAsyncCallback(AsyncCallbackDispatcher<BaseImageStoreDriverImpl, DownloadAnswer> callback, + protected Void createTemplateAsyncCallback(AsyncCallbackDispatcher<? extends BaseImageStoreDriverImpl, DownloadAnswer> callback, CreateContext<CreateCmdResult> context) { DownloadAnswer answer = callback.getResult(); DataObject obj = context.data; @@ -139,7 +139,7 @@ public abstract class BaseImageStoreDriverImpl implements ImageStoreDriver { return null; } - protected Void createVolumeAsyncCallback(AsyncCallbackDispatcher<BaseImageStoreDriverImpl, DownloadAnswer> callback, + protected Void createVolumeAsyncCallback(AsyncCallbackDispatcher<? extends BaseImageStoreDriverImpl, DownloadAnswer> callback, CreateContext<CreateCmdResult> context) { DownloadAnswer answer = callback.getResult(); DataObject obj = context.data; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a2ec1daf/plugins/storage/image/simulator/src/org/apache/cloudstack/storage/datastore/driver/SimulatorImageStoreDriverImpl.java ---------------------------------------------------------------------- diff --git a/plugins/storage/image/simulator/src/org/apache/cloudstack/storage/datastore/driver/SimulatorImageStoreDriverImpl.java b/plugins/storage/image/simulator/src/org/apache/cloudstack/storage/datastore/driver/SimulatorImageStoreDriverImpl.java index 8816fc2..fa2296b 100644 --- a/plugins/storage/image/simulator/src/org/apache/cloudstack/storage/datastore/driver/SimulatorImageStoreDriverImpl.java +++ b/plugins/storage/image/simulator/src/org/apache/cloudstack/storage/datastore/driver/SimulatorImageStoreDriverImpl.java @@ -48,6 +48,7 @@ import org.apache.cloudstack.storage.to.VolumeObjectTO; import javax.inject.Inject; import java.util.Date; +import java.util.UUID; public class SimulatorImageStoreDriverImpl extends BaseImageStoreDriverImpl { @@ -69,14 +70,7 @@ public class SimulatorImageStoreDriverImpl extends BaseImageStoreDriverImpl { return nfsTO; } - class CreateContext<T> extends AsyncRpcContext<T> { - final DataObject data; - public CreateContext(AsyncCompletionCallback<T> callback, DataObject data) { - super(callback); - this.data = data; - } - } public String createEntityExtractUrl(DataStore store, String installPath, Storage.ImageFormat format) { return null; @@ -84,67 +78,38 @@ public class SimulatorImageStoreDriverImpl extends BaseImageStoreDriverImpl { @Override public void createAsync(DataObject data, AsyncCompletionCallback<CreateCmdResult> callback) { - CreateContext<CreateCmdResult> context = new CreateContext<CreateCmdResult>(callback, data); - AsyncCallbackDispatcher<SimulatorImageStoreDriverImpl, DownloadAnswer> caller = AsyncCallbackDispatcher - .create(this); - caller.setContext(context); if (data.getType() == DataObjectType.TEMPLATE) { - this.createTemplateAsyncCallback(caller, context); + this.createTemplate(data, callback); } else if (data.getType() == DataObjectType.VOLUME) { - this.createVolumeAsyncCallback(caller, context); + this.createVolume(data, callback); } } - protected Void createTemplateAsyncCallback(AsyncCallbackDispatcher<SimulatorImageStoreDriverImpl, DownloadAnswer> callback, - CreateContext<CreateCmdResult> context) { - DataObject obj = context.data; - DataStore store = obj.getDataStore(); - TemplateObjectTO templateTO = (TemplateObjectTO)context.data.getTO(); - - TemplateDataStoreVO tmpltStoreVO = _templateStoreDao.findByStoreTemplate(store.getId(), obj.getId()); - if (tmpltStoreVO != null) { - TemplateDataStoreVO updateBuilder = _templateStoreDao.createForUpdate(); - updateBuilder.setDownloadPercent(100); - updateBuilder.setDownloadState(VMTemplateStorageResourceAssoc.Status.DOWNLOADED); - updateBuilder.setLastUpdated(new Date()); - updateBuilder.setSize(new Long(5 * 1024L * 1024L)); - updateBuilder.setPhysicalSize(new Long(5 * 1024L * 1024L)); - updateBuilder.setDownloadUrl(templateTO.getOrigUrl()); - updateBuilder.setInstallPath(templateTO.getPath()); - updateBuilder.setTemplateId(templateTO.getId()); - updateBuilder.setState(ObjectInDataStoreStateMachine.State.Ready); - _templateStoreDao.update(tmpltStoreVO.getId(), updateBuilder); - // update size in vm_template table - VMTemplateVO tmlptUpdater = _templateDao.createForUpdate(); - tmlptUpdater.setSize(new Long(5 * 1024l * 1024l)); - _templateDao.update(obj.getId(), tmlptUpdater); - } - return null; + protected void createTemplate(DataObject data, AsyncCompletionCallback<CreateCmdResult> callback) { + CreateContext<CreateCmdResult> context = new CreateContext<CreateCmdResult>(callback, data); + AsyncCallbackDispatcher<SimulatorImageStoreDriverImpl, DownloadAnswer> caller = AsyncCallbackDispatcher + .create(this); + caller.setContext(context); + caller.setCallback(caller.getTarget().createTemplateAsyncCallback(null, null)); + String path = UUID.randomUUID().toString(); + Long size = new Long(5 * 1024L * 1024L); + DownloadAnswer answer = new DownloadAnswer(null, 100, null, VMTemplateStorageResourceAssoc.Status.DOWNLOADED, + path, path, size, size, null); + caller.complete(answer); + return; } - protected Void createVolumeAsyncCallback(AsyncCallbackDispatcher<SimulatorImageStoreDriverImpl, DownloadAnswer> callback, - CreateContext<CreateCmdResult> context) { - DataObject obj = context.data; - DataStore store = obj.getDataStore(); - VolumeObjectTO volumeTO = (VolumeObjectTO) context.data.getTO(); - - VolumeDataStoreVO volStoreVO = _volumeStoreDao.findByStoreVolume(store.getId(), obj.getId()); - if (volStoreVO != null) { - VolumeDataStoreVO updateBuilder = _volumeStoreDao.createForUpdate(); - updateBuilder.setDownloadPercent(100); - updateBuilder.setDownloadState(VMTemplateStorageResourceAssoc.Status.DOWNLOADED); - updateBuilder.setLastUpdated(new Date()); - updateBuilder.setInstallPath(volumeTO.getPath()); - updateBuilder.setVolumeId(volumeTO.getVolumeId()); - updateBuilder.setSize(volumeTO.getSize()); - updateBuilder.setPhysicalSize(volumeTO.getSize()); - updateBuilder.setState(ObjectInDataStoreStateMachine.State.Ready); - _volumeStoreDao.update(volStoreVO.getId(), updateBuilder); - // update size in volume table - VolumeVO volUpdater = _volumeDao.createForUpdate(); - volUpdater.setSize(volumeTO.getSize()); - _volumeDao.update(obj.getId(), volUpdater); - } - return null; + protected void createVolume(DataObject data, AsyncCompletionCallback<CreateCmdResult> callback) { + CreateContext<CreateCmdResult> context = new CreateContext<CreateCmdResult>(callback, data); + AsyncCallbackDispatcher<SimulatorImageStoreDriverImpl, DownloadAnswer> caller = AsyncCallbackDispatcher + .create(this); + caller.setContext(context); + caller.setCallback(caller.getTarget().createVolumeAsyncCallback(null, null)); + String path = UUID.randomUUID().toString(); + Long size = new Long(5 * 1024L * 1024L); + DownloadAnswer answer = new DownloadAnswer(null, 100, null, VMTemplateStorageResourceAssoc.Status.DOWNLOADED, + path, path, size, size, null); + caller.complete(answer); + return; } } \ No newline at end of file
