[lvm-devel] [PATCH] python-lvm: Add calls for thinp

Tony Asleson tasleson at redhat.com
Tue Jan 29 22:22:20 UTC 2013


Methods added for creating a thinly provisioned pool and to
create a thinly provisioned logical volume from the thin pool.

Signed-off-by: Tony Asleson <tasleson at redhat.com>
---
 python/liblvm.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 64 insertions(+)

diff --git a/python/liblvm.c b/python/liblvm.c
index 906825e..7d139ab 100644
--- a/python/liblvm.c
+++ b/python/liblvm.c
@@ -893,6 +893,37 @@ liblvm_lvm_vg_create_lv_linear(vgobject *self, PyObject *args)
 	return (PyObject *)lvobj;
 }
 
+static PyObject *
+liblvm_lvm_lv_thinpool(vgobject *self, PyObject *args)
+{
+	const char *pool_name = NULL;
+	uint64_t size = 0;
+	lvobject *lvobj = NULL;
+
+	VG_VALID(self);
+
+	if (!PyArg_ParseTuple(args, "sK", &pool_name, &size)) {
+		return NULL;
+	}
+
+	if ((lvobj = PyObject_New(lvobject, &LibLVMlvType)) == NULL )
+		return NULL;
+
+	lvobj->parent_vgobj = NULL;
+
+
+	if ((lvobj->lv = lvm_lv_thinpool(self->vg, pool_name, size)) == NULL) {
+		PyErr_SetObject(LibLVMError, liblvm_get_last_error());
+		Py_DECREF(lvobj);
+		return NULL;
+	}
+
+	lvobj->parent_vgobj = self;
+	Py_INCREF(lvobj->parent_vgobj);
+
+	return (PyObject *)lvobj;
+}
+
 static void
 liblvm_lv_dealloc(lvobject *self)
 {
@@ -1275,6 +1306,37 @@ liblvm_lvm_lv_resize(lvobject *self, PyObject *args)
 }
 
 static PyObject *
+liblvm_lvm_lv_thin(lvobject *self, PyObject *args)
+{
+	const char *lv_name = NULL;
+	uint64_t size = 0;
+	lvobject *lvobj = NULL;
+
+	LV_VALID(self);
+
+	if (!PyArg_ParseTuple(args, "sK", &lv_name, &size)) {
+		return NULL;
+	}
+
+	if ((lvobj = PyObject_New(lvobject, &LibLVMlvType)) == NULL )
+		return NULL;
+
+	lvobj->parent_vgobj = NULL;
+
+	if ((lvobj->lv = lvm_lv_thin(self->parent_vgobj->vg,
+			lvm_lv_get_name(self->lv), lv_name, size)) == NULL) {
+		PyErr_SetObject(LibLVMError, liblvm_get_last_error());
+		Py_DECREF(lvobj);
+		return NULL;
+	}
+
+	lvobj->parent_vgobj = self->parent_vgobj;
+	Py_INCREF(lvobj->parent_vgobj);
+
+	return (PyObject *)lvobj;
+}
+
+static PyObject *
 liblvm_lvm_lv_list_lvsegs(lvobject *self)
 {
 	struct dm_list *lvsegs;
@@ -1589,6 +1651,7 @@ static PyMethodDef liblvm_vg_methods[] = {
 	{ "pvFromUuid", 	(PyCFunction)liblvm_lvm_pv_from_uuid, METH_VARARGS },
 	{ "getTags",		(PyCFunction)liblvm_lvm_vg_get_tags, METH_NOARGS },
 	{ "createLvLinear",	(PyCFunction)liblvm_lvm_vg_create_lv_linear, METH_VARARGS },
+	{ "createLvThinPool",	(PyCFunction)liblvm_lvm_lv_thinpool, METH_VARARGS},
 	{ NULL, NULL }		/* sentinel */
 };
 
@@ -1610,6 +1673,7 @@ static PyMethodDef liblvm_lv_methods[] = {
 	{ "resize",		(PyCFunction)liblvm_lvm_lv_resize, METH_VARARGS },
 	{ "listLVsegs",		(PyCFunction)liblvm_lvm_lv_list_lvsegs, METH_NOARGS },
 	{ "snapshot",		(PyCFunction)liblvm_lvm_lv_snapshot, METH_VARARGS },
+	{ "createLvThin",	(PyCFunction)liblvm_lvm_lv_thin, METH_VARARGS},
 	{ NULL, NULL }		/* sentinel */
 };
 
-- 
1.8.1




More information about the lvm-devel mailing list