def test_vm_deleted_event(self): self.mox.StubOutWithMock(api, 'vm_delete_by_ids') api.vm_delete_by_ids(mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(None) deleted_vm_id = '25f04dd3-e924-02b2-9eac-876e3c943123' deleted_vm = Vm() deleted_vm.id = deleted_vm_id self.mox.StubOutWithMock(InventoryCacheManager, 'get_object_from_cache') InventoryCacheManager.get_object_from_cache( deleted_vm_id, Constants.Vm).AndReturn(deleted_vm) self.mox.ReplayAll() cachedList = ['25f04dd3-e924-02b2-9eac-876e3c943262', deleted_vm_id] updatedList = ['25f04dd3-e924-02b2-9eac-876e3c943262'] self.libvirtVM.processVmDeletes(cachedList, updatedList) self.assertTrue(len(test_notifier.NOTIFICATIONS) == 1) msg = test_notifier.NOTIFICATIONS[0] self.assertTrue(msg is not None) self.assertEquals(msg['priority'], notifier_api.INFO) event_type = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_VM_DELETED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'Vm') self.assertEquals(payload['entity_id'], deleted_vm_id)
def testNotify(self): scheduler_services = [{'host': 'testhost'}] nova_db. \ service_get_all_by_topic( mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(scheduler_services) self.mox.ReplayAll() self.assertEquals(events_api.notify( event_metadata.EVENT_TYPE_VM_DELETED, self.vm), None) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.INFO) event_type = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_VM_DELETED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) self.assertEquals(msg['publisher_id'], 'testhost.healthnmon') payload = msg['payload'] self.assertEquals(payload['entity_type'], 'Vm') self.assertEquals(payload['entity_id'], self.vm.get_id())
def test_vm_reconfigured_event(self): mapped_tuple = self._mapLibvirtvmToVm() domainObj = mapped_tuple[0] cachedVm = mapped_tuple[1] cachedVm.name = 'OldName' self.mox.StubOutWithMock(api, 'vm_save') api.vm_save(mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(None) self.mox.StubOutWithMock(InventoryCacheManager, 'get_object_from_cache') InventoryCacheManager.get_object_from_cache( domainObj.UUIDString(), Constants.Vm).AndReturn(cachedVm) self.mox.ReplayAll() self.libvirtVM._processVm(domainObj) self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.INFO) event_type = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_VM_RECONFIGURED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'Vm') self.assertEquals(payload['entity_id'], domainObj.UUIDString())
def test_host_added_event(self): self.__mock_service_get_all_by_topic() self.mox.StubOutWithMock(InventoryCacheManager, 'get_object_from_cache') InventoryCacheManager.get_object_from_cache( self.libvirtVmHost.compute_id, Constants.VmHost).AndReturn(None) self.mox.StubOutWithMock(InventoryCacheManager, 'get_compute_conn_driver') InventoryCacheManager.get_compute_conn_driver( self.libvirtVmHost.compute_id, Constants.VmHost).AndReturn(fake.get_connection()) self.mox.StubOutWithMock(api, 'vm_host_save') api.vm_host_save(mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(None) self.mox.ReplayAll() self.libvirtVmHost.processUpdates() self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.INFO) event_type = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_HOST_ADDED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'VmHost') self.assertEquals(payload['entity_id'], self.libvirtVmHost.compute_id)
def testStorageVolumePayloadGenerator(self): metadata = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_STORAGE_ADDED) obj = StorageVolume() obj.name = 'TestStorageVolume' obj.connectionState = 'ACTIVE' obj.size = 200 obj.volumeType = 'DIR' obj.volumeId = 'TestVolumeId' obj.createEpoch = long(time.time() * 1000) obj.lastModifiedEpoch = long(time.time() * 1000) mount_point = HostMountPoint() mount_point.set_path('/root/storage/1') mount_point.set_vmHostId('HOST1') obj.add_mountPoints(mount_point) mount_point = HostMountPoint() mount_point.set_path('/root/storage/2') mount_point.set_vmHostId('HOST2') obj.add_mountPoints(mount_point) payload = payload_generator.generate_payload(metadata, obj) self.assertEquals(payload['entity_type'], obj.__class__.__name__) self.assertEquals(payload['name'], obj.name) self.assertEquals(payload['state'], obj.connectionState) self.assertTrue(obj.mountPoints[0].path in payload['mount_points'])
def test_storage_added_event(self): storagePool = libvirt.virStoragePool() self.mox.StubOutWithMock(api, 'storage_volume_save') api.storage_volume_save( mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(None) self.mox.StubOutWithMock(InventoryCacheManager, 'get_object_from_cache') InventoryCacheManager.get_object_from_cache( storagePool.UUIDString(), Constants.StorageVolume).AndReturn(None) self.mox.ReplayAll() self.LibvirtStorageVolume._processStorage(storagePool) self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.INFO) event_type = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_STORAGE_ADDED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'StorageVolume') self.assertEquals(payload['entity_id'], storagePool.UUIDString())
def test_PortGroup_Reconfigured_Event(self): cachedHost = VmHost() cachedHost.id = self.libvirtNetwork.compute_id vswitch = VirtualSwitch() vswitch.set_id("11") vswitch.set_name("vs1") portGroup = PortGroup() portGroup.set_id("PortGroup_" + vswitch.get_id()) portGroup.set_name(vswitch.get_name()) portGroup.set_virtualSwitchId(vswitch.get_id()) vswitch.set_portGroups([portGroup]) cachedHost.set_virtualSwitches([vswitch]) cachedHost.set_portGroups([portGroup]) vmhost = copy.deepcopy(cachedHost) vmhost.get_portGroups()[0].set_name("vs11") vmhost.get_virtualSwitches()[0].set_name("vs11") vmhost.get_virtualSwitches()[0].get_portGroups()[0].set_name("vs11") self.libvirtNetwork._processNetworkEvents(cachedHost, vmhost) self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.INFO) event_type = event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_PORTGROUP_RECONFIGURED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'PortGroup') self.assertEquals(payload['entity_id'], portGroup.get_id())
def test_vm_reconfigured_event(self): mapped_tuple = self._mapLibvirtvmToVm() domainObj = mapped_tuple[0] cachedVm = mapped_tuple[1] cachedVm.name = 'OldName' self.mox.StubOutWithMock(api, 'vm_save') api.vm_save(mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(None) self.mox.StubOutWithMock( InventoryCacheManager, 'get_object_from_cache') InventoryCacheManager.get_object_from_cache( domainObj.UUIDString(), Constants.Vm).AndReturn(cachedVm) self.mox.ReplayAll() self.libvirtVM._processVm(domainObj) self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.INFO) event_type = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_VM_RECONFIGURED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'Vm') self.assertEquals(payload['entity_id'], domainObj.UUIDString())
def test_network_enabled_event(self): cachedHost = VmHost() cachedHost.id = self.libvirtNetwork.compute_id vswitch = VirtualSwitch() vswitch.set_id("11") vswitch.set_name("vs1") vswitch.set_connectionState("Inactive") cachedHost.set_virtualSwitches([vswitch]) vmhost = copy.deepcopy(cachedHost) vmhost.get_virtualSwitches()[0].set_connectionState("Active") self.libvirtNetwork._processNetworkEvents(cachedHost, vmhost) self.assertEquals(vmhost.get_virtualSwitches()[0]. get_connectionState(), Constants.VIRSWITCH_STATE_ACTIVE) self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.INFO) event_type = event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_NETWORK_ENABLED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'VirtualSwitch') self.assertEquals(payload['entity_id'], vswitch.get_id()) self.assertEquals(payload["state"], 'Active')
def test_PortGroup_Reconfigured_Event(self): cachedHost = VmHost() cachedHost.id = self.libvirtNetwork.compute_id vswitch = VirtualSwitch() vswitch.set_id("11") vswitch.set_name("vs1") portGroup = PortGroup() portGroup.set_id("PortGroup_" + vswitch.get_id()) portGroup.set_name(vswitch.get_name()) portGroup.set_virtualSwitchId(vswitch.get_id()) vswitch.set_portGroups([portGroup]) cachedHost.set_virtualSwitches([vswitch]) cachedHost.set_portGroups([portGroup]) vmhost = copy.deepcopy(cachedHost) vmhost.get_portGroups()[0].set_name("vs11") vmhost.get_virtualSwitches()[0].set_name("vs11") vmhost.get_virtualSwitches()[0].get_portGroups()[0].set_name("vs11") self.libvirtNetwork._processNetworkEvents(cachedHost, vmhost) self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.INFO) event_type = event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_PORTGROUP_RECONFIGURED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'PortGroup') self.assertEquals(payload['entity_id'], portGroup.get_id())
def test_portGroup_deleted_event(self): cachedHost = VmHost() cachedHost.id = self.libvirtNetwork.compute_id vswitch = VirtualSwitch() vswitch.set_id("11") vswitch.set_name("vs1") portGroup = PortGroup() portGroup.set_id("PortGroup_" + vswitch.get_id()) portGroup.set_name(vswitch.get_name()) portGroup.set_virtualSwitchId(vswitch.get_id()) vswitch.set_portGroups([portGroup]) cachedHost.set_virtualSwitches([vswitch]) cachedHost.set_portGroups([portGroup]) vmhost = copy.deepcopy(cachedHost) vmhost.get_portGroups().pop() vmhost.get_virtualSwitches().pop() self.assertEquals(vmhost.get_virtualSwitches(), []) self.libvirtNetwork._processNetworkEvents(cachedHost, vmhost) self.assertEquals(len(test_notifier.NOTIFICATIONS), 2) msg = test_notifier.NOTIFICATIONS[1] self.assertEquals(msg["priority"], notifier_api.INFO) event_type = event_metadata.get_EventMetaData(event_metadata.EVENT_TYPE_PORTGROUP_DELETED) self.assertEquals(msg["event_type"], event_type.get_event_fully_qal_name()) payload = msg["payload"] self.assertEquals(payload["entity_type"], "PortGroup") self.assertEquals(payload["entity_id"], portGroup.get_id())
def test_host_added_event(self): self.__mock_service_get_all_by_topic() self.mox.StubOutWithMock( InventoryCacheManager, 'get_object_from_cache') InventoryCacheManager.get_object_from_cache( self.libvirtVmHost.compute_id, Constants.VmHost).AndReturn(None) self.mox.StubOutWithMock( InventoryCacheManager, 'get_compute_conn_driver') InventoryCacheManager.get_compute_conn_driver( self.libvirtVmHost.compute_id, Constants.VmHost).AndReturn(fake.get_connection()) self.mox.StubOutWithMock(api, 'vm_host_save') api.vm_host_save(mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(None) self.mox.ReplayAll() self.libvirtVmHost.processUpdates() self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.INFO) event_type = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_HOST_ADDED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'VmHost') self.assertEquals(payload['entity_id'], self.libvirtVmHost.compute_id)
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_vm_created_event(self): domainObj = libvirt.virDomain() self.mox.StubOutWithMock(api, 'vm_save') api.vm_save(mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(None) self.mox.StubOutWithMock( InventoryCacheManager, 'get_object_from_cache') InventoryCacheManager.get_object_from_cache( domainObj.UUIDString(), Constants.Vm).AndReturn(None) self.mox.ReplayAll() self.libvirtVM._processVm(domainObj) self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.INFO) event_type = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_VM_CREATED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'Vm') self.assertEquals(payload['entity_id'], domainObj.UUIDString())
def test_network_enabled_event(self): cachedHost = VmHost() cachedHost.id = self.libvirtNetwork.compute_id vswitch = VirtualSwitch() vswitch.set_id("11") vswitch.set_name("vs1") vswitch.set_connectionState("Inactive") cachedHost.set_virtualSwitches([vswitch]) vmhost = copy.deepcopy(cachedHost) vmhost.get_virtualSwitches()[0].set_connectionState("Active") self.libvirtNetwork._processNetworkEvents(cachedHost, vmhost) self.assertEquals( vmhost.get_virtualSwitches()[0].get_connectionState(), Constants.VIRSWITCH_STATE_ACTIVE) self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.INFO) event_type = event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_NETWORK_ENABLED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'VirtualSwitch') self.assertEquals(payload['entity_id'], vswitch.get_id()) self.assertEquals(payload["state"], 'Active')
def test_vm_stopped_event(self): mapped_tuple = self._mapLibvirtvmToVm() domainObj = mapped_tuple[0] cachedVm = mapped_tuple[1] cachedVm.powerState = Constants.VM_POWER_STATE_ACTIVE self.mox.StubOutWithMock(api, 'vm_save') api.vm_save(mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(None) self.mox.StubOutWithMock( InventoryCacheManager, 'get_object_from_cache') InventoryCacheManager.get_object_from_cache( domainObj.UUIDString(), Constants.Vm).AndReturn(cachedVm) self.mox.StubOutWithMock(domainObj, 'state') domainObj.state(0).AndReturn([5]) self.mox.ReplayAll() self.libvirtVM._processVm(domainObj) self.assertTrue(len(test_notifier.NOTIFICATIONS) > 0) msg = \ self._getEventMsgForEventType(event_metadata.EVENT_TYPE_VM_STOPPED, test_notifier.NOTIFICATIONS) self.assertTrue(msg is not None) self.assertEquals(msg['priority'], notifier_api.WARN) event_type = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_VM_STOPPED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'Vm') self.assertEquals(payload['entity_id'], domainObj.UUIDString()) self.assertEquals(payload['state'], Constants.VM_POWER_STATE_STOPPED)
def testStorageVolumePayloadGenerator(self): metadata = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_STORAGE_ADDED) obj = StorageVolume() obj.name = 'TestStorageVolume' obj.connectionState = 'ACTIVE' obj.size = 200 obj.volumeType = 'DIR' obj.volumeId = 'TestVolumeId' obj.createEpoch = long(time.time() * 1000) obj.lastModifiedEpoch = long(time.time() * 1000) mount_point = HostMountPoint() mount_point.set_path('/root/storage/1') mount_point.set_vmHostId('HOST1') obj.add_mountPoints(mount_point) mount_point = HostMountPoint() mount_point.set_path('/root/storage/2') mount_point.set_vmHostId('HOST2') obj.add_mountPoints(mount_point) payload = payload_generator.generate_payload(metadata, obj) self.assertEquals(payload['entity_type'], obj.__class__.__name__) self.assertEquals(payload['name'], obj.name) self.assertEquals(payload['state'], obj.connectionState) self.assertTrue(obj.mountPoints[0].path in payload['mount_points'])
def test_vm_deleted_event(self): self.mox.StubOutWithMock(api, 'vm_delete_by_ids') api.vm_delete_by_ids(mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(None) deleted_vm_id = '25f04dd3-e924-02b2-9eac-876e3c943123' deleted_vm = Vm() deleted_vm.id = deleted_vm_id self.mox.StubOutWithMock( InventoryCacheManager, 'get_object_from_cache') InventoryCacheManager.get_object_from_cache( deleted_vm_id, Constants.Vm).AndReturn(deleted_vm) self.mox.ReplayAll() cachedList = ['25f04dd3-e924-02b2-9eac-876e3c943262', deleted_vm_id] updatedList = ['25f04dd3-e924-02b2-9eac-876e3c943262'] self.libvirtVM.processVmDeletes(cachedList, updatedList) self.assertTrue(len(test_notifier.NOTIFICATIONS) == 1) msg = test_notifier.NOTIFICATIONS[0] self.assertTrue(msg is not None) self.assertEquals(msg['priority'], notifier_api.INFO) event_type = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_VM_DELETED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'Vm') self.assertEquals(payload['entity_id'], deleted_vm_id)
def test_vm_suspended_event(self): mapped_tuple = self._mapLibvirtvmToVm() domainObj = mapped_tuple[0] cachedVm = mapped_tuple[1] cachedVm.powerState = Constants.VM_POWER_STATE_ACTIVE self.mox.StubOutWithMock(api, 'vm_save') api.vm_save(mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(None) self.mox.StubOutWithMock(InventoryCacheManager, 'get_object_from_cache') InventoryCacheManager.get_object_from_cache( domainObj.UUIDString(), Constants.Vm).AndReturn(cachedVm) self.mox.StubOutWithMock(domainObj, 'state') domainObj.state(0).AndReturn([3]) self.mox.ReplayAll() self.libvirtVM._processVm(domainObj) self.assertTrue(len(test_notifier.NOTIFICATIONS) > 0) msg = \ self._getEventMsgForEventType( event_metadata.EVENT_TYPE_VM_SUSPENDED, test_notifier.NOTIFICATIONS) self.assertTrue(msg is not None) self.assertEquals(msg['priority'], notifier_api.WARN) event_type = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_VM_SUSPENDED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'Vm') self.assertEquals(payload['entity_id'], domainObj.UUIDString()) self.assertEquals(payload['state'], Constants.VM_POWER_STATE_PAUSED)
def test_storage_added_event(self): storagePool = libvirt.virStoragePool() self.mox.StubOutWithMock(api, 'storage_volume_save') api.storage_volume_save( mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(None) self.mox.StubOutWithMock( InventoryCacheManager, 'get_object_from_cache') InventoryCacheManager.get_object_from_cache( storagePool.UUIDString(), Constants.StorageVolume).AndReturn(None) self.mox.ReplayAll() self.LibvirtStorageVolume._processStorage(storagePool) self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.INFO) event_type = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_STORAGE_ADDED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'StorageVolume') self.assertEquals(payload['entity_id'], storagePool.UUIDString())
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_host_removed_event(self): self.__mock_service_get_all_by_topic() deleted_host = VmHost() deleted_host.set_id('compute1') deleted_host.set_name('compute1') self.mox.StubOutWithMock(api, 'vm_host_get_all') api.vm_host_get_all(mox.IgnoreArg()).AndReturn([deleted_host]) self.mox.StubOutWithMock(api, 'vm_get_all') api.vm_get_all(mox.IgnoreArg()).AndReturn([]) self.mox.StubOutWithMock(api, 'storage_volume_get_all') api.storage_volume_get_all(mox.IgnoreArg()).AndReturn([]) self.mox.StubOutWithMock(api, 'subnet_get_all') api.subnet_get_all(mox.IgnoreArg()).AndReturn([]) self.mox.StubOutWithMock(nova_db, 'compute_node_get_all') nova_db.compute_node_get_all(mox.IgnoreArg()).AndReturn([]) self.mox.StubOutWithMock(api, 'vm_host_delete_by_ids') api.vm_host_delete_by_ids( mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(None) self.mox.StubOutWithMock( InventoryCacheManager, 'get_compute_conn_driver') InventoryCacheManager.get_compute_conn_driver( 'compute1', Constants.VmHost).AndReturn(fake.get_connection()) self.mox.ReplayAll() compute_service = dict(host='host1') compute = dict(id='compute1', hypervisor_type='fake', service=compute_service) rm_context = \ rmcontext.ComputeRMContext(rmType=compute['hypervisor_type'], rmIpAddress=compute_service['host'], rmUserName='******', rmPassword='******') InventoryCacheManager.get_all_compute_inventory().clear() InventoryCacheManager.get_all_compute_inventory()['compute1'] = \ ComputeInventory(rm_context) InventoryCacheManager.get_compute_inventory( 'compute1').update_compute_info(rm_context, deleted_host) self.assertEquals( len(InventoryCacheManager.get_all_compute_inventory()), 1) inv_manager = InventoryManager() inv_manager._refresh_from_db(None) self.assertEquals( len(InventoryCacheManager.get_all_compute_inventory()), 0) self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.INFO) event_type = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_HOST_REMOVED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'VmHost') self.assertEquals(payload['entity_id'], deleted_host.id)
def test_host_disconnected_event(self): self.__mock_service_get_all_by_topic() backedUp_libvirt = connection.libvirt connection.libvirt = libvirt try: compute_id = '1' virtConnection = LibvirtConnection(False) vmHost = VmHost() vmHost.id = compute_id vmHost.set_virtualMachineIds([]) InventoryCacheManager.update_object_in_cache(compute_id, vmHost) # virtConnection.setUuid('34353438-3934-434e-3738-313630323543' # ) virtConnection._wrapped_conn = None virtConnection.compute_rmcontext = \ ComputeRMContext(rmType='KVM', rmIpAddress='10.10.155.165', rmUserName='******', rmPassword='******') cachedHost = VmHost() cachedHost.id = compute_id cachedHost.connectionState = Constants.VMHOST_CONNECTED self.mox.StubOutWithMock(InventoryCacheManager, 'get_object_from_cache') self.mox.StubOutWithMock( InventoryCacheManager, 'get_compute_conn_driver') InventoryCacheManager.get_compute_conn_driver( self.libvirtVmHost.compute_id, Constants.VmHost).AndReturn(fake.get_connection()) InventoryCacheManager.get_object_from_cache( compute_id, Constants.VmHost).AndReturn(cachedHost) self.mox.StubOutWithMock(api, 'vm_host_save') api.vm_host_save(mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(None) self.mox.ReplayAll() libvirtEvents = LibvirtEvents() libvirtVmHost = LibvirtVmHost( virtConnection._wrapped_conn, compute_id, libvirtEvents) libvirtVmHost.processUpdates() self.assertEquals(libvirtVmHost.vmHost.get_connectionState(), Constants.VMHOST_DISCONNECTED) self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.CRITICAL) event_type = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_HOST_DISCONNECTED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'VmHost') self.assertEquals(payload['entity_id'], libvirtVmHost.compute_id) finally: connection.libvirt = backedUp_libvirt
def test_host_removed_event(self): self.__mock_service_get_all_by_topic() deleted_host = VmHost() deleted_host.set_id('compute1') deleted_host.set_name('compute1') self.mox.StubOutWithMock(api, 'vm_host_get_all') api.vm_host_get_all(mox.IgnoreArg()).AndReturn([deleted_host]) self.mox.StubOutWithMock(api, 'vm_get_all') api.vm_get_all(mox.IgnoreArg()).AndReturn([]) self.mox.StubOutWithMock(api, 'storage_volume_get_all') api.storage_volume_get_all(mox.IgnoreArg()).AndReturn([]) self.mox.StubOutWithMock(api, 'subnet_get_all') api.subnet_get_all(mox.IgnoreArg()).AndReturn([]) self.mox.StubOutWithMock(nova_db, 'compute_node_get_all') nova_db.compute_node_get_all(mox.IgnoreArg()).AndReturn([]) self.mox.StubOutWithMock(api, 'vm_host_delete_by_ids') api.vm_host_delete_by_ids( mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(None) self.mox.StubOutWithMock(InventoryCacheManager, 'get_compute_conn_driver') InventoryCacheManager.get_compute_conn_driver( 'compute1', Constants.VmHost).AndReturn(fake.get_connection()) self.mox.ReplayAll() compute_service = dict(host='host1') compute = dict(id='compute1', hypervisor_type='fake', service=compute_service) rm_context = \ rmcontext.ComputeRMContext(rmType=compute['hypervisor_type' ], rmIpAddress=compute_service['host'], rmUserName='******', rmPassword='******') InventoryCacheManager.get_all_compute_inventory().clear() InventoryCacheManager.get_all_compute_inventory( )['compute1'] = ComputeInventory(rm_context) InventoryCacheManager.get_compute_inventory( 'compute1').update_compute_info(rm_context, deleted_host) self.assertEquals( len(InventoryCacheManager.get_all_compute_inventory()), 1) inv_manager = InventoryManager() inv_manager._refresh_from_db(None) self.assertEquals( len(InventoryCacheManager.get_all_compute_inventory()), 0) self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.INFO) event_type = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_HOST_REMOVED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'VmHost') self.assertEquals(payload['entity_id'], deleted_host.id)
def test_host_disconnected_event(self): self.__mock_service_get_all_by_topic() backedUp_libvirt = connection.libvirt connection.libvirt = libvirt try: compute_id = '1' virtConnection = LibvirtConnection(False) vmHost = VmHost() vmHost.id = compute_id vmHost.set_virtualMachineIds([]) InventoryCacheManager.update_object_in_cache(compute_id, vmHost) # virtConnection.setUuid('34353438-3934-434e-3738-313630323543' # ) virtConnection._wrapped_conn = None virtConnection.compute_rmcontext = \ ComputeRMContext(rmType='KVM', rmIpAddress='10.10.155.165', rmUserName='******', rmPassword='******') cachedHost = VmHost() cachedHost.id = compute_id cachedHost.connectionState = Constants.VMHOST_CONNECTED self.mox.StubOutWithMock(InventoryCacheManager, 'get_object_from_cache') self.mox.StubOutWithMock(InventoryCacheManager, 'get_compute_conn_driver') InventoryCacheManager.get_compute_conn_driver( self.libvirtVmHost.compute_id, Constants.VmHost).AndReturn(fake.get_connection()) InventoryCacheManager.get_object_from_cache( compute_id, Constants.VmHost).AndReturn(cachedHost) self.mox.StubOutWithMock(api, 'vm_host_save') api.vm_host_save(mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(None) self.mox.ReplayAll() libvirtEvents = LibvirtEvents() libvirtVmHost = LibvirtVmHost(virtConnection._wrapped_conn, compute_id, libvirtEvents) libvirtVmHost.processUpdates() self.assertEquals(libvirtVmHost.vmHost.get_connectionState(), Constants.VMHOST_DISCONNECTED) self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.CRITICAL) event_type = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_HOST_DISCONNECTED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'VmHost') self.assertEquals(payload['entity_id'], libvirtVmHost.compute_id) finally: connection.libvirt = backedUp_libvirt
def notify(event_type, obj, **kwargs): """Generate event for a event type id This API is used by the different healthnmon modules which need to generate event. Parameters: event_type - One of the event types declared in healthnmon.events.event_meta_data obj - Vm, VmHost or StorageVolume object for which this event is to be generated """ eventmetadata_obj = event_metadata.get_EventMetaData(event_type) payload = payload_generator.generate_payload(eventmetadata_obj, obj, **kwargs) # Set publisher_id as <nova-scheduler-service.host>.healthnmon publisher_id = None admin_ctxt = context.get_admin_context() scheduler_services = None try: scheduler_services = \ nova_db.service_get_all_by_topic(admin_ctxt, 'scheduler') except: LOG.error(_('Could not fetch scheduler service from nova db')) if scheduler_services is None or len(scheduler_services) < 1: LOG.debug(_('Scheduler service not found.')) else: if len(scheduler_services) > 1: LOG.debug(_('More than 1 entry for Scheduler service found.' )) scheduler_service = scheduler_services[0] scheduler_service_host = scheduler_service['host'] if scheduler_service_host is None \ or len(scheduler_service_host) < 1: LOG.debug(_('Invalid host name for Scheduler service entry : ' + str(scheduler_service_host))) else: publisher_id = scheduler_service_host + '.' + 'healthnmon' if publisher_id is None: publisher_id = 'healthnmon' LOG.warn(_('Could not determine host name of nova scheduler service. \ Using default publisher id %s' % publisher_id)) # Send message to notifier api LOG.debug(_('Sending notification with publisher_id: %s, name: %s,\ payload: %s') % (publisher_id, eventmetadata_obj.get_event_fully_qal_name(), payload)) notifier_api.notify(admin_ctxt, publisher_id, eventmetadata_obj.get_event_fully_qal_name(), eventmetadata_obj.priority, payload)
def testVmHostPayloadGenerator(self): metadata = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_HOST_ADDED) obj = VmHost() obj.name = 'TestVmHost' ipProfile = IpProfile() ipProfile.ipAddress = '10.10.10.1' obj.add_ipAddresses(ipProfile) payload = payload_generator.generate_payload(metadata, obj) self.assertEquals(payload['entity_type'], obj.__class__.__name__) self.assertEquals(payload['name'], obj.name) self.assertEquals(payload['ipAddresses'], ipProfile.ipAddress)
def _getEventMsgForEventType(self, event_type, notifications): '''Get the notification message corresponding to a even_type from a list of notifications Parameters: event_type - One of the event_metadata event_type name notifications - A list of notification messages ''' metadata = event_metadata.get_EventMetaData(event_type) event_type_name = metadata.get_event_fully_qal_name() for msg in notifications: if msg['event_type'] == event_type_name: return msg return msg
def _getEventMsgForEventType(self, event_type, notifications): '''Get the notification message corresponding to a even_type from a list of notifications Parameters: event_type - One of the event_metadata event_type name notifications - A list of notification messages ''' metadata = event_metadata.get_EventMetaData(event_type) event_type_name = metadata.get_event_fully_qal_name() for msg in notifications: if msg['event_type'] == event_type_name: return msg return msg
def testVmHostPayloadGenerator(self): metadata = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_HOST_ADDED) obj = VmHost() obj.name = 'TestVmHost' ipProfile = IpProfile() ipProfile.ipAddress = '10.10.10.1' obj.add_ipAddresses(ipProfile) payload = payload_generator.generate_payload(metadata, obj) self.assertEquals(payload['entity_type'], obj.__class__.__name__) self.assertEquals(payload['name'], obj.name) self.assertEquals(payload['ipAddresses'], ipProfile.ipAddress)
def notify(event_type, obj, **kwargs): """Generate event for a event type id This API is used by the different healthnmon modules which need to generate event. Parameters: event_type - One of the event types declared in healthnmon.events.event_meta_data obj - Vm, VmHost or StorageVolume object for which this event is to be generated """ eventmetadata_obj = event_metadata.get_EventMetaData(event_type) payload = payload_generator.generate_payload(eventmetadata_obj, obj, **kwargs) # Set publisher_id as <nova-scheduler-service.host>.healthnmon publisher_id = None admin_ctxt = context.get_admin_context() scheduler_services = None try: scheduler_services = \ nova_db.service_get_all_by_topic(admin_ctxt, 'scheduler') except: LOG.warn(_('Could not fetch scheduler service from nova db')) if scheduler_services is None or len(scheduler_services) < 1: LOG.warn(_('Scheduler service not found.')) else: if len(scheduler_services) > 1: LOG.warn(_('More than 1 entry for Scheduler service found.')) scheduler_service = scheduler_services[0] scheduler_service_host = scheduler_service['host'] if scheduler_service_host is None \ or len(scheduler_service_host) < 1: LOG.warn( _('Invalid host name for Scheduler service entry : ' + str(scheduler_service_host))) else: publisher_id = scheduler_service_host + '.' + 'healthnmon' if publisher_id is None: publisher_id = 'healthnmon' LOG.warn( _('Could not determine host name of nova scheduler service. Using default publisher id %s' % publisher_id)) # Send message to notifier api notifier_api.notify(admin_ctxt, publisher_id, eventmetadata_obj.get_event_fully_qal_name(), eventmetadata_obj.priority, payload)
def testNotifyExceptionScheduler(self): nova_db.service_get_all_by_topic(mox.IgnoreArg(), mox.IgnoreArg()).AndRaise(Exception()) self.mox.ReplayAll() self.assertEquals( events_api.notify(event_metadata.EVENT_TYPE_VM_DELETED, self.vm), None) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.INFO) event_type = event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_VM_DELETED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) self.assertEquals(msg['publisher_id'], 'healthnmon') payload = msg['payload'] self.assertEquals(payload['entity_type'], 'Vm') self.assertEquals(payload['entity_id'], self.vm.get_id())
def test_network_added_event(self): cachedHost = VmHost() cachedHost.id = self.libvirtNetwork.compute_id vmhost = VmHost() vmhost.id = self.libvirtNetwork.compute_id vswitch = VirtualSwitch() vswitch.set_id("11") vswitch.set_name("vs1") vmhost.set_virtualSwitches([vswitch]) self.libvirtNetwork._processNetworkEvents(cachedHost, vmhost) self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg["priority"], notifier_api.INFO) event_type = event_metadata.get_EventMetaData(event_metadata.EVENT_TYPE_NETWORK_ADDED) self.assertEquals(msg["event_type"], event_type.get_event_fully_qal_name()) payload = msg["payload"] self.assertEquals(payload["entity_type"], "VirtualSwitch") self.assertEquals(payload["entity_id"], vswitch.get_id())
def test_network_added_event(self): cachedHost = VmHost() cachedHost.id = self.libvirtNetwork.compute_id vmhost = VmHost() vmhost.id = self.libvirtNetwork.compute_id vswitch = VirtualSwitch() vswitch.set_id("11") vswitch.set_name("vs1") vmhost.set_virtualSwitches([vswitch]) self.libvirtNetwork._processNetworkEvents(cachedHost, vmhost) self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.INFO) event_type = event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_NETWORK_ADDED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'VirtualSwitch') self.assertEquals(payload['entity_id'], vswitch.get_id())
def testVmHostPayload_with_storage_size(self): self.flags(instances_path="/var/lib/nova/instances") metadata = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_HOST_ADDED) obj = VmHost() obj.name = 'TestVmHost' ipProfile = IpProfile() ipProfile.ipAddress = '10.10.10.1' obj.add_ipAddresses(ipProfile) storage_obj = StorageVolume() storage_obj.id = "storage_id" storage_obj.name = 'TestStorageVolume' storage_obj.connectionState = 'ACTIVE' storage_obj.size = 200 storage_obj.free = 100 storage_obj.volumeType = 'DIR' storage_obj.volumeId = 'TestVolumeId' storage_obj.createEpoch = long(time.time() * 1000) storage_obj.lastModifiedEpoch = long(time.time() * 1000) mount_point = HostMountPoint() mount_point.set_path('/var/lib/nova/instances') mount_point.set_vmHostId('TestVmHost') storage_obj.add_mountPoints(mount_point) obj.add_storageVolumeIds("storage_id") self.mox.StubOutWithMock( InventoryCacheManager, 'get_object_from_cache') InventoryCacheManager.get_object_from_cache( storage_obj.id, Constants.StorageVolume).AndReturn(storage_obj) self.mox.ReplayAll() payload = payload_generator.generate_payload(metadata, obj) self.assertEquals(payload['entity_type'], obj.__class__.__name__) self.assertEquals(payload['name'], obj.name) self.assertEquals(payload['ipAddresses'], ipProfile.ipAddress) self.assertEquals(payload['totalStorageSize'], storage_obj.size) self.assertEquals(payload['storageUsed'], storage_obj.free)
def test_network_deleted_event(self): cachedHost = VmHost() cachedHost.id = self.libvirtNetwork.compute_id vswitch = VirtualSwitch() vswitch.set_id("11") vswitch.set_name("vs1") cachedHost.set_virtualSwitches([vswitch]) vmhost = copy.deepcopy(cachedHost) vmhost.get_virtualSwitches().pop() self.assertEquals(vmhost.get_virtualSwitches(), []) self.libvirtNetwork._processNetworkEvents(cachedHost, vmhost) self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.INFO) event_type = event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_NETWORK_DELETED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'VirtualSwitch') self.assertEquals(payload['entity_id'], vswitch.get_id())
def testNotifyMultipleScheduler(self): scheduler_services = [{'host': 'testhost'}, {'host': 'testhost2'}] nova_db.service_get_all_by_topic( mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(scheduler_services) self.mox.ReplayAll() self.assertEquals( events_api.notify(event_metadata.EVENT_TYPE_VM_DELETED, self.vm), None) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.INFO) event_type = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_VM_DELETED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) self.assertEquals(msg['publisher_id'], 'testhost.healthnmon') payload = msg['payload'] self.assertEquals(payload['entity_type'], 'Vm') self.assertEquals(payload['entity_id'], self.vm.get_id())
def test_storage_disabled_event(self): storagePool = libvirt.virStoragePool() self.mox.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_ACTIVE self.mox.StubOutWithMock( InventoryCacheManager, 'get_object_from_cache') InventoryCacheManager.get_object_from_cache(storagePool.UUIDString(), Constants.StorageVolume).AndReturn(cachedStorageVolume) self.mox.StubOutWithMock(storagePool, 'isActive') storagePool.isActive().AndReturn(0) # self.mox.StubOutWithMock(InventoryCacheManager, 'get_compute_conn_driver') # # InventoryCacheManager.get_compute_conn_driver(self.LibvirtStorageVolume.compute_id, # Constants.VmHost).AndReturn(fake.get_connection()) self.mox.ReplayAll() self.LibvirtStorageVolume._processStorage(storagePool) self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.WARN) event_type = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_STORAGE_DISABLED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'StorageVolume') self.assertEquals(payload['entity_id'], storagePool.UUIDString()) self.assertEquals(payload['state'], Constants.STORAGE_STATE_INACTIVE)
def test_storage_disabled_event(self): storagePool = libvirt.virStoragePool() self.mox.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_ACTIVE self.mox.StubOutWithMock(InventoryCacheManager, 'get_object_from_cache') InventoryCacheManager.get_object_from_cache( storagePool.UUIDString(), Constants.StorageVolume).AndReturn(cachedStorageVolume) self.mox.StubOutWithMock(storagePool, 'isActive') storagePool.isActive().AndReturn(0) # self.mox.StubOutWithMock(InventoryCacheManager, 'get_compute_conn_driver') # # InventoryCacheManager.get_compute_conn_driver(self.LibvirtStorageVolume.compute_id, # Constants.VmHost).AndReturn(fake.get_connection()) self.mox.ReplayAll() self.LibvirtStorageVolume._processStorage(storagePool) self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.WARN) event_type = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_STORAGE_DISABLED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'StorageVolume') self.assertEquals(payload['entity_id'], storagePool.UUIDString()) self.assertEquals(payload['state'], Constants.STORAGE_STATE_INACTIVE)
def test_vm_created_event(self): domainObj = libvirt.virDomain() self.mox.StubOutWithMock(api, 'vm_save') api.vm_save(mox.IgnoreArg(), mox.IgnoreArg()).MultipleTimes().AndReturn(None) self.mox.StubOutWithMock(InventoryCacheManager, 'get_object_from_cache') InventoryCacheManager.get_object_from_cache( domainObj.UUIDString(), Constants.Vm).AndReturn(None) self.mox.ReplayAll() self.libvirtVM._processVm(domainObj) self.assertEquals(len(test_notifier.NOTIFICATIONS), 1) msg = test_notifier.NOTIFICATIONS[0] self.assertEquals(msg['priority'], notifier_api.INFO) event_type = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_VM_CREATED) self.assertEquals(msg['event_type'], event_type.get_event_fully_qal_name()) payload = msg['payload'] self.assertEquals(payload['entity_type'], 'Vm') self.assertEquals(payload['entity_id'], domainObj.UUIDString())
def testVmHostPayload_with_storage_size(self): self.flags(instances_path="/var/lib/nova/instances") metadata = \ event_metadata.get_EventMetaData( event_metadata.EVENT_TYPE_HOST_ADDED) obj = VmHost() obj.name = 'TestVmHost' ipProfile = IpProfile() ipProfile.ipAddress = '10.10.10.1' obj.add_ipAddresses(ipProfile) storage_obj = StorageVolume() storage_obj.id = "storage_id" storage_obj.name = 'TestStorageVolume' storage_obj.connectionState = 'ACTIVE' storage_obj.size = 200 storage_obj.free = 100 storage_obj.volumeType = 'DIR' storage_obj.volumeId = 'TestVolumeId' storage_obj.createEpoch = long(time.time() * 1000) storage_obj.lastModifiedEpoch = long(time.time() * 1000) mount_point = HostMountPoint() mount_point.set_path('/var/lib/nova/instances') mount_point.set_vmHostId('TestVmHost') storage_obj.add_mountPoints(mount_point) obj.add_storageVolumeIds("storage_id") self.mox.StubOutWithMock(InventoryCacheManager, 'get_object_from_cache') InventoryCacheManager.get_object_from_cache( storage_obj.id, Constants.StorageVolume).AndReturn(storage_obj) self.mox.ReplayAll() payload = payload_generator.generate_payload(metadata, obj) self.assertEquals(payload['entity_type'], obj.__class__.__name__) self.assertEquals(payload['name'], obj.name) self.assertEquals(payload['ipAddresses'], ipProfile.ipAddress) self.assertEquals(payload['totalStorageSize'], storage_obj.size) self.assertEquals(payload['storageUsed'], storage_obj.free)
def testGet_EventMetaData(self): event_type = event_metadata.EVENT_TYPE_VM_CREATED meta = event_metadata.get_EventMetaData(event_type) self.assertEquals(meta, event_metadata.eventMetadataDict[event_type])
def testGet_EventMetaData(self): event_type = event_metadata.EVENT_TYPE_VM_CREATED meta = event_metadata.get_EventMetaData(event_type) self.assertEquals(meta, event_metadata.eventMetadataDict[event_type])