def testNotifierException(self): self.flags(healthnmon_notification_drivers=['healthnmon.tests.\ notifier.ExceptionNotifier'] ) event_type = 'LifeCycle.Vm.Reconfigured' publisher_id = 'healthnmon.unittest' priority = 'INFO' payload = {'entity_id': '024c1520-f836-47f7-3c91-df627096f8ab'} notifier_api.notify( self.context, publisher_id, event_type, priority, payload)
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 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 testNotify(self): self.flags(healthnmon_default_notification_level='INFO') event_type = 'LifeCycle.Vm.Reconfigured' publisher_id = 'healthnmon.unittest' priority = 'INFO' payload = {'entity_id': '024c1520-f836-47f7-3c91-df627096f8ab'} self.assertEquals( notifier_api.notify(self.context, publisher_id, event_type, priority, payload), None)