示例#1
0
 def test_allocate_clone(self, pool_mock, disk_mock, create_mock,
                         libvirt_mock, network_mock):
     """QEMU Resources allocator with disk cloning."""
     pool = mock.MagicMock()
     pool_mock.return_value = pool
     volume = mock.Mock()
     volume.path.return_value = '/foo/bar'
     pool.storageVolLookupByName.return_value = volume
     network_mock.lookup.return_value = None
     resources = qemu.QEMUResources(
         'foo', {
             'domain': 'bar',
             'disk': {
                 'image': '/foo/bar.qcow2',
                 'clone': {
                     'storage_pool_path': '/baz'
                 }
             }
         })
     resources.allocate()
     pool_mock.assert_called_with(resources.hypervisor, 'foo', '/baz')
     disk_mock.assert_called_with(resources.hypervisor, 'foo', pool,
                                  {'storage_pool_path': '/baz'},
                                  '/foo/bar.qcow2', mock.ANY)
     create_mock.assert_called_with(resources.hypervisor,
                                    'foo',
                                    'bar',
                                    '/foo/bar',
                                    network_name=None)
示例#2
0
 def test_allocate_default(self, create_mock, libvirt_mock, network_mock):
     """QEMU Resources allocator with no extra value."""
     network_mock.lookup.return_value = None
     resources = qemu.QEMUResources('foo', {'domain': 'bar',
                                            'disk': {'image': '/foo/bar'}})
     resources.allocate()
     libvirt_mock.open.assert_called_with('qemu:///system')
     create_mock.assert_called_with(resources.hypervisor, 'foo', 'bar',
                                    '/foo/bar', network_name=None)
示例#3
0
 def test_allocate_hypervisor(self, create_mock, libvirt_mock,
                              network_lookup_mock):
     """Resources allocater with hypervisor."""
     resources = qemu.QEMUResources('foo', {'domain': 'bar',
                                            'hypervisor': 'baz',
                                            'disk': {'image': '/foo/bar'}})
     resources.allocate()
     libvirt_mock.open.assert_called_with('baz')
     create_mock.assert_called_with(resources.hypervisor, 'foo',
                                    'bar', '/foo/bar', network_name=None)
示例#4
0
 def test_deallocate_no_creation(self, delete_mock, pool_delete_mock,
                                 network_mock):
     """QEMU Resources are released on deallocate network and Pool not created."""
     resources = qemu.QEMUResources('foo', {'domain': 'bar',
                                            'disk': {'image': '/foo/bar'}})
     resources._domain = mock.Mock()
     resources._network = mock.Mock()
     resources._hypervisor = mock.Mock()
     resources._storage_pool = mock.Mock()
     resources.deallocate()
     delete_mock.assert_called_with(resources.domain, mock.ANY)
     self.assertFalse(pool_delete_mock.called)
     self.assertFalse(network_mock.delete.called)
     self.assertTrue(resources._hypervisor.close.called)
示例#5
0
 def test_initialize_default(self, create_mock, libvirt_mock):
     """Resources initializer with no extra value."""
     resources = qemu.QEMUResources('foo', {
         'domain': 'bar',
         'disk': {
             'image': '/foo/bar'
         }
     })
     libvirt_mock.open.assert_called_with('qemu:///system')
     create_mock.assert_called_with(resources.hypervisor,
                                    'foo',
                                    'bar',
                                    '/foo/bar',
                                    network_name=None)
示例#6
0
    def test_allocate_network(self, create_mock, libvirt_mock, network_mock):
        """QEMU Resources allocator with network."""
        network = mock.Mock()
        network.name.return_value = 'baz'
        network_mock.lookup = mock.Mock()
        network_mock.create.return_value = network

        resources = qemu.QEMUResources('foo', {'domain': 'bar',
                                               'network': 'baz',
                                               'disk': {'image': '/foo/bar'}})
        resources.allocate()
        network_mock.create.assert_called_with(resources.hypervisor, 'foo',
                                               'baz')
        create_mock.assert_called_with(resources.hypervisor, 'foo', 'bar',
                                       '/foo/bar', network_name='baz')
示例#7
0
 def test_deallocate_creation(self, delete_mock, pool_delete_mock,
                              network_mock):
     """QEMU Resources are released on deallocate. Network and Pool created."""
     resources = qemu.QEMUResources('foo',
                                    {'domain': 'bar',
                                     'network': {},
                                     'disk': {'image': '/foo/bar',
                                              'clone':
                                              {'storage_pool_path': 'foo'}}})
     resources._domain = mock.Mock()
     resources._network = mock.Mock()
     resources._hypervisor = mock.Mock()
     resources._storage_pool = mock.Mock()
     resources.deallocate()
     delete_mock.assert_called_with(resources.domain, mock.ANY)
     network_mock.delete.assert_called_with(resources.network)
     pool_delete_mock.assert_called_with(resources.storage_pool, mock.ANY)
示例#8
0
    def test_allocate_fail(self, create_mock, libvirt_mock, network_mock):
        """QEMU network is destroyed on allocation fail."""
        network = mock.Mock()
        network.name.return_value = 'baz'
        network_mock.lookup = mock.Mock()
        network_mock.create.return_value = network

        resources = qemu.QEMUResources('foo', {'domain': 'bar',
                                               'network': 'baz',
                                               'disk': {'image': '/foo/bar'}})
        create_mock.side_effect = libvirt.libvirtError('BOOM')
        with self.assertRaises(libvirt.libvirtError):
            resources.allocate()

        resources.deallocate()

        network_mock.delete.assert_called_with(resources.network)
示例#9
0
 def test_cleanup(self, delete_mock, pool_delete_mock, network_delete_mock,
                  create_mock, libvirt_mock):
     """Resources are released on cleanup."""
     resources = qemu.QEMUResources('foo', {
         'domain': 'bar',
         'disk': {
             'image': '/foo/bar'
         }
     })
     resources._domain = mock.Mock()
     resources._network = mock.Mock()
     resources._hypervisor = mock.Mock()
     resources._storage_pool = mock.Mock()
     resources.cleanup()
     delete_mock.assert_called_with(resources.domain, mock.ANY)
     pool_delete_mock.assert_called_with(resources.storage_pool, mock.ANY)
     network_delete_mock.assert_called_with(resources.network)
     self.assertTrue(resources._hypervisor.close.called)
示例#10
0
 def test_initialize_network(self, network_mock, create_mock, libvirt_mock):
     """Resources initializer with network."""
     network = mock.Mock()
     network.name.return_value = 'baz'
     network_mock.return_value = network
     resources = qemu.QEMUResources('foo', {
         'domain': 'bar',
         'network': 'baz',
         'disk': {
             'image': '/foo/bar'
         }
     })
     network_mock.assert_called_with(resources.hypervisor, 'foo', 'baz')
     create_mock.assert_called_with(resources.hypervisor,
                                    'foo',
                                    'bar',
                                    '/foo/bar',
                                    network_name='baz')
示例#11
0
 def test_allocate_dummy_provider(self, create_mock, libvirt_mock,
                                  network_mock):
     """QEMU Resources allocator with no extra value and dummy image provider."""
     network_mock.lookup.return_value = None
     resources = qemu.QEMUResources(
         'foo', {
             'domain': 'bar',
             'disk': {
                 'image': {
                     'uri': '/foo/bar',
                     'provider': 'see.image_providers.DummyProvider'
                 }
             }
         })
     resources.allocate()
     libvirt_mock.open.assert_called_with('qemu:///system')
     create_mock.assert_called_with(resources.hypervisor,
                                    'foo',
                                    'bar',
                                    '/foo/bar',
                                    network_name=None)