Index: fedd/federation/protogeni_access.py
===================================================================
--- fedd/federation/protogeni_access.py	(revision cf00ddd87fd21643c02fdfda7a36c095ff90fed0)
+++ fedd/federation/protogeni_access.py	(revision a65a65a860e3841f04c8fdb1bdf28364ed22c007)
@@ -91,7 +91,22 @@
 	self.staging_host = config.get("access", "staging_host") \
 		or "ops.emulab.net"
+	self.local_seer_software = config.get("access", "local_seer_software")
+	self.local_seer_image = config.get("access", "local_seer_image")
+	self.local_seer_start = config.get("access", "local_seer_start")
    
+	self.dragon_endpoint = config.get("access", "dragon")
+	self.dragon_vlans = config.get("access", "dragon_vlans")
+	self.deter_internal = config.get("access", "deter_internal")
+
+	self.tunnel_config = config.getboolean("access", "tunnel_config")
+	self.portal_command = config.get("access", "portal_command")
+	self.portal_image = config.get("access", "portal_image")
+	self.portal_type = config.get("access", "portal_type") or "pc"
+	self.portal_startcommand = config.get("access", "portal_startcommand")
+	self.node_startcommand = config.get("access", "node_startcommand")
+
 	self.federation_software = software_list(self.federation_software)
 	self.portal_software = software_list(self.portal_software)
+	self.local_seer_software = software_list(self.local_seer_software)
 
 	self.renewal_interval = config.get("access", "renewal") or (3 * 60 )
@@ -102,5 +117,4 @@
 	self.cm_url = config.get("access", "cm_url")
 
-        self.attrs = { }
         self.access = { }
         self.restricted = [ ]
@@ -201,6 +215,4 @@
         key_name = "(<ANY>|<NONE>|"+fedid_expr + "|"+ name_expr + ")"
 
-        attr_re = re.compile('attribute:\s*([\._\-a-z0-9]+)\s+value:\s*(.*)',
-                re.IGNORECASE)
 	access_str = '\('+key_name+'\s*,\s*'+key_name+'\s*,\s*'+ \
                 key_name+'\s*\)\s*->\s*\(('+name_expr +')\s*,\s*('\
@@ -226,11 +238,4 @@
             line = line.strip();
             if len(line) == 0 or line.startswith('#'):
-                continue
-
-            # Extended (attribute: x value: y) attribute line
-            m = attr_re.match(line)
-            if m != None:
-                attr, val = m.group(1,2)
-                self.attrs[attr] = val
                 continue
 
@@ -547,8 +552,16 @@
 		]
             }
-        if len(self.attrs) > 0:
-            msg['fedAttr'].extend(
-                [ { 'attribute': x, 'value' : y } \
-                        for x,y in self.attrs.iteritems()])
+	if self.dragon_endpoint:
+	    msg['fedAttr'].append({'attribute': 'dragon',
+		'value': self.dragon_endpoint})
+	if self.deter_internal:
+	    print 'adding internal'
+	    msg['fedAttr'].append({'attribute': 'deter_internal',
+		'value': self.deter_internal})
+	else: print "internal: %s" % self.deter_internal
+	#XXX: ??
+	if self.dragon_vlans:
+	    msg['fedAttr'].append({'attribute': 'vlans',
+		'value': self.dragon_vlans})
 
 	if services:
@@ -803,5 +816,5 @@
 
 	    cfn = "%s/%s.gw.conf" % (tmpdir, myname.lower())
-	    tunnelconfig = self.attrs.has_key('TunnelCfg')
+	    tunnelconfig = self.tunnel_config
 	    try:
 		f = open(cfn, "w")
@@ -868,13 +881,4 @@
 
 	starts = { }
-
-	# The startcmds for master and slave testbeds
-	if master: 
-	    gate_cmd = self.attrs.get('MasterConnectorStartCmd', '/bin/true')
-	    node_cmd = self.attrs.get('MasterNodeStartCmd', 'bin/true')
-	else: 
-	    gate_cmd = self.attrs.get('SlaveConnectorStartCmd', '/bin/true')
-	    node_cmd = self.attrs.get('SlaveNodeStartCmd', 'bin/true')
-
 	# Weed out the things we aren't going to instantiate: Segments, portal
 	# substrates, and portal interfaces.  (The copy in the for loop allows
@@ -892,14 +896,15 @@
 		s.location = re.sub("^.*/", softdir, s.location)
 	    if isinstance(e, topdl.Computer):
-		if e.get_attribute('portal') and gate_cmd:
+		if e.get_attribute('portal') and self.portal_startcommand:
 		    # Portals never have a user-specified start command
-		    starts[e.name[0]] = gate_cmd
-		elif node_cmd:
+		    starts[e.name] = self.portal_startcommand
+		elif self.node_startcommand:
 		    if e.get_attribute('startup'):
-			starts[e.name[0]] = "%s \\$USER '%s'" % \
-				(node_cmd, e.get_attribute('startup'))
+			starts[e.name] = "%s \\$USER '%s'" % \
+				(self.node_startcommand, 
+					e.get_attribute('startup'))
 			e.remove_attribute('startup')
 		    else:
-			starts[e.name[0]] = node_cmd
+			starts[e.name] = self.node_startcommand
 
 		# Remove portal interfaces 
@@ -914,9 +919,7 @@
 
 	# NB: these are extra commands issued for the node, not the startcmds
-	if master: cmd = self.attrs.get('MasterConnectorCmd', '')
-	else: cmd = self.attrs.get('SlaveConnectorCmd', '')
-
-	if cmd:
-	    filters.append(topdl.generate_portal_command_filter(cmd))
+	if self.portal_command:
+	    filters.append(topdl.generate_portal_command_filter(
+		self.portal_command))
 
 	# Convert to rspec and return it
