[virt-tools-list] [PATCH] Error out cleanly when autoclone or destination file is not specified
Cole Robinson
crobinso at redhat.com
Fri Aug 19 15:18:43 UTC 2016
On 08/19/2016 03:53 AM, Kothapally Madhu Pavan wrote:
> When virt-clone is used without autoclone or destination file, libvirt
> errors with message "ERROR missing source information for device vda".
> This doesn't convey what is missing. This patch will indicate which
> options to use.
>
Thanks for the patch. Can you give an example XML desc and command line that
triggers the error?
Actually I think the best thing to do is make --auto-clone the default, unless
a --file is specified. It should have always worked like that IMO but
--auto-clone is slightly newer than the tool itself
- Cole
> Signed-off-by: Kothapally Madhu Pavan <kmp at linux.vnet.ibm.com>
> ---
> tests/clitest.py | 4 ++--
> virt-clone | 7 ++++++-
> 2 files changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/tests/clitest.py b/tests/clitest.py
> index 4bcd85c..8009082 100644
> --- a/tests/clitest.py
> +++ b/tests/clitest.py
> @@ -930,7 +930,7 @@ c.add_invalid("-o test-clone-simple -n newvm --file %(EXISTIMG1)s --clone-runnin
>
>
> c = vclon.add_category("general", "-n clonetest")
> -c.add_valid("-o test") # Nodisk guest
> +c.add_valid("-o test --auto-clone") # Auto flag, no storage
> c.add_valid("-o test --file %(NEWCLONEIMG1)s --file %(NEWCLONEIMG2)s") # Nodisk, but with spurious files passed
> c.add_valid("-o test --file %(NEWCLONEIMG1)s --file %(NEWCLONEIMG2)s --prompt") # Working scenario w/ prompt shouldn't ask anything
> c.add_valid("--original-xml %(CLONE_DISK_XML)s --file %(NEWCLONEIMG1)s --file %(NEWCLONEIMG2)s") # XML File with 2 disks
> @@ -939,7 +939,7 @@ c.add_valid("--original-xml %(CLONE_DISK_XML)s --file %(NEWCLONEIMG1)s --file %(
> c.add_valid("--original-xml %(CLONE_DISK_XML)s --file %(NEWCLONEIMG1)s --file %(NEWCLONEIMG2)s --force-copy=fda") # XML w/ disks, force copy a target with no media
> c.add_valid("--original-xml %(CLONE_STORAGE_XML)s --file %(MANAGEDNEW1)s") # XML w/ managed storage, specify managed path
> c.add_valid("--original-xml %(CLONE_NOEXIST_XML)s --file %(EXISTIMG1)s --preserve") # XML w/ managed storage, specify managed path across pools# Libvirt test driver doesn't support cloning across pools# XML w/ non-existent storage, with --preserve
> -c.add_valid("-o test -n test-for-clone --replace") # Overwriting existing VM
> +c.add_valid("-o test -n test-for-clone --auto-clone --replace") # Overwriting existing VM
> c.add_invalid("-o test foobar") # Positional arguments error
> c.add_invalid("-o idontexist") # Non-existent vm name
> c.add_invalid("-o idontexist --auto-clone") # Non-existent vm name with auto flag,
> diff --git a/virt-clone b/virt-clone
> index 00d0e30..b689d9a 100755
> --- a/virt-clone
> +++ b/virt-clone
> @@ -112,7 +112,7 @@ def parse_args():
> "The status must be shut off or paused."))
> geng.add_argument("--original-xml",
> help=_("XML file to use as the original guest."))
> - geng.add_argument("--auto-clone", action="store_true",
> + geng.add_argument("--auto-clone", dest="auto_clone", action="store_true",
> help=_("Auto generate clone name and storage paths from"
> " the original guest configuration."))
> geng.add_argument("-n", "--name", dest="new_name",
> @@ -168,6 +168,11 @@ def main(conn=None):
> if conn is None:
> conn = cli.getConnection(options.connect)
>
> + if (options.new_diskfile is None and options.auto_clone is False and
> + options.xmlonly is False):
> + fail(_("Either --auto-clone or --file is required,"
> + " use '--auto-clone or --file' and try again."))
> +
> design = Cloner(conn)
>
> design.clone_running = options.clone_running
>
> _______________________________________________
> virt-tools-list mailing list
> virt-tools-list at redhat.com
> https://www.redhat.com/mailman/listinfo/virt-tools-list
>
More information about the virt-tools-list
mailing list