[Ocfs2-tools-commits] manish commits r718 -
trunk/ocfs2console/ocfs2interface
svn-commits at oss.oracle.com
svn-commits at oss.oracle.com
Mon Mar 21 04:17:22 CST 2005
Author: manish
Date: 2005-03-21 04:17:20 -0600 (Mon, 21 Mar 2005)
New Revision: 718
Modified:
trunk/ocfs2console/ocfs2interface/clconfig.py
trunk/ocfs2console/ocfs2interface/console.py
trunk/ocfs2console/ocfs2interface/general.py
trunk/ocfs2console/ocfs2interface/ocfs2module.c
trunk/ocfs2console/ocfs2interface/partitionview.py
Log:
Add total and free space display to general tab
Modified: trunk/ocfs2console/ocfs2interface/clconfig.py
===================================================================
--- trunk/ocfs2console/ocfs2interface/clconfig.py 2005-03-21 08:59:28 UTC (rev 717)
+++ trunk/ocfs2console/ocfs2interface/clconfig.py 2005-03-21 10:17:20 UTC (rev 718)
@@ -19,6 +19,13 @@
from guiutil import set_props, error_box
+COLUMN_NAME, COLUMN_NODE_NUM, COLUMN_IP_ADDR, COLUMN_IP_PORT = range(4)
+
+def cluster_store():
+ store = gtk.ListStore(str, int, str, int)
+
+ store.set_sort_column_id(COLUMN_NODE_NUM, gtk.SORT_ASCENDING)
+
def cluster_configurator(parent):
dialog = gtk.Dialog(parent=parent, title='Cluster Configurator',
buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
@@ -28,8 +35,23 @@
hbox.set_border_width(4)
dialog.vbox.add(hbox)
+ store = cluster_store()
+
tv = gtk.TreeView()
+ tv.insert_column_with_attributes(-1, 'Node Name',
+ gtk.CellRendererText(),
+ text=COLUMN_NAME)
+ tv.insert_column_with_attributes(-1, 'Node Number',
+ gtk.CellRendererText(),
+ text=COLUMN_NODE_NUM)
+ tv.insert_column_with_attributes(-1, 'IP Address',
+ gtk.CellRendererText(),
+ text=COLUMN_IP_ADDR)
+ tv.insert_column_with_attributes(-1, 'IP Port',
+ gtk.CellRendererText(),
+ text=COLUMN_IP_PORT)
+
scrl_win = gtk.ScrolledWindow()
set_props(scrl_win, hscrollbar_policy=gtk.POLICY_AUTOMATIC,
vscrollbar_policy=gtk.POLICY_AUTOMATIC,
@@ -37,15 +59,12 @@
scrl_win.add(tv)
- frame = gtk.Frame()
- frame.set_shadow_type(gtk.SHADOW_IN)
- hbox.pack_end(frame, expand=False, fill=False)
-
vbbox = gtk.VButtonBox()
set_props(vbbox, layout_style=gtk.BUTTONBOX_START,
spacing=5,
border_width=5,
parent=frame)
+ hbox.pack_end(vbbox, expand=False, fill=False)
button = gtk.Button(stock=gtk.STOCK_ADD)
vbbox.add(button)
Modified: trunk/ocfs2console/ocfs2interface/console.py
===================================================================
--- trunk/ocfs2console/ocfs2interface/console.py 2005-03-21 08:59:28 UTC (rev 717)
+++ trunk/ocfs2console/ocfs2interface/console.py 2005-03-21 10:17:20 UTC (rev 718)
@@ -35,7 +35,7 @@
info_items = (
('General', General),
('File Listing', Browser),
- ('Configured Nodes', NodeMap),
+# ('Configured Nodes', NodeMap),
)
class Console(gtk.Window):
Modified: trunk/ocfs2console/ocfs2interface/general.py
===================================================================
--- trunk/ocfs2console/ocfs2interface/general.py 2005-03-21 08:59:28 UTC (rev 717)
+++ trunk/ocfs2console/ocfs2interface/general.py 2005-03-21 10:17:20 UTC (rev 718)
@@ -27,7 +27,9 @@
('UUID', 's_uuid'),
('Maximum Nodes', 's_max_nodes'),
('Cluster Size', 's_clustersize_bits'),
- ('Block Size', 's_blocksize_bits')
+ ('Block Size', 's_blocksize_bits'),
+ ('Free Space', 'freebits'),
+ ('Total Space', 'numbits'),
)
class General:
@@ -39,10 +41,15 @@
border_width=4)
super = None
+ numbits = 0
if device:
try:
super = ocfs2.get_super(device)
+ numbits, freebits = ocfs2.get_space_usage(device)
+
+ clustersize = 1L << super.s_clustersize_bits
+ blocksize = 1L << super.s_blocksize_bits
except ocfs2.error:
pass
@@ -56,6 +63,13 @@
val = super.s_label
if not val:
val = 'N/A'
+ elif member == 'numbits' or member == 'freebits':
+ if numbits:
+ blocks = (vars()[member] *
+ (clustersize >> super.s_blocksize_bits))
+ val = format_bytes(blocks * blocksize)
+ else:
+ val = 'N/A'
else:
val = getattr(super, member)
Modified: trunk/ocfs2console/ocfs2interface/ocfs2module.c
===================================================================
--- trunk/ocfs2console/ocfs2interface/ocfs2module.c 2005-03-21 08:59:28 UTC (rev 717)
+++ trunk/ocfs2console/ocfs2interface/ocfs2module.c 2005-03-21 10:17:20 UTC (rev 718)
@@ -231,9 +231,62 @@
return v;
}
+static PyObject *
+get_space_usage (PyObject *self,
+ PyObject *args)
+{
+ gchar *device;
+ errcode_t ret;
+ PyObject *v = NULL;
+ ocfs2_filesys *fs = NULL;
+ uint64_t blkno;
+ ocfs2_cached_inode *cinode = NULL;
+ ocfs2_dinode *bm;
+ uint32_t numbits, freebits;
+
+ if (!PyArg_ParseTuple (args, "s:get_super", &device))
+ return NULL;
+
+#define CHECK_ERROR(call) G_STMT_START { \
+ ret = call; \
+ if (ret) \
+ { \
+ PyErr_SetString (ocfs2_error, error_message (ret)); \
+ goto bail; \
+ } \
+} G_STMT_END
+
+ CHECK_ERROR (ocfs2_open (device, OCFS2_FLAG_RO, 0, 0, &fs));
+ CHECK_ERROR (ocfs2_lookup_system_inode(fs, GLOBAL_BITMAP_SYSTEM_INODE, -1,
+ &blkno));
+ CHECK_ERROR (ocfs2_read_cached_inode(fs, blkno, &cinode));
+
+#undef CHECK_ERROR
+
+ bm = cinode->ci_inode;
+
+ numbits = le32_to_cpu (bm->id1.bitmap1.i_total);
+ freebits = numbits - le32_to_cpu (bm->id1.bitmap1.i_used);
+
+ v = PyTuple_New (2);
+
+ PyTuple_SetItem(v, 0, PyInt_FromLong (numbits));
+ PyTuple_SetItem(v, 1, PyInt_FromLong (freebits));
+
+bail:
+ if (cinode)
+ ocfs2_free_cached_inode(fs, cinode);
+
+ if (fs)
+ ocfs2_close (fs);
+
+ return v;
+}
+
static PyMethodDef ocfs2_methods[] = {
{"partition_list", (PyCFunction)partition_list, METH_VARARGS | METH_KEYWORDS},
{"get_super", (PyCFunction)get_super, METH_VARARGS},
+ {"get_space_usage", (PyCFunction)get_space_usage, METH_VARARGS},
{NULL, NULL} /* sentinel */
};
Modified: trunk/ocfs2console/ocfs2interface/partitionview.py
===================================================================
--- trunk/ocfs2console/ocfs2interface/partitionview.py 2005-03-21 08:59:28 UTC (rev 717)
+++ trunk/ocfs2console/ocfs2interface/partitionview.py 2005-03-21 10:17:20 UTC (rev 718)
@@ -19,8 +19,7 @@
import ocfs2
-COLUMN_DEVICE = 0
-COLUMN_MOUNTPOINT = 1
+COLUMN_DEVICE, COLUMN_MOUNTPOINT = range(2)
class PartitionView(gtk.TreeView):
def __init__(self, info_frames=()):
@@ -170,6 +169,7 @@
window.connect('delete_event', dummy)
scrl_win = gtk.ScrolledWindow()
+ scrl_win.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
window.add(scrl_win)
pv = PartitionView()
More information about the Ocfs2-tools-commits
mailing list