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)
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)
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)
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)
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)
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')
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)
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)
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)
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')
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)