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