Jump to: navigation, search

Trove/trove-notifications

< Trove
Revision as of 17:24, 1 April 2013 by Robert Myers (talk | contribs) (Reddwarf Notifications)

Reddwarf Notifications

Reddwarf will emit events for resources as they are manipulated. These events can be used to meter the service and possibly used to calculate bills.

Task Manager Events

Reddwarf taskmanager is responsible for dispatching tasks and sending notification events. Here is a typical example::

from reddwarf.openstack.common.notifier import api as notifier from reddwarf.openstack.common import timeutils

class NotifyMixin(object):

   """Notification Mixin
   This adds the ability to send usage events to an Instance object.
   """
   def send_usage_event(self, event_type, **kwargs):
       event_type = 'reddwarf.instance.%s' % event_type
       publisher_id = CONF.host
       # Grab the instance size from the kwargs or from the nova client
       instance_size = kwargs.pop('instance_size', None)
       if instance_size is None:
           flavor = self.nova_client.flavors.get(self.flavor_id)
           instance_size = flavor.ram
       # Default payload
       created_time = timeutils.isotime(self.db_info.created)
       payload = {
           'instance_size': instance_size,
           'tenant_id': self.tenant_id,
           'instance_id': self.id,
           'instance_name': self.name,
           'created_at': created_time,
           'launched_at': created_time,
           'nova_instance_id': self.server_id,
       }
       if CONF.reddwarf_volume_support:
           payload.update({
               'volume_size': self.volume_size,
               'nova_volume_id': self.volume_id
           })
       # Update payload with all other kwargs
       payload.update(kwargs)
       notifier.notify(self.context, publisher_id, event_type, 'INFO',
                       payload)


Create Event

Create Events are emitted when a resource is created:

self.send_usage_event('create', instance_size=flavor_ram)

Sample Message:

{balh}

Delete Event

Delete Events are emitted when a resource is deleted:

Sample:


Exists Event

Exists Events are emitted periodically signifying that the resource exists.

Sample: