CLOUDSTACK-10 Deleting a disconnected primary storage results in partial removed state
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/501d264c Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/501d264c Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/501d264c Branch: refs/heads/4.0 Commit: 501d264ce1c14381b66574c5142504a35303ac56 Parents: f69a151 Author: Mice Xia <[email protected]> Authored: Tue Sep 18 11:11:13 2012 +0800 Committer: Edison Su <[email protected]> Committed: Tue Sep 18 15:49:03 2012 -0700 ---------------------------------------------------------------------- .../src/com/cloud/storage/StorageManagerImpl.java | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/501d264c/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 83b2846..fc6fb5b 100755 --- a/server/src/com/cloud/storage/StorageManagerImpl.java +++ b/server/src/com/cloud/storage/StorageManagerImpl.java @@ -1503,7 +1503,10 @@ public class StorageManagerImpl implements StorageManager, Manager, ClusterManag s_logger.warn("Unable to find pool:" + id); throw new InvalidParameterValueException("Unable to find pool by id " + id); } - + if(sPool.getStatus() != StoragePoolStatus.Maintenance){ + s_logger.warn("Unable to delete storage id: " + id +" due to it is not in Maintenance state"); + throw new InvalidParameterValueException("Unable to delete storage due to it is not in Maintenance state, id: " + id); + } if (sPool.getPoolType().equals(StoragePoolType.LVM) || sPool.getPoolType().equals(StoragePoolType.EXT)) { s_logger.warn("Unable to delete local storage id:" + id); throw new InvalidParameterValueException("Unable to delete local storage id: " + id); @@ -1545,8 +1548,6 @@ public class StorageManagerImpl implements StorageManager, Manager, ClusterManag // mark storage pool as removed (so it can't be used for new volumes creation), release the lock boolean isLockReleased = false; - sPool.setStatus(StoragePoolStatus.Removed); - _storagePoolDao.update(id, sPool); isLockReleased = _storagePoolDao.releaseFromLockTable(lock.getId()); s_logger.trace("Released lock for storage pool " + id);
