Index: trunk/packages/sipb-xen-database/debian/changelog
===================================================================
--- trunk/packages/sipb-xen-database/debian/changelog	(revision 442)
+++ trunk/packages/sipb-xen-database/debian/changelog	(revision 443)
@@ -1,2 +1,8 @@
+sipb-xen-database (10.6) unstable; urgency=low
+
+  * Support autoinstalls table.
+
+ -- Eric Price <ecprice@pseudomyrmex.mit.edu>  Mon, 21 Apr 2008 22:34:46 -0400
+
 sipb-xen-database (10.5) unstable; urgency=low
 
Index: trunk/packages/sipb-xen-database/sipb_xen_database/models.py
===================================================================
--- trunk/packages/sipb-xen-database/sipb_xen_database/models.py	(revision 442)
+++ trunk/packages/sipb-xen-database/sipb_xen_database/models.py	(revision 443)
@@ -13,4 +13,5 @@
            'types_table',
            'cdroms_table',
+           'autoinstalls_table',
            'Machine',
            'MachineAccess',
@@ -18,5 +19,7 @@
            'Disk',
            'Type',
-           'CDROM']
+           'CDROM',
+           'Autoinstall',
+           ]
 
 meta = DynamicMetaData()
@@ -59,4 +62,9 @@
        Column('description', String, nullable=False))
 
+autoinstalls_table = Table('autoinstalls', meta,
+       Column('autoinstall_id', String, primary_key=True, nullable=False),
+       Column('description', String, nullable=False),
+       Column('type_id', String, ForeignKey('types.type_id'), nullable=False))
+
 machine_access_table = Table('machine_access', meta,
        Column('machine_id', Integer, ForeignKey('machines.machine_id'), nullable=False, index=True),
@@ -88,4 +96,8 @@
         return "<CDROM %s: %s>" % (self.cdrom_id, self.description)
 
+class Autoinstall(object):
+    def __repr__(self):
+        return "<Autoinstall %s: %s (%s)>" % (self.autoinstall_id, self.description, self.type.type_id)
+
 assign_mapper(ctx, Machine, machine_table,
               properties={'nics': relation(NIC, backref="machine"),
@@ -98,4 +110,5 @@
 assign_mapper(ctx, Type, types_table)
 assign_mapper(ctx, CDROM, cdroms_table)
+assign_mapper(ctx, Autoinstall, autoinstalls_table)
 
 def clear_cache():
Index: trunk/packages/sipb-xen-www/code/main.py
===================================================================
--- trunk/packages/sipb-xen-www/code/main.py	(revision 442)
+++ trunk/packages/sipb-xen-www/code/main.py	(revision 443)
@@ -38,5 +38,5 @@
 from Cheetah.Template import Template
 import sipb_xen_database
-from sipb_xen_database import Machine, CDROM, ctx, connect, MachineAccess, Type
+from sipb_xen_database import Machine, CDROM, ctx, connect, MachineAccess, Type, Autoinstall
 import validation
 from webcommon import InvalidInput, CodeError, g
@@ -99,4 +99,5 @@
     disk = 4.0
     cdrom = ''
+    autoinstall = ''
     name = ''
     def __init__(self, max_memory=None, max_disk=None, **kws):
@@ -222,6 +223,5 @@
              machines=machines,
              has_vnc=has_vnc,
-             uptimes=g.uptimes,
-             cdroms=CDROM.select())
+             uptimes=g.uptimes)
     return d
 
@@ -572,5 +572,4 @@
     checkpoint.checkpoint('Got defaults')
     d = dict(user=user,
-             cdroms=CDROM.select(),
              on=status is not None,
              machine=machine,
Index: trunk/packages/sipb-xen-www/code/templates/functions.tmpl
===================================================================
--- trunk/packages/sipb-xen-www/code/templates/functions.tmpl	(revision 442)
+++ trunk/packages/sipb-xen-www/code/templates/functions.tmpl	(revision 443)
@@ -1,15 +1,30 @@
-#def cdromList($cdroms, $default="")
-<select name="cdrom" id="cdromlist">
+#def databaseList($lst, $default, $onchange, $name, $id, $valueattr, $descattr)
+<select name="$name" id="$id"#slurp
+#if $onchange is not None
+onchange="$onchange"#slurp
+#end if
+>
   <option #slurp
 #if $default then '' else 'selected'
  value="">None</option>
-  #for $cdrom in $cdroms
+  #for $item in $lst
   <option #slurp
-#if $default == $cdrom.cdrom_id then 'selected' else ''
- value="$cdrom.cdrom_id">
-    $cdrom.description
+#if $default == getattr(item, valueattr) then 'selected' else ''
+ value="${getattr(item, valueattr)}">
+    ${getattr(item, descattr)}
   </option>
   #end for
 </select>
+#end def
+
+#def cdromList($default="", $onchange=None)
+$databaseList(sorted($sipb_xen_database.CDROM.select(), key=lambda x: x.description),
+              default, onchange, 'cdrom', 'cdromlist', 'cdrom_id', 'description')
+#end def
+
+#def autoList($default="", $onchange=None)
+$databaseList(sorted($sipb_xen_database.Autoinstall.select(), key=lambda x: x.description),
+              default, onchange, 'autoinstall', 'autoinstalllist', 'autoinstall_id', 'description')
+## $databaseList(autos, default, onchange, 'autoinstall', 'autoinstalllist', 'autoinstall_id', 'description')
 #end def
 
Index: trunk/packages/sipb-xen-www/code/templates/info.tmpl
===================================================================
--- trunk/packages/sipb-xen-www/code/templates/info.tmpl	(revision 442)
+++ trunk/packages/sipb-xen-www/code/templates/info.tmpl	(revision 443)
@@ -41,5 +41,5 @@
 	#end if
       <td>Boot CD:</td>
-      <td>$cdromList($cdroms)</td>
+      <td>$cdromList()</td>
   </tr>
     <tr>
Index: trunk/packages/sipb-xen-www/code/templates/list.tmpl
===================================================================
--- trunk/packages/sipb-xen-www/code/templates/list.tmpl	(revision 442)
+++ trunk/packages/sipb-xen-www/code/templates/list.tmpl	(revision 443)
@@ -42,14 +42,15 @@
 $errorRow('vmtype', $err)
 	<tr>
+	  <td>Autoinstall$helppopup('autoinstall')</td>
+	  <td><input type="radio" name="cd_or_auto" id="cd_or_auto_auto">$autoList($defaults.cdrom, "document.getElementById('cd_or_auto_auto').checked = true;document.getElementById('cdromlist').value = ''")
+	      (experimental; 1-2 minutes, and you have a machine; root pw is 'password'.)
+	  </input>
+	</tr>
+	<tr>
 	  <td>Boot CD</td>
-	  <td>$cdromList($cdroms, $defaults.cdrom)</td>
+	  <td><input type="radio" name="cd_or_auto" id="cd_or_auto_cd" checked>$cdromList($defaults.cdrom, "document.getElementById('cd_or_auto_cd').checked = true;document.getElementById('autoinstalllist').value = ''")</td>
+	  </input>
 	</tr>
 $errorRow('cdrom', $err)
-	<tr>
-	  <td>Clone image?</td>
-	  <td><input type="checkbox" name="clone_from" id="clone_from" value="ice3" onchange="onclone(event)"/>
-	      (experimental; 1-2 minutes, and you have an etch machine; root pw is 'password'.)
-	      <script type='text/javascript'>function onclone(e){ document.getElementById('cdromlist').value = ''; }</script></td>
-	</tr>
 $errorRow('cdrom', $err)
 	<tr>
