VM List
</%def>
+%if os.path.exists("/etc/invirt/motd.html"):
+<div class="result">
+<p class="error">${open('/etc/invirt/motd.html').read()|n}</p>
+</div>
+%endif
+
<%def name="createForm()">
% if cant_add_vm:
<p>${cant_add_vm}</p>
% elif new_machine:
<p>Congratulations! You successfully created a new VM called ${new_machine}.</p>
% endif
+
<form action="create" method="POST">
<input type="hidden" name="back" value="list"/>
<table>
${self.fn.errorRow('autoinstall', err)}
<tr>
<td>Autoinstall${self.fn.helppopup('Autoinstalls')}</td>
- <td><input type="radio" name="cd_or_auto" id="cd_or_auto_auto"
- onchange="\$('cdromlist').value = ''; \$('vmtype-linux').checked = true">
+ <td><label><input type="radio" name="cd_or_auto" id="cd_or_auto_auto"
+ onchange="$('cdromlist').value = ''; $('vmtype-linux').checked = true" />
${self.fn.autoList(defaults.cdrom, "$('cd_or_auto_auto').checked = true;$('cdromlist').value = '';$('vmtype-linux').checked = true")}
(experimental; 2-3 minutes, and you have a machine with empty root password.)
- </input>
+</label></td>
</tr>
<tr>
<td>Boot CD</td>
- <td><input type="radio" name="cd_or_auto" id="cd_or_auto_cd" checked="checked"
- onchange="\$('autoinstalllist').value = ''; \$('vmtype-linux-hvm').checked = true">
+ <td><label><input type="radio" name="cd_or_auto" id="cd_or_auto_cd" checked="checked"
+ onchange="$('autoinstalllist').value = ''; $('vmtype-linux-hvm').checked = true" />
${self.fn.cdromList(defaults.cdrom, "$('cd_or_auto_cd').checked = true;$('autoinstalllist').value = '';$('vmtype-linux-hvm').checked = true")}
-</td>
- </input>
+</label></td>
</tr>
${self.fn.errorRow('cdrom', err)}
${self.fn.errorRow('cdrom', err)}
</tr>
${self.fn.errorRow('owner', err)}
</table>
- <input type="submit" class="button" value="Create it!"/><br />
+ <input type="submit" class="button" value="Create it!" \
+% if disable_creation:
+ disabled="disabled" \
+% endif
+/> \
+% if disable_creation:
+ <span style="color:red;">VM creation is currently disabled due to lack of disk space.</span> \
+%endif
+<br />
Windows notes: ${self.fn.helppopup('Windows')}
</form>
% endif
</%def>
-<%def name="machineRow(machine)">
- <tr>
+<%def name="machineRow(machine, dark)">
+<%
+ on = (machine.uptime is not None)
+%>
+ <tr\
+% if dark:
+ class="stripedrow" \
+% endif
+>
<td rowspan="2">
- <form action="command" method="post">
+ % if on and installing[machine]:
+ <img src="static/power_installing.png" alt="Installing..." />
+ % else:
+ <form action="machine/${machine.machine_id}/command/${'shutdown' if on else 'create'}" method="post">
<input type="hidden" name="back" value="list"/>
- <input type="hidden" name="machine_id"
- value="${machine.machine_id}"/>
-<input type="submit" class="power ${'on' if machine.uptime else 'off'}" name="action" value="${'Power off' if machine.uptime else 'Power on'}"\
-% if machine.uptime:
+<input type="submit" class="power ${'on' if on else 'off'}" name="action" value="${'Shutdown' if on else 'Power on'}"\
+% if on:
onclick="return confirm('Are you sure you want to power off this VM?');"
% endif
/>
</form>
+ % endif
</td>
<td><a href="machine/${machine.machine_id}">${machine.name}</a></td>
<td>${machine.memory}M</td>
<td>${machine.owner}</td>
<td>${machine.administrator}</td>
% if machine.nics:
- <td>${', '.join(map(lambda x: x.ip, machine.nics))}</td>
+ <td>${', '.join(nic.ip for nic in machine.nics)}</td>
% else:
<td></td>
% endif
<td>\
-% if machine.uptime:
+% if on:
${datetime.timedelta(seconds=int(machine.uptime))}\
% endif
</td>
% endif
</td>
</tr>
- <tr>
+ <tr\
+% if dark:
+ class="stripedrow" \
+% endif
+>
<td colspan="7" style="padding-left: 1em; color: #666">${machine.description|self.fn.module.nl2br}</td>
</tr>
</%def>
<th>Uptime</th>
<th>VNC</th>
</tr>
-% for machine in machines:
- ${machineRow(machine)}
+% for n, machine in enumerate(machines):
+ ${machineRow(machine, (n%2)==0)}
% endfor
</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>
</%def>
<p style="font-size: 125%;"><a href="http://${config.web.hostname}">What is XVM?</a></p>