LGTM, thanks

On Thu, Mar 20, 2014 at 3:48 PM, Jose A. Lopes <[email protected]> wrote:

> When an instance does not have OS scripts because, for example, it has
> an OS image, then the import/export should not try to run the OS
> scripts.  Instead, it should use raw import/export.
>
> Signed-off-by: Jose A. Lopes <[email protected]>
> ---
>  lib/cmdlib/instance.py  | 10 ++++++++--
>  lib/masterd/instance.py | 27 ++++++++++++++++++++++++---
>  2 files changed, 32 insertions(+), 5 deletions(-)
>
> diff --git a/lib/cmdlib/instance.py b/lib/cmdlib/instance.py
> index a04184d..da46ea1 100644
> --- a/lib/cmdlib/instance.py
> +++ b/lib/cmdlib/instance.py
> @@ -1552,11 +1552,17 @@ class LUInstanceCreate(LogicalUnit):
>              if not image:
>                continue
>
> +            if iobj.os:
> +              dst_io = constants.IEIO_SCRIPT
> +              dst_ioargs = ((iobj.disks[idx], iobj), idx)
> +            else:
> +              dst_io = constants.IEIO_RAW_DISK
> +              dst_ioargs = (iobj.disks[idx], iobj)
> +
>              # FIXME: pass debug option from opcode to backend
>              dt = masterd.instance.DiskTransfer("disk/%s" % idx,
>                                                 constants.IEIO_FILE,
> (image, ),
> -                                               constants.IEIO_SCRIPT,
> -                                               ((iobj.disks[idx], iobj),
> idx),
> +                                               dst_io, dst_ioargs,
>                                                 None)
>              transfers.append(dt)
>
> diff --git a/lib/masterd/instance.py b/lib/masterd/instance.py
> index 1f90e7e..e9feb86 100644
> --- a/lib/masterd/instance.py
> +++ b/lib/masterd/instance.py
> @@ -1244,9 +1244,16 @@ class ExportInstanceHelper:
>
>        finished_fn = compat.partial(self._TransferFinished, idx)
>
> +      if instance.os:
> +        src_io = constants.IEIO_SCRIPT
> +        src_ioargs = ((dev, instance), idx)
> +      else:
> +        src_io = constants.IEIO_RAW_DISK
> +        src_ioargs = (dev, instance)
> +
>        # FIXME: pass debug option from opcode to backend
>        dt = DiskTransfer("snapshot/%s" % idx,
> -                        constants.IEIO_SCRIPT, ((dev, instance), idx),
> +                        src_io, src_ioargs,
>                          constants.IEIO_FILE, (path, ),
>                          finished_fn)
>        transfers.append(dt)
> @@ -1305,11 +1312,18 @@ class ExportInstanceHelper:
>                                             compress=compress,
>                                             ipv6=ipv6)
>
> +        if instance.os:
> +          src_io = constants.IEIO_SCRIPT
> +          src_ioargs = ((dev, instance), idx)
> +        else:
> +          src_io = constants.IEIO_RAW_DISK
> +          src_ioargs = (dev, instance)
> +
>          self._feedback_fn("Sending disk %s to %s:%s" % (idx, host, port))
>          finished_fn = compat.partial(self._TransferFinished, idx)
>          ieloop.Add(DiskExport(self._lu, instance.primary_node,
>                                opts, host, port, instance, "disk%d" % idx,
> -                              constants.IEIO_SCRIPT, ((dev, instance),
> idx),
> +                              src_io, src_ioargs,
>                                timeouts, cbs, private=(idx, finished_fn)))
>
>        ieloop.Run()
> @@ -1493,9 +1507,16 @@ def RemoteImport(lu, feedback_fn, instance, pnode,
> source_x509_ca,
>                                             compress=compress,
>                                             ipv6=ipv6)
>
> +        if instance.os:
> +          src_io = constants.IEIO_SCRIPT
> +          src_ioargs = ((dev, instance), idx)
> +        else:
> +          src_io = constants.IEIO_RAW_DISK
> +          src_ioargs = (dev, instance)
> +
>          ieloop.Add(DiskImport(lu, instance.primary_node, opts, instance,
>                                "disk%d" % idx,
> -                              constants.IEIO_SCRIPT, ((dev, instance),
> idx),
> +                              src_io, src_ioargs,
>                                timeouts, cbs, private=(idx, )))
>
>        ieloop.Run()
> --
> 1.9.0.279.gdc9e3eb
>
>

Reply via email to