Changeset 9294673


Ignore:
Timestamp:
Nov 21, 2011 5:33:41 PM (12 years ago)
Author:
Ted Faber <faber@…>
Branches:
compt_changes, info-ops, master
Children:
f769cb3
Parents:
80b1e82
Message:

Turn (most) of another free floating dict into a class.

Location:
fedd/federation
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • fedd/federation/experiment_control.py

    r80b1e82 r9294673  
    960960            tb_attrs = copy.copy(attrs)
    961961            tp.wait_for_slot()
    962             uri = tbparams[tb].get('uri', tbmap.get(testbed_base(tb), None))
     962            uri = tbparams[tb].uri or tbmap.get(testbed_base(tb), None)
    963963            base, suffix = split_testbed(tb)
    964964            if suffix:
     
    971971                        "Unknown testbed %s !?" % tb)
    972972
    973             if tbparams[tb].has_key('allocID') and \
    974                     tbparams[tb]['allocID'].has_key('fedid'):
    975                 aid = tbparams[tb]['allocID']['fedid']
    976             else:
     973            aid = tbparams[tb].allocID
     974            if not aid:
    977975                raise service_error(service_error.internal,
    978976                        "No alloc id for testbed %s !?" % tb)
     
    10211019                    # Create and start a thread to stop the segment
    10221020                    tp.wait_for_slot()
    1023                     uri = tbparams[tb]['uri']
     1021                    uri = tbparams[tb].uri
    10241022                    t  = pooled_thread(\
    10251023                            target=self.terminate_segment(log=log,
     
    10291027                                trusted_certs=self.trusted_certs,
    10301028                                caller=self.call_TerminateSegment),
    1031                             args=(uri, tbparams[tb]['federant']['allocID']),
     1029                            args=(uri, tbparams[tb].allocID),
    10321030                            name=tb,
    10331031                            pdata=tp, trace_file=self.trace_file)
     
    10401038                for tb in tbparams.keys():
    10411039                    try:
    1042                         self.release_access(tb, tbparams[tb]['allocID'],
    1043                                 tbmap=tbmap, uri=tbparams[tb].get('uri', None),
     1040                        self.release_access(tb, tbparams[tb].allocID,
     1041                                tbmap=tbmap, uri=tbparams[tb].uri,
    10441042                                cert_file=cert, cert_pwd=pw)
    10451043                    except service_error, e:
     
    13861384                        "Bad access response (no access proof)")
    13871385       
    1388         tbparam[tb] = {
    1389                 "allocID" : r['allocID'],
    1390                 "uri": uri,
    1391                 "proof": [ r['proof'] ],
    1392                 }
     1386        tbparam[tb] = allocation_info(allocID=r['allocID'].get('fedid', None),
     1387                tb=tb, uri=uri, proof=[r['proof']])
    13931388
    13941389        # Collect the responses corresponding to the services this testbed
     
    14051400        for a in r.get('fedAttr', []):
    14061401            try:
    1407                 if a['attribute'] and \
    1408                         isinstance(a['attribute'], basestring)\
    1409                         and not tbparam[tb].has_key(a['attribute'].lower()):
    1410                     tbparam[tb][a['attribute'].lower()] = a['value']
     1402                if a['attribute']:
     1403                    tbparam[tb].set_attribute(a['attribute'], a['value'])
    14111404            except KeyError:
    14121405                self.log.error("Bad attribute in response: %s" % a)
     
    15251518            # the loop.
    15261519            auth_attrs.update([
    1527                 (tbparams[tb]['allocID']['fedid'], "/%s/%s" % ( path, dest)) \
     1520                (tbparams[tb].allocID, "/%s/%s" % ( path, dest)) \
    15281521                        for tb in tbparams.keys()])
    15291522
     
    18291822        # allocation principal.  Yeah, that's a long list comprehension.
    18301823        self.append_experiment_authorization(expid, set([
    1831             (tbparams[tb]['allocID']['fedid'], "%s/%s" % (configpath, f)) \
     1824            (tbparams[tb].allocID, "%s/%s" % (configpath, f)) \
    18321825                    for tb in tbparams.keys() \
    18331826                        for f in ("hosts", 'ca.pem', 'node.pem',
     
    19821975        # save federant information
    19831976        for k in allocated.keys():
    1984             exp.add_allocation(
    1985                     allocation_info(
    1986                         tb=k,
    1987                         allocID=tbparams[k]['allocID'].get('fedid', None),
    1988                         uri=tbparams[k]['uri'],
    1989                         proof=tbparams[k]['proof'])
    1990                     )
     1977            exp.add_allocation(tbparams[k])
    19911978
    19921979        # Access proofs for the response message
    19931980        proofs = [copy.deepcopy(p) for k in tbparams.keys()\
    1994                     for p in tbparams[k]['proof']]
     1981                    for p in tbparams[k].proof]
    19951982        if self.state_filename:
    19961983            self.write_state()
     
    21052092                if store_keys:
    21062093                    auth_attrs.update(set([
    2107                         (tbparams[tb]['allocID']['fedid'], sk) \
     2094                        (tbparams[tb].allocID, sk) \
    21082095                                for sk in store_keys.split(" ")]))
    21092096
  • fedd/federation/experiment_info.py

    r80b1e82 r9294673  
    1414        self.uri = uri
    1515        self.proof = proof
     16        self.attrs = { }
     17
     18    def set_attribute(self, a, v):
     19        a = a.lower()
     20        if a not in self.attrs: self.attrs[a] = v
     21
     22    def get_attribute(self, a, default=None):
     23        a = a.lower()
     24        return self.attrs.get(a, default)
    1625
    1726class experiment_info:
  • fedd/federation/experiment_partition.py

    r80b1e82 r9294673  
    7474
    7575        if seer_master:
    76             mdomain = tbparams[seer_master].get('domain', '.example.com')
    77             mproject = tbparams[seer_master].get('project', 'project')
    78             muser = tbparams[seer_master].get('user', 'root')
    79             smbshare = tbparams[seer_master].get('smbshare', 'USERS')
     76            mdomain = tbparams[seer_master].get_attribute('domain',
     77                    '.example.com')
     78            mproject = tbparams[seer_master].get_attribute('project',
     79                    'project')
     80            muser = tbparams[seer_master].get_attribute('user', 'root')
     81            smbshare = tbparams[seer_master].get_attribute('smbshare', 'USERS')
    8082        else:
    8183            mdomain = '.example.com'
     
    8486            smbshare = 'USERS'
    8587
    86         dproject = tbparams[dt].get('project', 'project')
    87         ddomain = tbparams[dt].get('domain', '.example.com')
     88        dproject = tbparams[dt].get_attribute('project', 'project')
     89        ddomain = tbparams[dt].get_attribute('domain', '.example.com')
    8890
    8991        if (st in masters and dt not in masters) or \
     
    108110        if conn_type == "ssh":
    109111            try:
    110                 aid = tbparams[st]['allocID']['fedid']
     112                aid = tbparams[st].allocID
    111113            except:
    112114                self.log.debug("[new_portal_node] Can't get alloc id for %s?" \
     
    178180
    179181    def new_portal_substrate(self, st, dt, eid, tbparams, expid):
    180         ddomain = tbparams[dt].get('domain', ".example.com")
    181         dproject = tbparams[dt].get('project', 'project')
     182        ddomain = tbparams[dt].get_attribute('domain', ".example.com")
     183        dproject = tbparams[dt].get_attribute('project', 'project')
    182184        tsubstrate = \
    183185                topdl.Substrate(name='%s-%s' % (st, dt),
     
    189191                        )
    190192        segment_element = topdl.Segment(
    191                 id= tbparams[dt]['allocID'],
     193                id= {'fedid': tbparams[dt].allocID },
    192194                type='emulab',
    193195                uri = self.tbmap.get(testbed_base(dt), None),
     
    222224        for tb in tbs.keys():
    223225            seg = topdl.Segment(
    224                     id = tbparams[tb]['allocID'],
     226                    id = { 'fedid':tbparams[tb].allocID },
    225227                    type='emulab',
    226228                    uri = self.tbmap.get(testbed_base(tb), None),
     
    231233                    attribute=[ topdl.Attribute(
    232234                        attribute='%s_endpoint' % tb_name,
    233                         value=tbparams[tb][tb_name]),
     235                        value=tbparams[tb].get_attribute(tb_name)),
    234236                        ]
    235237                    )
    236238            vlan_key = "%s_vlans" % tb_name
    237             if vlan_key in tbparams[tb]:
    238                 seg.set_attribute(vlan_key, tbparams[tb][vlan_key])
     239            if tbparams[tb].get_attribute(vlan_key) is not None:
     240                seg.set_attribute(vlan_key,
     241                        tbparams[tb].get_attribute(vlan_key))
    239242            segs.append(seg)
    240243
     
    242245            # vlan_id
    243246            try:
    244                 aid = tbparams[tb]['allocID']['fedid']
     247                aid = tbparams[tb].allocID
    245248                self.auth.set_attribute(aid, store_key)
    246249            except:
     
    292295
    293296        if seer_master:
    294             mdomain = tbparams[seer_master].get('domain', '.example.com')
    295             mproject = tbparams[seer_master].get('project', 'project')
     297            mdomain = tbparams[seer_master].get_attribute('domain',
     298                    '.example.com')
     299            mproject = tbparams[seer_master].get_attribute('project', 'project')
    296300        else:
    297301            mdomain = '.example.com'
     
    311315
    312316                try:
    313                     aid = tbparams[tb]['allocID']['fedid']
     317                    aid = tbparams[tb].allocID
    314318                except:
    315319                    self.log.debug("[create_direct_substrate] " +
     
    370374                connInfo[st] = [ ]
    371375            for dt in [ t for t in tbs.keys() if t != st]:
    372                 sproject = tbparams[st].get('project', 'project')
    373                 dproject = tbparams[dt].get('project', 'project')
    374                 sdomain = tbparams[st].get('domain', ".example.com")
    375                 ddomain = tbparams[dt].get('domain', ".example.com")
    376                 aid = tbparams[dt]['allocID']['fedid']
     376                sproject = tbparams[st].get_attribute('project', 'project')
     377                dproject = tbparams[dt].get_attribute('project', 'project')
     378                sdomain = tbparams[st].get_attribute('domain', ".example.com")
     379                ddomain = tbparams[dt].get_attribute('domain', ".example.com")
     380                aid = tbparams[dt].allocID
    377381
    378382                seer_master = None
     
    386390
    387391                if seer_master:
    388                     mdomain = tbparams[seer_master].get('domain', '.example.com')
    389                     mproject = tbparams[seer_master].get('project', 'project')
    390                     muser = tbparams[seer_master].get('user', 'root')
    391                     smbshare = tbparams[seer_master].get('smbshare', 'USERS')
     392                    mdomain = tbparams[seer_master].get_attribute('domain',
     393                            '.example.com')
     394                    mproject = tbparams[seer_master].get_attribute('project',
     395                            'project')
     396                    muser = tbparams[seer_master].get_attribute('user', 'root')
     397                    smbshare = tbparams[seer_master].get_attribute('smbshare',
     398                            'USERS')
    392399                else:
    393400                    mdomain = '.example.com'
     
    541548                # transits is applicable, use the internet.
    542549                for d in self.direct_transit:
    543                     if all([tbparams[x].has_key(d) for x in tbs]):
     550                    if all([tbparams[x].get_attribute(d) for x in tbs]):
    544551                        self.create_direct_substrate(s, topo, tbs, tbparams,
    545552                                masters, eid, connInfo, expid, d)
     
    574581                    for tb_name in self.direct_transit:
    575582
    576                         if tbparams[mtb].has_key(tb_name) \
    577                                 and tbparams[tb].has_key(tb_name):
     583                        if tbparams[mtb].get_attribute(tb_name) \
     584                                and tbparams[tb].get_attribute(tb_name):
    578585
    579586                            idx = len([x for x in topo.keys() \
     
    593600                                    )
    594601                            seg = topdl.Segment(
    595                                     id= tbparams[mtb]['allocID'],
     602                                    id= {'fedid': tbparams[mtb].allocID},
    596603                                    type='emulab',
    597604                                    uri = self.tbmap.get(testbed_base(mtb),
     
    605612                                            for n, v in (\
    606613                                                ('domain',
    607                                                     tbparams[mtb].get('domain',
     614                                                    tbparams[mtb].getattribute(
     615                                                        'domain',
    608616                                                        ".example.com")),
    609617                                                ('experiment', "%s/%s" % \
    610                                                         (tbparams[mtb].get(
     618                                                        (tbparams[mtb].get_attribute(
    611619                                                            'project',
    612620                                                            'project'),
     
    623631                            mcsub = csub.clone()
    624632                            seg = topdl.Segment(
    625                                     id= tbparams[tb]['allocID'],
     633                                    id= { 'fedid': tbparams[tb].allocID},
    626634                                    type='emulab',
    627635                                    uri = self.tbmap.get(testbed_base(tb),
     
    635643                                            for n, v in (\
    636644                                                ('domain',
    637                                                     tbparams[tb].get('domain',
     645                                                    tbparams[tb].get_attribute(
     646                                                        'domain',
    638647                                                        ".example.com")),
    639648                                                ('experiment', "%s/%s" % \
    640                                                         (tbparams[tb].get('project',
     649                                                        (tbparams[tb].get_attribute(
     650                                                            'project',
    641651                                                            'project'),
    642652                                                            eid)),)
Note: See TracChangeset for help on using the changeset viewer.