Changeset 314
- Timestamp:
- 06/04/14 11:15:48 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/examples/new_rack_pbsmon.py
r295 r314 36 36 from PBSQuery import PBSQuery 37 37 from PBSQuery import PBSError 38 39 ## This RE pattern is used for the hostrange 40 HOSTRANGE = r'\[([0-9az\-,]+)\]' 38 41 39 42 # Remark: When both are True, extended view is being printed … … 97 100 pbs_ND_total : ' ' 98 101 } 102 103 ## Color support? 104 import curses 105 curses.setupterm() 106 if curses.tigetnum("colors") > 8: 107 TERMINAL_COLOR=True 108 else: 109 TERMINAL_COLOR=False 99 110 100 111 #### … … 126 137 write(kwargs.get('end', '\n')) 127 138 139 class color: 140 PURPLE = '\033[95m' 141 CYAN = '\033[96m' 142 DARKCYAN = '\033[36m' 143 BLUE = '\033[94m' 144 GREEN = '\033[92m' 145 YELLOW = '\033[93m' 146 RED = '\033[91m' 147 BOLD = '\033[1m' 148 UNDERLINE = '\033[4m' 149 END = '\033[0m' 150 151 def compare_lists(list_a, list_b): 152 return not any(x not in list_b for x in list_a) 153 128 154 ## Import argparse here, as I need the _print function 129 155 try: … … 342 368 else: 343 369 nodes_dict[ racknr ][ nodenr ][ 'jobs' ] = [] 370 371 if attr.has_key( 'properties' ): 372 nodes_dict[ racknr ][ nodenr ][ 'properties' ] = attr.properties 373 else: 374 nodes_dict[ racknr ][ nodenr ][ 'properties' ] = [] 375 344 376 else: 345 377 hosts_list.append( node ) … … 352 384 nodes_dict[ node ][ 'jobs' ] = [] 353 385 386 if attr.has_key( 'properties' ): 387 nodes_dict[ node ][ 'properties' ] = attr.properties 388 else: 389 nodes_dict[ node ][ 'properties' ] = [] 390 354 391 if not racknode: 355 392 return nodes_dict, hosts_list … … 389 426 return [ item for index, item in decorated ] 390 427 391 def print_table( ):428 def print_table(properties=None): 392 429 global START_RACK 393 430 global OPT_SKIP_EMPTY_RACKS … … 437 474 continue 438 475 try: 439 _print(nodes[ rack ][ node ][ 'state_char' ], end=' ') 476 if properties and compare_lists(properties,nodes[ rack ][ node ]['properties']): 477 if TERMINAL_COLOR: 478 _print(color.GREEN + nodes[ rack ][ node ][ 'state_char' ] + color.END, end=' ') 479 else: 480 _print('M', end=' ') 481 else: 482 _print(nodes[ rack ][ node ][ 'state_char' ], end=' ') 440 483 except KeyError: 441 484 _print(' ', end=' ') … … 515 558 _print() 516 559 517 def print_extended( hosts=None):560 def print_extended(hosts=None, properties=None): 518 561 global LENGTH_NODE 519 562 global LENGTH_STATE … … 529 572 for node in ihosts: 530 573 attr = nodes[ node ] 574 575 if properties and not compare_lists(properties, attr['properties']): 576 continue 577 531 578 row_str = EXTENDED_PATTERNS[ 'row' ] % ( ( LENGTH_NODE + 2 ), node, ( LENGTH_STATE + 2 ), attr[ 'state' ], ','.join( attr[ 'jobs' ] ) ) 532 579 … … 556 603 parser.add_argument( "-w", "--wide", dest="wide", action="store_true", help="Wide display for node status ( only when -t is used )" ) 557 604 parser.add_argument( "-S", "--servername", dest="servername", help="Change the default servername", default=None ) 605 parser.add_argument( "-p", "--properties", dest="properties", help="Show nodes with property, you can use more than 1 property by using , (this is always een and) ie. -p infiniband,mem64gb", default=None) 558 606 559 607 args = parser.parse_args() 608 560 609 if args.nodes: 561 610 args.nodes = parse_args(args.nodes) … … 576 625 args.extended = False 577 626 627 if args.properties: 628 args.properties = [ item.strip() for item in args.properties.split(',') ] 629 578 630 if args.extended: 579 print_extended( args.nodes)631 print_extended(args.nodes, args.properties) 580 632 elif args.table: 581 print_table( )633 print_table(args.properties) 582 634 else: 583 635 _print('Something is wrong, bye!', file=sys.stderr)
Note: See TracChangeset
for help on using the changeset viewer.