From ab54fd99e3af692868e7bf2dfa9ca342d606e36a Mon Sep 17 00:00:00 2001 From: Ralph Bean Date: Fri, 12 Jul 2013 20:20:34 +0000 Subject: [PATCH] First try of the fedmsg plugin. --- library/fedmsg | 81 +++++++++++++++++++++++++++++++++ playbooks/groups/badges-web.yml | 12 +++++ 2 files changed, 93 insertions(+) create mode 100644 library/fedmsg diff --git a/library/fedmsg b/library/fedmsg new file mode 100644 index 0000000000..6247d42bd3 --- /dev/null +++ b/library/fedmsg @@ -0,0 +1,81 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# (c) 2013, Ralph Bean +# LGPLv2+ +# +# You can pass this action an arbitrary number of kw arguments which will be +# used to make up the main message body (json). +# +# Dedicated to Seth Vidal. This was his idea. + +DOCUMENTATION = ''' +--- +module: fedmsg +short_description: Publish a message to fedmsg. +description: + - Send a message to a fedmsg-relay daemon. +options: + topic: + description: + - The short portion of the message topic. + required: false + default: log + modname: + description: + - The modname portion of the message topic. + required: false + default: ansible + +requirements: [ fedmsg ] +author: Ralph Bean +''' + +EXAMPLES = ''' +- fedmsg: msg="Testing this out" + +- local_action: fedmsg + topic="run.complete" + msg="{{ ansible_date_time.iso8601 }}" +''' + +import fedmsg +import fedmsg.config + + +def main(): + + module = AnsibleModule( + argument_spec=dict( + topic=dict(default="log"), + modname=dict(default="ansible"), + cert_prefix=dict(default="ansible"), + ), + check_invalid_arguments=False, + supports_check_mode=True + ) + + topic = module.params.pop('topic') + modname = module.params.pop('modname') + cert_prefix = module.params.pop('cert_prefix') + + try: + config = fedmsg.config.load_config() + config.update(dict( + name='relay_inbound', + cert_prefix=cert_prefix, + active=True, + )) + fedmsg.init(**config) + except Exception, e: + module.fail_json(msg="unable to initialize fedmsg: %s" % e) + + try: + fedmsg.publish(modname=modname, topic=topic, msg=module.params) + except Exception, e: + module.fail_json(msg="unable to send to fedmsg: %s" % e) + + module.exit_json(changed=False, **module.params) + +# this is magic, see lib/ansible/module_common.py +#<> +main() diff --git a/playbooks/groups/badges-web.yml b/playbooks/groups/badges-web.yml index 6c98e148f5..06b4bcdc0a 100644 --- a/playbooks/groups/badges-web.yml +++ b/playbooks/groups/badges-web.yml @@ -3,6 +3,12 @@ # NOTE: make sure there is room/space for this server on the vmhost # NOTE: most of these vars come from group_vars/badges-web* or from hostvars +- name: emit a fedmsg message that we are done + - local_action: fedmsg + cert_prefix="shell" + topic="playbook.start" + msg="just a test that we are starting" + - name: make badges-web server hosts: badges-web;badges-web-stg user: root @@ -49,3 +55,9 @@ handlers: - include: $handlers/restart_services.yml + +- name: emit a fedmsg message that we are done + - local_action: fedmsg + cert_prefix="shell" + topic="playbook.complete" + msg="just a test that we have completed"