Changeset 2761484 for fedd/federation/emulab_access.py
- Timestamp:
- Feb 28, 2010 12:31:25 PM (14 years ago)
- Branches:
- axis_example, compt_changes, info-ops, master, version-3.01, version-3.02
- Children:
- 109a32a
- Parents:
- ef252e9
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
fedd/federation/emulab_access.py
ref252e9 r2761484 152 152 } 153 153 154 self.call_SetValue = service_caller('SetValue') 155 self.call_GetValue = service_caller('GetValue') 154 156 155 157 if not config.has_option("allocate", "uri"): … … 1199 1201 "Cannot write experiment file %s: %s" % (expfn,e)) 1200 1202 1203 def export_store_info(self, cf, proj, ename, connInfo): 1204 """ 1205 For the export requests in the connection info, install the peer names 1206 at the experiment controller via SetValue calls. 1207 """ 1208 1209 for c in connInfo: 1210 for p in [ p for p in c.get('parameter', []) \ 1211 if p.get('type', '') == 'output']: 1212 1213 if p.get('name', '') != 'peer': 1214 self.log.error("Unknown export parameter: %s" % \ 1215 p.get('name')) 1216 continue 1217 1218 k = p.get('key', None) 1219 surl = p.get('store', None) 1220 if surl and k and k.index('/') != -1: 1221 value = "%s.%s.%s%s" % \ 1222 (k[k.index('/')+1:], ename, proj, self.domain) 1223 req = { 'name': k, 'value': value } 1224 self.call_SetValue(surl, req, cf) 1225 else: 1226 self.log.error("Bad export request: %s" % p) 1227 1228 def import_store_info(self, cf, connInfo): 1229 """ 1230 Pull any import parameters in connInfo in. We translate them either 1231 into known member names or fedAddrs. 1232 """ 1233 1234 for c in connInfo: 1235 for p in [ p for p in c.get('parameter', []) \ 1236 if p.get('type', '') == 'input']: 1237 name = p.get('name', None) 1238 key = p.get('key', None) 1239 store = p.get('store', None) 1240 1241 if name and key and store : 1242 req = { 'name': key, 'wait': True } 1243 r = self.call_GetValue(store, req, cf) 1244 r = r.get('GetValueResponseBody', None) 1245 if r : 1246 if r.get('name', '') == key: 1247 v = r.get('value', None) 1248 if v is not None: 1249 if name == 'peer': 1250 c['peer'] = v 1251 else: 1252 if c.has_key('fedAttr'): 1253 c['fedAttr'].append({ 1254 'attribute': name, 'value': value}) 1255 else: 1256 c['fedAttr']= [{ 1257 'attribute': name, 'value': value}] 1258 else: 1259 raise service_error(service_error.internal, 1260 'None value exported for %s' % key) 1261 else: 1262 raise service_error(service_error.internal, 1263 'Different name returned for %s: %s' \ 1264 % (key, r.get('name',''))) 1265 else: 1266 raise service_error(service_error.internal, 1267 'Badly formatted response: no GetValueResponseBody') 1268 else: 1269 raise service_error(service_error.internal, 1270 'Bad Services missing info for import %s' % c) 1271 1201 1272 def StartSegment(self, req, fid): 1202 1273 def get_url(url, cf, destdir, fn=None): … … 1251 1322 raise service_error(service_error.req, 1252 1323 "Request missing segmentdescription'") 1253 1324 1254 1325 master = req.get('master', False) 1255 1326 … … 1353 1424 "Can't find creation user for %s" %aid) 1354 1425 1426 self.export_store_info(certfile, proj, ename, connInfo) 1427 self.import_store_info(certfile, connInfo) 1428 1355 1429 expfile = "%s/experiment.tcl" % tmpdir 1356 1430
Note: See TracChangeset
for help on using the changeset viewer.