Changeset 501
- 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
| r494 |
r501 |
|
| 17 | 17 | def __init__(self, host): |
|---|
| 18 | 18 | 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 |
|---|
| 35 | 19 | |
|---|
| 36 | 20 | def client_status(self): |
|---|
| … | … | |
| 258 | 242 | def handlestatus(mgr, argv): |
|---|
| 259 | 243 | 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 |
|---|
| 265 | 245 | 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 |
|---|
| 276 | 249 | 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) |
|---|
| 291 | 253 | return mgr.query_server(msg, targets) |
|---|
| | 254 | |
|---|
| | 255 | def 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)) |
|---|
| 292 | 270 | |
|---|
| 293 | 271 | def print_body(body): |
|---|
| … | … | |
| 325 | 303 | elif cmd == 'log': |
|---|
| 326 | 304 | res = handlelog(m, sys.argv[2:]) |
|---|
| | 305 | elif cmd == 'bools': |
|---|
| | 306 | res = handlebools(m, sys.argv[2:]) |
|---|
| 327 | 307 | else: |
|---|
| 328 | 308 | print 'unknown command' |
|---|
| r457 |
r501 |
|
| 17 | 17 | self.msg = msg |
|---|
| 18 | 18 | 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 |
|---|
| 23 | 21 | |
|---|
| r500 |
r501 |
|
| 44 | 44 | return (lambda *args: a) |
|---|
| 45 | 45 | |
|---|
| 46 | | def targetexpand((type, list)): |
|---|
| | 46 | def targetexpand(t): |
|---|
| | 47 | if t == None: |
|---|
| | 48 | # FIXME return all known nodes |
|---|
| | 49 | return [] |
|---|
| | 50 | (type, list) = t |
|---|
| 47 | 51 | if(type == "IP"): |
|---|
| 48 | 52 | return list |
|---|
| … | … | |
| 248 | 252 | res = self.updategroup((mgr, info), val) |
|---|
| 249 | 253 | 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 |
|---|
| 252 | 261 | elif val.msg == 'list': |
|---|
| 253 | 262 | res = self.list((mgr, info), val) |
|---|
| … | … | |
| 272 | 281 | val.type = 'response' |
|---|
| 273 | 282 | status_list = [] |
|---|
| 274 | | for client_id in val.targets[1:]: |
|---|
| | 283 | for client_id in targetexpand(val.targets): |
|---|
| 275 | 284 | client_node = storage.Node(client_id, storage_root) |
|---|
| 276 | 285 | status_list.append((client_id, client_node.enforcing)) |
|---|
Download in other formats:
* Generating other formats may take time.