diff options
author | Andy Grover <agrover@redhat.com> | 2012-10-09 16:01:51 -0700 |
---|---|---|
committer | Andy Grover <agrover@redhat.com> | 2012-10-09 17:15:08 -0700 |
commit | a32d5f2f30a60c549c05d35a5cb8cfab89d1c102 (patch) | |
tree | cbdc87668634c929f4aa1e8b45928bcd7ed99781 | |
parent | 5dec9ccfe6e43a94a074320c4afe62b00a4933ff (diff) | |
download | lvm2-a32d5f2f30a60c549c05d35a5cb8cfab89d1c102.tar.gz lvm2-a32d5f2f30a60c549c05d35a5cb8cfab89d1c102.tar.xz lvm2-a32d5f2f30a60c549c05d35a5cb8cfab89d1c102.zip |
python-lvm: Remove liblvm object
Instead of requiring users to create a liblvm object, and then calling
methods on it, the module acquires a liblvm handle as part of
initialization. This makes it impossible to instantiate a liblvm object
with a different systemdir, but there is an alternate envvar method for
that obscure use case.
Signed-off-by: Andy Grover <agrover@redhat.com>
-rw-r--r-- | liblvm/python/liblvm.c | 261 |
1 files changed, 89 insertions, 172 deletions
diff --git a/liblvm/python/liblvm.c b/liblvm/python/liblvm.c index 6588ecd7..309486d9 100644 --- a/liblvm/python/liblvm.c +++ b/liblvm/python/liblvm.c @@ -25,39 +25,32 @@ #include <Python.h> #include "lvm2app.h" -typedef struct { - PyObject_HEAD - lvm_t libh; /* lvm lib handle */ -} lvmobject; +static lvm_t libh; + typedef struct { PyObject_HEAD vg_t vg; /* vg handle */ - lvmobject *lvm_obj; } vgobject; typedef struct { PyObject_HEAD lv_t lv; /* lv handle */ - lvmobject *lvm_obj; } lvobject; typedef struct { PyObject_HEAD pv_t pv; /* pv handle */ - lvmobject *lvm_obj; } pvobject; typedef struct { PyObject_HEAD lvseg_t lv_seg; /* lv segment handle */ - lvmobject *lvm_obj; } lvsegobject; typedef struct { PyObject_HEAD pvseg_t pv_seg; /* pv segment handle */ - lvmobject *lvm_obj; } pvsegobject; static PyTypeObject LibLVMvgType; @@ -68,100 +61,51 @@ static PyTypeObject LibLVMpvsegType; static PyObject *LibLVMError; - -/* ---------------------------------------------------------------------- - * LVM object initialization/deallocation - */ - -static int -liblvm_init(lvmobject *self, PyObject *arg) -{ - char *systemdir = NULL; - - if (!PyArg_ParseTuple(arg, "|s", &systemdir)) - return -1; - - self->libh = lvm_init(systemdir); - if (lvm_errno(self->libh)) { - PyErr_SetFromErrno(PyExc_OSError); - return -1; - } - - return 0; -} - -static void -liblvm_dealloc(lvmobject *self) -{ - /* if already closed, don't reclose it */ - if (self->libh != NULL){ - lvm_quit(self->libh); - } - - PyObject_Del(self); -} - -#define LVM_VALID(lvmobject) \ +#define LVM_VALID() \ do { \ - if (!lvmobject->libh) { \ - PyErr_SetString(PyExc_UnboundLocalError, "LVM object invalid"); \ + if (!libh) { \ + PyErr_SetString(PyExc_UnboundLocalError, "LVM handle invalid"); \ return NULL; \ } \ } while (0) static PyObject * -liblvm_get_last_error(lvmobject *self) +liblvm_get_last_error(void) { PyObject *info; - LVM_VALID(self); + LVM_VALID(); if((info = PyTuple_New(2)) == NULL) return NULL; - PyTuple_SetItem(info, 0, PyInt_FromLong((long) lvm_errno(self->libh))); - PyTuple_SetItem(info, 1, PyString_FromString(lvm_errmsg(self->libh))); + PyTuple_SetItem(info, 0, PyInt_FromLong((long) lvm_errno(libh))); + PyTuple_SetItem(info, 1, PyString_FromString(lvm_errmsg(libh))); return info; } static PyObject * -liblvm_library_get_version(lvmobject *self) +liblvm_library_get_version(void) { - LVM_VALID(self); + LVM_VALID(); return Py_BuildValue("s", lvm_library_get_version()); } - -static PyObject * -liblvm_close(lvmobject *self) -{ - LVM_VALID(self); - - /* if already closed, don't reclose it */ - if (self->libh != NULL) - lvm_quit(self->libh); - - self->libh = NULL; - - Py_INCREF(Py_None); - return Py_None; -} - static PyObject * -liblvm_lvm_list_vg_names(lvmobject *self) +liblvm_lvm_list_vg_names(void) { struct dm_list *vgnames; struct lvm_str_list *strl; PyObject * pytuple; int i = 0; - LVM_VALID(self); + LVM_VALID(); - vgnames = lvm_list_vg_names(self->libh); + vgnames = lvm_list_vg_names(libh); if (!vgnames) { - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self)); + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -178,18 +122,18 @@ liblvm_lvm_list_vg_names(lvmobject *self) } static PyObject * -liblvm_lvm_list_vg_uuids(lvmobject *self) +liblvm_lvm_list_vg_uuids(void) { struct dm_list *uuids; struct lvm_str_list *strl; PyObject * pytuple; int i = 0; - LVM_VALID(self); + LVM_VALID(); - uuids = lvm_list_vg_uuids(self->libh); + uuids = lvm_list_vg_uuids(libh); if (!uuids) { - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self)); + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -206,12 +150,12 @@ liblvm_lvm_list_vg_uuids(lvmobject *self) } static PyObject * -liblvm_lvm_percent_to_float(lvmobject *self, PyObject *arg) +liblvm_lvm_percent_to_float(PyObject *arg) { double converted; int percent; - LVM_VALID(self); + LVM_VALID(); if (!PyArg_ParseTuple(arg, "i", &percent)) return NULL; @@ -221,18 +165,18 @@ liblvm_lvm_percent_to_float(lvmobject *self, PyObject *arg) } static PyObject * -liblvm_lvm_vgname_from_pvid(lvmobject *self, PyObject *arg) +liblvm_lvm_vgname_from_pvid(PyObject *self, PyObject *arg) { const char *pvid; const char *vgname; - LVM_VALID(self); + LVM_VALID(); if (!PyArg_ParseTuple(arg, "s", &pvid)) return NULL; - if((vgname = lvm_vgname_from_pvid(self->libh, pvid)) == NULL) { - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self)); + if((vgname = lvm_vgname_from_pvid(libh, pvid)) == NULL) { + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -240,18 +184,18 @@ liblvm_lvm_vgname_from_pvid(lvmobject *self, PyObject *arg) } static PyObject * -liblvm_lvm_vgname_from_device(lvmobject *self, PyObject *arg) +liblvm_lvm_vgname_from_device(PyObject *self, PyObject *arg) { const char *device; const char *vgname; - LVM_VALID(self); + LVM_VALID(); if (!PyArg_ParseTuple(arg, "s", &device)) return NULL; - if((vgname = lvm_vgname_from_device(self->libh, device)) == NULL) { - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self)); + if((vgname = lvm_vgname_from_device(libh, device)) == NULL) { + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -260,18 +204,18 @@ liblvm_lvm_vgname_from_device(lvmobject *self, PyObject *arg) static PyObject * -liblvm_lvm_config_find_bool(lvmobject *self, PyObject *arg) +liblvm_lvm_config_find_bool(PyObject *self, PyObject *arg) { const char *config; int rval; PyObject *rc; - LVM_VALID(self); + LVM_VALID(); if (!PyArg_ParseTuple(arg, "s", &config)) return NULL; - if ((rval = lvm_config_find_bool(self->libh, config, -10)) == -10) { + if ((rval = lvm_config_find_bool(libh, config, -10)) == -10) { /* Retrieving error information yields no error in this case */ PyErr_Format(PyExc_ValueError, "config path not found"); return NULL; @@ -284,14 +228,14 @@ liblvm_lvm_config_find_bool(lvmobject *self, PyObject *arg) } static PyObject * -liblvm_lvm_config_reload(lvmobject *self) +liblvm_lvm_config_reload(void) { int rval; - LVM_VALID(self); + LVM_VALID(); - if((rval = lvm_config_reload(self->libh)) == -1) { - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self)); + if((rval = lvm_config_reload(libh)) == -1) { + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -301,14 +245,14 @@ liblvm_lvm_config_reload(lvmobject *self) static PyObject * -liblvm_lvm_scan(lvmobject *self) +liblvm_lvm_scan(void) { int rval; - LVM_VALID(self); + LVM_VALID(); - if((rval = lvm_scan(self->libh)) == -1) { - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self)); + if((rval = lvm_scan(libh)) == -1) { + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -317,18 +261,18 @@ liblvm_lvm_scan(lvmobject *self) } static PyObject * -liblvm_lvm_config_override(lvmobject *self, PyObject *arg) +liblvm_lvm_config_override(PyObject *self, PyObject *arg) { const char *config; int rval; - LVM_VALID(self); + LVM_VALID(); if (!PyArg_ParseTuple(arg, "s", &config)) return NULL; - if ((rval = lvm_config_override(self->libh, config)) == -1) { - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self)); + if ((rval = lvm_config_override(libh, config)) == -1) { + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -341,14 +285,14 @@ liblvm_lvm_config_override(lvmobject *self, PyObject *arg) static PyObject * -liblvm_lvm_vg_open(lvmobject *lvm, PyObject *args) +liblvm_lvm_vg_open(PyObject *self, PyObject *args) { const char *vgname; const char *mode = NULL; - vgobject *self; + vgobject *vgobj; - LVM_VALID(lvm); + LVM_VALID(); if (!PyArg_ParseTuple(args, "s|s", &vgname, &mode)) { return NULL; @@ -357,42 +301,38 @@ liblvm_lvm_vg_open(lvmobject *lvm, PyObject *args) if (mode == NULL) mode = "r"; - if ((self = PyObject_New(vgobject, &LibLVMvgType)) == NULL) + if ((vgobj = PyObject_New(vgobject, &LibLVMvgType)) == NULL) return NULL; - if ((self->vg = lvm_vg_open(lvm->libh, vgname, mode, 0))== NULL) { - PyErr_SetObject(LibLVMError, liblvm_get_last_error(lvm)); - Py_DECREF(self); + if ((vgobj->vg = lvm_vg_open(libh, vgname, mode, 0))== NULL) { + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } - self->lvm_obj = lvm; - return (PyObject *)self; + return (PyObject *)vgobj; } static PyObject * -liblvm_lvm_vg_create(lvmobject *lvm, PyObject *args) +liblvm_lvm_vg_create(PyObject *self, PyObject *args) { const char *vgname; - vgobject *self; + vgobject *vgobj; - LVM_VALID(lvm); + LVM_VALID(); if (!PyArg_ParseTuple(args, "s", &vgname)) { return NULL; } - if ((self = PyObject_New(vgobject, &LibLVMvgType)) == NULL) + if ((vgobj = PyObject_New(vgobject, &LibLVMvgType)) == NULL) return NULL; - if ((self->vg = lvm_vg_create(lvm->libh, vgname))== NULL) { - PyErr_SetObject(LibLVMError, liblvm_get_last_error(lvm)); - Py_DECREF(self); + if ((vgobj->vg = lvm_vg_create(libh, vgname))== NULL) { + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } - self->lvm_obj = lvm; - return (PyObject *)self; + return (PyObject *)vgobj; } static void @@ -463,7 +403,7 @@ liblvm_lvm_vg_remove(vgobject *self) return Py_None; error: - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self->lvm_obj)); + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -489,7 +429,7 @@ liblvm_lvm_vg_extend(vgobject *self, PyObject *args) return Py_None; error: - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self->lvm_obj)); + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -515,7 +455,7 @@ liblvm_lvm_vg_reduce(vgobject *self, PyObject *args) return Py_None; error: - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self->lvm_obj)); + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -539,7 +479,7 @@ liblvm_lvm_vg_add_tag(vgobject *self, PyObject *args) return Py_BuildValue("i", rval); error: - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self->lvm_obj)); + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -565,7 +505,7 @@ liblvm_lvm_vg_remove_tag(vgobject *self, PyObject *args) return Py_None; error: - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self->lvm_obj)); + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -659,13 +599,13 @@ liblvm_lvm_vg_get_free_extent_count(vgobject *self) /* Builds a python tuple ([string|number], bool) from a struct lvm_property_value */ static PyObject * -get_property(lvmobject *h, struct lvm_property_value *prop) +get_property(struct lvm_property_value *prop) { PyObject *pytuple; PyObject *setable; if( !prop->is_valid ) { - PyErr_SetObject(LibLVMError, liblvm_get_last_error(h)); + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -704,7 +644,7 @@ liblvm_lvm_vg_get_property(vgobject *self, PyObject *args) return NULL; prop_value = lvm_vg_get_property(self->vg, name); - return get_property(self->lvm_obj, &prop_value); + return get_property(&prop_value); } static PyObject * @@ -792,7 +732,7 @@ liblvm_lvm_vg_set_property(vgobject *self, PyObject *args) return Py_None; lvmerror: - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self->lvm_obj)); + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); bail: free(string_value); if( variant_type_arg ) { @@ -839,7 +779,7 @@ liblvm_lvm_vg_set_extent_size(vgobject *self, PyObject *args) } if ((rval = lvm_vg_set_extent_size(self->vg, new_size)) == -1) { - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self->lvm_obj)); + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -876,7 +816,6 @@ liblvm_lvm_vg_list_lvs(vgobject *vg) } self->lv = lvl->lv; - self->lvm_obj = vg->lvm_obj; PyTuple_SET_ITEM(pytuple, i, (PyObject *) self); i++; } @@ -896,7 +835,7 @@ liblvm_lvm_vg_get_tags(vgobject *self) tags = lvm_vg_get_tags(self->vg); if (!tags) { - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self->lvm_obj)); + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -929,11 +868,10 @@ liblvm_lvm_vg_create_lv_linear(vgobject *vg, PyObject *args) return NULL; if ((self->lv = lvm_vg_create_lv_linear(vg->vg, vgname, size))== NULL) { - PyErr_SetObject(LibLVMError, liblvm_get_last_error(vg->lvm_obj)); + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); Py_DECREF(self); return NULL; } - self->lvm_obj = vg->lvm_obj; return (PyObject *)self; } @@ -973,7 +911,6 @@ liblvm_lvm_vg_list_pvs(vgobject *vg) } self->pv = pvl->pv; - self->lvm_obj = vg->lvm_obj; PyTuple_SET_ITEM(pytuple, i, (PyObject *) self); i++; } @@ -998,7 +935,7 @@ liblvm_lvm_lv_from_N(vgobject *self, PyObject *arg, lv_fetch_by_N method) lv = method(self->vg, id); if( !lv ) { - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self->lvm_obj)); + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -1008,7 +945,6 @@ liblvm_lvm_lv_from_N(vgobject *self, PyObject *arg, lv_fetch_by_N method) } rc->lv = lv; - rc->lvm_obj = self->lvm_obj; return (PyObject *)rc; } @@ -1038,7 +974,7 @@ liblvm_lvm_pv_from_N(vgobject *self, PyObject *arg, pv_fetch_by_N method) pv = method(self->vg, id); if( !pv ) { - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self->lvm_obj)); + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -1048,7 +984,6 @@ liblvm_lvm_pv_from_N(vgobject *self, PyObject *arg, pv_fetch_by_N method) } rc->pv = pv; - rc->lvm_obj = self->lvm_obj; return (PyObject *)rc; } @@ -1105,7 +1040,7 @@ liblvm_lvm_lv_activate(lvobject *self) LV_VALID(self); if ((rval = lvm_lv_activate(self->lv)) == -1) { - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self->lvm_obj)); + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -1121,7 +1056,7 @@ liblvm_lvm_lv_deactivate(lvobject *self) LV_VALID(self); if ((rval = lvm_lv_deactivate(self->lv)) == -1) { - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self->lvm_obj)); + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -1137,7 +1072,7 @@ liblvm_lvm_vg_remove_lv(lvobject *self) LV_VALID(self); if ((rval = lvm_vg_remove_lv(self->lv)) == -1) { - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self->lvm_obj)); + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -1150,7 +1085,7 @@ liblvm_lvm_vg_remove_lv(lvobject *self) /* This will return a tuple of (value, bool) with the value being a string or integer and bool indicating if property is settable */ static PyObject * -liblvm_lvm_lv_get_property(lvobject *self, PyObject *args) +liblvm_lvm_lv_get_property(lvobject *self, PyObject *args) { const char *name; struct lvm_property_value prop_value; @@ -1161,7 +1096,7 @@ liblvm_lvm_lv_get_property(lvobject *self, PyObject *args) return NULL; prop_value = lvm_lv_get_property(self->lv, name); - return get_property(self->lvm_obj, &prop_value); + return get_property(&prop_value); } static PyObject * @@ -1211,7 +1146,7 @@ liblvm_lvm_lv_add_tag(lvobject *self, PyObject *args) } if ((rval = lvm_lv_add_tag(self->lv, tag)) == -1) { - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self->lvm_obj)); + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -1232,7 +1167,7 @@ liblvm_lvm_lv_remove_tag(lvobject *self, PyObject *args) } if ((rval = lvm_lv_remove_tag(self->lv, tag)) == -1) { - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self->lvm_obj)); + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -1252,7 +1187,7 @@ liblvm_lvm_lv_get_tags(lvobject *self) tags = lvm_lv_get_tags(self->lv); if (!tags) { - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self->lvm_obj)); + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -1280,7 +1215,7 @@ liblvm_lvm_lv_rename(lvobject *self, PyObject *args) return NULL; if ((rval = lvm_lv_rename(self->lv, new_name)) == -1) { - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self->lvm_obj)); + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -1301,7 +1236,7 @@ liblvm_lvm_lv_resize(lvobject *self, PyObject *args) } if ((rval = lvm_lv_resize(self->lv, new_size)) == -1) { - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self->lvm_obj)); + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -1338,7 +1273,6 @@ liblvm_lvm_lv_list_lvsegs(lvobject *lv) } self->lv_seg = lvsegl->lvseg; - self->lvm_obj = lv->lvm_obj; PyTuple_SET_ITEM(pytuple, i, (PyObject *) self); i++; } @@ -1350,7 +1284,7 @@ liblvm_lvm_lv_list_lvsegs(lvobject *lv) #define PV_VALID(pvobject) \ do { \ - if (!pvobject->pv || !pvobject->lvm_obj) { \ + if (!pvobject->pv || !libh) { \ PyErr_SetString(PyExc_UnboundLocalError, "PV object invalid"); \ return NULL; \ } \ @@ -1386,7 +1320,7 @@ liblvm_lvm_pv_get_property(pvobject *self, PyObject *args) return NULL; prop_value = lvm_pv_get_property(self->pv, name); - return get_property(self->lvm_obj, &prop_value); + return get_property(&prop_value); } static PyObject * @@ -1418,7 +1352,7 @@ liblvm_lvm_pv_resize(pvobject *self, PyObject *args) } if ((rval = lvm_pv_resize(self->pv, new_size)) == -1) { - PyErr_SetObject(LibLVMError, liblvm_get_last_error(self->lvm_obj)); + PyErr_SetObject(LibLVMError, liblvm_get_last_error()); return NULL; } @@ -1455,7 +1389,6 @@ liblvm_lvm_lv_list_pvsegs(pvobject *pv) } self->pv_seg = pvsegl->pvseg; - self->lvm_obj = pv->lvm_obj; PyTuple_SET_ITEM(pytuple, i, (PyObject *) self); i++; } @@ -1481,7 +1414,7 @@ liblvm_lvm_lvseg_get_property(lvsegobject *self, PyObject *args) return NULL; prop_value = lvm_lvseg_get_property(self->lv_seg, name); - return get_property(self->lvm_obj, &prop_value); + return get_property(&prop_value); } /* PV seg methods */ @@ -1502,7 +1435,7 @@ liblvm_lvm_pvseg_get_property(pvsegobject *self, PyObject *args) return NULL; prop_value = lvm_pvseg_get_property(self->pv_seg, name); - return get_property(self->lvm_obj, &prop_value); + return get_property(&prop_value); } /* ---------------------------------------------------------------------- @@ -1514,7 +1447,6 @@ static PyMethodDef Liblvm_methods[] = { { "getVersion", (PyCFunction)liblvm_library_get_version, METH_NOARGS }, { "vgOpen", (PyCFunction)liblvm_lvm_vg_open, METH_VARARGS }, { "vgCreate", (PyCFunction)liblvm_lvm_vg_create, METH_VARARGS }, - { "close", (PyCFunction)liblvm_close, METH_NOARGS }, { "configFindBool", (PyCFunction)liblvm_lvm_config_find_bool, METH_VARARGS }, { "configReload", (PyCFunction)liblvm_lvm_config_reload, METH_NOARGS }, { "configOverride", (PyCFunction)liblvm_lvm_config_override, METH_VARARGS }, @@ -1607,18 +1539,6 @@ static PyMethodDef liblvm_pvseg_methods[] = { { NULL, NULL} /* sentinel */ }; -static PyTypeObject LiblvmType = { - PyObject_HEAD_INIT(&PyType_Type) - .tp_name = "liblvm.Liblvm", - .tp_basicsize = sizeof(lvmobject), - .tp_new = PyType_GenericNew, - .tp_dealloc = (destructor)liblvm_dealloc, - .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, - .tp_doc = "Liblvm objects", - .tp_methods = Liblvm_methods, - .tp_init = (initproc)liblvm_init, -}; - static PyTypeObject LibLVMvgType = { PyObject_HEAD_INIT(&PyType_Type) .tp_name = "liblvm.Liblvm_vg", @@ -1679,8 +1599,8 @@ initlvm(void) { PyObject *m; - if (PyType_Ready(&LiblvmType) < 0) - return; + libh = lvm_init(NULL); + if (PyType_Ready(&LibLVMvgType) < 0) return; if (PyType_Ready(&LibLVMlvType) < 0) @@ -1696,9 +1616,6 @@ initlvm(void) if (m == NULL) return; - Py_INCREF(&LiblvmType); - PyModule_AddObject(m, "Liblvm", (PyObject *)&LiblvmType); - LibLVMError = PyErr_NewException("Liblvm.LibLVMError", NULL, NULL); if (LibLVMError) { |