From eb93efdaa4f076a349b72542a295dc6808a2ffbe Mon Sep 17 00:00:00 2001 From: Min Chen Date: Thu, 30 May 2013 14:51:03 -0700 Subject: [PATCH] Add convenient delete methods in DataObject to delete dangling data object. --- .../engine/subsystem/api/storage/DataObject.java | 2 ++ .../storage/image/store/TemplateObject.java | 13 +++++++++++-- .../cloudstack/storage/snapshot/SnapshotObject.java | 7 +++++++ .../storage/datastore/PrimaryDataStoreImpl.java | 5 +++-- .../cloudstack/storage/volume/VolumeObject.java | 8 ++++++++ 5 files changed, 31 insertions(+), 4 deletions(-) diff --git a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataObject.java b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataObject.java index ef8798951c9..0cd21119a9b 100644 --- a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataObject.java +++ b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataObject.java @@ -38,6 +38,8 @@ public interface DataObject { // public DiskFormat getFormat(); public String getUuid(); + boolean delete(); + public void processEvent(ObjectInDataStoreStateMachine.Event event); public void processEvent(ObjectInDataStoreStateMachine.Event event, Answer answer); diff --git a/engine/storage/image/src/org/apache/cloudstack/storage/image/store/TemplateObject.java b/engine/storage/image/src/org/apache/cloudstack/storage/image/store/TemplateObject.java index e4be6277eac..9957791f061 100644 --- a/engine/storage/image/src/org/apache/cloudstack/storage/image/store/TemplateObject.java +++ b/engine/storage/image/src/org/apache/cloudstack/storage/image/store/TemplateObject.java @@ -125,12 +125,12 @@ public class TemplateObject implements TemplateInfo { } /* - * + * * // If the template that was passed into this allocator is not * installed in the storage pool, // add 3 * (template size on secondary * storage) to the running total VMTemplateHostVO templateHostVO = * _storageMgr.findVmTemplateHost(templateForVmCreation.getId(), null); - * + * * if (templateHostVO == null) { VMTemplateSwiftVO templateSwiftVO = * _swiftMgr.findByTmpltId(templateForVmCreation.getId()); if * (templateSwiftVO != null) { long templateSize = @@ -395,4 +395,13 @@ public class TemplateObject implements TemplateInfo { return this.imageVO.getDomainId(); } + @Override + public boolean delete() { + if (dataStore != null) { + return dataStore.delete(this); + } + return true; + } + + } diff --git a/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotObject.java b/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotObject.java index 6aee3ea9503..bd145733afc 100644 --- a/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotObject.java +++ b/engine/storage/snapshot/src/org/apache/cloudstack/storage/snapshot/SnapshotObject.java @@ -284,4 +284,11 @@ public class SnapshotObject implements SnapshotInfo { } + @Override + public boolean delete() { + if (store != null) { + return store.delete(this); + } + return true; + } } diff --git a/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreImpl.java b/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreImpl.java index 6d380af668f..1fc82510b50 100644 --- a/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreImpl.java +++ b/engine/storage/volume/src/org/apache/cloudstack/storage/datastore/PrimaryDataStoreImpl.java @@ -252,8 +252,9 @@ public class PrimaryDataStoreImpl implements PrimaryDataStore { @Override public boolean delete(DataObject obj) { - // TODO Auto-generated method stub - return false; + //TODO: clean up through driver + objectInStoreMgr.delete(obj); + return true; } @Override 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 1e2f00044bb..963015c7945 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 @@ -505,4 +505,12 @@ public class VolumeObject implements VolumeInfo { public ImageFormat getFormat() { return this.volumeVO.getFormat(); } + + @Override + public boolean delete() { + if (dataStore != null) { + return dataStore.delete(this); + } + return true; + } }