diff options
author | rac61@labyrinth.cl.cam.ac.uk <rac61@labyrinth.cl.cam.ac.uk> | 2003-07-09 16:58:33 +0000 |
---|---|---|
committer | rac61@labyrinth.cl.cam.ac.uk <rac61@labyrinth.cl.cam.ac.uk> | 2003-07-09 16:58:33 +0000 |
commit | 84c2a732dece7e1cb5a3026c1f12b03e80b99b95 (patch) | |
tree | 53c2c1d0273f3ae8911c74ebd1d8e399809878ee /tools/control | |
parent | 3b29584f2d1db02aca1ee7a3dbca8ce7053cd116 (diff) | |
download | xen-84c2a732dece7e1cb5a3026c1f12b03e80b99b95.tar.gz xen-84c2a732dece7e1cb5a3026c1f12b03e80b99b95.tar.bz2 xen-84c2a732dece7e1cb5a3026c1f12b03e80b99b95.zip |
bitkeeper revision 1.319.1.2 (3f0c49b9kvjGDv1bC1QhQNwfEHw9kw)
Port of web-based virtual disk manager complete.
Diffstat (limited to 'tools/control')
-rw-r--r-- | tools/control/src/org/xenoserver/web/RootBean.java | 141 | ||||
-rw-r--r-- | tools/control/web/tmpl/vd-fv.tmpl | 28 | ||||
-rw-r--r-- | tools/control/web/tmpl/vd-pa.tmpl | 6 | ||||
-rw-r--r-- | tools/control/web/tmpl/vd-par.tmpl | 2 | ||||
-rw-r--r-- | tools/control/web/tmpl/vd-pv.tmpl | 6 | ||||
-rw-r--r-- | tools/control/web/tmpl/vd-vbdc.tmpl | 14 | ||||
-rw-r--r-- | tools/control/web/tmpl/vd-vbdcr.tmpl | 11 | ||||
-rw-r--r-- | tools/control/web/tmpl/vd-vbdf.tmpl | 9 | ||||
-rw-r--r-- | tools/control/web/tmpl/vd-vbdfr.tmpl | 2 | ||||
-rw-r--r-- | tools/control/web/tmpl/vd-vbdv.tmpl | 10 | ||||
-rw-r--r-- | tools/control/web/tmpl/vd-vdcr.tmpl | 4 | ||||
-rw-r--r-- | tools/control/web/tmpl/vd-vdd.tmpl | 10 | ||||
-rw-r--r-- | tools/control/web/tmpl/vd-vddr.tmpl | 2 | ||||
-rw-r--r-- | tools/control/web/tmpl/vd-vdr.tmpl | 10 | ||||
-rw-r--r-- | tools/control/web/tmpl/vd-vdrr.tmpl | 4 | ||||
-rw-r--r-- | tools/control/web/tmpl/vd-vdv.tmpl | 10 | ||||
-rw-r--r-- | tools/control/web/tmpl/xenohead.def | 1 |
17 files changed, 80 insertions, 190 deletions
diff --git a/tools/control/src/org/xenoserver/web/RootBean.java b/tools/control/src/org/xenoserver/web/RootBean.java index cf65a8f0e1..858ee9e3ad 100644 --- a/tools/control/src/org/xenoserver/web/RootBean.java +++ b/tools/control/src/org/xenoserver/web/RootBean.java @@ -14,10 +14,6 @@ import org.xenoserver.control.VirtualDiskManager; import org.xenoserver.control.XML; public class RootBean implements HttpSessionBindingListener { - static String state_filename_out = "/var/lib/xen/vdstate.xml"; - static String partition_filename = "/proc/partitions"; - static int default_sector_size = 512; - PartitionManager pm; VirtualDiskManager vdm; @@ -34,140 +30,15 @@ public class RootBean implements HttpSessionBindingListener { public void valueUnbound(HttpSessionBindingEvent event) { doFlushState(); } - -/* - public int getPartitionCount() { - return pm.getPartitionCount(); - } - - public Partition getPartition(int index) { - return pm.getPartition(index); - } - - public String doAddPartition(String partition, String chunksize) { - Partition p = pm.get_partition(partition); - String result = "done"; - int loop; - long size; - - if (p == null) { - return (" eh? what partition: " + partition); - } - - size = Library.parse_size(chunksize) / default_sector_size; - if (size == 0) { - return ("error: invalid chunk size"); - } - vdm.add_xeno_partition(p, size); - pm.add_xeno_partition(p); - - return "done"; - } - - public int getVirtualDiskCount() { - return vdm.getVirtualDiskCount(); - } - - public VirtualDisk getVirtualDisk(int index) { - return vdm.getVirtualDisk(index); - } - - public VirtualDisk getVirtualDiskKey(String key) { - return vdm.get_virtual_disk_key(key); + + public PartitionManager pm() { + return pm; } - - public String doCreateVirtualDisk(String name, String size, long expiry) { - VirtualDisk vd; - Date date = new Date(); - long parse_size; - - parse_size = Library.parse_size(size) / default_sector_size; - if (parse_size == 0) { - return ("error: invalid size"); - } - vd = - vdm.create_virtual_disk( - name, - parse_size, - new Date(date.getTime() + expiry)); - - return ("Virtual Disk created with key: " + vd.get_key()); - + + public VirtualDiskManager vdm() { + return vdm; } - public String doDeleteVirtualDisk(String key) { - if (key == null || key.trim().equals("")) { - return ("error: no virtual disk specified"); - } - vdm.delete_virtual_disk(key); - - return ("okay"); - } - - public String doRefreshVirtualDisk(String key, long expiry) { - VirtualDisk vd = vdm.get_virtual_disk_key(key); - Date date; - String s = ""; - - if (vd == null) { - return ("disk not found: " + key); - } - s = vd.get_expiry().toString(); - date = new Date(vd.get_expiry().getTime() + expiry); - vd.set_expiry(date); - - return ("okay " + expiry + " " + s + " " + date.toString()); - } - - public int getFreeExtentCount() { - VirtualDisk free = vdm.getFreeVirtualDisk(); - return free.getExtentCount(); - } - - public Extent getFreeExtent(int index) { - VirtualDisk free = vdm.getFreeVirtualDisk(); - return free.getExtent(index); - } - - public Enumeration getVirtualBlockDevices() { - return vdm.getVirtualBlockDevices(); - } - - public String doCreateVirtualBlockDevice( - String vd_key, - int domain, - int vbd_num, - String mode) { - VirtualBlockDevice vbd; - VirtualDisk vd; - - vbd = vdm.create_virtual_block_device(vd_key, domain, vbd_num, mode); - if (vbd != null) { - String command; - FileWriter fw; - - vd = vdm.get_virtual_disk_key(vd_key); - command = vd.dump_xen(vbd); - - try { - fw = new FileWriter("/proc/xeno/dom0/vhd"); - fw.write(command); - fw.flush(); - fw.close(); - } catch (Exception e) { - return (e.toString()); - } - return command; - } else { - return "Error encountered"; - } - } - - public String doFlushVirtualBlockDevices() { - vdm.flush_virtual_block_devices(); - return "done"; - } -*/ public void doFlushState() { XML.saveState(pm, vdm, Settings.STATE_OUTPUT_FILE); } diff --git a/tools/control/web/tmpl/vd-fv.tmpl b/tools/control/web/tmpl/vd-fv.tmpl index e8b41a2bb5..fa9ee1f838 100644 --- a/tools/control/web/tmpl/vd-fv.tmpl +++ b/tools/control/web/tmpl/vd-fv.tmpl @@ -10,25 +10,32 @@ BREADCRUMB&Virtual Disk Manager&vd.jsp INCLUDE&vdmenu.tmpl <td valign="top"> +<% + VirtualDisk free = root.vdm().getFreeDisk(); +%> <table cellpadding="0" cellspacing="0" border="0"> <tbody> <tr><td> +Total available free space: <%= Library.formatSize(free.getSize() * Settings.SECTOR_SIZE,8,true) %> +</td></tr> + + +##WHITESPACE## ##GREYLINE1## ##WHITESPACE## + +<tr><td> <table cellpadding="2" cellspacing="0" border="0"> <tbody> - <tr class="vdh"><td>idx</td><td>disk</td><td>offset</td><td>size </td></tr> + <tr class="vdh"><td>disk</td><td>offset</td><td>size </td></tr> <% - long space = 0; - int count = root.getFreeExtentCount(); - for (int loop = 0; loop < count; loop++) + Iterator i = free.extents(); + while (i.hasNext()) { - Extent e = root.getFreeExtent(loop); - space += e.getSize(); + Extent e = (Extent) i.next(); %> <tr class="vdt"> - <td ><%= loop %></td> <td ><%= e.getDisk() %></td> <td align="right"><%= e.getOffset() %> </td> <td align="right"><%= e.getSize() %> </td> @@ -40,13 +47,6 @@ INCLUDE&vdmenu.tmpl </table> </td></tr> - -##WHITESPACE## ##GREYLINE1## ##WHITESPACE## - -<tr><td> -Total available freespace: <%= space * 512 / (1024 * 1024) %> MB -</td></tr> - </tbody> </table> diff --git a/tools/control/web/tmpl/vd-pa.tmpl b/tools/control/web/tmpl/vd-pa.tmpl index e71a6bf195..9b8ec98c60 100644 --- a/tools/control/web/tmpl/vd-pa.tmpl +++ b/tools/control/web/tmpl/vd-pa.tmpl @@ -20,11 +20,11 @@ INCLUDE&vdmenu.tmpl <tbody> <tr class="vdh"><td></td><td>maj:min</td><td>blocks</td><td>start sect</td><td>num sects</td><td>name</td></tr> <% - int count = root.getPartitionCount(); + int count = root.pm().getPartitionCount(); for (int loop = 0; loop < count; loop++) { - Partition p = root.getPartition(loop); - if (p.getIsXeno() == true) + Partition p = root.pm().getPartition(loop); + if (p.isXeno() == true) { %> <tr class="vds"><td></td> diff --git a/tools/control/web/tmpl/vd-par.tmpl b/tools/control/web/tmpl/vd-par.tmpl index b72e99b814..a88602441a 100644 --- a/tools/control/web/tmpl/vd-par.tmpl +++ b/tools/control/web/tmpl/vd-par.tmpl @@ -40,7 +40,7 @@ Error: chunk size not specified.<br> { %> output[<%= i %>] =<br> -<%= root.doAddPartition(partitions[i], size) %> <br> +<%= new CommandPartitionAdd(partitions[i], Library.parseSize(size), false).execute() %> <br> <% } } diff --git a/tools/control/web/tmpl/vd-pv.tmpl b/tools/control/web/tmpl/vd-pv.tmpl index 8195f82964..4647f337a5 100644 --- a/tools/control/web/tmpl/vd-pv.tmpl +++ b/tools/control/web/tmpl/vd-pv.tmpl @@ -16,11 +16,11 @@ note: highlighted entries are currently being used as xeno partitions. <tbody> <tr class="vdh"><td>maj:min</td><td>blocks</td><td>start sect</td><td>num sects</td><td>name</td></tr> <% - int count = root.getPartitionCount(); + int count = root.pm().getPartitionCount(); for (int loop = 0; loop < count; loop++) { - Partition p = root.getPartition(loop); - if (p.getIsXeno() == true) + Partition p = root.pm().getPartition(loop); + if (p.isXeno() == true) { %> <tr class="vds"> diff --git a/tools/control/web/tmpl/vd-vbdc.tmpl b/tools/control/web/tmpl/vd-vbdc.tmpl index e6952182b8..f6b560badc 100644 --- a/tools/control/web/tmpl/vd-vbdc.tmpl +++ b/tools/control/web/tmpl/vd-vbdc.tmpl @@ -16,25 +16,25 @@ INCLUDE&vdmenu.tmpl <tr><td> <table cellpadding="2" cellspacing="0" border="0"> <tbody> - <tr class="vdh"><td></td><td>vd key</td><td width="5"></td><td>name</td><td width="5"></td><td>expiry</td></tr> + <tr class="vdh"><td></td><td>vd key</td><td width="5"></td><td>name</td><td width="5"></td><td>expiry</td><td width="5"></td><td>size</td></tr> <% - int count = root.getVirtualDiskCount(); - for (int loop = 0; loop < count; loop++) + Iterator i = root.vdm().getVirtualDisks(); + while (i.hasNext()) { - VirtualDisk vd = root.getVirtualDisk(loop); + VirtualDisk vd = (VirtualDisk) i.next(); %> <tr class="vdt"> <td> - <input type="radio" name="vd" - <% if (loop == 0) { %> checked <% } %> - value="<%= vd.getKey() %>"> + <input type="radio" name="vd" value="<%= vd.getKey() %>"> </td> <td><%= vd.getKey() %></td> <td></td> <td><%= vd.getName() %></td> <td></td> <td><%= vd.getExpiry() %></td> + <td></td> + <td><%= Library.formatSize(vd.getSize()*Settings.SECTOR_SIZE,8,false) %></td> </tr> <% } diff --git a/tools/control/web/tmpl/vd-vbdcr.tmpl b/tools/control/web/tmpl/vd-vbdcr.tmpl index 656be575fc..05bd41992b 100644 --- a/tools/control/web/tmpl/vd-vbdcr.tmpl +++ b/tools/control/web/tmpl/vd-vbdcr.tmpl @@ -46,11 +46,18 @@ Error: No virtual block device number specified.<br> { domain = Integer.decode(hsrw.getParameter("domain")).intValue(); vbd = Integer.decode(hsrw.getParameter("vbd")).intValue(); + Mode mode; + if (hsrw.getParameter("mode").equals("rw")) { + mode = Mode.READ_WRITE; + } else { + mode = Mode.READ_ONLY; + } + %> output =<br> -<%= root.doCreateVirtualBlockDevice(hsrw.getParameter("vd"), +<%= new CommandVbdCreate(hsrw.getParameter("vd"), domain, vbd, - hsrw.getParameter("mode")) %> + mode).execute() %> <% } catch (NumberFormatException e) diff --git a/tools/control/web/tmpl/vd-vbdf.tmpl b/tools/control/web/tmpl/vd-vbdf.tmpl index 0dbcc8d93d..eb46b158d6 100644 --- a/tools/control/web/tmpl/vd-vbdf.tmpl +++ b/tools/control/web/tmpl/vd-vbdf.tmpl @@ -20,14 +20,15 @@ INCLUDE&vdmenu.tmpl <tr class="vdh"><td>vd key</td><td>dom</td><td>vbd</td><td>mode</td></tr> <% - for (Enumeration e = root.getVirtualBlockDevices(); e.hasMoreElements();) + for (Iterator i = root.vdm().getVirtualBlockDevices(); i.hasNext();) { - VirtualBlockDevice vbd = (VirtualBlockDevice) e.nextElement(); + VirtualBlockDevice vbd = (VirtualBlockDevice) i.next(); + VirtualDisk vd = vbd.getVirtualDisk(); %> <tr class="vdt"> - <td><%= vbd.getKey() %></td> + <td><%= vd.getKey() %></td> <td><%= vbd.getDomain() %></td> - <td><%= vbd.getVBDNum() %></td> + <td><%= vbd.getVbdNum() %></td> <td><%= vbd.getMode().toString() %></td> </tr> <% diff --git a/tools/control/web/tmpl/vd-vbdfr.tmpl b/tools/control/web/tmpl/vd-vbdfr.tmpl index 566f4cb038..0d172923bd 100644 --- a/tools/control/web/tmpl/vd-vbdfr.tmpl +++ b/tools/control/web/tmpl/vd-vbdfr.tmpl @@ -17,7 +17,7 @@ INCLUDE&vdmenu.tmpl <% HttpServletRequestWrapper hsrw = new HttpServletRequestWrapper(request); %> -output = <%= root.doFlushVirtualBlockDevices() %> +output = <%= new CommandVbdFlush().execute() %> <% root.doFlushState(); %> diff --git a/tools/control/web/tmpl/vd-vbdv.tmpl b/tools/control/web/tmpl/vd-vbdv.tmpl index 306372e2bb..6a0a03947c 100644 --- a/tools/control/web/tmpl/vd-vbdv.tmpl +++ b/tools/control/web/tmpl/vd-vbdv.tmpl @@ -16,16 +16,16 @@ INCLUDE&vdmenu.tmpl <% - for (Enumeration e = root.getVirtualBlockDevices(); e.hasMoreElements();) + for (Iterator i = root.vdm().getVirtualBlockDevices(); i.hasNext();) { - VirtualBlockDevice vbd = (VirtualBlockDevice) e.nextElement(); - VirtualDisk vd = root.getVirtualDiskKey(vbd.getKey()); + VirtualBlockDevice vbd = (VirtualBlockDevice) i.next(); + VirtualDisk vd = vbd.getVirtualDisk(); %> <tr class="vdt"> <td><%= vbd.getDomain() %></td> - <td><%= vbd.getVBDNum() %></td> + <td><%= vbd.getVbdNum() %></td> <td><%= vbd.getMode().toString() %></td> - <td><%= vbd.getKey() %></td> + <td><%= vd.getKey() %></td> <td><%= vd.getName() %></td> </tr> <% diff --git a/tools/control/web/tmpl/vd-vdcr.tmpl b/tools/control/web/tmpl/vd-vdcr.tmpl index 08e63b2e90..9550407a1b 100644 --- a/tools/control/web/tmpl/vd-vdcr.tmpl +++ b/tools/control/web/tmpl/vd-vdcr.tmpl @@ -60,9 +60,11 @@ Error: expiry time not specified.<br> { expiry *= 24 * 60 * 60 * 1000 * 365; } + + expiry += System.currentTimeMillis(); %> output =<br> -<%= root.doCreateVirtualDisk( hsrw.getParameter("name"), size, expiry) %> +<%= new CommandVdCreate( hsrw.getParameter("name"), Library.parseSize(size), new Date(expiry)).execute() %> <br> <% } diff --git a/tools/control/web/tmpl/vd-vdd.tmpl b/tools/control/web/tmpl/vd-vdd.tmpl index 920899b1b2..3b50e1450c 100644 --- a/tools/control/web/tmpl/vd-vdd.tmpl +++ b/tools/control/web/tmpl/vd-vdd.tmpl @@ -16,13 +16,13 @@ INCLUDE&vdmenu.tmpl <tr><td> <table cellpadding="2" cellspacing="0" border="0"> <tbody> - <tr class="vdh"><td></td><td>key</td><td width="5"></td><td>name</td><td width="5"></td><td>expiry</td></tr> + <tr class="vdh"><td></td><td>key</td><td width="5"></td><td>name</td><td width="5"></td><td>expiry</td><td width="5"></td><td>size</td></tr> <% - int count = root.getVirtualDiskCount(); - for (int loop = 0; loop < count; loop++) + Iterator i = root.vdm().getVirtualDisks(); + while (i.hasNext()) { - VirtualDisk vd = root.getVirtualDisk(loop); + VirtualDisk vd = (VirtualDisk) i.next(); %> <tr class="vdt"> <td><input type="checkbox" name="vd" value="<%= vd.getKey() %>"></td> @@ -31,6 +31,8 @@ INCLUDE&vdmenu.tmpl <td><%= vd.getName() %></td> <td></td> <td><%= vd.getExpiry() %></td> + <td></td> + <td><%= Library.formatSize(vd.getSize()*Settings.SECTOR_SIZE,8,false) %></td> </tr> <% } diff --git a/tools/control/web/tmpl/vd-vddr.tmpl b/tools/control/web/tmpl/vd-vddr.tmpl index 13925ebb8b..355c111e81 100644 --- a/tools/control/web/tmpl/vd-vddr.tmpl +++ b/tools/control/web/tmpl/vd-vddr.tmpl @@ -18,7 +18,7 @@ INCLUDE&vdmenu.tmpl vd= <%= hsrw.getParameter("vd") %> -vd= <%= root.doDeleteVirtualDisk(hsrw.getParameter("vd")) %> +vd= <%= new CommandVdDelete(hsrw.getParameter("vd")).execute() %> <% root.doFlushState(); diff --git a/tools/control/web/tmpl/vd-vdr.tmpl b/tools/control/web/tmpl/vd-vdr.tmpl index 551d230ceb..df9c20abf6 100644 --- a/tools/control/web/tmpl/vd-vdr.tmpl +++ b/tools/control/web/tmpl/vd-vdr.tmpl @@ -16,13 +16,13 @@ INCLUDE&vdmenu.tmpl <tr><td> <table cellpadding="2" cellspacing="0" border="0"> <tbody> - <tr class="vdh"><td></td><td>key</td><td width="5"></td><td>name</td><td width="5"></td><td>expiry</td></tr> + <tr class="vdh"><td></td><td>key</td><td width="5"></td><td>name</td><td width="5"></td><td>expiry</td><td width="5"></td><td>size</td></tr> <% - int count = root.getVirtualDiskCount(); - for (int loop = 0; loop < count; loop++) + Iterator i = root.vdm().getVirtualDisks(); + while (i.hasNext()) { - VirtualDisk vd = root.getVirtualDisk(loop); + VirtualDisk vd = (VirtualDisk) i.next(); %> <tr class="vdt"> <td><input type="checkbox" name="vd" value="<%= vd.getKey() %>"></td> @@ -31,6 +31,8 @@ INCLUDE&vdmenu.tmpl <td><%= vd.getName() %></td> <td></td> <td><%= vd.getExpiry() %></td> + <td></td> + <td><%= Library.formatSize(vd.getSize()*Settings.SECTOR_SIZE,8,false) %></td> </tr> <% } diff --git a/tools/control/web/tmpl/vd-vdrr.tmpl b/tools/control/web/tmpl/vd-vdrr.tmpl index 068b283056..bca0dccf87 100644 --- a/tools/control/web/tmpl/vd-vdrr.tmpl +++ b/tools/control/web/tmpl/vd-vdrr.tmpl @@ -51,10 +51,12 @@ Error: expiry time not specified.<br> expiry *= 24 * 60 * 60 * 1000 * 365; } + expiry += System.currentTimeMillis(); + for (int i = 0; i < vds.length; i++) { %> -vd = <%= root.doRefreshVirtualDisk(vds[i], expiry) %> <br> +vd = <%= new CommandVdRefresh(vds[i], new Date(expiry)).execute() %> <br> <% } } diff --git a/tools/control/web/tmpl/vd-vdv.tmpl b/tools/control/web/tmpl/vd-vdv.tmpl index e03cd6959f..78a6f9b774 100644 --- a/tools/control/web/tmpl/vd-vdv.tmpl +++ b/tools/control/web/tmpl/vd-vdv.tmpl @@ -12,13 +12,13 @@ INCLUDE&vdmenu.tmpl <table cellpadding="2" cellspacing="0" border="0"> <tbody> - <tr class="vdh"><td>key</td><td width="5"></td><td>name</td><td width="5"></td><td>expiry</td></tr> + <tr class="vdh"><td>key</td><td width="5"></td><td>name</td><td width="5"></td><td>expiry</td><td width="5"></td><td>size</td></tr> <% - int count = root.getVirtualDiskCount(); - for (int loop = 0; loop < count; loop++) + Iterator i = root.vdm().getVirtualDisks(); + while (i.hasNext()) { - VirtualDisk vd = root.getVirtualDisk(loop); + VirtualDisk vd = (VirtualDisk) i.next(); %> <tr class="vdt"> <td><%= vd.getKey() %></td> @@ -26,6 +26,8 @@ INCLUDE&vdmenu.tmpl <td><%= vd.getName() %></td> <td></td> <td><%= vd.getExpiry() %></td> + <td></td> + <td><%= Library.formatSize(vd.getSize()*Settings.SECTOR_SIZE,8,false) %></td> </tr> <% } diff --git a/tools/control/web/tmpl/xenohead.def b/tools/control/web/tmpl/xenohead.def index 5b0934a051..12b957a1df 100644 --- a/tools/control/web/tmpl/xenohead.def +++ b/tools/control/web/tmpl/xenohead.def @@ -8,6 +8,7 @@ <%@ page import="org.xenoserver.web.*" %> <%@ page import="org.xenoserver.control.*" %> <%@ page import="java.util.Iterator" %> +<%@ page import="java.util.Date" %> <%@ page import="javax.servlet.http.HttpServletRequestWrapper" %> <html lang="en"> |