Exemplo n.º 1
0
    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)
Exemplo n.º 3
0
    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))
Exemplo n.º 4
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)
Exemplo n.º 6
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)
Exemplo n.º 7
0
    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])
Exemplo n.º 10
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')
Exemplo n.º 12
0
    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()
Exemplo n.º 13
0
    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')
Exemplo n.º 14
0
    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')
Exemplo n.º 16
0
 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')