salt/tests/eventlisten.py

81 lines
1.8 KiB
Python
Raw Normal View History

'''
Use this script to dump the event data out to the terminal. It needs to know
what the sock_dir is.
This script is a generic tool to test event output
'''
# Import Python libs
import optparse
import pprint
import time
import os
# Import Salt libs
import salt.utils.event
2012-06-30 20:10:34 +00:00
def parse():
'''
Parse the script command line inputs
'''
parser = optparse.OptionParser()
parser.add_option('-s',
'--sock-dir',
dest='sock_dir',
default='/var/run/salt',
help=('Staticly define the directory holding the salt unix '
'sockets for communication'))
parser.add_option('-n',
'--node',
dest='node',
default='master',
help=('State if this listener will attach to a master or a '
'minion daemon, pass "master" or "minion"'))
options, args = parser.parse_args()
opts = {}
2012-06-30 20:10:34 +00:00
for k, v in options.__dict__.items():
if v is not None:
opts[k] = v
if 'minion' in options.node:
if args:
opts['id'] = args[0]
return opts
opts['id'] = options.node
2013-02-07 19:36:50 +00:00
2013-06-11 22:39:48 +00:00
opts['sock_dir'] = os.path.join(opts['sock_dir'], opts['node'])
return opts
def listen(sock_dir, node, id=None):
'''
Attach to the pub socket and grab messages
'''
event = salt.utils.event.SaltEvent(
2012-10-02 19:26:23 +00:00
node,
sock_dir,
id=id
)
2013-01-17 21:00:53 +00:00
print event.puburi
while True:
ret = event.get_event(full=True)
if ret is None:
continue
print('Event fired at {0}'.format(time.asctime()))
2012-06-30 20:10:34 +00:00
print('*' * 25)
print('Tag: {0}'.format(ret['tag']))
print('Data:')
pprint.pprint(ret['data'])
if __name__ == '__main__':
opts = parse()
listen(opts['sock_dir'], opts['node'], id=opts.get('id', ''))