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

Giuseppe Scrivano gscrivan at redhat.com
Thu Apr 2 08:05:19 UTC 2015


Cole Robinson <crobinso at redhat.com> writes:

> 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

pushed.

Thanks,
Giuseppe




More information about the virt-tools-list mailing list