Changeset 434

Show
Ignore:
Timestamp:
05/05/08 14:07:05 (8 months ago)
Author:
jmowery
Message:

adding update and list functions to manager cli

Files:

Legend:

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

    • Property svn:executable set to *
    r433 r434  
    3737                return msg 
    3838 
     39        def update_group(self, group=''): 
     40                print 'update' 
     41                msg = protocol.Message() 
     42                msg.msg = 'update group' 
     43                msg.type = query() 
     44                msg.body = group 
     45                return msg 
     46 
    3947        def update_query(self): 
    4048                print 'update?' 
     
    5967                msg.type = "query" 
    6068                msg.body = "UPDATE" 
     69                return msg 
     70 
     71        def list_groups(self): 
     72                print 'listing all groups' 
     73                msg = protocol.Message() 
     74                msg.msg = 'list' 
     75                msg.type = 'query' 
     76                msg.body = 'groups' 
     77                return msg 
     78 
     79        def list_clients(self): 
     80                print 'listing clients' 
     81                msg = protocol.Message() 
     82                msg.msg = 'list' 
     83                msg.type = 'query' 
     84                msg.body = 'all' 
    6185                return msg 
    6286 
     
    102126                if arg1 == 'client': 
    103127                        msg = self.update() 
    104                         msg.body = arg2 
     128                        msg.body = sys.argv[3:] 
    105129                elif arg1 == 'group': 
    106                         print 'group update not yet implemented' 
     130                        if arg2 == '': 
     131                                print 'missing group to update' 
     132                                sys.exit(1) 
     133                        msg = self.update_group(arg2) 
    107134                elif arg1 == 'all' or arg1 == '': 
    108135                        msg = self.update() 
     
    114141        elif cmd == 'list': 
    115142                if arg1 == 'groups': 
    116                         print 'list all groups not yet implemented' 
     143                        msg = m.list_groups() 
    117144                elif arg1 == 'clients': 
    118145                        if arg2 == 'reachable': 
    119                                 print 'list reachable clients not yet implemented' 
     146                                msg = m.list_clients() 
     147                                msg.body = 'reachable' 
    120148                        elif arg2 == 'update': 
    121149                                msg = self.update_query() 
     
    124152                                        print 'missing group name' 
    125153                                        sys.exit(1) 
    126                                 print 'group list not yet implemented' 
     154                                msg = self.list_clients() 
     155                                msg.body = sys.argv[4] 
    127156                        elif arg2 == 'all' or arg2 == '': 
    128                                 print 'list all clients not yet implemented' 
     157                                msg = m.list_clients() 
    129158                        else: 
    130                                 print 'unknown client request' 
     159                                print 'unknown client list request' 
    131160                                sys.exit(1) 
    132161                else: 
     
    135164        elif cmd == 'logs': 
    136165                print 'log fetch not yet implemented' 
    137                 sys.exit(2) 
    138166        else: 
    139167                print 'unknow command' 
  • branches/trunk-pmd-intproto/server/master.py

    r430 r434  
    5959                                        val.body = ret 
    6060                                        res = val 
     61                                elif val.msg = 'update group': 
     62                                        val.type = 'response' 
     63                                        if val.body in storage.list_all_layers(storage_root): 
     64                                                l = Layer(os.path.join(os.path.dirname(storage_root, val.body))) 
     65                                                ret = [] 
     66                                                for c in l.list_nodes(): 
     67                                                        ret.append((c, self.update_client(c))) 
     68                                                val.body = ret 
     69                                        else: 
     70                                                val.body = [] 
     71                                        res = val 
    6172                                elif val.msg == 'bools': 
    6273                                        self.clients.send_all(val) 
     
    6980                                                n.update() 
    7081                                                res.append((ret, i)) 
     82                                elif val.msg == 'list': 
     83                                        val.type = 'response' 
     84                                        if val.body == 'groups': 
     85                                                val.body = storage.list_all_layers(storage_root) 
     86                                        elif val.body == 'reachable': 
     87                                                val.body = [x[0] for x in self.clients.get_clients().values()] 
     88                                        elif val.body == 'all': 
     89                                                l = Layer(storage_root) 
     90                                                val.body = l.list_nodes() 
     91                                        else: 
     92                                                val.body = [] 
     93                                        res = val 
    7194                                else: 
    7295                                        self.clients.send_all(val) 
  • branches/trunk-pmd-intproto/server/storage.py

    r430 r434  
    702702        return os.path.basename(root) 
    703703 
     704def list_all_layers(path): 
     705        path = os.path.realpath(os.path.expanduser(path)) 
     706        if not os.path.isdir(path): 
     707                path = os.path.dirname(path) 
     708        root_dir = find_control_root(path) 
     709        layer_list = [] 
     710        l = Layer(root_dir) 
     711        layer_list.append(l.short_name()) 
     712        layer_list += collect_layers(l) 
     713        return layer_list 
     714 
     715def collect_layers(l): 
     716        layer_list = [] 
     717        for dir in l.list_controlled_dirs(): 
     718                tmp = Layer(os.path.join(l.Name, dir)) 
     719                layer_list.append(tmp.short_name()) 
     720                layer_list += collect_layers(tmp) 
     721        return layer_list 
     722 
    704723class NodeStatus: 
    705724        Id = ''