Example #1
0
def _emit_versioned_exception_notification(context, ex, source):
    versioned_exception_payload = exception.ExceptionPayload.from_exception(ex)
    publisher = base.NotificationPublisher(host=CONF.host, source=source)
    event_type = base.EventType(object='compute',
                                action=fields.NotificationAction.EXCEPTION)
    notification = exception.ExceptionNotification(
        publisher=publisher,
        event_type=event_type,
        priority=fields.NotificationPriority.ERROR,
        payload=versioned_exception_payload)
    notification.emit(context)
Example #2
0
def _send_versioned_instance_update(context, instance, payload, host, service):

    def _map_legacy_service_to_source(legacy_service):
        if not legacy_service.startswith('nova-'):
            return 'nova-' + service
        else:
            return service

    state_update = instance_notification.InstanceStateUpdatePayload(
        old_state=payload.get('old_state'),
        state=payload.get('state'),
        old_task_state=payload.get('old_task_state'),
        new_task_state=payload.get('new_task_state'))

    audit_period = instance_notification.AuditPeriodPayload(
            audit_period_beginning=payload.get('audit_period_beginning'),
            audit_period_ending=payload.get('audit_period_ending'))

    bandwidth = [instance_notification.BandwidthPayload(
                    network_name=label,
                    in_bytes=bw['bw_in'],
                    out_bytes=bw['bw_out'])
                 for label, bw in payload['bandwidth'].items()]

    versioned_payload = instance_notification.InstanceUpdatePayload(
        context=context,
        instance=instance,
        state_update=state_update,
        audit_period=audit_period,
        bandwidth=bandwidth,
        old_display_name=payload.get('old_display_name'))

    notification = instance_notification.InstanceUpdateNotification(
        priority=fields.NotificationPriority.INFO,
        event_type=notification_base.EventType(
            object='instance',
            action=fields.NotificationAction.UPDATE),
        publisher=notification_base.NotificationPublisher(
                host=host or CONF.host,
                source=_map_legacy_service_to_source(service)),
        payload=versioned_payload)
    notification.emit(context)