summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToshio Kuratomi <toshio@fedoraproject.org>2015-07-20 23:28:29 -0700
committerToshio Kuratomi <toshio@fedoraproject.org>2015-07-20 23:28:29 -0700
commitd6b0cf7bc4ff320cd2e2ed00739a7c4fa5f7ff3b (patch)
tree6aabc4500eeba466ebe302b98dc877a902a852e0
parent79173ac18de66bcdb6c25729fb4561c772d37cab (diff)
downloadansible-modules-extras-fetch_url-campfire.tar.gz
Port campifre to fetch_urlfetch_url-campfire
-rw-r--r--notification/campfire.py72
1 files changed, 27 insertions, 45 deletions
diff --git a/notification/campfire.py b/notification/campfire.py
index 2400ad3b..62d65015 100644
--- a/notification/campfire.py
+++ b/notification/campfire.py
@@ -42,7 +42,7 @@ options:
"vuvuzela", "what", "whoomp", "yeah", "yodel"]
# informational: requirements for nodes
-requirements: [ urllib2, cgi ]
+requirements: [ ]
author: "Adam Garside (@fabulops)"
'''
@@ -53,19 +53,10 @@ EXAMPLES = '''
msg="Task completed ... with feeling."
'''
+import cgi
def main():
- try:
- import urllib2
- except ImportError:
- module.fail_json(msg="urllib2 is required")
-
- try:
- import cgi
- except ImportError:
- module.fail_json(msg="cgi is required")
-
module = AnsibleModule(
argument_spec=dict(
subscription=dict(required=True),
@@ -102,42 +93,33 @@ def main():
MSTR = "<message><body>%s</body></message>"
AGENT = "Ansible/1.2"
- try:
-
- # Setup basic auth using token as the username
- pm = urllib2.HTTPPasswordMgrWithDefaultRealm()
- pm.add_password(None, URI, token, 'X')
-
- # Setup Handler and define the opener for the request
- handler = urllib2.HTTPBasicAuthHandler(pm)
- opener = urllib2.build_opener(handler)
-
- target_url = '%s/room/%s/speak.xml' % (URI, room)
-
- # Send some audible notification if requested
- if notify:
- req = urllib2.Request(target_url, NSTR % cgi.escape(notify))
- req.add_header('Content-Type', 'application/xml')
- req.add_header('User-agent', AGENT)
- response = opener.open(req)
-
- # Send the message
- req = urllib2.Request(target_url, MSTR % cgi.escape(msg))
- req.add_header('Content-Type', 'application/xml')
- req.add_header('User-agent', AGENT)
- response = opener.open(req)
-
- except urllib2.HTTPError, e:
- if not (200 <= e.code < 300):
- module.fail_json(msg="unable to send msg: '%s', campfire api"
- " returned error code: '%s'" %
- (msg, e.code))
-
- except Exception, e:
- module.fail_json(msg="unable to send msg: %s" % msg)
+ # Hack to add basic auth username and password the way fetch_url expects
+ module.params['username'] = token
+ module.params['password'] = 'X'
+
+ target_url = '%s/room/%s/speak.xml' % (URI, room)
+ headers = {'Content-Type': 'application/xml',
+ 'User-agent': AGENT}
+
+ # Send some audible notification if requested
+ if notify:
+ response, info = fetch_url(module, target_url, data=NSTR % cgi.escape(notify), headers=headers)
+ if info['status'] != 200:
+ module.fail_json(msg="unable to send msg: '%s', campfire api"
+ " returned error code: '%s'" %
+ (notify, info['status']))
+
+ # Send the message
+ response, info = fetch_url(module, target_url, data=MSTR %cgi.escape(msg), headers=headers)
+ if info['status'] != 200:
+ module.fail_json(msg="unable to send msg: '%s', campfire api"
+ " returned error code: '%s'" %
+ (msg, info['status']))
module.exit_json(changed=True, room=room, msg=msg, notify=notify)
# import module snippets
from ansible.module_utils.basic import *
-main()
+from ansible.module_utils.urls import *
+if __name__ == '__main__':
+ main()