
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@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