[et-mgmt-tools] [PATCH] check if the specified disk usingvirt-clone is already used in another guests.

S.Sakamoto fj0588di at aa.jp.fujitsu.com
Fri Aug 3 08:05:13 UTC 2007


Hi

Would you give me a comment on this patch?
If not, please apply it.


Thanks,
Shigeki Sakamoto.

> Hi
> 
> Current virt-clone does not confirm if the specified disk is already
> used in another guests or not.  So, I create the patch to check if the
> specified disk using virt-clone is already used in another guests.
> 
> 
> Signed-off-by: Shigeki Sakamoto <fj0588di at aa.jp.fujitsu.com>
> 
> Thanks,
> Shigeki Sakamoto.
> 
> ----------------------------------------------------------------------
> diff -r 645217bda13b virtinst/CloneManager.py
> --- a/virtinst/CloneManager.py	Sat Jul 21 13:03:07 2007 -0400
> +++ b/virtinst/CloneManager.py	Fri Jul 27 17:38:47 2007 +0900
> @@ -29,6 +29,7 @@ import commands
>  import commands
>  import libvirt
>  import Guest
> +import cli
>  from virtinst import _virtinst as _
>  
>  #
> @@ -106,6 +107,13 @@ class CloneDesign(object):
>      def set_clone_devices(self, devices):
>          if len(devices) == 0:
>              raise ValueError, _("New file to use for disk image is required")
> +        cdev      = []
> +        cdev_size = []
> +        cdev_type = []
> +        cdev.append(devices)
> +        cdev_size,\
> +        cdev_type = self._get_clone_devices_info(cdev)
> +        devices = self._check_file(self._hyper_conn, devices, cdev_size)
>          self._clone_devices.append(devices)
>      def get_clone_devices(self):
>          return self._clone_devices
> @@ -320,6 +328,45 @@ class CloneDesign(object):
>              except libvirt.libvirtError, e:
>                  pass
>          return check
> +
> +    #
> +    # check used file func
> +    # ret : Use File Path
> +    #
> +    def _check_file(self, conn, disk, size):
> +        retryFlg = False
> +        while 1:
> +            if disk == None:
> +                msg = _("What would you like to use as the disk (path)?")
> +                disk = cli.prompt_for_input(msg, disk)
> +
> +            try:
> +                d = Guest.VirtualDisk(disk, size)
> +                if d.is_conflict_disk(conn) is True:
> +                    while 1:
> +                        retryFlg = False
> +                        warnmsg = _("Disk %s is already in use by another guest!\n") % disk
> +                        res = cli.prompt_for_input(warnmsg + _("Do you really want to use the disk (yes or no)? "))
> +                        try:
> +                            if cli.yes_or_no(res) is True:
> +                                break
> +                            else:
> +                                retryFlg = True
> +                                break
> +                        except ValueError, e:
> +                            print _("ERROR: "), e
> +                            continue
> +                    if retryFlg is True:
> +                        disk = None
> +                        continue
> +            except ValueError, e:
> +                print _("ERROR: "), e
> +                disk = None
> +                continue
> +
> +            break
> +
> +        return disk
>  
>      #
>      # check used mac func
> 
> _______________________________________________
> et-mgmt-tools mailing list
> et-mgmt-tools at redhat.com
> https://www.redhat.com/mailman/listinfo/et-mgmt-tools
> 




More information about the et-mgmt-tools mailing list