[Kimchi-devel] [PATCH v3] model/storagetargets: filtering used nfs paths

Paulo Ricardo Paz Vital pvital at linux.vnet.ibm.com
Mon Aug 25 23:28:39 UTC 2014


-- 
Reviewed-by: Paulo Vital <pvital at linux.vnet.ibm.com>


On Mon, 2014-08-25 at 15:50 -0300, Daniel Henrique Barboza wrote:
> 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 at linux.vnet.ibm.com>
> ---
>  src/kimchi/model/storagetargets.py | 26 ++++++++++++++++++++++++++
>  1 file changed, 26 insertions(+)
> 
> diff --git a/src/kimchi/model/storagetargets.py b/src/kimchi/model/storagetargets.py
> index 6f29a49..dd72814 100644
> --- a/src/kimchi/model/storagetargets.py
> +++ b/src/kimchi/model/storagetargets.py
> @@ -57,6 +57,32 @@ class StorageTargetsModel(object):
>                  targets = self._parse_target_source_result(target_type, ret)
> 
>              target_list.extend(targets)
> +
> +        # Get all netfs and iscsi paths in use
> +        used_paths = []
> +        try:
> +            conn = self.conn.get()
> +            # Get all existing ISCSI and NFS pools
> +            pools = conn.listAllStoragePools(
> +                libvirt.VIR_CONNECT_LIST_STORAGE_POOLS_ISCSI |
> +                libvirt.VIR_CONNECT_LIST_STORAGE_POOLS_NETFS)
> +            for pool in pools:
> +                pool_xml = pool.XMLDesc(0)
> +                root = objectify.fromstring(pool_xml)
> +                if root.get('type') == 'netfs' and \
> +                        root.source.dir is not None:
> +                    used_paths.append(root.source.dir.get('path'))
> +                elif root.get('type') == 'iscsi' and \
> +                        root.source.device is not None:
> +                    used_paths.append(root.source.device.get('path'))
> +
> +        except libvirt.libvirtError as e:
> +            err = "Query storage pool source fails because of %s"
> +            kimchi_log.warning(err, e.get_error_message())
> +
> +        # Filter target_list to not not show the used paths
> +        target_list = [elem for elem in target_list
> +                       if elem.get('target') not in used_paths]
>          return target_list
> 
>      def _get_storage_server_spec(self, **kwargs):




More information about the Kimchi-devel mailing list