Ignore:
Timestamp:
Sep 2, 2009 5:59:16 PM (15 years ago)
Author:
Ted Faber <faber@…>
Branches:
axis_example, compt_changes, info-ops, master, version-2.00, version-3.01, version-3.02
Children:
9beaf7c
Parents:
6c57fe9
Message:

checkpoint: writing config files

File:
1 edited

Legend:

Unmodified
Added
Removed
  • fedd/federation/access.py

    r6c57fe9 rf9ef40b  
    11361136            return rv
    11371137
     1138    def generate_portal_configs(self, topo, pubkey_base, secretkey_base,
     1139            tmpdir):
     1140        for p in [ e for e in topo.elements \
     1141                if isinstance(e, topdl.Computer) and e.get_attribute('portal')]:
     1142            myname = e.name[0]
     1143            peer = e.get_attribute('peer')
     1144            lexp = e.get_attribute('experiment')
     1145            lproj, leid = lexp.split('/', 1)
     1146            ldomain = e.get_attribute('domain')
     1147            scriptdir = e.get_attribute('scriptdir')
     1148            active = e.get_attribute('active')
     1149            type = e.get_attribute('type')
     1150            segid = fedid(hexstr=e.get_attribute('peer_segment'))
     1151            for e in topo.elements:
     1152                if isinstance(e, topdl.Segment) and e.id.fedid == segid:
     1153                    seg = e
     1154                    break
     1155            else:
     1156                raise service_error(service_error.req,
     1157                        "Can't find segment for portal %s" % myname)
     1158
     1159            rexp = seg.get_attribute('experiment')
     1160            rproj, reid = rexp.split("/", 1)
     1161            rdomain = seg.get_attribute('domain')
     1162            cfn = "%s/%s.%s.%s%s.gw.conf" % \
     1163                    (tmpdir, myname, leid, lproj, ldomain)
     1164            try:
     1165                f = open(cfn, "w")
     1166                print >>f, "Active: %s" % active
     1167                print >>f, "BossName: boss"
     1168                print >>f, "FsName: fs"
     1169                print >>f, "EventServerName: event-server%s" % ldomain
     1170                print >>f, "RemoteEventServerName: event-server%s" % rdomain
     1171                print >>f, "SeerControl: control.%s.%s%s" % \
     1172                        (leid.lower(), lproj.lower(), ldomain)
     1173                print >>f, "Type: %s" % type
     1174                print >>f, "RemoteExperiment: %s" % rexp
     1175                print >>f, "LocalExperiment: %s" % lexp
     1176                print >>f, "RemoteConfigFile: " + \
     1177                        "/proj/%s/exp/%s/tmp/%s.%s.%s%s.gw.conf" \
     1178                        % (rproj, reid, peer.lower(), reid.lower(),
     1179                                rproj.lower(), rdomain)
     1180                print >>f, "Peer: %s.%s.%s%s" % \
     1181                        (peer.lower(), reid.lower(), rproj.lower(), rdomain)
     1182                print >>f, "Pubkeys: /proj/%s/exp/%s/tmp/%s" % \
     1183                        (lproj, leid, pubkey_base)
     1184                print >>f, "Privkey: /proj/%s/exp/%s/tmp/%s" % \
     1185                        (lproj, leid, secretkey_base)
     1186                f.close()
     1187            except IOError, e:
     1188                raise service_error(service_error.internal,
     1189                        "Can't write protal config %s: %s" % (cfn, e))
     1190
    11381191    def StartSegment(self, req, fid):
    11391192        def get_url(url, cf, tmpdir):
     
    11611214
    11621215        configs = set(('hosts', 'ssh_pubkey', 'ssh_secretkey'))
     1216        keys = set(('ssh_pubkey', 'ssh_secretkey'))
    11631217
    11641218
     
    12001254            if a['attribute'] in configs:
    12011255                get_url(a['value'], certfile, tmpdir)
     1256            if a['attribute'] == 'ssh_pubkey':
     1257                pubkey_base = a['attribute'].rpartition('/')[2]
     1258            if a['attribute'] == 'ssh_secretkey':
     1259                secretkey_base = a['attribute'].rpartition('/')[2]
     1260
     1261        self.generate_portal_configs(topo, pubkey_base, secretkey_base, tmpdir)
    12021262
    12031263        return { 'allocID': req['allocID'] }
Note: See TracChangeset for help on using the changeset viewer.