Ignore:
Timestamp:
Apr 7, 2010 1:53:58 AM (14 years ago)
Author:
Ted Faber <faber@…>
Branches:
axis_example, compt_changes, info-ops, master, version-3.01, version-3.02
Children:
7fe81be
Parents:
3e3a5de
Message:

Two changes at once

Remove master and export project from the create request and rename the splitter external interface into a translation interface. The export_project pseudo service is staring.

Also start removeing some deprecated fields.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • fedd/federation/experiment_control.py

    r3e3a5de r5f6929a  
    184184    call_StartSegment = service_caller('StartSegment')
    185185    call_TerminateSegment = service_caller('TerminateSegment')
    186     call_Ns2Split = service_caller('Ns2Split')
     186    call_Ns2Topdl = service_caller('Ns2Topdl')
    187187
    188188    def __init__(self, config=None, auth=None):
     
    243243                "synch_store")
    244244        self.store_url = config.get("experiment_control", "store_url")
    245         self.splitter_url = config.get("experiment_control", "splitter_uri")
     245        self.splitter_url = config.get("experiment_control", "ns2topdl_uri")
    246246        self.fedkit = parse_tarfile_list(\
    247247                config.get("experiment_control", "fedkit"))
     
    268268        self.state_lock = Lock()
    269269        self.tclsh = "/usr/local/bin/otclsh"
    270         self.tcl_splitter = config.get("splitter", "tcl_splitter") or \
     270        self.tcl_splitter = config.get("ns2topdl", "tcl_splitter") or \
    271271                config.get("experiment_control", "tcl_splitter",
    272272                        "/usr/testbed/lib/ns2ir/parse.tcl")
     
    797797        # Tweak search order so that if there are entries in access_user that
    798798        # have a project matching the export project, we try them first
    799         if export_project and export_project.has_key('localname'):
    800             pn = export_project['localname']
    801                
    802             access_sequence = [ (p, u) for p, u in access_user if p == pn]
    803             access_sequence.extend([(p, u) for p, u in access_user if p != pn])
     799        if export_project:
     800            access_sequence = [ (p, u) for p, u in access_user \
     801                    if p == export_project]
     802            access_sequence.extend([(p, u) for p, u in access_user \
     803                    if p != export_project])
    804804        else:
    805805            access_sequence = access_user
     
    825825                    }
    826826
     827            # If there is a master, and this is it, ask it to export services
     828            # XXX move this to export pseudo-service
    827829            if tb == master:
    828                 # NB, the export_project parameter is a dict that includes
    829                 # the type
    830                 req['exportProject'] = export_project
    831830                req['service'] = [
    832831                        { 'name': 'userconfig', 'visibility': 'export'},
     
    922921        # better error coding
    923922
    924     def remote_splitter(self, uri, desc, master):
     923    def remote_ns2topdl(self, uri, desc):
    925924
    926925        req = {
    927926                'description' : { 'ns2description': desc },
    928                 'master': master,
    929                 'include_fedkit': bool(self.fedkit),
    930                 'include_gatewaykit': bool(self.gatewaykit)
    931927            }
    932928
    933         r = self.call_Ns2Split(uri, req, self.cert_file, self.cert_pwd,
     929        r = self.call_Ns2Topdl(uri, req, self.cert_file, self.cert_pwd,
    934930                self.trusted_certs)
    935931
    936         if r.has_key('Ns2SplitResponseBody'):
    937             r = r['Ns2SplitResponseBody']
     932        if r.has_key('Ns2TopdlResponseBody'):
     933            r = r['Ns2TopdlResponseBody']
    938934            ed = r.get('experimentdescription', None)
    939935            if ed.has_key('topdldescription'):
     
    20072003        return rv
    20082004
     2005    def get_master_project(self, req):
     2006        master= None
     2007        export_project = None
     2008        for e in [ s for s in req.get('service', []) \
     2009                if s.get('name') == 'project_export']:
     2010            for a in e.get('fedAttr', []):
     2011                attr = a.get('attribute', None)
     2012                if attr == 'testbed':
     2013                    master = a.get('value', None)
     2014                elif attr == 'project':
     2015                    export_project = a.get('value', None)
     2016       
     2017        return (master, export_project)
     2018
     2019
    20092020
    20102021    def create_experiment(self, req, fid):
     
    21032114                raise service_error(service_error.server_config,
    21042115                        "Bad key type (%s)" % self.ssh_type)
    2105 
    2106             master = req.get('master', None)
     2116            master, export_project = self.get_master_project(req)
     2117            # XXX get these out when master and project are optional
    21072118            if not master:
    21082119                raise service_error(service_error.req,
    21092120                        "No master testbed label")
    2110             export_project = req.get('exportProject', None)
    21112121            if not export_project:
    21122122                raise service_error(service_error.req, "No export project")
    2113            
     2123            # XXX
     2124
    21142125            # Translate to topdl
    21152126            if self.splitter_url:
     
    21172128                self.log.debug("Calling remote splitter at %s" % \
    21182129                        self.splitter_url)
    2119                 top = self.remote_splitter(self.splitter_url,
    2120                         file_content, master)
     2130                top = self.remote_ns2topdl(self.splitter_url, file_content)
    21212131            else:
    21222132                tclcmd = [self.tclsh, self.tcl_splitter, '-t', '-x',
Note: See TracChangeset for help on using the changeset viewer.