Ignore:
Timestamp:
Sep 10, 2008 1:17:43 PM (16 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:
89d9502
Parents:
03e0290
Message:

more data on a create request, including user requested local name

File:
1 edited

Legend:

Unmodified
Added
Removed
  • fedd/fedd_create_experiment.py

    r03e0290 re40c7ee  
    624624                'destinationTestbed' : { 'uri' : uri },
    625625                'user':  user,
    626                 'allocID' : { 'username': 'test' },
     626                'allocID' : { 'localname': 'test' },
    627627                'access' : [ { 'sshPubkey' : self.ssh_pubkey } ]
    628628            }
     
    10771077        pid = "dummy"
    10781078        gid = "dummy"
    1079         eid = self.exp_stem
    1080         if self.randomize_experiments:
    1081             for i in range(0,5):
    1082                 eid += random.choice(string.ascii_letters)
    10831079        # XXX
    10841080        fail_soft = False
     
    11061102        else:
    11071103            raise service_error(service_error.req, "No experiment description")
     1104
     1105        if req.has_key('experimentID') and \
     1106                req['experimentID'].has_key('localname'):
     1107            eid = req['experimentID']['localname']
     1108            while (self.state.has_key(eid)):
     1109                eid += random.choice(string.ascii_letters)
     1110        else:
     1111            eid = self.exp_stem
     1112            for i in range(0,5):
     1113                eid += random.choice(string.ascii_letters)
     1114            while (self.state.has_key(eid)):
     1115                eid = self.exp_stem
     1116                for i in range(0,5):
     1117                    eid += random.choice(string.ascii_letters)
    11081118
    11091119        try:
     
    11721182                    "Failed to generate visualization")
    11731183
     1184        # save federant information
     1185        for k in allocated.keys():
     1186            tbparams[k]['federant'] = {\
     1187                    'name': [ { 'localname' : k} ],\
     1188                    'emulab': tbparams[k]['emulab'],\
     1189                    'master' : k == master,\
     1190                }
     1191
     1192
    11741193        # Copy tarfiles and rpms needed at remote sites into a staging area
    11751194        try:
     
    12541273        os.rmdir(tmpdir)
    12551274
    1256         resp = { 'emulab' : [ tbparams[tb]['emulab'] \
     1275        resp = { 'federant' : [ tbparams[tb]['federant'] \
    12571276                for tb in tbparams.keys() \
    1258                     if tbparams[tb].has_key('emulab') ],\
     1277                    if tbparams[tb].has_key('federant') ],\
    12591278                    'experiment': vtopo,\
    12601279                    'vis' : vis,
    1261                     'experimentID' : { 'fedid': expid },\
     1280                    'experimentID' : [\
     1281                            { 'fedid': expid }, { 'localname': eid },\
     1282                        ],\
    12621283                    'experimentAccess': { 'X509' : expcert },\
    12631284                }
    12641285       
    12651286        self.state[expid] = {\
    1266                 'emulab': [ tbparams[tb]['emulab'] \
     1287                'fedid': expid,
     1288                'localname': eid,
     1289                'federant': [ tbparams[tb]['federant'] \
    12671290                    for tb in tbparams.keys() \
    1268                         if tbparams[tb].has_key('emulab') ],\
     1291                        if tbparams[tb].has_key('federant') ],\
    12691292                'vis': vis,\
    12701293                'vtopo': vtopo,\
    12711294            }
     1295        self.state[eid] = self.state[expid]
    12721296           
    12731297        return resp
     
    12791303            raise service_error(service_error.req,
    12801304                    "Bad request format (no VtopoRequestBody)")
    1281         if req.has_key('experiment') and req['experiment'].has_key('fedid'):
    1282             qfedid = req['experiment']['fedid']
     1305        exp = req.get('experiment', None)
     1306        if exp:
     1307            if exp.has_key('fedid'):
     1308                key = fedid(bits=exp['fedid'])
     1309                keytype = "fedid"
     1310            elif exp.has_key('localname'):
     1311                key = exp['localname']
     1312                keytype = "localname"
     1313            else:
     1314                raise service_error(service_error.req, "Unknown lookup type")
    12831315        else:
    1284             raise service_error(service_error.req, "Use fedid for lookup")
    1285 
    1286         if self.state.has_key(qfedid):
    1287             return { 'experiment' : {'fedid': qfedid },\
    1288                     'vtopo': self.state[qfedid]['vtopo'],\
     1316            raise service_error(service_error.req, "No request?")
     1317
     1318        if self.state.has_key(key):
     1319            return { 'experiment' : {keytype: key },\
     1320                    'vtopo': self.state[key]['vtopo'],\
    12891321                    }
    12901322        else:
     
    12971329            raise service_error(service_error.req,
    12981330                    "Bad request format (no VisRequestBody)")
    1299         if req.has_key('experiment') and req['experiment'].has_key('fedid'):
    1300             qfedid = req['experiment']['fedid']
     1331        exp = req.get('experiment', None)
     1332        if exp:
     1333            if exp.has_key('fedid'):
     1334                key = fedid(bits=exp['fedid'])
     1335                keytype = "fedid"
     1336            elif exp.has_key('localname'):
     1337                key = exp['localname']
     1338                keytype = "localname"
     1339            else:
     1340                raise service_error(service_error.req, "Unknown lookup type")
    13011341        else:
    1302             raise service_error(service_error.req, "Use fedid for lookup")
    1303 
    1304         if self.state.has_key(qfedid):
    1305             return { 'experiment' : {'fedid': qfedid },\
    1306                     'vis': self.state[qfedid]['vis'],\
     1342            raise service_error(service_error.req, "No request?")
     1343
     1344        if self.state.has_key(key):
     1345            return { 'experiment' : {keytype: key },\
     1346                    'vis': self.state[key]['vis'],\
    13071347                    }
    13081348        else:
     
    13661406            'experimentdescription' : content,
    13671407            'master' : opts.master,
    1368             'user': [ {'userID' : { 'username' : 'faber' } } ],
     1408            'user': [ {'userID' : { 'localname' : 'faber' } } ],
    13691409            },
    13701410            None)
Note: See TracChangeset for help on using the changeset viewer.