As described in Github issue #354, this patch filters the storage
targets list to not show the nfs paths that are in use by an
existing NFS pool.
Signed-off-by: Daniel Henrique Barboza <danielhb(a)linux.vnet.ibm.com>
---
src/kimchi/model/storagetargets.py | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/src/kimchi/model/storagetargets.py b/src/kimchi/model/storagetargets.py
index 6f29a49..726624f 100644
--- a/src/kimchi/model/storagetargets.py
+++ b/src/kimchi/model/storagetargets.py
@@ -57,6 +57,29 @@ class StorageTargetsModel(object):
targets = self._parse_target_source_result(target_type, ret)
target_list.extend(targets)
+
+ if 'netfs' in target_types:
+ # Get all netfs pools to determine which nfs paths are in use
+ nfs_paths_used = []
+ try:
+ conn = self.conn.get()
+ pools = conn.listAllStoragePools(
+ libvirt.VIR_CONNECT_LIST_STORAGE_POOLS_NETFS)
+ for pool in pools:
+ pool_xml = pool.XMLDesc(0)
+ root = objectify.fromstring(pool_xml)
+ if root.source.dir is not None:
+ nfs_paths_used.append(root.source.dir.get('path'))
+
+ except libvirt.libvirtError as e:
+ err = "Query storage pool source fails because of %s"
+ kimchi_log.warning(err, e.get_error_message())
+ continue
+
+ # Filter target_list to not not show the used nfs paths
+ target_list = [elem for elem in target_list
+ if elem.get('target') not in nfs_paths_used]
+
return target_list
def _get_storage_server_spec(self, **kwargs):
--
1.8.3.1