Пример #1
0
    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)
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
 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)