Add: pvresize, sfdisk-N, sfdisk-l, sfdisk-kernel-geomtry, sfdisk-disk-geometry commands. Pass --no-reread flag to sfdisk.

This commit is contained in:
Richard W.M. Jones
2009-05-15 14:01:28 +01:00
parent b8e5f51c79
commit 5cd39c83e2
28 changed files with 2143 additions and 49 deletions

View File

@@ -3427,6 +3427,136 @@ py_guestfs_zerofree (PyObject *self, PyObject *args)
return py_r;
}
static PyObject *
py_guestfs_pvresize (PyObject *self, PyObject *args)
{
PyObject *py_g;
guestfs_h *g;
PyObject *py_r;
int r;
const char *device;
if (!PyArg_ParseTuple (args, (char *) "Os:guestfs_pvresize",
&py_g, &device))
return NULL;
g = get_handle (py_g);
r = guestfs_pvresize (g, device);
if (r == -1) {
PyErr_SetString (PyExc_RuntimeError, guestfs_last_error (g));
return NULL;
}
Py_INCREF (Py_None);
py_r = Py_None;
return py_r;
}
static PyObject *
py_guestfs_sfdisk_N (PyObject *self, PyObject *args)
{
PyObject *py_g;
guestfs_h *g;
PyObject *py_r;
int r;
const char *device;
int n;
int cyls;
int heads;
int sectors;
const char *line;
if (!PyArg_ParseTuple (args, (char *) "Osiiiis:guestfs_sfdisk_N",
&py_g, &device, &n, &cyls, &heads, &sectors, &line))
return NULL;
g = get_handle (py_g);
r = guestfs_sfdisk_N (g, device, n, cyls, heads, sectors, line);
if (r == -1) {
PyErr_SetString (PyExc_RuntimeError, guestfs_last_error (g));
return NULL;
}
Py_INCREF (Py_None);
py_r = Py_None;
return py_r;
}
static PyObject *
py_guestfs_sfdisk_l (PyObject *self, PyObject *args)
{
PyObject *py_g;
guestfs_h *g;
PyObject *py_r;
char *r;
const char *device;
if (!PyArg_ParseTuple (args, (char *) "Os:guestfs_sfdisk_l",
&py_g, &device))
return NULL;
g = get_handle (py_g);
r = guestfs_sfdisk_l (g, device);
if (r == NULL) {
PyErr_SetString (PyExc_RuntimeError, guestfs_last_error (g));
return NULL;
}
py_r = PyString_FromString (r);
free (r);
return py_r;
}
static PyObject *
py_guestfs_sfdisk_kernel_geometry (PyObject *self, PyObject *args)
{
PyObject *py_g;
guestfs_h *g;
PyObject *py_r;
char *r;
const char *device;
if (!PyArg_ParseTuple (args, (char *) "Os:guestfs_sfdisk_kernel_geometry",
&py_g, &device))
return NULL;
g = get_handle (py_g);
r = guestfs_sfdisk_kernel_geometry (g, device);
if (r == NULL) {
PyErr_SetString (PyExc_RuntimeError, guestfs_last_error (g));
return NULL;
}
py_r = PyString_FromString (r);
free (r);
return py_r;
}
static PyObject *
py_guestfs_sfdisk_disk_geometry (PyObject *self, PyObject *args)
{
PyObject *py_g;
guestfs_h *g;
PyObject *py_r;
char *r;
const char *device;
if (!PyArg_ParseTuple (args, (char *) "Os:guestfs_sfdisk_disk_geometry",
&py_g, &device))
return NULL;
g = get_handle (py_g);
r = guestfs_sfdisk_disk_geometry (g, device);
if (r == NULL) {
PyErr_SetString (PyExc_RuntimeError, guestfs_last_error (g));
return NULL;
}
py_r = PyString_FromString (r);
free (r);
return py_r;
}
static PyMethodDef methods[] = {
{ (char *) "create", py_guestfs_create, METH_VARARGS, NULL },
{ (char *) "close", py_guestfs_close, METH_VARARGS, NULL },
@@ -3551,6 +3681,11 @@ static PyMethodDef methods[] = {
{ (char *) "strings_e", py_guestfs_strings_e, METH_VARARGS, NULL },
{ (char *) "hexdump", py_guestfs_hexdump, METH_VARARGS, NULL },
{ (char *) "zerofree", py_guestfs_zerofree, METH_VARARGS, NULL },
{ (char *) "pvresize", py_guestfs_pvresize, METH_VARARGS, NULL },
{ (char *) "sfdisk_N", py_guestfs_sfdisk_N, METH_VARARGS, NULL },
{ (char *) "sfdisk_l", py_guestfs_sfdisk_l, METH_VARARGS, NULL },
{ (char *) "sfdisk_kernel_geometry", py_guestfs_sfdisk_kernel_geometry, METH_VARARGS, NULL },
{ (char *) "sfdisk_disk_geometry", py_guestfs_sfdisk_disk_geometry, METH_VARARGS, NULL },
{ NULL, NULL, 0, NULL }
};

View File

@@ -750,6 +750,8 @@ class GuestFS:
you would pass "lines" as a single element list, when
the single element being the string "," (comma).
See also: "g.sfdisk_l", "g.sfdisk_N"
This command is dangerous. Without careful use you can
easily destroy all your data.
"""
@@ -1348,3 +1350,50 @@ class GuestFS:
"""
return libguestfsmod.zerofree (self._o, device)
def pvresize (self, device):
u"""This resizes (expands or shrinks) an existing LVM
physical volume to match the new size of the underlying
device.
"""
return libguestfsmod.pvresize (self._o, device)
def sfdisk_N (self, device, n, cyls, heads, sectors, line):
u"""This runs sfdisk(8) option to modify just the single
partition "n" (note: "n" counts from 1).
For other parameters, see "g.sfdisk". You should usually
pass 0 for the cyls/heads/sectors parameters.
This command is dangerous. Without careful use you can
easily destroy all your data.
"""
return libguestfsmod.sfdisk_N (self._o, device, n, cyls, heads, sectors, line)
def sfdisk_l (self, device):
u"""This displays the partition table on "device", in the
human-readable output of the sfdisk(8) command. It is
not intended to be parsed.
"""
return libguestfsmod.sfdisk_l (self._o, device)
def sfdisk_kernel_geometry (self, device):
u"""This displays the kernel's idea of the geometry of
"device".
The result is in human-readable format, and not designed
to be parsed.
"""
return libguestfsmod.sfdisk_kernel_geometry (self._o, device)
def sfdisk_disk_geometry (self, device):
u"""This displays the disk geometry of "device" read from
the partition table. Especially in the case where the
underlying block device has been resized, this can be
different from the kernel's idea of the geometry (see
"g.sfdisk_kernel_geometry").
The result is in human-readable format, and not designed
to be parsed.
"""
return libguestfsmod.sfdisk_disk_geometry (self._o, device)