import repository from arizona
[raven.git] / tools / highproc_killer / highproc_killer.py
1 import os, sys, time
2 import plcapilib
3
4 # Parse additional options
5 shortopts = "s:"
6 longopts = ["slicename="]
7 moreusage = """
8 usage: %s [OPTION]...
9
10 Shell options:
11         -s (--slicename) slicename      Slice name to reset
12 """ % sys.argv[0]
13
14 reset = False
15 startup = False
16 slicename = None
17 (plcapi, moreopts, argv) = plcapilib.plcapi(globals(), sys.argv, shortopts, longopts, moreusage)
18 for opt, optval in moreopts.iteritems():
19     if opt == "-s" or opt == "--slicename":
20         slicename = optval
21
22 if not slicename:
23     print "must use --slicename"
24     sys.exit(1)
25
26 comon_fn = "comon_high_proc_nodes"
27
28 comon_url = "http://summer.cs.princeton.edu/status/tabulator.cgi?table=slices/table_arizona_stork2&format=formatcsv&select='numprocs>200'&dumpcols='nodename,numprocs'"
29 os.system("curl -o " + comon_fn + " \"" + comon_url + "\"")
30
31 comon_file = open(comon_fn)
32
33 # the first line is a header
34 comon_file.readline()
35
36 highproc_names = []
37
38 comon_lines = comon_file.readlines()
39 for line in comon_lines:
40    line = line.rstrip("\n").split(",")
41    line = [r.strip() for r in line]
42
43    name = line[0]
44    procs = int(line[1])
45
46    print name + ": " + str(procs) + " processes"
47
48    if procs>200:
49        highproc_names.append(name)
50
51 print "deleting: " + str(highproc_names)
52 SliceNodesDel(slicename, highproc_names)
53
54 print "sleeping for 1 hour"
55 time.sleep(60 * 60)
56
57 print "adding: " + str(highproc_names)
58 SliceNodesAdd(slicename, highproc_names)
59