Exemple #1
0
 def test_clone_error(self):
     """QEMU RuntimeError is raised if the base image is not contained within a libvirt Pool."""
     pool = mock.Mock()
     hypervisor = mock.Mock()
     hypervisor.storageVolLookupByPath.side_effect = libvirt.libvirtError('BOOM')
     with self.assertRaises(RuntimeError) as error:
         qemu.disk_clone(hypervisor, 'foo', pool, {'image': '/foo/bar/baz.qcow2', 'clone': {}})
         self.assertEqual(str(error), "/foo/bar/baz.qcow2 disk must be contained in a libvirt storage pool.")
Exemple #2
0
 def test_clone(self):
     """Clone no COW."""
     pool = mock.Mock()
     volume = mock.Mock()
     hypervisor = mock.Mock()
     hypervisor.storageVolLookupByPath.return_value = volume
     pool.XMLDesc.return_value = """<pool><target><path>/pool/path</path></target></pool>"""
     volume.XMLDesc.return_value = """<volume><target><path>/path/volume.qcow2</path></target>""" +\
                                   """<capacity>10</capacity></volume>"""
     expected = """<volume type="file"><name>foo</name><uuid>foo</uuid><target>""" +\
                """<path>/pool/path/foo.qcow2</path><format type="qcow2" /></target>""" +\
                """<capacity>10</capacity></volume>"""
     qemu.disk_clone(hypervisor, 'foo', pool, {'image': '/foo/bar/baz.qcow2', 'clone': {}})
     results = pool.createXMLFrom.call_args_list[0][0][0]
     results = results.replace('\n', '').replace('\t', '').replace('  ', '')
     self.assertEqual(results, expected, compare(results, expected))
Exemple #3
0
 def test_clone_cow(self):
     """QEMU Clone with COW."""
     pool = mock.Mock()
     volume = mock.Mock()
     hypervisor = mock.Mock()
     hypervisor.storageVolLookupByPath.return_value = volume
     pool.XMLDesc.return_value = """<pool><target><path>/pool/path</path></target></pool>"""
     volume.XMLDesc.return_value = """<volume><target><path>/path/volume.qcow2</path></target>""" +\
                                   """<capacity>10</capacity></volume>"""
     expected = """<volume type="file"><name>foo</name><uuid>foo</uuid><target>""" +\
                """<path>/pool/path/foo.qcow2</path><permissions><mode>0644</mode></permissions>""" +\
                """<format type="qcow2" /></target><capacity>10</capacity>""" +\
                """<backingStore><path>/path/volume.qcow2</path><format type="qcow2" />""" +\
                """</backingStore></volume>"""
     qemu.disk_clone(hypervisor, 'foo', pool, {'image': '/foo/bar/baz.qcow2', 'clone': {'copy_on_write': True}})
     results = pool.createXML.call_args_list[0][0][0]
     results = results.replace('\n', '').replace('\t', '').replace('  ', '')
     self.assertEqual(results, expected, compare(results, expected))
Exemple #4
0
 def test_clone(self):
     """Clone no COW."""
     pool = mock.Mock()
     volume = mock.Mock()
     hypervisor = mock.Mock()
     hypervisor.storageVolLookupByPath.return_value = volume
     pool.XMLDesc.return_value = """<pool><target><path>/pool/path</path></target></pool>"""
     volume.XMLDesc.return_value = """<volume><target><path>/path/volume.qcow2</path></target>""" +\
                                   """<capacity>10</capacity></volume>"""
     expected = """<volume type="file"><name>foo</name><uuid>foo</uuid><target>""" +\
                """<path>/pool/path/foo.qcow2</path><format type="qcow2" /></target>""" +\
                """<capacity>10</capacity></volume>"""
     qemu.disk_clone(hypervisor, 'foo', pool, {
         'image': '/foo/bar/baz.qcow2',
         'clone': {}
     })
     results = pool.createXMLFrom.call_args_list[0][0][0]
     results = results.replace('\n', '').replace('\t', '').replace('  ', '')
     self.assertEqual(results, expected, compare(results, expected))
Exemple #5
0
 def test_clone_fwdslash(self, os_mock):
     """QEMU Clone no COW."""
     os_mock.return_value = True
     logger = mock.Mock()
     pool = mock.Mock()
     volume = mock.Mock()
     hypervisor = mock.Mock()
     hypervisor.storageVolLookupByPath.side_effect = libvirt.libvirtError(
         'BAM!')
     pool.XMLDesc.return_value = """<pool><target><path>/pool/path</path></target></pool>"""
     volume.XMLDesc.return_value = """<volume><target><path>/path/volume.qcow2</path>""" +\
                                   """</target><capacity>10</capacity></volume>"""
     expected = """<volume type="file"><name>foo</name><uuid>foo</uuid><target>""" +\
                """<path>/pool/path/foo.qcow2</path><permissions>""" +\
                """<mode>0644</mode></permissions>""" +\
                """<format type="qcow2" /></target>""" +\
                """<capacity>10</capacity></volume>"""
     with self.assertRaises(libvirt.libvirtError) as error:
         qemu.disk_clone(hypervisor, 'foo', pool, {}, '/foo/bar/baz.qcow2',
                         logger)
     self.assertFalse(
         '/' in etree.fromstring(hypervisor.storagePoolDefineXML.
                                 call_args[0][0]).find('.//name').text)