Ignore:
Timestamp:
Nov 18, 2008 8:32:05 PM (15 years ago)
Author:
Ted Faber <faber@…>
Branches:
axis_example, compt_changes, info-ops, master, version-1.30, version-2.00, version-3.01, version-3.02
Children:
dab4d56
Parents:
fd729b9
Message:

Resource allocation and deallocation really working
Access handler selects allocation ID
Fedid allocation IDs work
Revamp of util code for maodifying messages (e.g. binaries)
Handlers now see fedids as objects in messages
Fedid bug in handlers in fedd_util

This should have been multiple commits

File:
1 edited

Legend:

Unmodified
Added
Removed
  • fedd/fedd_allocate_project.py

    rfd729b9 rf8582c9  
    2020from fedd_internal_services import *
    2121from fedd_util import *
    22 import fixed_key
    23 import parse_detail
     22from fixed_resource import read_key_db, read_project_db
    2423from service_error import *
    2524import logging
     
    6059        fixed_key_db = config.get("access", "fixed_keys", None)
    6160        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 
    82 
     61        self.fixed_keys = set()
     62        self.fixed_projects = set()
     63
     64        # initialize the fixed resource sets
     65        for db, rset, fcn in (\
     66                (fixed_key_db, self.fixed_keys, read_key_db), \
     67                (fixed_project_db, self.fixed_projects, read_project_db)):
     68            if db:
     69                try:
     70                    rset.update(fcn(db))
     71                except:
     72                    self.log.debug("Can't read resources from %s" % db)
     73       
    8374        # Internal services are SOAP only
    8475        self.soap_services = {\
     
    9182                self.static_project, StaticProjectResponseMessage,\
    9283                "StaticProjectResponseBody"),\
    93                 #"ReleaseProject": make_soap_handler(\
    94                 #ReleaseProjectRequestMessage.typecode,\
    95                 #self.release_project, ReleaseProjectResponseMessage,\
    96                 #"ReleaseProjectResponseBody")\
     84                "ReleaseProject": make_soap_handler(\
     85                ReleaseProjectRequestMessage.typecode,\
     86                self.release_project, ReleaseProjectResponseMessage,\
     87                "ReleaseProjectResponseBody")\
    9788                }
    9889        self.xmlrpc_services = { }
     
    290281                    rc = subprocess.call(cmd)
    291282                except OSError, e:
    292                     print "Static project subprocess creation error "+ \
    293                                     "[%s] (%s)" %  (cmd[0], e.strerror)
    294283                    raise service_error(service_error.internal,
    295284                            "Static project subprocess creation error "+ \
     
    315304        users = []
    316305
    317         print "release %s" % req
    318306        try:
    319307            if req['ReleaseProjectRequestBody']['project'].has_key('name'):
     
    332320            for sk in [ k['sshPubkey'] for k in u.get('access', []) \
    333321                    if k.has_key('sshPubkey')]:
    334                 if (name, sk) not in self.fixed_keys:
     322                if (name.rstrip(), sk.rstrip()) not in self.fixed_keys:
    335323                    cmds.append((self.wap, self.addpubkey, '-R', '-w', \
    336324                            '-u', name, '-k', sk))
    337         if pname and pname not in fixed_projects:
     325        if pname and pname not in self.fixed_projects:
    338326            cmds.append((self.wap, self.rmproj, pname))
    339327
     
    346334                    rc = subprocess.call(cmd)
    347335                except OSError, e:
    348                     print "Release project subprocess creation error "+ \
    349                                     "[%s] (%s)" %  (cmd[0], e.strerror)
    350336                    raise service_error(service_error.internal,
    351337                            "Release project subprocess creation error "+ \
     
    425411            "StaticProjectRequestBody", StaticProjectRequestMessage,
    426412            "StaticProjectResponseBody")
     413    release_project = make_proxy("ReleaseProject",
     414            "ReleaseProjectRequestBody", ReleaseProjectRequestMessage,
     415            "ReleaseProjectResponseBody")
    427416
    428417    def __init__(self, config):
     
    468457        self.log = logging.getLogger("fedd.allocate.remote")
    469458        set_log_level(config, "access", self.log)
    470         self.release_project = None
Note: See TracChangeset for help on using the changeset viewer.