Changeset 501

Show
Ignore:
Timestamp:
05/28/08 13:28:09 (8 months ago)
Author:
mgoldman
Message:

Handle request for booleans correctly

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/trunk-pmd-intproto/mgmt/manager.py

    r494 r501  
    1717        def __init__(self, host): 
    1818                self.server = client.Client(host, 55555) 
    19  
    20         def status(self): 
    21                 print "Getting status\n" 
    22                 msg = protocol.Message() 
    23                 msg.msg = "status" 
    24                 msg.type = "query" 
    25                 msg.body = "" 
    26  
    27                 print "sending message" 
    28                 self.server.send_message(msg) 
    29  
    30                 print "reciving message" 
    31                 resp = self.server.recv_message() 
    32                 print "done..." 
    33                 pprint.pprint(resp) 
    34                 return resp 
    3519 
    3620        def client_status(self): 
     
    258242def handlestatus(mgr, argv): 
    259243        msg = m.client_status() 
    260         print_bools = False 
    261         print_enforcing = False 
    262         print_modules = False 
    263         clientlist = [] 
    264         resp = m.query_server(m.list_clients()) 
     244        targets = None 
    265245        for arg in argv: 
    266                 if arg == 'all': 
    267                         print_bools = True 
    268                         print_enforcing = True 
    269                         print_modules = True 
    270                 elif arg == 'bools': 
    271                         print_bools = True 
    272                 elif arg == 'enforcing': 
    273                         print_enforcing = True 
    274                 elif arg == 'modules': 
    275                         print_modules = True 
     246                if arg == 'IP' or arg == 'group': 
     247                        targets = (argv[0], argv[1:]) 
     248                        break 
    276249                else: 
    277                         if arg not in resp.body: 
    278                                 print 'No client with ID \'' + arg + '\' exists' 
    279                         else: 
    280                                 clientlist.append(arg) 
    281         if print_bools: 
    282                 msg.body.append('bools') 
    283         if print_modules: 
    284                 msg.body.append('modules') 
    285         if print_enforcing: 
    286                 msg.body.append('enforcing') 
    287         if len(clientlist) == 0: 
    288                 print 'missing valid client ID' 
    289                 sys.exit(1) 
    290         targets = ['IP'] + clientlist 
     250                        print "unknown argument" 
     251                        raise ArgumentError 
     252                argv.pop(0) 
    291253        return mgr.query_server(msg, targets) 
     254 
     255def handlebools(mgr, argv): 
     256        useage = "useage: bools [IP <id> <id> ... | group <id> <id> ...]\n" \ 
     257                         "retrieves the booleans assosciated with all IPs or groups\n" \ 
     258                         "listed on the command line\n" 
     259        targets = None 
     260        for arg in argv: 
     261                if arg == 'IP' or arg == 'group': 
     262                        targets = (argv[0], argv[1:]) 
     263                        break 
     264                else: 
     265                        print "unknown argument\n" 
     266                        print useage 
     267                        raise ArgumentError 
     268                argv.pop(0) 
     269        return mgr.query_server(Message("bools", "query", None, targets)) 
    292270 
    293271def print_body(body): 
     
    325303        elif cmd == 'log': 
    326304                res = handlelog(m, sys.argv[2:]) 
     305        elif cmd == 'bools': 
     306                res = handlebools(m, sys.argv[2:]) 
    327307        else: 
    328308                print 'unknown command' 
  • branches/trunk-pmd-intproto/network/protocol.py

    r457 r501  
    1717                self.msg  = msg 
    1818                self.type = type 
    19                 if body != None: 
    20                         self.body = body 
    21                 if targets != None: 
    22                         self.targets = targets 
     19                self.body = body 
     20                self.targets = targets 
    2321 
  • branches/trunk-pmd-intproto/server/master.py

    r500 r501  
    4444        return (lambda *args: a) 
    4545 
    46 def targetexpand((type, list)): 
     46def targetexpand(t): 
     47        if t == None: 
     48                # FIXME return all known nodes 
     49                return [] 
     50        (type, list) = t 
    4751        if(type == "IP"): 
    4852                return list 
     
    248252                                        res = self.updategroup((mgr, info), val) 
    249253                                elif val.msg == 'bools': 
    250                                         resp = self.comm(const(val), val, (mgr, info)) 
    251                                         res = map(self.bools, resp) 
     254                                        bools = [] 
     255                                        for clid in targetexpand(val.targets): 
     256                                                cn = storage.Node(clid, storage_root) 
     257                                                bools.append((clid, cn.bools)) 
     258                                        val.body = bools 
     259                                        val.type = "response" 
     260                                        res = val 
    252261                                elif val.msg == 'list': 
    253262                                        res = self.list((mgr, info), val) 
     
    272281                                        val.type = 'response' 
    273282                                        status_list = [] 
    274                                         for client_id in val.targets[1:]
     283                                        for client_id in targetexpand(val.targets)
    275284                                                client_node = storage.Node(client_id, storage_root) 
    276285                                                status_list.append((client_id, client_node.enforcing))