#from skeleton import skeleton
#extends skeleton
#import datetime


#def title
VM List
#end def

#def createForm()
#if $cant_add_vm
<p>$cant_add_vm</p>
#else
<h2>Create a new VM</h2>
#if $err
<p class="error">We had a problem with your request:</p>
#else if $varExists('new_machine')
<p>Congratulations! You successfully created a new VM called $new_machine.</p>
#end if
    <form action="create" method="POST">
    <input type="hidden" name="back" value="list"/>
      <table>
#filter None
      $errorRow('create', $err)
#end filter
	<tr>
	  <td>Name</td>
	  <td><input type="text" name="name" value="$defaults.name"/>.${config.dns.domains[0]}</td>
	</tr>
#filter None
$errorRow('name', $err)
#end filter
	<tr>
	  <td>Description</td>
	  <td><textarea name="description" rows="4" cols="60">$defaults.description</textarea></td>
	</tr>
#filter None
$errorRow('description', $err)
#end filter
	<tr>
	  <td>Memory</td>
	  <td><input type="text" name="memory" value="$defaults.memory" size=3/> MiB ($max_memory max)</td>
	</tr>
#filter None
$errorRow('memory', $err)
#end filter
	<tr>
	  <td>Disk</td>
	  <td><input type="text" name="disksize" value="$defaults.disk" size=3/> GiB (${"%0.1f" % ($max_disk-0.05)} max)</td>
	</tr>
#filter None
$errorRow('disk', $err)
#end filter
        <tr>
          <td>HVM/ParaVM#slurp
#filter None
$helppopup('HVM/ParaVM')#slurp
#end filter
</td>
          <td>
#filter None
$vmTypeList($defaults.type)
#end filter
</td>
        </tr>
#filter None
$errorRow('vmtype', $err)
#end filter
#filter None
$errorRow('autoinstall', $err)
#end filter
	<tr>
	  <td>Autoinstall#slurp
#filter None
$helppopup('Autoinstall')#slurp
#end filter
</td>
	  <td><input type="radio" name="cd_or_auto" id="cd_or_auto_auto">
#filter None
$autoList($defaults.cdrom, "document.getElementById('cd_or_auto_auto').checked = true;document.getElementById('cdromlist').value = ''")
	      (experimental; 1-2 minutes, and you have a machine with empty root password.)
#end filter
	  </input>
	</tr>
	<tr>
	  <td>Boot CD</td>
	  <td><input type="radio" name="cd_or_auto" id="cd_or_auto_cd" checked>
#filter None
$cdromList($defaults.cdrom, "document.getElementById('cd_or_auto_cd').checked = true;document.getElementById('autoinstalllist').value = ''")
#end filter
</td>
	  </input>
	</tr>
$errorRow('cdrom', $err)
$errorRow('cdrom', $err)
	<tr>
	  <td>Owner</td>
	  <td><input type="text" name="owner" value="$defaults.owner"/></td>
	</tr>
#filter None
	$errorRow('owner', $err)
#end filter
      </table>
      <input type="submit" class="button" value="Create it!"/><br />
      Windows notes: #slurp
#filter None
$helppopup('Windows')#slurp
#end filter
    </form>
#end if
#end def

#def machineRow($machine)
      <tr> 
	<td rowspan="2">
	  <form action="command" method="post">
	    <input type="hidden" name="back" value="list"/>
	    <input type="hidden" name="machine_id"
		   value="$machine.machine_id"/>
<input type="submit" class="power #slurp
#if $machine.uptime then 'on' else 'off'
" name="action" value="#slurp
#if $machine.uptime then 'Power off' else 'Power on'
"/>
	  </form>
	</td>
	<td><a href="info?machine_id=$machine.machine_id">$machine.name</a></td>
	<td>${machine.memory}M</td>
	<td>$machine.owner</td>
	<td>$machine.administrator</td>
#if $machine.nics
#set $nic = $machine.nics[0]
	<td>$nic.ip</td>
#else
	<td></td>
#end if
<td>#slurp
#if $machine.uptime
${datetime.timedelta(seconds=int(machine.uptime))}#slurp
#end if
</td>
	<td>#slurp
#if $has_vnc[$machine] == True
<a href="vnc?machine_id=$machine.machine_id">Console</a>#slurp
#else if $has_vnc[$machine] != 'Off'
#filter None
$has_vnc[$machine]
#end filter
#end if
</td>
      </tr>
      <tr>
        <td colspan="7" style="padding-left: 1em; color: #666">$machine.description</td>
      </tr>
#end def

#def machineList($machines)
    <table cellspacing="0" cellpadding="2">
      <tr>
	<th></th>
	<th>Name</th>
	<th>Memory</th>
	<th>Owner#slurp
#filter None
$helppopup('Owner')#slurp
#end filter
</th>
        <th>Administrator#slurp
#filter None
$helppopup('Administrator')#slurp
#end filter
</th>
	<th>IP</th>
	<th>Uptime</th>
	<th>VNC</th>
      </tr>
      #for $machine in $machines:
    #filter None
	$machineRow($machine)
    #end filter
      #end for
    </table>
    <script type="text/javascript" src="/static/stripe.js"></script>
    <script type="text/javascript">
        document.observe("dom:loaded", function() {
            stripe(\$('machinelist').getElementsByTagName('table')[0],
                   'stripedrow');
        });
    </script>
#end def


#def body
<p style="font-size: 125%;">SIPB Virtual Servers is an <strong>alpha service</strong>.  <a href="/static/about.html">What does this mean?</a></p>
#if not $machines
<p>You don't currently control any VMs.</p>   
#end if
    <p><a href="list">refresh</a></p>
    <div id="machinelist">
    #filter None
    $machineList($machines)
    #end filter
    </div>
#filter None
$createForm()
#end filter
#end def
