From e40042b554136239feb1d29e049c70fe2a2a9fd7 Mon Sep 17 00:00:00 2001 From: Edison Su Date: Wed, 2 Jan 2013 18:42:48 -0800 Subject: [PATCH] refactor volumeservice api --- .../storage/volume/VolumeEntityImpl.java | 2 +- .../storage/volume/VolumeService.java | 4 +-- .../storage/volume/VolumeServiceImpl.java | 26 +++++++++++-------- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/engine/storage/src/org/apache/cloudstack/storage/volume/VolumeEntityImpl.java b/engine/storage/src/org/apache/cloudstack/storage/volume/VolumeEntityImpl.java index f9900adc766..1a8d7bd0a9e 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/volume/VolumeEntityImpl.java +++ b/engine/storage/src/org/apache/cloudstack/storage/volume/VolumeEntityImpl.java @@ -177,7 +177,7 @@ public class VolumeEntityImpl implements VolumeEntity { @Override public void destroy() { - vs.deleteVolume(volumeInfo); + //vs.deleteVolume(volumeInfo); } @Override diff --git a/engine/storage/src/org/apache/cloudstack/storage/volume/VolumeService.java b/engine/storage/src/org/apache/cloudstack/storage/volume/VolumeService.java index f6f77b95fd6..6d5118a469b 100644 --- a/engine/storage/src/org/apache/cloudstack/storage/volume/VolumeService.java +++ b/engine/storage/src/org/apache/cloudstack/storage/volume/VolumeService.java @@ -60,7 +60,7 @@ public interface VolumeService { * @return * @throws ConcurrentOperationException */ - boolean deleteVolume(VolumeInfo volume); + void deleteVolumeAsync(VolumeInfo volume, AsyncCompletionCallback callback); /** * @@ -87,5 +87,5 @@ public interface VolumeService { VolumeEntity getVolumeEntity(long volumeId); void createVolumeFromTemplateAsync(VolumeInfo volume, long dataStoreId, VolumeDiskType diskType, TemplateInfo template, - AsyncCompletionCallback callback); + AsyncCompletionCallback callback); } 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 f57b428ce4a..815033a477a 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 @@ -115,8 +115,8 @@ public class VolumeServiceImpl implements VolumeService { @DB @Override - public boolean deleteVolume(VolumeInfo volumeId) { - return true; + public void deleteVolumeAsync(VolumeInfo volume, AsyncCompletionCallback callback) { + } @Override @@ -189,7 +189,7 @@ public class VolumeServiceImpl implements VolumeService { } @DB - protected void createBaseImageAsync(VolumeInfo volume, PrimaryDataStore dataStore, TemplateInfo template, AsyncCompletionCallback callback) { + protected void createBaseImageAsync(VolumeInfo volume, PrimaryDataStore dataStore, TemplateInfo template, AsyncCompletionCallback callback) { TemplateOnPrimaryDataStoreObject templateOnPrimaryStoreObj = (TemplateOnPrimaryDataStoreObject) templatePrimaryStoreMgr.createTemplateOnPrimaryDataStore(template, dataStore); templateOnPrimaryStoreObj.stateTransit(TemplateOnPrimaryDataStoreStateMachine.Event.CreateRequested); templateOnPrimaryStoreObj.updateStatus(Status.CREATING); @@ -204,7 +204,7 @@ public class VolumeServiceImpl implements VolumeService { templateOnPrimaryStoreObj.updateStatus(Status.DOWNLOAD_IN_PROGRESS); - CreateBaseImageContext context = new CreateBaseImageContext(callback, volume, dataStore, templateOnPrimaryStoreObj); + CreateBaseImageContext context = new CreateBaseImageContext(callback, volume, dataStore, templateOnPrimaryStoreObj); AsyncCallbackDispatcher caller = AsyncCallbackDispatcher.create(this); caller.setCallback(caller.getTarget().createBaseImageCallback(null, null)) .setContext(context); @@ -213,7 +213,7 @@ public class VolumeServiceImpl implements VolumeService { } @DB - public Object createBaseImageCallback(AsyncCallbackDispatcher callback, CreateBaseImageContext context) { + public Object createBaseImageCallback(AsyncCallbackDispatcher callback, CreateBaseImageContext context) { CommandResult result = callback.getResult(); TemplateOnPrimaryDataStoreObject templateOnPrimaryStoreObj = context.getTemplate(); if (result.isSuccess()) { @@ -222,7 +222,7 @@ public class VolumeServiceImpl implements VolumeService { templateOnPrimaryStoreObj.stateTransit(TemplateOnPrimaryDataStoreStateMachine.Event.OperationFailed); } - AsyncCompletionCallback parentCaller = context.getParentCallback(); + AsyncCompletionCallback parentCaller = context.getParentCallback(); VolumeInfo volume = context.getVolume(); PrimaryDataStore pd = context.getDataStore(); @@ -243,7 +243,7 @@ public class VolumeServiceImpl implements VolumeService { } @DB - protected void createVolumeFromBaseImageAsync(VolumeInfo volume, TemplateOnPrimaryDataStoreInfo templateOnPrimaryStore, PrimaryDataStore pd, AsyncCompletionCallback callback) { + protected void createVolumeFromBaseImageAsync(VolumeInfo volume, TemplateOnPrimaryDataStoreInfo templateOnPrimaryStore, PrimaryDataStore pd, AsyncCompletionCallback callback) { VolumeObject vo = (VolumeObject) volume; try { vo.stateTransit(Volume.Event.CreateRequested); @@ -251,7 +251,7 @@ public class VolumeServiceImpl implements VolumeService { throw new CloudRuntimeException(e.toString()); } - CreateVolumeFromBaseImageContext context = new CreateVolumeFromBaseImageContext(callback, vo); + CreateVolumeFromBaseImageContext context = new CreateVolumeFromBaseImageContext(callback, vo); AsyncCallbackDispatcher caller = AsyncCallbackDispatcher.create(this); caller.setCallback(caller.getTarget().createVolumeFromBaseImageCallback(null, null)) .setContext(context); @@ -260,22 +260,26 @@ public class VolumeServiceImpl implements VolumeService { } @DB - public Object createVolumeFromBaseImageCallback(AsyncCallbackDispatcher callback, CreateVolumeFromBaseImageContext context) { + public Object createVolumeFromBaseImageCallback(AsyncCallbackDispatcher callback, CreateVolumeFromBaseImageContext context) { VolumeObject vo = context.getVolumeObject(); CommandResult result = callback.getResult(); + VolumeApiResult volResult = new VolumeApiResult(vo); if (result.isSuccess()) { vo.stateTransit(Volume.Event.OperationSucceeded); } else { vo.stateTransit(Volume.Event.OperationFailed); + volResult.setResult(result.getResult()); } + - AsyncCompletionCallback parentCall = context.getParentCallback(); + AsyncCompletionCallback parentCall = context.getParentCallback(); + parentCall.complete(volResult); return null; } @DB @Override - public void createVolumeFromTemplateAsync(VolumeInfo volume, long dataStoreId, VolumeDiskType diskType, TemplateInfo template, AsyncCompletionCallback callback) { + public void createVolumeFromTemplateAsync(VolumeInfo volume, long dataStoreId, VolumeDiskType diskType, TemplateInfo template, AsyncCompletionCallback callback) { PrimaryDataStore pd = dataStoreMgr.getPrimaryDataStore(dataStoreId); TemplateOnPrimaryDataStoreInfo templateOnPrimaryStore = pd.getTemplate(template); if (templateOnPrimaryStore == null) {