summaryrefslogtreecommitdiff
path: root/monitoring/pingdom.py
diff options
context:
space:
mode:
authorMichael DeHaan <michael.dehaan@gmail.com>2014-09-26 10:40:16 -0400
committerMichael DeHaan <michael.dehaan@gmail.com>2014-09-26 10:40:16 -0400
commitb1e789968bdb5cbad54e86c0d09ec42213eafd7a (patch)
tree4cf0326387831c1040e8b06f108228874ead09c9 /monitoring/pingdom.py
parent50f105578a07361e60f95a63da6acb5660765871 (diff)
downloadansible-modules-extras-b1e789968bdb5cbad54e86c0d09ec42213eafd7a.tar.gz
File extensions!
Diffstat (limited to 'monitoring/pingdom.py')
-rw-r--r--monitoring/pingdom.py135
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()