[Kimchi-devel] [PATCHv9 10/10] Fix libvirt nfs target probe problem

Aline Manera alinefm at linux.vnet.ibm.com
Thu Jan 23 13:07:23 UTC 2014


Reviewed-by: Aline Manera <alinefm at linux.vnet.ibm.com>

On 01/22/2014 02:13 PM, lvroyce at linux.vnet.ibm.com wrote:
> From: Royce Lv <lvroyce at linux.vnet.ibm.com>
>
> If libvirt does not support nfs target probe,
> run command directly, otherwise parse libvirt result.
>
> Signed-off-by: Royce Lv <lvroyce at linux.vnet.ibm.com>
> ---
>   src/kimchi/model.py | 25 +++++++++++++++----------
>   1 file changed, 15 insertions(+), 10 deletions(-)
>
> diff --git a/src/kimchi/model.py b/src/kimchi/model.py
> index c7f063e..51a4427 100644
> --- a/src/kimchi/model.py
> +++ b/src/kimchi/model.py
> @@ -76,7 +76,7 @@ from kimchi.rollbackcontext import RollbackContext
>   from kimchi.scan import Scanner
>   from kimchi.screenshot import VMScreenshot
>   from kimchi.utils import get_enabled_plugins, is_digit, kimchi_log
> -from kimchi.utils import run_command, parse_cmd_output
> +from kimchi.utils import run_command, parse_cmd_output, patch_find_nfs_target
>   from kimchi.vmtemplate import VMTemplate
>
>
> @@ -231,6 +231,7 @@ class Model(object):
>           kimchi_log.info("*** Running feature tests ***")
>           self.qemu_stream = FeatureTests.qemu_supports_iso_stream()
>           self.qemu_stream_dns = FeatureTests.qemu_iso_stream_dns()
> +        self.nfs_target_probe = FeatureTests.libvirt_support_nfs_probe()
>
>           self.libvirt_stream_protocols = []
>           for p in ['http', 'https', 'ftp', 'ftps', 'tftp']:
> @@ -1341,17 +1342,21 @@ class Model(object):
>           target_list = list()
>
>           for target_type in target_types:
> -            xml = _get_storage_server_spec(server=storage_server, target_type=target_type)
> -            conn = self.conn.get()
> +            if not self.nfs_target_probe and target_type == 'netfs':
> +                targets = patch_find_nfs_target(storage_server)
> +            else:
> +                xml = _get_storage_server_spec(server=storage_server, target_type=target_type)
> +                conn = self.conn.get()
>
> -            try:
> -                ret = conn.findStoragePoolSources(target_type, xml, 0)
> -            except libvirt.libvirtError as e:
> -                kimchi_log.warning("Query storage pool source fails because of %s",
> -                    e.get_error_message())
> -                continue
> +                try:
> +                    ret = conn.findStoragePoolSources(target_type, xml, 0)
> +                except libvirt.libvirtError as e:
> +                    kimchi_log.warning("Query storage pool source fails because of %s",
> +                        e.get_error_message())
> +                    continue
> +                targets = _parse_target_source_result(target_type, ret)
>
> -            target_list.extend(_parse_target_source_result(target_type, ret))
> +            target_list.extend(targets)
>           return target_list
>
>       def _get_screenshot(self, vm_uuid):




More information about the Kimchi-devel mailing list