Better message format description
This commit is contained in:
		@@ -13,12 +13,46 @@
 | 
				
			|||||||
#    License for the specific language governing permissions and limitations
 | 
					#    License for the specific language governing permissions and limitations
 | 
				
			||||||
#    under the License.
 | 
					#    under the License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import datetime
 | 
				
			||||||
 | 
					import json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from nova import flags
 | 
					from nova import flags
 | 
				
			||||||
from nova import utils
 | 
					from nova import utils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
FLAGS = flags.FLAGS
 | 
					FLAGS = flags.FLAGS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def notify(event_name, model):
 | 
					flags.DEFINE_string('default_notification_level', 'info',
 | 
				
			||||||
    """Sends a notification using the specified driver"""
 | 
					                    'Default notification level for outgoing notifications')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					WARN = 'WARN'
 | 
				
			||||||
 | 
					INFO = 'INFO'
 | 
				
			||||||
 | 
					ERROR = 'ERROR'
 | 
				
			||||||
 | 
					CRITICAL = 'CRITICAL'
 | 
				
			||||||
 | 
					DEBUG = 'DEBUG'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					log_levels = (DEBUG, WARN, INFO, ERROR, CRITICAL)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def notify(event_name, publisher_id, event_type, priority, payload):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    Sends a notification using the specified driver
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Message format is as follows:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    publisher_id - the source worker_type.host of the message
 | 
				
			||||||
 | 
					    timestamp - the GMT timestamp the notification was sent at
 | 
				
			||||||
 | 
					    event_type - the literal type of event (ex. Instance Creation)
 | 
				
			||||||
 | 
					    priority - patterned after the enumeration of Python logging levels in
 | 
				
			||||||
 | 
					               the set (DEBUG, WARN, INFO, ERROR, CRITICAL)
 | 
				
			||||||
 | 
					    payload - A python dictionary of attributes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    The payload will be constructed as a dictionary of the above attributes,
 | 
				
			||||||
 | 
					    and converted into a JSON dump, which will then be sent via the transport
 | 
				
			||||||
 | 
					    mechanism defined by the driver.
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
    driver = utils.import_class(FLAGS.notification_driver)()
 | 
					    driver = utils.import_class(FLAGS.notification_driver)()
 | 
				
			||||||
    driver.notify(event_name, model)
 | 
					    message = dict(publisher_id=publisher_id,
 | 
				
			||||||
 | 
					                   event_type=event_type,
 | 
				
			||||||
 | 
					                   priority=priority,
 | 
				
			||||||
 | 
					                   payload=payload,
 | 
				
			||||||
 | 
					                   time=datetime.datetime.utcnow())
 | 
				
			||||||
 | 
					    driver.notify(json.dumps(message))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,13 +25,13 @@ FLAGS = flags.FLAGS
 | 
				
			|||||||
flags.DEFINE_string('notification_topic', 'notifications', 
 | 
					flags.DEFINE_string('notification_topic', 'notifications', 
 | 
				
			||||||
                    'RabbitMQ topic used for Nova notifications')
 | 
					                    'RabbitMQ topic used for Nova notifications')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class RabbitNotifier(object):
 | 
					class RabbitNotifier(object):
 | 
				
			||||||
    """Sends notifications to a specific RabbitMQ server and topic"""
 | 
					    """Sends notifications to a specific RabbitMQ server and topic"""
 | 
				
			||||||
    pass
 | 
					    pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def notify(self, event_name, model):
 | 
					    def notify(self, payload):
 | 
				
			||||||
        """Sends a notification to the RabbitMQ"""
 | 
					        """Sends a notification to the RabbitMQ"""
 | 
				
			||||||
        context = nova.context.get_admin_context()
 | 
					        context = nova.context.get_admin_context()
 | 
				
			||||||
        topic = FLAGS.notification_topic
 | 
					        topic = FLAGS.notification_topic
 | 
				
			||||||
        msg = { 'event_name': event_name, 'model': model.__dict__ }
 | 
					        rpc.cast(context, topic, msg)
 | 
				
			||||||
        rpc.cast(context, topic, json.dumps(msg))
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user