Skip to content

Instantly share code, notes, and snippets.

@zhanghui9700
Forked from vagelim/openstackEvents.py
Created November 14, 2016 15:26
Show Gist options
  • Save zhanghui9700/9a83268e87e7ed3aa330ce0fadde8c7e to your computer and use it in GitHub Desktop.
Save zhanghui9700/9a83268e87e7ed3aa330ce0fadde8c7e to your computer and use it in GitHub Desktop.
Event notification listener for OpenStack
########################################
# Required changes to nova.conf #
########################################
# notification_driver=nova.openstack.common.notifier.rpc_notifier
# notification_topics = notifications
# notify_on_state_change = vm_and_task_state
# instance_usage_audit_period = hour
# instance_usage_audit = True
# default_notification_level = INFO
# notify_api_faults = true
###### Restart Nova services after making the above changes #######
# Environment Variables: $AMQP_USER, $AMQP_PASSWORD, $AMQP_HOST
import os
from kombu import Connection, Exchange, Queue
from pprint import pprint
nova_x = Exchange('nova', type='topic', durable=False)
info_q = Queue('notifications.info', exchange=nova_x, durable=False,
routing_key='notifications.info')
def process_msg(body, message):
print '='*80
pprint(body)
message.ack()
# Maybe wrap these in try/except: will raise KeyError if not found
AMQP_USER = os.environ['AMQP_USER']
AMQP_PASSWORD = os.environ['AMQP_PASSWORD']
AMQP_HOST = os.environ['AMQP_HOST']
# Maybe wrap this in a try/except: will raise socket.error if connection refused
with Connection('amqp://{0}:{1}@{2}//'.format(AMQP_USER, AMQP_PASSWORD, AMQP_HOST)) as conn:
with conn.Consumer(info_q, callbacks=[process_msg]):
try:
while True:
conn.drain_events()
except KeyboardInterrupt:
exit()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment