Changeset 9b3627e for fedd/federation/emulab_access.py
- Timestamp:
- Mar 9, 2010 1:08:05 AM (14 years ago)
- Branches:
- axis_example, compt_changes, info-ops, master, version-3.01, version-3.02
- Children:
- 4e9719b
- Parents:
- c2c153b
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
fedd/federation/emulab_access.py
rc2c153b r9b3627e 56 56 Initializer. Pulls parameters out of the ConfigParser's access section. 57 57 """ 58 59 def software_list(v): 60 l = [ ] 61 if v: 62 ps = v.split(" ") 63 while len(ps): 64 loc, file = ps[0:2] 65 del ps[0:2] 66 l.append((loc, file)) 67 return l 68 58 69 59 70 # Make sure that the configuration is in place … … 73 84 self.userconfcmd = config.get("access","userconfcmd") 74 85 self.userconfurl = config.get("access","userconfurl") 86 self.federation_software = config.get("access", "federation_software") 87 self.portal_software = config.get("access", "portal_software") 75 88 self.ssh_privkey_file = config.get("access","ssh_privkey_file") 76 89 self.ssh_pubkey_file = config.get("access","ssh_pubkey_file") … … 79 92 self.cleanup = not config.getboolean("access", "leave_tmpfiles") 80 93 self.access_type = config.get("access", "type") 94 95 self.federation_software = software_list(self.federation_software) 96 self.portal_software = software_list(self.portal_software) 81 97 82 98 self.access_type = self.access_type.lower() … … 968 984 'userconfig': client_null, 969 985 } 986 987 def server_port(f, s): 988 p = urlparse(s.get('server', 'http://localhost')) 989 print >>f, 'port: remote:%s:%s:%s' % (p.port, p.hostname, p.port) 990 991 def server_null(f,s): pass 992 993 def server_seer(f, s): 994 print >>f, 'seer: true' 995 996 server_service_out = { 997 'SMB': server_port, 998 'tmcd': server_port, 999 'userconfig': server_null, 1000 'seer': server_seer, 1001 } 970 1002 # XXX: end un hardcode this 971 1003 … … 1006 1038 for s in [s for s in services \ 1007 1039 if s.get('name', "") in self.imports]: 1008 p = urlparse(s.get('server', 'http://localhost')) 1009 print >>f, 'port: remote:%s:%s:%s' % \ 1010 (p.port, p.hostname, p.port) 1040 server_service_out[s['name']](f, s) 1011 1041 1012 1042 if tunnelconfig: … … 1026 1056 1027 1057 # XXX: This little seer config file needs to go away. 1028 if not seer_out:1029 try:1030 seerfn = "%s/seer.conf" % tmpdir1031 f = open(seerfn, "w")1032 if not master:1033 print >>f, "ControlNode: control.%s.%s%s" % \1034 (meid.lower(), mproj.lower(), mdomain)1035 print >>f, "ExperimentID: %s" % mexp1036 f.close()1037 except IOError, e:1038 raise service_error(service_error.internal,1039 "Can't write seer.conf: %s" %e)1040 seer_out = True1058 #if not seer_out: 1059 #try: 1060 #seerfn = "%s/seer.conf" % tmpdir 1061 #f = open(seerfn, "w") 1062 #if not master: 1063 #print >>f, "ControlNode: control.%s.%s%s" % \ 1064 #(meid.lower(), mproj.lower(), mdomain) 1065 #print >>f, "ExperimentID: %s" % mexp 1066 #f.close() 1067 #except IOError, e: 1068 #raise service_error(service_error.internal, 1069 #"Can't write seer.conf: %s" %e) 1070 #seer_out = True 1041 1071 1042 1072 if not client_out and type in ('control', 'both'): … … 1050 1080 s.get('visibility','') == 'import': 1051 1081 client_service_out[s['name']](f, s) 1052 # Does seer need this? (evidently so)1082 # Seer uses this? 1053 1083 print >>f, "ExperimentID: %s/%s" % (mproj, meid) 1054 1084 f.close() … … 1105 1135 return e.name[0] not in self.nodes 1106 1136 1137 def add_kit(e, kit): 1138 """ 1139 Add a Software object created from the list of (install, location) 1140 tuples passed as kit to the software attribute of an object e. We 1141 do this enough to break out the code, but it's kind of a hack to 1142 avoid changing the old tuple rep. 1143 """ 1144 1145 s = [ topdl.Software(install=i, location=l) for i, l in kit] 1146 1147 if isinstance(e.software, list): e.software.extend(s) 1148 else: e.software = s 1149 1150 1107 1151 t = topo.clone() 1108 1152 … … 1149 1193 if isinstance(e, topdl.Segment): 1150 1194 t.elements.remove(e) 1151 # Fix software paths1152 for s in getattr(e, 'software', []):1153 s.location = re.sub("^.*/", softdir, s.location)1154 1195 if isinstance(e, topdl.Computer): 1196 add_kit(e, self.federation_software) 1155 1197 if e.get_attribute('portal') and gate_cmd: 1198 # Add local portal support software 1199 add_kit(e, self.portal_software) 1156 1200 # Portals never have a user-specified start command 1157 1201 e.set_attribute('startup', gate_cmd) … … 1167 1211 e.interface = [i for i in e.interface \ 1168 1212 if not i.get_attribute('portal') or i.name in dinf ] 1213 # Fix software paths 1214 for s in getattr(e, 'software', []): 1215 s.location = re.sub("^.*/", softdir, s.location) 1169 1216 1170 1217 t.substrates = [ s.clone() for s in t.substrates ] … … 1368 1415 get_url(s, certfile, softdir) 1369 1416 1417 # Copy local portal node software to the tempdir 1418 for l, f in self.portal_software: 1419 base = os.path.basename(f) 1420 copy_file(f, "%s/%s" % (softdir, base)) 1421 1370 1422 for a in attrs: 1371 1423 if a['attribute'] in configs:
Note: See TracChangeset
for help on using the changeset viewer.