Changeset 5f6929a for fedd/federation/experiment_control.py
- Timestamp:
- Apr 7, 2010 1:53:58 AM (14 years ago)
- Branches:
- axis_example, compt_changes, info-ops, master, version-3.01, version-3.02
- Children:
- 7fe81be
- Parents:
- 3e3a5de
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
fedd/federation/experiment_control.py
r3e3a5de r5f6929a 184 184 call_StartSegment = service_caller('StartSegment') 185 185 call_TerminateSegment = service_caller('TerminateSegment') 186 call_Ns2 Split = service_caller('Ns2Split')186 call_Ns2Topdl = service_caller('Ns2Topdl') 187 187 188 188 def __init__(self, config=None, auth=None): … … 243 243 "synch_store") 244 244 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") 246 246 self.fedkit = parse_tarfile_list(\ 247 247 config.get("experiment_control", "fedkit")) … … 268 268 self.state_lock = Lock() 269 269 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 \ 271 271 config.get("experiment_control", "tcl_splitter", 272 272 "/usr/testbed/lib/ns2ir/parse.tcl") … … 797 797 # Tweak search order so that if there are entries in access_user that 798 798 # 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]) 804 804 else: 805 805 access_sequence = access_user … … 825 825 } 826 826 827 # If there is a master, and this is it, ask it to export services 828 # XXX move this to export pseudo-service 827 829 if tb == master: 828 # NB, the export_project parameter is a dict that includes829 # the type830 req['exportProject'] = export_project831 830 req['service'] = [ 832 831 { 'name': 'userconfig', 'visibility': 'export'}, … … 922 921 # better error coding 923 922 924 def remote_ splitter(self, uri, desc, master):923 def remote_ns2topdl(self, uri, desc): 925 924 926 925 req = { 927 926 'description' : { 'ns2description': desc }, 928 'master': master,929 'include_fedkit': bool(self.fedkit),930 'include_gatewaykit': bool(self.gatewaykit)931 927 } 932 928 933 r = self.call_Ns2 Split(uri, req, self.cert_file, self.cert_pwd,929 r = self.call_Ns2Topdl(uri, req, self.cert_file, self.cert_pwd, 934 930 self.trusted_certs) 935 931 936 if r.has_key('Ns2 SplitResponseBody'):937 r = r['Ns2 SplitResponseBody']932 if r.has_key('Ns2TopdlResponseBody'): 933 r = r['Ns2TopdlResponseBody'] 938 934 ed = r.get('experimentdescription', None) 939 935 if ed.has_key('topdldescription'): … … 2007 2003 return rv 2008 2004 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 2009 2020 2010 2021 def create_experiment(self, req, fid): … … 2103 2114 raise service_error(service_error.server_config, 2104 2115 "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 2107 2118 if not master: 2108 2119 raise service_error(service_error.req, 2109 2120 "No master testbed label") 2110 export_project = req.get('exportProject', None)2111 2121 if not export_project: 2112 2122 raise service_error(service_error.req, "No export project") 2113 2123 # XXX 2124 2114 2125 # Translate to topdl 2115 2126 if self.splitter_url: … … 2117 2128 self.log.debug("Calling remote splitter at %s" % \ 2118 2129 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) 2121 2131 else: 2122 2132 tclcmd = [self.tclsh, self.tcl_splitter, '-t', '-x',
Note: See TracChangeset
for help on using the changeset viewer.