Changeset 4ffa6f8


Ignore:
Timestamp:
Jul 12, 2012 5:48:44 PM (7 years ago)
Author:
Ted Faber <faber@…>
Branches:
compt_changes, master
Children:
87b1a06
Parents:
4708875
Message:

Add support for nat_portal parameter. Remove old half-assed active
endpoints

Files:
5 edited

Legend:

Unmodified
Added
Removed
  • fedd/federation/access.py

    rb15ecc6 r4ffa6f8  
    9595            self.cert_file = config.get("globals", "cert_file")
    9696            self.sert_pwd = config.get("globals", "cert_pw")
     97
     98        self.nat_portal = None
    9799
    98100        self.trusted_certs = config.get("access", "trusted_certs") or \
     
    490492                'value': self.dragon_vlans})
    491493
     494        if self.nat_portal is not None:
     495            msg['fedAttr'].append({'attribute': 'nat_portals', 'value': True})
     496
    492497        if services:
    493498            msg['service'] = services
     
    626631
    627632            active = info.get('active', 'False')
     633            nat_partner = info.get('nat_partner', 'False')
    628634
    629635            cfn = "%s/%s.gw.conf" % (tmpdir, myname.lower())
     
    638644                                if s.get('name', "") in self.imports]:
    639645                            server_service_out[s['name']](f, s)
     646
     647                if nat_partner == 'True':
     648                    print >>f, "nat_partner: True"
    640649
    641650                if tunnelconfig:
  • fedd/federation/emulab_access.py

    r68f03a6 r4ffa6f8  
    9090        self.portal_startcommand = config.get("access", "portal_startcommand")
    9191        self.node_startcommand = config.get("access", "node_startcommand")
     92        self.nat_portal = config.get("access", "nat_portal")
    9293
    9394        self.uri = 'https://%s:%d' % (socket.getfqdn(),
     
    552553                    k = p.get('key', None)
    553554                    surl = p.get('store', None)
    554                     if surl and k and k.index('/') != -1:
    555                         value = "%s.%s.%s%s" % \
     555                    if surl :
     556                        if self.nat_portal:
     557                            value = self.nat_portal
     558                        elif k and k.index('/') != -1:
     559                            value = "%s.%s.%s%s" % \
    556560                                (k[k.index('/')+1:], ename, proj, self.domain)
    557                         req = { 'name': k, 'value': value }
     561                        else:
     562                            self.log.error("Bad export request: %s" % p)
     563                            continue
    558564                        self.log.debug("Setting %s to %s on %s" % \
    559565                                (k, value, surl))
     566                        req = { 'name': k, 'value': value }
    560567                        self.call_SetValue(surl, req, cf)
    561568                    else:
  • fedd/federation/experiment_control.py

    r4708875 r4ffa6f8  
    327327
    328328        self.tbmap = { }
    329         self.tbactive = set()
    330329        lineno =0
    331330        try:
     
    338337                try:
    339338                    label, url = line.split(':', 1)
    340                     if ',' in label:
    341                         label, act = label.split(',', 1)
    342                         active = (act.strip() == 'active')
    343                     else:
    344                         active = False
    345339                    self.tbmap[label] = url
    346                     if active: self.tbactive.add(label)
    347340                except ValueError, e:
    348341                    self.log.warn("[read_mapdb] Ignored bad line (%d) in " +\
     
    21692162        # of the testbed map.
    21702163        tbmap = dict(self.tbmap)
    2171         tbactive = set(self.tbactive)
    21722164        for m in req.get('testbedmap', []):
    21732165            if 'testbed' in m and 'uri' in m:
    21742166                tbmap[m['testbed']] = m['uri']
    2175                 if 'active' in m and m['active']: tbactive.add(m['testbed'])
    21762167
    21772168        # a place to work
     
    22132204            connInfo = { }          # Connection information
    22142205
    2215             self.split_topology(top, topo, testbeds)
    2216 
    22172206            self.get_access_to_testbeds(testbeds, fid, allocated,
    22182207                    tbparams, masters, tbmap, expid, expcert_file)
     2208
     2209            # tbactive is the set of testbeds that have NATs in front of their
     2210            # portals. They need to initiate connections.
     2211            tbactive = set([k for k, v in tbparams.items() \
     2212                    if v.get_attribute('nat_portals')])
     2213
     2214            self.split_topology(top, topo, testbeds)
    22192215
    22202216            attrs = self.generate_keys_and_hosts(tmpdir, expid, hosts, tbparams)
  • fedd/federation/experiment_partition.py

    ra11eda5 r4ffa6f8  
    9393                ( st not in self.tbactive and dt in self.tbactive ):
    9494            active = ("%s" % (st in self.tbactive))
     95            nat_partner = ("%s" % (dt in self.tbactive))
    9596        elif (st in masters and dt not in masters) or \
    9697                ( st not in masters and dt in masters ):
    9798            active = ("%s" % (st in masters))
     99            nat_partner = "%s" % False
    98100        else:
    99101            active = ("%s" % (st > dt))
     102            nat_partner = "%s" % False
    100103
    101104        ifaces = [ ]
     
    127130                                "%s/%s" % (mproject, eid)},
    128131                            { 'attribute': 'active', 'value': active},
     132                            { 'attribute': 'nat_partner', 'value': nat_partner},
    129133                            # Move to SMB service description
    130134                            { 'attribute': 'masteruser', 'value': muser},
  • wsdl/fedd_types.xsd

    ra11eda5 r4ffa6f8  
    237237        systems the information to map the local name into a service
    238238        location.
    239 
    240         The optional active element is true when the testbed prefers active
    241         portal nodes.
    242239      </xsd:documentation>
    243240    </xsd:annotation>
     
    245242      <xsd:element name="testbed" type="xsd:string"/>
    246243      <xsd:element name="uri" type="xsd:string"/>
    247       <xsd:element name="active" type="xsd:boolean"
    248         minOccurs="0" maxOccurs="1"/>
    249244    </xsd:sequence>
    250245  </xsd:complexType>
Note: See TracChangeset for help on using the changeset viewer.