- Timestamp:
- 10/16/09 17:49:16 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/examples/new_rack_pbsmon.py
r201 r202 35 35 SKIP_CHARS_NODE = 1 36 36 37 NODE_SPLIT_STR = '-'38 NODE_STR = 'r%dn%d'39 40 41 42 43 44 NODES_PER_RACK = 3245 37 START_RACK = 1 46 N_RACKS = 4347 38 48 39 pbs_ND_single = 'job (single)' … … 71 62 OPT_NODESTATUS = 1 72 63 OPT_SUMMARY = 0 73 OPT_WIDE = 074 64 OPT_SERVERNAME = None 75 76 77 def determine_limits(nodes): 65 OPT_SKIP_EMPTY_RACKS = 1 66 67 68 def parse_hostname(id): 78 69 """ 79 70 Determiine the the limits of the cluster: … … 81 72 - What is the max amount of nodes per rack 82 73 """ 83 rack_max = node_max = 0 84 for id in nodes: 85 result = NODE_EXPR.search(id) 86 if result: 87 88 number = int(result.group('racknr')[SKIP_CHARS_RACK:]) 89 if number > rack_max: 90 rack_max = number 91 92 number = int(result.group('nodenr')[SKIP_CHARS_NODE:]) 93 if number > node_max: 94 node_max = number 95 96 return (rack_max+1, node_max+1) 74 result = NODE_EXPR.search(id) 75 if result: 76 r = int(result.group('racknr')[SKIP_CHARS_RACK:]) 77 n = int(result.group('nodenr')[SKIP_CHARS_NODE:]) 78 79 return (r,n) 97 80 98 81 99 82 def pbsmon(server = None): 100 global NODES_PER_RACK, N_RACKS, PBS_STATES, OPT_WIDE83 global PBS_STATES 101 84 102 85 try: … … 122 105 node_dict = {} 123 106 124 number_of_racks, nodes_per_rack = determine_limits(nodes) 107 number_of_racks = nodes_per_rack = 0 108 #determine_limits(nodes) 125 109 126 110 for id in nodes: … … 144 128 state_char = PBS_STATES[pbs_ND_single] 145 129 146 #print 'TD: %s %s' % (nodename, state_char) 147 148 # Remove the prefix of the node, eg gb-r15n1 --> r15n1 149 # 150 dummy = string.split(nodes[id].name, NODE_SPLIT_STR) 151 node_dict[dummy[1]] = state_char 152 153 130 #print 'TD: %s %s' % (id, state_char) 131 132 racknr, nodenr = parse_hostname(id) 133 134 if racknr > number_of_racks: 135 number_of_racks = racknr 136 137 if nodenr > nodes_per_rack: 138 nodes_per_rack = nodenr 139 140 try: 141 node_dict[racknr][nodenr] = state_char 142 except KeyError: 143 node_dict[racknr] = dict() 144 node_dict[racknr][nodenr] = state_char 145 154 146 155 147 # print header lines 148 save_column = None 156 149 print ' ', 157 for rack in xrange(START_RACK, number_of_racks): 150 for rack in xrange(START_RACK, number_of_racks + 1): 151 158 152 if not (rack % 10): 159 print '%d' % (rack / 10), 160 else: 161 print ' ', 162 163 if OPT_WIDE: 164 print '', 153 char = '%d' %(rack/10) 154 save_column = char 155 else: 156 char = ' ' 157 158 if OPT_SKIP_EMPTY_RACKS: 159 if node_dict.has_key(rack): 160 if save_column: 161 char = save_column 162 save_column = None 163 164 print char, 165 else: 166 print char, 165 167 print 166 168 167 169 print ' ', 168 for rack in xrange(START_RACK, number_of_racks): 169 print '%d' % (rack % 10), 170 if OPT_WIDE: 171 print '', 170 for rack in xrange(START_RACK, number_of_racks + 1): 171 172 char = rack % 10 173 if OPT_SKIP_EMPTY_RACKS: 174 if node_dict.has_key(rack): 175 print char, 176 else: 177 print char, 172 178 print 173 179 174 # print nodes with r%dn%d naming scheme 175 for node_nr in xrange(1, nodes_per_rack ):180 181 for node_nr in xrange(1, nodes_per_rack + 1): 176 182 print '%2d' % node_nr, 177 183 178 for rack in xrange(START_RACK, number_of_racks ):179 node_name = NODE_STR %(rack, node_nr) 180 181 if node_dict.has_key(node_name):182 print '%s' % node_dict[node_name],183 184 del node_dict[node_name]185 e lse:184 for rack in xrange(START_RACK, number_of_racks + 1): 185 186 if OPT_SKIP_EMPTY_RACKS: 187 if not node_dict.has_key(rack): 188 continue 189 try: 190 print node_dict[rack][node_nr], 191 except KeyError: 186 192 print ' ', 187 188 if OPT_WIDE:189 print '',190 191 193 print 192 194 193 print194 195 # any other nodes?196 arr = node_dict.keys()197 if arr:198 arr.sort()199 200 for node in arr:201 print '%s %s' % (node, node_dict[node])202 203 print204 205 206 195 # 207 196 # summary() counts the number of nodes in a particular state 208 197 # 209 198 def pbsmon_summary(server = None): 210 global NODES_PER_RACK, N_RACKS,PBS_STATES199 global PBS_STATES 211 200 212 201 try: … … 315 304 316 305 def getopts(): 317 global PROGNAME, OPT_NODESTATUS, OPT_SUMMARY, OPT_ WIDE, OPT_SERVERNAME306 global PROGNAME, OPT_NODESTATUS, OPT_SUMMARY, OPT_SKIP_EMPTY_RACKS, OPT_SERVERNAME 318 307 319 308 if len(sys.argv) <= 1: … … 355 344 356 345 if opt in ('-w', '--wide'): 357 OPT_ WIDE = 1346 OPT_SKIP_EMPTY_RACKS = 0 358 347 continue 359 348
Note: See TracChangeset
for help on using the changeset viewer.