def test_vm_host_get_all_for_sv(self): host_id = 'VH1' vmhost = VmHost() vmhost.id = host_id healthnmon_db_api.vm_host_save(get_admin_context(), vmhost) mntPnt = HostMountPoint() mntPnt.set_vmHostId(host_id) mntPnt.set_path('/path') volume = StorageVolume() volume.set_id('SV11') volume.add_mountPoints(mntPnt) healthnmon_db_api.storage_volume_save(get_admin_context(), volume) vmhosts = \ healthnmon_db_api.vm_host_get_all(get_admin_context()) self.assertFalse(vmhosts is None, 'Host get by id returned a none list') self.assertTrue(len(vmhosts) > 0, 'Host get by id returned invalid number of list' ) self.assertTrue(vmhosts[0].id == host_id) svlist = vmhosts[0].get_storageVolumeIds() self.assert_(svlist is not None) self.assert_(len(svlist) == 1) self.assert_(volume.get_id() in svlist) healthnmon_db_api.storage_volume_delete_by_ids( get_admin_context(), [volume.get_id()]) vmhosts = \ healthnmon_db_api.vm_host_get_all(get_admin_context()) self.assertTrue(vmhosts[0].id == host_id) svids = vmhosts[0].get_storageVolumeIds() self.assert_((svids is None) or (len(svids) == 0))
def test_storage_volume_get_all_by_filters_changessince(self): # Create StorageVolumes vol_ids = ('V1', 'V2', 'V3') vol_names = ('name1', 'name2', 'name3') for i in range(len(vol_ids)): self.__create_volume(id=vol_ids[i], name=vol_names[i]) created_time = long(time.time() * 1000L) # Wait for 1 sec and update second vol and delete third vol time.sleep(1) second_vol = healthnmon_db_api.storage_volume_get_by_ids( self.admin_context, [vol_ids[1]])[0] second_vol.name = 'New name' healthnmon_db_api.storage_volume_save(self.admin_context, second_vol) healthnmon_db_api.storage_volume_delete_by_ids( self.admin_context, [vol_ids[2]]) # Query with filter expected_updated_ids = [vol_ids[1], vol_ids[2]] filters = {'changes-since': created_time} vols = healthnmon_db_api.storage_volume_get_all_by_filters( self.admin_context, filters, None, None) self.assert_(vols is not None) self.assert_(len(vols) == 2) for vol in vols: self.assert_(vol is not None) self.assert_(vol.id in expected_updated_ids)
def test_vm_host_get_all_for_sv(self): host_id = 'VH1' vmhost = VmHost() vmhost.id = host_id healthnmon_db_api.vm_host_save(get_admin_context(), vmhost) mntPnt = HostMountPoint() mntPnt.set_vmHostId(host_id) mntPnt.set_path('/path') volume = StorageVolume() volume.set_id('SV11') volume.add_mountPoints(mntPnt) healthnmon_db_api.storage_volume_save(get_admin_context(), volume) vmhosts = \ healthnmon_db_api.vm_host_get_all(get_admin_context()) self.assertFalse(vmhosts is None, 'Host get by id returned a none list') self.assertTrue( len(vmhosts) > 0, 'Host get by id returned invalid number of list') self.assertTrue(vmhosts[0].id == host_id) svlist = vmhosts[0].get_storageVolumeIds() self.assert_(svlist is not None) self.assert_(len(svlist) == 1) self.assert_(volume.get_id() in svlist) healthnmon_db_api.storage_volume_delete_by_ids(get_admin_context(), [volume.get_id()]) vmhosts = \ healthnmon_db_api.vm_host_get_all(get_admin_context()) self.assertTrue(vmhosts[0].id == host_id) svids = vmhosts[0].get_storageVolumeIds() self.assert_((svids is None) or (len(svids) == 0))
def test_storage_deleted_event(self): self.mox.StubOutWithMock(api, 'storage_volume_delete_by_ids') api.storage_volume_delete_by_ids( mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(None) self.mox.StubOutWithMock( InventoryCacheManager, 'get_object_from_cache') deleted_storage_id = '3fbfbefb-17dd-07aa-2dac-13afbedf3be3' deleted_storage = StorageVolume() deleted_storage.id = deleted_storage_id InventoryCacheManager.get_object_from_cache( deleted_storage_id, Constants.StorageVolume).AndReturn(deleted_storage) self.mox.ReplayAll() cachedList = [deleted_storage_id, '3fbfbefb-17dd-07aa-2dac-13afbedf1234'] updatedList = ['3fbfbefb-17dd-07aa-2dac-13afbedf1234'] self.mox.ReplayAll() self.LibvirtStorageVolume.processStorageDeletes(cachedList, updatedList) self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.INFO) eventMetaData = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_STORAGE_DELETED) event_type = eventMetaData.get_event_fully_qal_name() self.assertEquals(msg['event_type'], event_type) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'StorageVolume') self.assertEquals(payload['entity_id'], deleted_storage_id)
def test_storage_volume_get_all_by_filters_changessince(self): # Create StorageVolumes vol_ids = ('V1', 'V2', 'V3') vol_names = ('name1', 'name2', 'name3') for i in range(len(vol_ids)): self.__create_volume(id=vol_ids[i], name=vol_names[i]) created_time = long(time.time() * 1000L) # Wait for 1 sec and update second vol and delete third vol time.sleep(1) second_vol = healthnmon_db_api.storage_volume_get_by_ids( self.admin_context, [vol_ids[1]])[0] second_vol.name = 'New name' healthnmon_db_api.storage_volume_save(self.admin_context, second_vol) healthnmon_db_api.storage_volume_delete_by_ids(self.admin_context, [vol_ids[2]]) # Query with filter expected_updated_ids = [vol_ids[1], vol_ids[2]] filters = {'changes-since': created_time} vols = healthnmon_db_api.storage_volume_get_all_by_filters( self.admin_context, filters, None, None) self.assert_(vols is not None) self.assert_(len(vols) == 2) for vol in vols: self.assert_(vol is not None) self.assert_(vol.id in expected_updated_ids)
def test_storage_deleted_event(self): self.mox.StubOutWithMock(api, 'storage_volume_delete_by_ids') api.storage_volume_delete_by_ids( mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(None) self.mox.StubOutWithMock(InventoryCacheManager, 'get_object_from_cache') deleted_storage_id = '3fbfbefb-17dd-07aa-2dac-13afbedf3be3' deleted_storage = StorageVolume() deleted_storage.id = deleted_storage_id InventoryCacheManager.get_object_from_cache( deleted_storage_id, Constants.StorageVolume).AndReturn(deleted_storage) self.mox.ReplayAll() cachedList = [ deleted_storage_id, '3fbfbefb-17dd-07aa-2dac-13afbedf1234' ] updatedList = ['3fbfbefb-17dd-07aa-2dac-13afbedf1234'] self.mox.ReplayAll() self.LibvirtStorageVolume.processStorageDeletes( cachedList, updatedList) self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.INFO) eventMetaData = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_STORAGE_DELETED) event_type = eventMetaData.get_event_fully_qal_name() self.assertEquals(msg['event_type'], event_type) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'StorageVolume') self.assertEquals(payload['entity_id'], deleted_storage_id)
def test_processUpdatesException(self): self.mock.StubOutWithMock(api, 'storage_volume_delete_by_ids') api.storage_volume_delete_by_ids(mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(None) mock_libvirtSV = LibvirtStorageVolume(self.connection, '1') self.mock.StubOutWithMock(mock_libvirtSV, 'processStorageDeletes') mock_libvirtSV.processStorageDeletes([], []).AndRaise(Exception) self.mock.ReplayAll() self.assertEquals(self.LibvirtStorageVolume.processUpdates(), None) self.assertRaises(Exception, LibvirtStorageVolume) self.mock.stubs.UnsetAll()
def test_storage_volume_get_all_by_filters_deleted(self): # Create StorageVolumes vol_ids = ('V1', 'V2') vol_names = ('name1', 'name2') for i in range(len(vol_ids)): self.__create_volume(id=vol_ids[i], name=vol_names[i]) # Delete one vol healthnmon_db_api.storage_volume_delete_by_ids(self.admin_context, [vol_ids[0]]) # Query with filter filters = {'deleted': 'true'} vols = healthnmon_db_api.storage_volume_get_all_by_filters( self.admin_context, filters, 'id', DbConstants.ORDER_ASC) self.assert_(vols is not None) self.assert_(len(vols) == 1) self.assert_(vols[0] is not None) self.assert_(vols[0].id == vol_ids[0])
def test_storage_volume_get_all_by_filters_deleted(self): # Create StorageVolumes vol_ids = ('V1', 'V2') vol_names = ('name1', 'name2') for i in range(len(vol_ids)): self.__create_volume(id=vol_ids[i], name=vol_names[i]) # Delete one vol healthnmon_db_api.storage_volume_delete_by_ids( self.admin_context, [vol_ids[0]]) # Query with filter filters = {'deleted': 'true'} vols = healthnmon_db_api.storage_volume_get_all_by_filters( self.admin_context, filters, 'id', DbConstants.ORDER_ASC) self.assert_(vols is not None) self.assert_(len(vols) == 1) self.assert_(vols[0] is not None) self.assert_(vols[0].id == vol_ids[0])
def test_processStorageDeletes(self): self.mock.StubOutWithMock(api, 'storage_volume_delete_by_ids') api.storage_volume_delete_by_ids(mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(None) self.mock.ReplayAll() cachedList = ['3fbfbefb-17dd-07aa-2dac-13afbedf3be3', '3fbfbefb-17dd-07aa-2dac-13afbedf1234', '3fbfbefb-17dd-07aa-2dac-13afbedf4321'] updatedList = ['3fbfbefb-17dd-07aa-2dac-13afbedf1234'] self.assertEquals( self.LibvirtStorageVolume.processStorageDeletes(cachedList, updatedList), None) storage = InventoryCacheManager.get_object_from_cache( '3fbfbefb-17dd-07aa-2dac-13afbedf3be3', Constants.StorageVolume) host = InventoryCacheManager.get_object_from_cache( '1', Constants.VmHost) self.assertTrue(storage is None) self.assertTrue('3fbfbefb-17dd-07aa-2dac-13afbedf1234' not in host.get_storageVolumeIds()) self.mock.stubs.UnsetAll()
def test_storagevolume_delete(self): storagevolume = StorageVolume() storagevolume_id = 'SV1' storagevolume.id = storagevolume_id vm = Vm() vm.set_id('vm-01') vmGlobalSettings = VmGlobalSettings() vmGlobalSettings.set_id('vm_01') vm.set_vmGlobalSettings(vmGlobalSettings) vmDisk = VmDisk() vmDisk.set_id('disk-01') vmDisk.set_storageVolumeId(storagevolume_id) vm.add_vmDisks(vmDisk) vmDisk = VmDisk() vmDisk.set_id('disk-02') vmDisk.set_storageVolumeId('SV2') vm.add_vmDisks(vmDisk) healthnmon_db_api.vm_save(self.admin_context, vm) healthnmon_db_api.storage_volume_save(self.admin_context, storagevolume) storagevolumes = \ healthnmon_db_api.storage_volume_get_by_ids(self.admin_context, [storagevolume_id]) self.assertFalse(storagevolumes is None, 'storage volume get by id returned a none list' ) self.assertTrue( len(storagevolumes) > 0, 'storage volume get by id returned invalid number of list') healthnmon_db_api.storage_volume_delete_by_ids(self.admin_context, [storagevolume_id]) storagevolumes = \ healthnmon_db_api.storage_volume_get_by_ids(self.admin_context, [storagevolume_id]) self.assertTrue(storagevolumes is None or len(storagevolumes) == 0, 'Storage volume not deleted')
def test_processUpdates_hostupdate_event(self): defaultInstancesPath = cfg.CONF.instances_path cfg.CONF.set_override('instances_path', '/var/lib/libvirt/images') storagePool = libvirt.virStoragePool() self.mock.StubOutWithMock(api, 'storage_volume_save') api.storage_volume_save(mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().\ AndReturn(None) cachedStorageVolume = StorageVolume() cachedStorageVolume.id = storagePool.UUIDString() cachedStorageVolume.size = 0 cachedStorageVolume.free = 0 cachedStorageVolume.connectionState = \ Constants.STORAGE_STATE_INACTIVE InventoryCacheManager.update_object_in_cache( '95f7101b-892c-c388-867a-8340e5fea27x', cachedStorageVolume) self.mock.StubOutWithMock(api, 'storage_volume_delete_by_ids') api.storage_volume_delete_by_ids(mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().\ AndReturn(None) self.mock.StubOutWithMock( InventoryCacheManager, 'get_compute_conn_driver') InventoryCacheManager.get_compute_conn_driver(None, Constants.VmHost).\ AndReturn(fake. get_connection()) self.mock.ReplayAll() self.assertEquals(self.LibvirtStorageVolume.processUpdates(), None) self.assertEquals(self.LibvirtStorageVolume._createNovaPool(), None) cfg.CONF.set_override('instances_path', defaultInstancesPath) self.mock.stubs.UnsetAll()
def test_storagevolume_delete(self): storagevolume = StorageVolume() storagevolume_id = 'SV1' storagevolume.id = storagevolume_id vm = Vm() vm.set_id('vm-01') vmGlobalSettings = VmGlobalSettings() vmGlobalSettings.set_id('vm_01') vm.set_vmGlobalSettings(vmGlobalSettings) vmDisk = VmDisk() vmDisk.set_id('disk-01') vmDisk.set_storageVolumeId(storagevolume_id) vm.add_vmDisks(vmDisk) vmDisk = VmDisk() vmDisk.set_id('disk-02') vmDisk.set_storageVolumeId('SV2') vm.add_vmDisks(vmDisk) healthnmon_db_api.vm_save(self.admin_context, vm) healthnmon_db_api.storage_volume_save(self.admin_context, storagevolume) storagevolumes = \ healthnmon_db_api.storage_volume_get_by_ids(self.admin_context, [storagevolume_id]) self.assertFalse(storagevolumes is None, 'storage volume get by id returned a none list') self.assertTrue( len(storagevolumes) > 0, 'storage volume get by id returned invalid number of list') healthnmon_db_api.storage_volume_delete_by_ids(self.admin_context, [storagevolume_id]) storagevolumes = \ healthnmon_db_api.storage_volume_get_by_ids(self.admin_context, [storagevolume_id]) self.assertTrue(storagevolumes is None or len(storagevolumes) == 0, 'Storage volume not deleted')
def test_processUpdates(self): self.mock.StubOutWithMock(api, 'storage_volume_delete_by_ids') api.storage_volume_delete_by_ids(mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(None) self.mock.ReplayAll() defaultInstancesPath = cfg.CONF.instances_path cfg.CONF.set_override('instances_path', '/var/lib/nova/instances') self.assertEquals(self.LibvirtStorageVolume.processUpdates(), None) host = InventoryCacheManager.get_object_from_cache( '1', Constants.VmHost) self.assertEquals(self.LibvirtStorageVolume._createNovaPool(), None) storage = InventoryCacheManager.get_object_from_cache( '95f7101b-892c-c388-867a-8340e5fea27x', Constants.StorageVolume) self.assertTrue('95f7101b-892c-c388-867a-8340e5fea27x', host.get_storageVolumeIds()) self.assertTrue(storage is not None) self.assertEquals('inactivePool', storage.get_name()) cfg.CONF.set_override('instances_path', defaultInstancesPath) self.mock.stubs.UnsetAll()
def test_storagevolume_delete_none(self): self.assertTrue( healthnmon_db_api.storage_volume_delete_by_ids( self.admin_context, None) is None, 'Storage Volumes should be an empty list')