merge recent v2 changes; migrating to v3
[monitor.git] / blacklist.py
1 #!/usr/bin/python
2
3 import os
4 import sys
5 import string
6 import time
7 from monitor import database
8 from monitor.database.info.model import *
9 import getopt
10
11 def usage():
12         print "blacklist.py --delete=<i>" 
13
14 def main():
15
16         loginbase = False
17
18         try:
19                 longopts = ["delete=", "loginbase", "help"]
20                 (opts, argv) = getopt.getopt(sys.argv[1:], "d:lh", longopts)
21         except getopt.GetoptError, err:
22                 print "Error: " + err.msg
23                 sys.exit(1)
24
25         hostnames_q = BlacklistRecord.getHostnameBlacklist()
26         loginbases_q = BlacklistRecord.getLoginbaseBlacklist()
27         hostnames  = [ h.hostname for h in hostnames_q ]
28         loginbases = [ h.loginbase for h in loginbases_q ]
29
30         for (opt, optval) in opts:
31                 if opt in ["-d", "--delete"]:
32                         i = optval
33                         bl = BlacklistRecord.get_by(hostname=i)
34                         bl.delete()
35                 elif opt in ["-l", "--loginbase"]:
36                         loginbase = True
37                 else:
38                         usage()
39                         sys.exit(0)
40
41         i_cnt = 0
42         if not loginbase:
43                 for i in hostnames:
44                         print i
45                         i_cnt += 1
46         else:
47                 for i in loginbases:
48                         print i
49                         i_cnt += 1
50                 
51
52
53         while 1:
54                 line = sys.stdin.readline()
55                 if not line:
56                         break
57                 line = line.strip()
58                 if line not in hostnames and line not in loginbases:
59                         if loginbase:
60                                 bl = BlacklistRecord(loginbase=line)
61                         else:
62                                 bl = BlacklistRecord(hostname=line)
63                         bl.flush()
64                         i_cnt += 1
65
66         session.flush()
67         if loginbase:
68                 print "Total %d loginbases in blacklist" % (i_cnt)
69         else:
70                 print "Total %d nodes in blacklist" % (i_cnt)
71         
72 if __name__ == '__main__':
73         import os
74         #try:
75         main()
76         #except Exception, error:
77         #       print "Exception %s" % error
78         #       sys.exit(0)