[virt-tools-list] [virt-manager PATCH] clone: keep the same image format on a cross-pool clone

Cole Robinson crobinso at redhat.com
Wed Apr 1 14:37:54 UTC 2015


On 04/01/2015 09:13 AM, Giuseppe Scrivano wrote:
> Cole Robinson <crobinso at redhat.com> writes:
> 
>> ACK, but I'm surprised the test suite doesn't need tweaking. maybe we should
>> extend a clone test to use the fake qemu URI so we can validate format copying
>> in the output disk XML
> 
> as follow-up, I've added a test for the cloned disks.  OK to push it?
> 
> Thanks,
> Giuseppe
> 
> From 66c1ace004d4f2dccf48cd00ab32c7aeee503691 Mon Sep 17 00:00:00 2001
> From: Giuseppe Scrivano <gscrivan at redhat.com>
> Date: Wed, 1 Apr 2015 15:07:51 +0200
> Subject: [PATCH] tests: check that clone keeps the same image format for disks
> 
> Signed-off-by: Giuseppe Scrivano <gscrivan at redhat.com>
> ---
>  tests/clone-xml/cross-pool-disks-out.xml | 22 ++++++++++++++++++++++
>  tests/clone-xml/cross-pool-out.xml       |  2 +-
>  tests/clonetest.py                       | 21 ++++++++++++++++-----
>  3 files changed, 39 insertions(+), 6 deletions(-)
>  create mode 100644 tests/clone-xml/cross-pool-disks-out.xml
> 
> diff --git a/tests/clone-xml/cross-pool-disks-out.xml b/tests/clone-xml/cross-pool-disks-out.xml
> new file mode 100644
> index 0000000..8eb3acb
> --- /dev/null
> +++ b/tests/clone-xml/cross-pool-disks-out.xml
> @@ -0,0 +1,22 @@
> +<volume>
> +  <name>new1.img</name>
> +  <capacity>1073</capacity>
> +  <allocation>1073</allocation>
> +  <target>
> +    <format type="qcow2"/>
> +    <features>
> +      <lazy_refcounts/>
> +    </features>
> +  </target>
> +</volume>
> +<volume>
> +  <name>new2.img</name>
> +  <capacity>1000000</capacity>
> +  <allocation>50000</allocation>
> +  <target>
> +    <format type="qcow2"/>
> +    <features>
> +      <lazy_refcounts/>
> +    </features>
> +  </target>
> +</volume>
> diff --git a/tests/clone-xml/cross-pool-out.xml b/tests/clone-xml/cross-pool-out.xml
> index 4200dce..5541adf 100644
> --- a/tests/clone-xml/cross-pool-out.xml
> +++ b/tests/clone-xml/cross-pool-out.xml
> @@ -22,7 +22,7 @@
>        <target dev="hda" bus="ide"/>
>      </disk>
>      <disk type="file" device="disk">
> -      <source file="/dev/cross-pool/new2.img"/>
> +      <source file="/dev/default-pool/new2.img"/>
>        <target dev="hdb" bus="ide"/>
>      </disk>
>      <interface type="network">
> diff --git a/tests/clonetest.py b/tests/clonetest.py
> index 0119201..5789d41 100644
> --- a/tests/clonetest.py
> +++ b/tests/clonetest.py
> @@ -1,4 +1,4 @@
> -# Copyright (C) 2013 Red Hat, Inc.
> +# Copyright (C) 2013, 2015 Red Hat, Inc.
>  #
>  # This program is free software; you can redistribute it and/or modify
>  # it under the terms of the GNU General Public License as published by
> @@ -55,7 +55,8 @@ class TestClone(unittest.TestCase):
>              os.unlink(f)
>  
>      def _clone_helper(self, filebase, disks=None, force_list=None,
> -                      skip_list=None, compare=True, useconn=None):
> +                      skip_list=None, compare=True, useconn=None,
> +                      clone_disks_file=None):
>          """Helper for comparing clone input/output from 2 xml files"""
>          infile = os.path.join(clonexml_dir, filebase + "-in.xml")
>          in_content = utils.read_file(infile)
> @@ -70,7 +71,8 @@ class TestClone(unittest.TestCase):
>          cloneobj = self._default_clone_values(cloneobj, disks)
>  
>          if compare:
> -            self._clone_compare(cloneobj, filebase)
> +            self._clone_compare(cloneobj, filebase,
> +                                clone_disks_file=clone_disks_file)
>              self._clone_define(filebase)
>          else:
>              cloneobj.setup()
> @@ -90,13 +92,18 @@ class TestClone(unittest.TestCase):
>          cloneobj.clone_paths = disks
>          return cloneobj
>  
> -    def _clone_compare(self, cloneobj, outbase):
> +    def _clone_compare(self, cloneobj, outbase, clone_disks_file=None):
>          """Helps compare output from passed clone instance with an xml file"""
>          outfile = os.path.join(clonexml_dir, outbase + "-out.xml")
>  
>          cloneobj.setup()
>  
>          utils.diff_compare(cloneobj.clone_xml, outfile)
> +        if clone_disks_file:
> +            xml_clone_disks = ""
> +            for i in cloneobj.get_clone_disks():
> +                xml_clone_disks += i.get_vol_install().get_xml_config()
> +            utils.diff_compare(xml_clone_disks, clone_disks_file)
>  
>      def _clone_define(self, filebase):
>          """Take the valid output xml and attempt to define it on the
> @@ -138,8 +145,12 @@ class TestClone(unittest.TestCase):
>  
>      def testCloneStorageCrossPool(self):
>          base = "cross-pool"
> +        useconn = utils.open_test_remote()
> +        clone_disks_file = os.path.join(clonexml_dir, base + "-disks-out.xml")
>          self._clone_helper(base, ["%s/new1.img" % POOL2,
> -                                  "%s/new2.img" % POOL2])
> +                                  "%s/new2.img" % POOL1],
> +                           clone_disks_file=clone_disks_file,
> +                           useconn=useconn)
>  
>      def testCloneStorageForce(self):
>          base = "force"
> 

ACK

- Cole




More information about the virt-tools-list mailing list