From d41f7d78d9f14aec66799392e39f864b92bfa0e8 Mon Sep 17 00:00:00 2001 From: anthony Date: Fri, 15 Oct 2010 14:13:04 -0700 Subject: [PATCH] DeleteStoragePool command fix 1. not delete SR in xenserver side, only delete it in database. 2. remove a storagepool, adding it back fails --- .../cloud/hypervisor/xen/resource/CitrixResourceBase.java | 8 +------- core/src/com/cloud/storage/dao/StoragePoolDaoImpl.java | 2 +- server/src/com/cloud/storage/StorageManagerImpl.java | 5 ++++- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java index df27f72a41e..b7e86f39516 100644 --- a/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java +++ b/core/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java @@ -4379,15 +4379,9 @@ public abstract class CitrixResourceBase implements StoragePoolResource, ServerR try { Connection conn = getConnection(); SR sr = getStorageRepository(conn, poolTO); - sr.setNameLabel(conn, pool.getUuid()); - sr.setNameDescription(conn, pool.getName()); - + removeSR(sr); Answer answer = new Answer(cmd, true, "success"); return answer; - } catch (XenAPIException e) { - String msg = "DeleteStoragePoolCommand XenAPIException:" + e.toString() + " host:" + _host.uuid + " pool: " + pool.getName() + pool.getHostAddress() + pool.getPath(); - s_logger.warn(msg, e); - return new Answer(cmd, false, msg); } catch (Exception e) { String msg = "DeleteStoragePoolCommand XenAPIException:" + e.getMessage() + " host:" + _host.uuid + " pool: " + pool.getName() + pool.getHostAddress() + pool.getPath(); s_logger.warn(msg, e); diff --git a/core/src/com/cloud/storage/dao/StoragePoolDaoImpl.java b/core/src/com/cloud/storage/dao/StoragePoolDaoImpl.java index f303614fff2..f436d325afb 100644 --- a/core/src/com/cloud/storage/dao/StoragePoolDaoImpl.java +++ b/core/src/com/cloud/storage/dao/StoragePoolDaoImpl.java @@ -225,7 +225,7 @@ public class StoragePoolDaoImpl extends GenericDaoBase imp sc.setParameters("hostAddress", host); sc.setParameters("path", path); - return listIncludingRemovedBy(sc); + return listBy(sc); } public StoragePoolVO listById(Integer id) diff --git a/server/src/com/cloud/storage/StorageManagerImpl.java b/server/src/com/cloud/storage/StorageManagerImpl.java index 58eec655abf..4c01a108444 100755 --- a/server/src/com/cloud/storage/StorageManagerImpl.java +++ b/server/src/com/cloud/storage/StorageManagerImpl.java @@ -1469,6 +1469,8 @@ public class StorageManagerImpl implements StorageManager { // if not records exist, delete the given pool (base case) if (hostPoolRecords.size() == 0) { + sPool.setUuid(null); + _storagePoolDao.update(id, sPool); _storagePoolDao.remove(id); return true; } else { @@ -1514,7 +1516,8 @@ public class StorageManagerImpl implements StorageManager { for (StoragePoolHostVO host : hostPoolRecords) { _storagePoolHostDao.deleteStoragePoolHostDetails(host.getHostId(),host.getPoolId()); } - + sPool.setUuid(null); + _storagePoolDao.update(id, sPool); _storagePoolDao.remove(id); return true; }