source: trunk/packages/invirt-web/code/templates/list.mako @ 2911

Last change on this file since 2911 was 2910, checked in by quentin, 15 years ago

Put the MOTD at /etc/invirt/motd.html and parse it as HTML

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