Add label tags to group <input> tags with their labels. Also add
[invirt/packages/invirt-web.git] / code / templates / list.mako
1 <%page expression_filter="h"/>
2 <%inherit file="skeleton.mako" />
3 <%!
4         import datetime
5 %>
6
7
8 <%def name="title()">
9 VM List
10 </%def>
11
12 <%def name="createForm()">
13 % if cant_add_vm:
14 <p>${cant_add_vm}</p>
15 % else:
16 <h2>Create a new VM</h2>
17 % if err:
18 <p class="error">We had a problem with your request:</p>
19 % elif new_machine:
20 <p>Congratulations! You successfully created a new VM called ${new_machine}.</p>
21 % endif
22     <form action="create" method="POST">
23     <input type="hidden" name="back" value="list"/>
24       <table>
25         ${self.fn.errorRow('create', err)}
26         <tr>
27           <td>Name</td>
28           <td><input type="text" name="name" value="${defaults.name}"/>.${config.dns.domains[0]}</td>
29         </tr>
30         ${self.fn.errorRow('name', err)}
31         <tr>
32           <td>Description</td>
33           <td><textarea name="description" rows="4" cols="60">${defaults.description}</textarea></td>
34         </tr>
35         ${self.fn.errorRow('description', err)}
36         <tr>
37           <td>Memory</td>
38           <td><input type="text" name="memory" value="${defaults.memory}" size=3/> MiB (${max_memory} max)</td>
39         </tr>
40         ${self.fn.errorRow('memory', err)}
41         <tr>
42           <td>Disk</td>
43           <td><input type="text" name="disksize" value="${defaults.disk}" size=3/> GiB (${"%0.1f" % (max_disk-0.05)} max)</td>
44         </tr>
45         ${self.fn.errorRow('disk', err)}
46         <tr>
47           <td>HVM/ParaVM${self.fn.helppopup('HVM/ParaVM')}</td>
48           <td>
49           ${self.fn.vmTypeList(defaults.type)}
50           </td>
51         </tr>
52         ${self.fn.errorRow('vmtype', err)}
53         ${self.fn.errorRow('autoinstall', err)}
54         <tr>
55           <td>Autoinstall${self.fn.helppopup('Autoinstalls')}</td>
56           <td><label><input type="radio" name="cd_or_auto" id="cd_or_auto_auto"
57                  onchange="$('cdromlist').value = ''; $('vmtype-linux').checked = true" />
58 ${self.fn.autoList(defaults.cdrom, "$('cd_or_auto_auto').checked = true;$('cdromlist').value = '';$('vmtype-linux').checked = true")}
59               (experimental; 2-3 minutes, and you have a machine with empty root password.)
60 </label></td>
61         </tr>
62         <tr>
63           <td>Boot CD</td>
64           <td><label><input type="radio" name="cd_or_auto" id="cd_or_auto_cd" checked="checked"
65                 onchange="$('autoinstalllist').value = ''; $('vmtype-linux-hvm').checked = true" />
66 ${self.fn.cdromList(defaults.cdrom, "$('cd_or_auto_cd').checked = true;$('autoinstalllist').value = '';$('vmtype-linux-hvm').checked = true")}
67 </label></td>
68         </tr>
69         ${self.fn.errorRow('cdrom', err)}
70         ${self.fn.errorRow('cdrom', err)}
71         <tr>
72           <td>Owner</td>
73           <td><input type="text" name="owner" value="${defaults.owner}"/></td>
74         </tr>
75         ${self.fn.errorRow('owner', err)}
76       </table>
77       <input type="submit" class="button" value="Create it!"/><br />
78       Windows notes: ${self.fn.helppopup('Windows')}
79     </form>
80 % endif
81 </%def>
82
83 <%def name="machineRow(machine)">
84       <tr> 
85         <td rowspan="2">
86         % if machine.uptime and installing[machine]:
87         <img src="static/power_installing.png" alt="Installing..." />
88         % else:
89           <form action="machine/${machine.machine_id}/command/${'shutdown' if machine.uptime else 'create'}" method="post">
90             <input type="hidden" name="back" value="list"/>
91             <input type="hidden" name="machine_id"
92                    value="${machine.machine_id}"/>
93 <input type="submit" class="power ${'on' if machine.uptime else 'off'}" name="action" value="${'Shutdown' if machine.uptime else 'Power on'}"\
94 % if machine.uptime:
95  onclick="return confirm('Are you sure you want to power off this VM?');"
96 % endif
97 />
98           </form>
99           % endif
100         </td>
101         <td><a href="machine/${machine.machine_id}">${machine.name}</a></td>
102         <td>${machine.memory}M</td>
103         <td>${machine.owner}</td>
104         <td>${machine.administrator}</td>
105 % if machine.nics:
106         <td>${', '.join(nic.ip for nic in machine.nics)}</td>
107 % else:
108         <td></td>
109 % endif
110 <td>\
111 % if machine.uptime:
112 ${datetime.timedelta(seconds=int(machine.uptime))}\
113 % endif
114 </td>
115         <td>\
116 % if has_vnc[machine] == True:
117 <a href="machine/${machine.machine_id}/vnc">Console</a>\
118 % elif has_vnc[machine] == 'ParaVM':
119 ParaVM${self.fn.helppopup("ParaVM Console")}
120 % elif has_vnc[machine] != 'Off':
121 ${has_vnc[machine]}
122 % endif
123 </td>
124       </tr>
125       <tr>
126         <td colspan="7" style="padding-left: 1em; color: #666">${machine.description|self.fn.module.nl2br}</td>
127       </tr>
128 </%def>
129
130 <%def name="machineList(machines)">
131     <table cellspacing="0" cellpadding="2">
132       <tr>
133         <th></th>
134         <th>Name</th>
135         <th>Memory</th>
136         <th>Owner${self.fn.helppopup('Owner')}</th>
137         <th>Administrator${self.fn.helppopup('Administrator')}</th>
138         <th>IP</th>
139         <th>Uptime</th>
140         <th>VNC</th>
141       </tr>
142 % for machine in machines:
143         ${machineRow(machine)}
144 % endfor
145     </table>
146     <script type="text/javascript" src="/static/stripe.js"></script>
147     <script type="text/javascript">
148         document.observe("dom:loaded", function() {
149             stripe($('machinelist').getElementsByTagName('table')[0],
150                    'stripedrow');
151         });
152     </script>
153 </%def>
154
155 <p style="font-size: 125%;"><a href="http://${config.web.hostname}">What is XVM?</a></p>
156 % if not machines:
157 <p>You don't currently control any VMs.</p>   
158 % endif
159     <p><a href="list">refresh</a></p>
160     <div id="machinelist">
161     ${machineList(machines)}
162     </div>
163 ${createForm()}