diff options
author | Michael DeHaan <michael.dehaan@gmail.com> | 2014-09-26 10:40:16 -0400 |
---|---|---|
committer | Michael DeHaan <michael.dehaan@gmail.com> | 2014-09-26 10:40:16 -0400 |
commit | b1e789968bdb5cbad54e86c0d09ec42213eafd7a (patch) | |
tree | 4cf0326387831c1040e8b06f108228874ead09c9 /monitoring/pingdom.py | |
parent | 50f105578a07361e60f95a63da6acb5660765871 (diff) | |
download | ansible-modules-extras-b1e789968bdb5cbad54e86c0d09ec42213eafd7a.tar.gz |
File extensions!
Diffstat (limited to 'monitoring/pingdom.py')
-rw-r--r-- | monitoring/pingdom.py | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/monitoring/pingdom.py b/monitoring/pingdom.py new file mode 100644 index 00000000..6f658cd9 --- /dev/null +++ b/monitoring/pingdom.py @@ -0,0 +1,135 @@ +#!/usr/bin/python + +DOCUMENTATION = ''' + +module: pingdom +short_description: Pause/unpause Pingdom alerts +description: + - This module will let you pause/unpause Pingdom alerts +version_added: "1.2" +author: Justin Johns +requirements: + - "This pingdom python library: https://github.com/mbabineau/pingdom-python" +options: + state: + description: + - Define whether or not the check should be running or paused. + required: true + default: null + choices: [ "running", "paused" ] + aliases: [] + checkid: + description: + - Pingdom ID of the check. + required: true + default: null + choices: [] + aliases: [] + uid: + description: + - Pingdom user ID. + required: true + default: null + choices: [] + aliases: [] + passwd: + description: + - Pingdom user password. + required: true + default: null + choices: [] + aliases: [] + key: + description: + - Pingdom API key. + required: true + default: null + choices: [] + aliases: [] +notes: + - This module does not yet have support to add/remove checks. +''' + +EXAMPLES = ''' +# Pause the check with the ID of 12345. +- pingdom: uid=example@example.com + passwd=password123 + key=apipassword123 + checkid=12345 + state=paused + +# Unpause the check with the ID of 12345. +- pingdom: uid=example@example.com + passwd=password123 + key=apipassword123 + checkid=12345 + state=running +''' + +try: + import pingdom + HAS_PINGDOM = True +except: + HAS_PINGDOM = False + + + +def pause(checkid, uid, passwd, key): + + c = pingdom.PingdomConnection(uid, passwd, key) + c.modify_check(checkid, paused=True) + check = c.get_check(checkid) + name = check.name + result = check.status + #if result != "paused": # api output buggy - accept raw exception for now + # return (True, name, result) + return (False, name, result) + + +def unpause(checkid, uid, passwd, key): + + c = pingdom.PingdomConnection(uid, passwd, key) + c.modify_check(checkid, paused=False) + check = c.get_check(checkid) + name = check.name + result = check.status + #if result != "up": # api output buggy - accept raw exception for now + # return (True, name, result) + return (False, name, result) + + +def main(): + + module = AnsibleModule( + argument_spec=dict( + state=dict(required=True, choices=['running', 'paused', 'started', 'stopped']), + checkid=dict(required=True), + uid=dict(required=True), + passwd=dict(required=True), + key=dict(required=True) + ) + ) + + if not HAS_PINGDOM: + module.fail_json(msg="Missing requried pingdom module (check docs)") + + checkid = module.params['checkid'] + state = module.params['state'] + uid = module.params['uid'] + passwd = module.params['passwd'] + key = module.params['key'] + + if (state == "paused" or state == "stopped"): + (rc, name, result) = pause(checkid, uid, passwd, key) + + if (state == "running" or state == "started"): + (rc, name, result) = unpause(checkid, uid, passwd, key) + + if rc != 0: + module.fail_json(checkid=checkid, name=name, status=result) + + module.exit_json(checkid=checkid, name=name, status=result) + +# import module snippets +from ansible.module_utils.basic import * +main() |