Changeset 5ae3857 for fedd/federation/access.py
- Timestamp:
- Sep 6, 2009 2:15:52 PM (15 years ago)
- Branches:
- axis_example, compt_changes, info-ops, master, version-2.00, version-3.01, version-3.02
- Children:
- 2b7d768
- Parents:
- 1da6a23
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
fedd/federation/access.py
r1da6a23 r5ae3857 67 67 self.certdir = config.get("access","certdir") 68 68 self.ssh_privkey_file = config.get("access","ssh_privkey_file") 69 self.create_debug = config.getboolean("access", "create_debug") 70 print self.create_debug 69 71 70 72 self.attrs = { } … … 116 118 'ReleaseAccess': soap_handler("ReleaseAccess", self.ReleaseAccess), 117 119 'StartSegment': soap_handler("StartSegment", self.StartSegment), 120 'TerminateSegment': soap_handler("TerminateSegment", self.TerminateSegment), 118 121 } 119 122 self.xmlrpc_services = {\ … … 122 125 'ReleaseAccess': xmlrpc_handler('ReleaseAccess', 123 126 self.ReleaseAccess), 124 'StartSegment': xmlrpc_handler('StartSegment', 125 self.StartSegment), 127 'StartSegment': xmlrpc_handler("StartSegment", self.StartSegment), 128 'TerminateSegment': xmlrpc_handler('TerminateSegment', 129 self.TerminateSegment), 126 130 } 127 131 … … 1083 1087 class stop_segment(proxy_emulab_segment): 1084 1088 def __init__(self, log=None, keyfile=None, debug=False): 1085 experiment_control_local.emulab_segment.__init__(self,1089 access.proxy_emulab_segment.__init__(self, 1086 1090 log=log, keyfile=keyfile, debug=debug) 1087 1091 1088 def __call__(self, tb, eid, tbparams):1092 def __call__(self, parent, user, pid, eid): 1089 1093 """ 1090 1094 Stop a sub experiment by calling swapexp on the federant 1091 1095 """ 1092 user = tbparams[tb]['user'] 1093 host = "%s%s" % (tbparams[tb]['host'], tbparams[tb]['domain']) 1094 pid = tbparams[tb]['project'] 1095 1096 self.log.info("[stop_segment]: Stopping %s on %s" % (eid, tb)) 1096 host = "%s%s" % (parent.ops, parent.domain) 1097 self.log.info("[stop_segment]: Stopping %s" % eid) 1097 1098 rv = False 1098 1099 try: 1099 1100 # Clean out tar files: we've gone over quota in the past 1100 self.ssh_cmd(user, host, "rm -rf /proj/%s/rpms/%s" % (pid, eid)) 1101 self.ssh_cmd(user, host, "rm -rf /proj/%s/tarfiles/%s" % \ 1102 (pid, eid)) 1101 self.ssh_cmd(user, host, "rm -rf /proj/%s/software/%s" % \ 1102 (pid, eid)) 1103 1103 rv = self.ssh_cmd(user, host, 1104 1104 "/usr/testbed/bin/swapexp -w %s %s out" % (pid, eid)) … … 1335 1335 proj = self.allocation[aid].get('sproject', None) 1336 1336 user = self.allocation[aid].get('user', None) 1337 self.allocation[aid]['experiment'] = ename 1338 self.write_state() 1337 1339 self.state_lock.release() 1338 1340 … … 1351 1353 self.generate_ns2(topo, expfile, 1352 1354 "/proj/%s/software/%s/" % (proj, ename), master) 1353 starter = self.start_segment(keyfile=self.ssh_privkey_file, debug= False)1355 starter = self.start_segment(keyfile=self.ssh_privkey_file, debug=self.create_debug) 1354 1356 starter(self, ename, proj, user, expfile, tmpdir) 1355 1357 1356 1358 return { 'allocID': req['allocID'] } 1359 1360 def TerminateSegment(self, req, fid): 1361 print "In terminate" 1362 try: 1363 req = req['TerminateSegmentRequestBody'] 1364 except KeyError: 1365 raise service_error(server_error.req, "Badly formed request") 1366 1367 auth_attr = req['allocID']['fedid'] 1368 aid = "%s" % auth_attr 1369 attrs = req.get('fedAttr', []) 1370 print "in terminate %s" % auth_attr 1371 if not self.auth.check_attribute(fid, auth_attr): 1372 print "access denied" 1373 raise service_error(service_error.access, "Access denied") 1374 1375 self.state_lock.acquire() 1376 if self.allocation.has_key(aid): 1377 proj = self.allocation[aid].get('project', None) 1378 if not proj: 1379 proj = self.allocation[aid].get('sproject', None) 1380 user = self.allocation[aid].get('user', None) 1381 ename = self.allocation[aid].get('experiment', None) 1382 self.state_lock.release() 1383 1384 if not proj: 1385 raise service_error(service_error.internal, 1386 "Can't find project for %s" % aid) 1387 1388 if not user: 1389 raise service_error(service_error.internal, 1390 "Can't find creation user for %s" % aid) 1391 if not ename: 1392 raise service_error(service_error.internal, 1393 "Can't find experiment name for %s" % aid) 1394 stopper = self.stop_segment(keyfile=self.ssh_privkey_file, debug=self.create_debug) 1395 stopper(self, user, proj, ename) 1396 print { 'allocID': req['allocID'] } 1397 return { 'allocID': req['allocID'] }
Note: See TracChangeset
for help on using the changeset viewer.