Add graphs of network usage by VMs.
[invirt/packages/invirt-web.git] / code / templates / info.mako
1 <%page expression_filter="h"/>
2 <%inherit file="skeleton.mako" />
3
4 <%def name="title()">
5 Info on ${machine.name}
6 </%def>
7
8 %if os.path.exists("/etc/invirt/motd.html"):
9 <div class="result">
10 <p class="error">${open('/etc/invirt/motd.html').read()|n}</p>
11 </div>
12 %endif
13
14 <%def name="infoTable()">
15 <h2>Info</h2>
16 <table>
17   % for key, value in fields:
18   <tr><td>${key}:</td><td>${value}</td></tr>
19   % endfor
20   % if on:
21    % if 'monitoring' in config and len(config.monitoring) and 'baseuri' in config.monitoring[0]:
22     <tr><td>CPU history:</td><td><img src="${config.monitoring[0].baseuri}usage.cgi?type=cpu;uuid=${machine.uuid}" alt="Domain CPU usage" /></td></tr>
23     <tr><td>Network history:</td><td><img src="${config.monitoring[0].baseuri}usage.cgi?type=net;uuid=${machine.uuid}" alt="Domain network usage" /></td></tr>
24    % endif
25   % endif
26 </table>
27 </%def>
28
29 <%def name="commands()">
30 % if on:
31  % if not machine.type.hvm:
32   Console access: type
33   <tt>ssh ${machine.name}@${config.console.hostname}</tt>
34   on Athena. <a href="https://xvm.scripts.mit.edu/wiki/SerialConsole">(more info)</a>
35  % elif has_vnc:
36   <strong><a href="machine/${machine.machine_id}/vnc">Get Console</a></strong>
37  % else:
38   VNC console not enabled; still booting?
39  % endif
40 % endif
41 <%def name="command_button(title, value, cdrom=False, extra='')">
42 <form action="machine/${machine.machine_id}/command/${value}" method="POST">
43   <input type="hidden" name="back" value="info" />
44   <input type="submit" class="button" name="action" value="${title}" ${extra | n}/>
45 % if cdrom:
46   Boot CD: ${self.fn.cdromList()}
47 % endif
48 </form>
49 </%def>
50   <div>
51         % if on:
52         ${command_button("Power off", "destroy")}
53         ${command_button("Shutdown", "shutdown")}
54         ${command_button("Reboot", "reboot", cdrom=True)}
55         % else:
56         ${command_button("Power on", "create", cdrom=True)}
57         % endif
58   </div>
59   <div>
60   ${command_button("Delete VM", "delete", extra='''onclick="return confirm('Are you sure that you want to delete this VM (\\\'%s\\\')?');"''' % (machine.name))}
61   </div>
62 </%def>
63
64 <%def name="modifyForm()">
65 % if err:
66 <p class="error">We had a problem with your request:</p>
67 % elif new_machine:
68 <p>Successfully modified.</p>
69 % endif
70 % if on:
71 (To edit ram, disk size, or machine name, turn off the machine first.)
72 % endif
73 <form action="machine/${machine.machine_id}/modify" method="POST">
74   <table>
75     <tr><td>Description:</td><td colspan="2"><textarea name="description" rows="4" cols="60">${defaults.description}</textarea></td></tr>
76     <tr><td>Owner${self.fn.helppopup("Owner")}:</td><td><input type="text" name="owner", value="${defaults.owner}"/></td></tr>
77 ${self.fn.errorRow('owner', err)}
78     <tr><td>Administrator${self.fn.helppopup("Administrator")}:</td><td><input type="text" name="admin", value="${defaults.administrator}"/></td></tr>
79 ${self.fn.errorRow('administrator', err)}
80     <tr><td>Contact email:</td><td><input type="text" name="contact" value="${defaults.contact}"/></td></tr>
81 ${self.fn.errorRow('contact', err)}
82 % if not on:
83     <tr><td>Machine Name:</td><td><input type="text" name="name" value="${defaults.name}"/>.${config.dns.domains[0]}</td></tr>
84 ${self.fn.errorRow('name', err)}
85     <tr>
86       <td>HVM/ParaVM${self.fn.helppopup('HVM/ParaVM')}</td>
87       <td>${self.fn.vmTypeList(defaults.type)}</td>
88     </tr>
89     <tr><td>Ram:</td><td><input type="text" size=3 name="memory" value="${defaults.memory}"/>MiB (max ${max_mem})</td></tr>
90 ${self.fn.errorRow('memory', err)}
91     <tr><td>Disk:</td><td><input type="text" size=3 name="disksize" value="${defaults.disk}"/>GiB (max ${max_disk})</td><td>WARNING: Modifying disk size may corrupt your data.</td></tr>
92 ${self.fn.errorRow('disk', err)}
93 % else:
94 ${self.fn.errorRow('name', err)}
95 ${self.fn.errorRow('memory', err)}
96 ${self.fn.errorRow('disk', err)}
97 % endif
98     <tr><td><input type="submit" class="button" name="action" value="Change"/></td></tr>
99   </table>
100 </form>
101 </%def>
102
103 <div id="info">
104   ${infoTable()}
105 </div>
106
107 <h2>Commands</h2>
108 <div id="commands">
109   ${commands()}
110 </div>
111 <h2>Settings</h2>
112 <div id="modify">
113   ${modifyForm()}
114 </div>