- Timestamp:
- Nov 17, 2008 6:49:56 PM (16 years ago)
- Branches:
- axis_example, compt_changes, info-ops, master, version-1.30, version-2.00, version-3.01, version-3.02
- Children:
- 159a447
- Parents:
- d81971a
- Location:
- fedd
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
fedd/fedd_access.py
rd81971a r7583a62 857 857 if users: 858 858 msg['project']['user'] = users 859 print msg 859 if self.allocate_project.release_project: 860 msg = { 'ReleaseProjectRequestBody' : msg} 861 self.allocate_project.release_project(msg) 860 862 self.write_state() 861 863 return { 'allocID': req['allocID'] } -
fedd/fedd_allocate_project.py
rd81971a r7583a62 20 20 from fedd_internal_services import * 21 21 from fedd_util import * 22 import fixed_key 22 23 import parse_detail 23 24 from service_error import * … … 50 51 '/usr/testbed/sbin/newproj') 51 52 self.mkproj = config.get('access', 'mkproj', '/usr/testbed/sbin/mkproj') 53 self.rmproj = config.get('access', 'rmproj', '/usr/testbed/sbin/rmproj') 52 54 self.addpubkey = config.get('access', 'addpubkey', 53 55 '/usr/testbed/sbin/taddpubkey') … … 56 58 self.log = logging.getLogger("fedd.allocate.local") 57 59 set_log_level(config, "access", self.log) 60 fixed_key_db = config.get("access", "fixed_keys", None) 61 fixed_project_db = config.get("access", "fixed_projects", None) 62 if fixed_key_db: 63 try: 64 self.fixed_keys = fixed_key.read_db(fixed_key_db) 65 except: 66 log.debug("Can't read fixed_key_db from %s" % fixed_key_db) 67 else: 68 self.fixed_keys = set() 69 70 if fixed_project_db: 71 try: 72 f = open(fixed_project_db, "r") 73 for line in f: 74 self.fixed_projects.add(line.rstrip()) 75 f.close() 76 except: 77 log.debug("Can't read fixed_project_db from %s" % \ 78 fixed_project_db) 79 else: 80 self.fixed_projects = set() 81 58 82 59 83 # Internal services are SOAP only … … 66 90 StaticProjectRequestMessage.typecode,\ 67 91 self.static_project, StaticProjectResponseMessage,\ 68 "StaticProjectResponseBody")\ 92 "StaticProjectResponseBody"),\ 93 #"ReleaseProject": make_soap_handler(\ 94 #ReleaseProjectRequestMessage.typecode,\ 95 #self.release_project, ReleaseProjectResponseMessage,\ 96 #"ReleaseProjectResponseBody")\ 69 97 } 70 98 self.xmlrpc_services = { } … … 242 270 for sk in [ k['sshPubkey'] for k in u.get('access', []) \ 243 271 if k.has_key('sshPubkey')]: 244 cmds.append((self.addpubkey, '-w', '-u', name, '-k', sk)) 272 cmds.append((self.wap, self.addpubkey, '-w', \ 273 '-u', name, '-k', sk)) 245 274 246 275 … … 274 303 return { 'project': req['StaticProjectRequestBody']['project']} 275 304 305 def release_project(self, req, fedid=None): 306 """ 307 Remove user keys from users and delete dynamic projects. 308 309 Only keys not in the set of fixed keys are deleted. and there are 310 similar protections for projects. 311 """ 312 313 cmds = [] 314 pname = None 315 users = [] 316 317 print "release %s" % req 318 try: 319 if req['ReleaseProjectRequestBody']['project'].has_key('name'): 320 pname = req['ReleaseProjectRequestBody']['project']\ 321 ['name']['localname'] 322 if req['ReleaseProjectRequestBody']['project'].has_key('user'): 323 users = req['ReleaseProjectRequestBody']['project']['user'] 324 except KeyError: 325 raise service_error(service_error.req, "Badly formed request") 326 327 for u in users: 328 try: 329 name = u['userID']['localname'] 330 except KeyError: 331 raise service_error(service_error.req, "Badly formed user") 332 for sk in [ k['sshPubkey'] for k in u.get('access', []) \ 333 if k.has_key('sshPubkey')]: 334 if (name, sk) not in self.fixed_keys: 335 cmds.append((self.wap, self.addpubkey, '-R', '-w', \ 336 '-u', name, '-k', sk)) 337 if pname and pname not in fixed_projects: 338 cmds.append((self.wap, self.rmproj, pname)) 339 340 # Run the commands 341 rc = 0 342 for cmd in cmds: 343 self.log.debug("[release_project]: %s" % ' '.join(cmd)) 344 if not self.debug: 345 try: 346 rc = subprocess.call(cmd) 347 except OSError, e: 348 print "Release project subprocess creation error "+ \ 349 "[%s] (%s)" % (cmd[0], e.strerror) 350 raise service_error(service_error.internal, 351 "Release project subprocess creation error "+ \ 352 "[%s] (%s)" % (cmd[0], e.strerror)) 353 354 if rc != 0: 355 raise service_error(service_error.internal, 356 "Release project subprocess error " +\ 357 "[%s] (%d)" % (cmd[0], rc)) 358 359 return { 'project': req['ReleaseProjectRequestBody']['project']} 360 276 361 def make_proxy(method, req_name, req_alloc, resp_name): 277 362 """ … … 383 468 self.log = logging.getLogger("fedd.allocate.remote") 384 469 set_log_level(config, "access", self.log) 385 #self.dynamic_project = fedd_allocate_project_remote.dynamic_project 386 #self.static_project = fedd_allocate_project_remote.static_project 470 self.release_project = None
Note: See TracChangeset
for help on using the changeset viewer.