Changeset b709861 for fedd/federation/experiment_control.py
- Timestamp:
- Nov 30, 2011 4:45:15 PM (12 years ago)
- Branches:
- compt_changes, info-ops, master
- Children:
- 1ae1aa2
- Parents:
- 22a1a77
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
fedd/federation/experiment_control.py
r22a1a77 rb709861 2391 2391 results.append(operation_status(t, 2392 2392 operation_status.federant, 2393 'Unexpected error ion %s' % tb))2393 'Unexpected error on %s' % tb)) 2394 2394 # Clean up the tmpdir no matter what 2395 2395 finally: … … 2412 2412 else: return { } 2413 2413 2414 def element_name(e): 2415 if isinstance(e, topdl.Computer): return e.name 2416 elif isinstance(e, topdl.Testbed): 2417 if e.localname: return e.localname[0] 2418 else: return None 2419 else: return None 2420 2414 2421 req = req.get('OperationRequestBody', None) 2415 2422 if not req: … … 2418 2425 exp = req.get('experiment', None) 2419 2426 op = req.get('operation', None) 2420 target = set(req.get('target', []))2427 targets = set(req.get('target', [])) 2421 2428 params = req.get('parameter', None) 2422 2429 … … 2433 2440 raise service_error(service_error.req, "No request?") 2434 2441 2435 if op is None or not target 2442 if op is None or not targets: 2436 2443 raise service_error(service_error.req, "No request?") 2437 2444 … … 2440 2447 if key in self.state: 2441 2448 d1, op_params, cert, d2 = \ 2442 self.get_segment_info(self.state[key], need_lock=False) 2449 self.get_segment_info(self.state[key], need_lock=False, 2450 key='tb') 2443 2451 top = self.state[key].top 2444 2452 if top is not None: … … 2453 2461 results = [] 2454 2462 for e in top.elements: 2455 if e.name in targets: 2463 ename = element_name(e) 2464 if ename in targets: 2456 2465 tb = element_to_tb(e) 2466 targets.remove(ename) 2457 2467 if tb is not None: 2458 if tb in testbeds: testbeds[tb].append(e .name)2459 else: testbeds[tb] = [ e .name ]2468 if tb in testbeds: testbeds[tb].append(ename) 2469 else: testbeds[tb] = [ ename ] 2460 2470 else: 2461 2471 results.append(operation_status(e.name, … … 2463 2473 description='Cannot map target to testbed')) 2464 2474 2475 for t in targets: 2476 results.append(operation_status(t, operation_status.no_target)) 2477 2465 2478 self.operate_on_segments(op_params, cert, op, testbeds, params, 2466 2479 results) … … 2468 2481 return { 2469 2482 'experiment': exp, 2470 'status': [make_dict(r) for r in results] 2483 'status': [make_dict(r) for r in results], 2471 2484 'proof': proof.to_dict() 2472 2485 } … … 2524 2537 "Experiment has no status!?") 2525 2538 2526 def get_segment_info(self, fed_exp, need_lock=True ):2539 def get_segment_info(self, fed_exp, need_lock=True, key='aid'): 2527 2540 ids = [] 2528 2541 term_params = { } … … 2537 2550 uri = fed.uri 2538 2551 aid = fed.allocID 2539 term_params[aid] = (uri, aid) 2552 if key == 'aid': term_params[aid] = (uri, aid) 2553 elif key == 'tb': term_params[fed.tb] = (uri, aid) 2554 2540 2555 if need_lock: self.state_lock.release() 2541 2556 return ids, term_params, expcert, repo
Note: See TracChangeset
for help on using the changeset viewer.