add checkrt to indicate when a site has new or open tickets
[monitor.git] / nagios / plugins / checkescalation.py
1 #!/usr/bin/python
2
3 import time
4 import sys
5 import plc
6
7 def argv_to_dict(argv):
8     """
9         NOTE: very bare-bones, no error checking, will fail easily.
10     """
11     d = {}
12     prev=None
13     for a in argv:
14         if "--" == a[0:2]:
15             prev = a[2:]
16         elif "-" == a[0:1]:
17             prev = a[1:]
18         else:
19             d[prev] = a
20     return d
21
22 def main():
23     d = argv_to_dict(sys.argv[1:])
24
25     site = None
26     if 'site' in d:
27         site = d['site'].replace('site-cluster-for-','')
28     else:
29         print "No site specified"
30         sys.exit(1)
31
32     # define escalation by observed properties about the site.
33     # i.e. EXEMPT, level 0 (site enabled and slices ok), level 1 (site disabled), level 2 (slices)
34     if plc.isSiteExempt(site):
35         tags = plc.api.GetSiteTags({'login_base' : site, 'tagname' : 'exempt_site_until'})
36         print "Exempt: %s is exempt until %s" % (site, tags[0]['value'])
37         sys.exit(0)
38
39     extra_str = ""
40     
41     # are slices disabled?
42     slices_enabled = plc.areSlicesEnabled(site)
43     if isinstance(slices_enabled, bool) and not slices_enabled:
44         print "Level >= 2: slices are disabled at %s" % (site)
45         sys.exit(0)
46     elif isinstance(slices_enabled, type(None)):
47         extra_str = "And, no slices."
48
49     # Site is not exempt, so is it disabled?
50     if not plc.isSiteEnabled(site):
51         print "Level >= 1: site is disabled at %s. %s" % (site, extra_str)
52         sys.exit(0)
53
54     print "Level 0: no policy applied to site %s" % (site)
55     sys.exit(0)
56
57         
58 if __name__ == '__main__':
59     main()