From c6018bdc60cf0e6efaac2c4f3fd8c428aa381f2b Mon Sep 17 00:00:00 2001 From: anthony Date: Thu, 14 Apr 2011 14:25:23 -0700 Subject: [PATCH] bug 9455: when host is disconnected, also remove entry in storage_pool_host_ref status 9455: resolved fixed --- core/src/com/cloud/storage/StoragePoolHostVO.java | 9 +++++++-- server/src/com/cloud/storage/StorageManager.java | 2 ++ server/src/com/cloud/storage/StorageManagerImpl.java | 11 +++++++++++ .../cloud/storage/listener/StoragePoolMonitor.java | 2 +- 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/core/src/com/cloud/storage/StoragePoolHostVO.java b/core/src/com/cloud/storage/StoragePoolHostVO.java index 62ac4b12578..0ebb0b777aa 100644 --- a/core/src/com/cloud/storage/StoragePoolHostVO.java +++ b/core/src/com/cloud/storage/StoragePoolHostVO.java @@ -40,7 +40,7 @@ import com.cloud.utils.db.GenericDaoBase; public class StoragePoolHostVO implements StoragePoolHostAssoc { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) - Long id; + private Long id; @Column(name="pool_id") private long poolId; @@ -77,7 +77,12 @@ public class StoragePoolHostVO implements StoragePoolHostAssoc { } - @Override + public Long getId() { + return id; + } + + + @Override public String getLocalPath() { return localPath; } diff --git a/server/src/com/cloud/storage/StorageManager.java b/server/src/com/cloud/storage/StorageManager.java index b27ee2f8870..82c1c8acbfd 100755 --- a/server/src/com/cloud/storage/StorageManager.java +++ b/server/src/com/cloud/storage/StorageManager.java @@ -191,4 +191,6 @@ public interface StorageManager extends Manager { List getStoragePoolUsedStats(Long poolId, Long podId, Long zoneId); boolean createStoragePool(long hostId, StoragePoolVO pool); + + boolean delPoolFromHost(long hostId); } diff --git a/server/src/com/cloud/storage/StorageManagerImpl.java b/server/src/com/cloud/storage/StorageManagerImpl.java index 55153d7c517..72500233241 100755 --- a/server/src/com/cloud/storage/StorageManagerImpl.java +++ b/server/src/com/cloud/storage/StorageManagerImpl.java @@ -1341,6 +1341,17 @@ public class StorageManagerImpl implements StorageManager, StorageService, Manag } } + + @Override + public boolean delPoolFromHost(long hostId) { + List poolHosts = _poolHostDao.listByHostId(hostId); + for (StoragePoolHostVO poolHost : poolHosts) { + s_logger.debug("Deleting pool " + poolHost.getPoolId() + " from host " + hostId); + _poolHostDao.remove(poolHost.getId()); + } + return true; + } + @Override public boolean addPoolToHost(long hostId, StoragePoolVO pool) { s_logger.debug("Adding pool " + pool.getName() + " to host " + hostId); diff --git a/server/src/com/cloud/storage/listener/StoragePoolMonitor.java b/server/src/com/cloud/storage/listener/StoragePoolMonitor.java index f31a0b5cfac..aac1ca6e613 100755 --- a/server/src/com/cloud/storage/listener/StoragePoolMonitor.java +++ b/server/src/com/cloud/storage/listener/StoragePoolMonitor.java @@ -61,7 +61,7 @@ public class StoragePoolMonitor implements Listener { @Override public synchronized boolean processDisconnect(long agentId, Status state) { - + _storageManager.delPoolFromHost(agentId); return true; }