add checkrt to indicate when a site has new or open tickets
[monitor.git] / nagios / plugins / checkescalation.py
diff --git a/nagios/plugins/checkescalation.py b/nagios/plugins/checkescalation.py
new file mode 100755 (executable)
index 0000000..1ab1156
--- /dev/null
@@ -0,0 +1,59 @@
+#!/usr/bin/python
+
+import time
+import sys
+import plc
+
+def argv_to_dict(argv):
+    """
+        NOTE: very bare-bones, no error checking, will fail easily.
+    """
+    d = {}
+    prev=None
+    for a in argv:
+        if "--" == a[0:2]:
+            prev = a[2:]
+        elif "-" == a[0:1]:
+            prev = a[1:]
+        else:
+            d[prev] = a
+    return d
+
+def main():
+    d = argv_to_dict(sys.argv[1:])
+
+    site = None
+    if 'site' in d:
+        site = d['site'].replace('site-cluster-for-','')
+    else:
+        print "No site specified"
+        sys.exit(1)
+
+    # define escalation by observed properties about the site.
+    # i.e. EXEMPT, level 0 (site enabled and slices ok), level 1 (site disabled), level 2 (slices)
+    if plc.isSiteExempt(site):
+        tags = plc.api.GetSiteTags({'login_base' : site, 'tagname' : 'exempt_site_until'})
+        print "Exempt: %s is exempt until %s" % (site, tags[0]['value'])
+        sys.exit(0)
+
+    extra_str = ""
+    
+    # are slices disabled?
+    slices_enabled = plc.areSlicesEnabled(site)
+    if isinstance(slices_enabled, bool) and not slices_enabled:
+        print "Level >= 2: slices are disabled at %s" % (site)
+        sys.exit(0)
+    elif isinstance(slices_enabled, type(None)):
+        extra_str = "And, no slices."
+
+    # Site is not exempt, so is it disabled?
+    if not plc.isSiteEnabled(site):
+        print "Level >= 1: site is disabled at %s. %s" % (site, extra_str)
+        sys.exit(0)
+
+    print "Level 0: no policy applied to site %s" % (site)
+    sys.exit(0)
+
+        
+if __name__ == '__main__':
+    main()