3 # Copyright (c) 2004 The Trustees of Princeton University (Trustees).
5 # Stephen Soltesz <soltesz@cs.princeton.edu>
7 # $Id: monitor.py,v 1.7 2007/07/03 19:59:02 soltesz Exp $
11 from monitor_policy import *
16 api = plc.PLC(auth.auth, auth.plc)
20 l_nodes = api.GetNodes(hostname)
22 raise Exception("No such host: %s" % hostname)
24 l_blacklist = soltesz.if_cached_else(1, "l_blacklist", lambda : [])
25 l_ticket_blacklist = soltesz.if_cached_else(1,"l_ticket_blacklist",lambda : [])
27 l_nodes = filter(lambda x : not x['hostname'] in l_blacklist, l_nodes)
29 raise Exception("Host removed via blacklist: %s" % hostname)
31 ad_dbTickets = soltesz.if_cached_else_refresh(True, False, "ad_dbTickets", lambda : [])
32 if ad_dbTickets == None:
33 raise Exception("Could not find cached dbTickets")
36 merge = Merge( [node['hostname'] for node in l_nodes])
37 record_list = merge.run()
39 rt = RT(record_list, ad_dbTickets, l_ticket_blacklist)
40 record_list = rt.run()
42 diag = Diagnose(record_list)
43 diagnose_out = diag.run()
46 action = Action(diagnose_out)
51 def reboot2(hostname):
52 l_nodes = api.GetNodes(hostname)
54 raise Exception("No such host: %s" % hostname)
56 l_blacklist = soltesz.if_cached_else(1, "l_blacklist", lambda : [])
57 l_ticket_blacklist = soltesz.if_cached_else(1,"l_ticket_blacklist",lambda : [])
59 l_nodes = filter(lambda x : not x['hostname'] in l_blacklist, l_nodes)
61 raise Exception("Host removed via blacklist: %s" % hostname)
63 ad_dbTickets = soltesz.if_cached_else_refresh(True, False, "ad_dbTickets", lambda : None)
64 if ad_dbTickets == None:
65 raise Exception("Could not find cached dbTickets")
69 args['hostname'] = "%s" % hostname
70 args['hostname_list'] = "%s" % hostname
71 args['loginbase'] = plc.siteId(hostname)
73 m = PersistMessage(hostname, "Please Update Boot Image for %s" % hostname,
74 mailtxt.newalphacd_one[1] % args, True, db='bootcd_persistmessages')
77 merge = Merge( [node['hostname'] for node in l_nodes])
78 record_list = merge.run()
80 rt = RT(record_list, ad_dbTickets, l_ticket_blacklist)
81 record_list = rt.run()
83 diag = Diagnose(record_list)
84 diagnose_out = diag.run()
87 action = Action(diagnose_out)
96 if __name__ == '__main__':