9739fa56ea37196aaaccaaba98a4a429ee44bf8c
[libguestfs.git] / python / guestfs.py
1 # libguestfs generated file
2 # WARNING: THIS FILE IS GENERATED BY 'src/generator.ml'.
3 # ANY CHANGES YOU MAKE TO THIS FILE WILL BE LOST.
4 #
5 # Copyright (C) 2009 Red Hat Inc.
6 #
7 # This library is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU Lesser General Public
9 # License as published by the Free Software Foundation; either
10 # version 2 of the License, or (at your option) any later version.
11 #
12 # This library is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 # Lesser General Public License for more details.
16 #
17 # You should have received a copy of the GNU Lesser General Public
18 # License along with this library; if not, write to the Free Software
19 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
21 u"""Python bindings for libguestfs
22
23 import guestfs
24 g = guestfs.GuestFS ()
25 g.add_drive ("guest.img")
26 g.launch ()
27 g.wait_ready ()
28 parts = g.list_partitions ()
29
30 The guestfs module provides a Python binding to the libguestfs API
31 for examining and modifying virtual machine disk images.
32
33 Amongst the things this is good for: making batch configuration
34 changes to guests, getting disk used/free statistics (see also:
35 virt-df), migrating between virtualization systems (see also:
36 virt-p2v), performing partial backups, performing partial guest
37 clones, cloning guests and changing registry/UUID/hostname info, and
38 much else besides.
39
40 Libguestfs uses Linux kernel and qemu code, and can access any type of
41 guest filesystem that Linux and qemu can, including but not limited
42 to: ext2/3/4, btrfs, FAT and NTFS, LVM, many different disk partition
43 schemes, qcow, qcow2, vmdk.
44
45 Libguestfs provides ways to enumerate guest storage (eg. partitions,
46 LVs, what filesystem is in each LV, etc.).  It can also run commands
47 in the context of the guest.  Also you can access filesystems over FTP.
48
49 Errors which happen while using the API are turned into Python
50 RuntimeError exceptions.
51
52 To create a guestfs handle you usually have to perform the following
53 sequence of calls:
54
55 # Create the handle, call add_drive at least once, and possibly
56 # several times if the guest has multiple block devices:
57 g = guestfs.GuestFS ()
58 g.add_drive ("guest.img")
59
60 # Launch the qemu subprocess and wait for it to become ready:
61 g.launch ()
62 g.wait_ready ()
63
64 # Now you can issue commands, for example:
65 logvols = g.lvs ()
66
67 """
68
69 import libguestfsmod
70
71 class GuestFS:
72     """Instances of this class are libguestfs API handles."""
73
74     def __init__ (self):
75         """Create a new libguestfs handle."""
76         self._o = libguestfsmod.create ()
77
78     def __del__ (self):
79         libguestfsmod.close (self._o)
80
81     def launch (self):
82         u"""Internally libguestfs is implemented by running a
83         virtual machine using qemu(1).
84         
85         You should call this after configuring the handle (eg.
86         adding drives) but before performing any actions.
87         """
88         return libguestfsmod.launch (self._o)
89
90     def wait_ready (self):
91         u"""Internally libguestfs is implemented by running a
92         virtual machine using qemu(1).
93         
94         You should call this after "g.launch" to wait for the
95         launch to complete.
96         """
97         return libguestfsmod.wait_ready (self._o)
98
99     def kill_subprocess (self):
100         u"""This kills the qemu subprocess. You should never need to
101         call this.
102         """
103         return libguestfsmod.kill_subprocess (self._o)
104
105     def add_drive (self, filename):
106         u"""This function adds a virtual machine disk image
107         "filename" to the guest. The first time you call this
108         function, the disk appears as IDE disk 0 ("/dev/sda") in
109         the guest, the second time as "/dev/sdb", and so on.
110         
111         You don't necessarily need to be root when using
112         libguestfs. However you obviously do need sufficient
113         permissions to access the filename for whatever
114         operations you want to perform (ie. read access if you
115         just want to read the image or write access if you want
116         to modify the image).
117         
118         This is equivalent to the qemu parameter "-drive
119         file=filename".
120         """
121         return libguestfsmod.add_drive (self._o, filename)
122
123     def add_cdrom (self, filename):
124         u"""This function adds a virtual CD-ROM disk image to the
125         guest.
126         
127         This is equivalent to the qemu parameter "-cdrom
128         filename".
129         """
130         return libguestfsmod.add_cdrom (self._o, filename)
131
132     def config (self, qemuparam, qemuvalue):
133         u"""This can be used to add arbitrary qemu command line
134         parameters of the form "-param value". Actually it's not
135         quite arbitrary - we prevent you from setting some
136         parameters which would interfere with parameters that we
137         use.
138         
139         The first character of "param" string must be a "-"
140         (dash).
141         
142         "value" can be NULL.
143         """
144         return libguestfsmod.config (self._o, qemuparam, qemuvalue)
145
146     def set_path (self, path):
147         u"""Set the path that libguestfs searches for kernel and
148         initrd.img.
149         
150         The default is "$libdir/guestfs" unless overridden by
151         setting "LIBGUESTFS_PATH" environment variable.
152         
153         The string "path" is stashed in the libguestfs handle,
154         so the caller must make sure it remains valid for the
155         lifetime of the handle.
156         
157         Setting "path" to "NULL" restores the default path.
158         """
159         return libguestfsmod.set_path (self._o, path)
160
161     def get_path (self):
162         u"""Return the current search path.
163         
164         This is always non-NULL. If it wasn't set already, then
165         this will return the default path.
166         """
167         return libguestfsmod.get_path (self._o)
168
169     def set_autosync (self, autosync):
170         u"""If "autosync" is true, this enables autosync. Libguestfs
171         will make a best effort attempt to run "g.sync" when the
172         handle is closed (also if the program exits without
173         closing handles).
174         """
175         return libguestfsmod.set_autosync (self._o, autosync)
176
177     def get_autosync (self):
178         u"""Get the autosync flag.
179         """
180         return libguestfsmod.get_autosync (self._o)
181
182     def set_verbose (self, verbose):
183         u"""If "verbose" is true, this turns on verbose messages (to
184         "stderr").
185         
186         Verbose messages are disabled unless the environment
187         variable "LIBGUESTFS_DEBUG" is defined and set to 1.
188         """
189         return libguestfsmod.set_verbose (self._o, verbose)
190
191     def get_verbose (self):
192         u"""This returns the verbose messages flag.
193         """
194         return libguestfsmod.get_verbose (self._o)
195
196     def mount (self, device, mountpoint):
197         u"""Mount a guest disk at a position in the filesystem.
198         Block devices are named "/dev/sda", "/dev/sdb" and so
199         on, as they were added to the guest. If those block
200         devices contain partitions, they will have the usual
201         names (eg. "/dev/sda1"). Also LVM "/dev/VG/LV"-style
202         names can be used.
203         
204         The rules are the same as for mount(2): A filesystem
205         must first be mounted on "/" before others can be
206         mounted. Other filesystems can only be mounted on
207         directories which already exist.
208         
209         The mounted filesystem is writable, if we have
210         sufficient permissions on the underlying device.
211         
212         The filesystem options "sync" and "noatime" are set with
213         this call, in order to improve reliability.
214         """
215         return libguestfsmod.mount (self._o, device, mountpoint)
216
217     def sync (self):
218         u"""This syncs the disk, so that any writes are flushed
219         through to the underlying disk image.
220         
221         You should always call this if you have modified a disk
222         image, before closing the handle.
223         """
224         return libguestfsmod.sync (self._o)
225
226     def touch (self, path):
227         u"""Touch acts like the touch(1) command. It can be used to
228         update the timestamps on a file, or, if the file does
229         not exist, to create a new zero-length file.
230         """
231         return libguestfsmod.touch (self._o, path)
232
233     def cat (self, path):
234         u"""Return the contents of the file named "path".
235         
236         Note that this function cannot correctly handle binary
237         files (specifically, files containing "\\0" character
238         which is treated as end of string). For those you need
239         to use the "g.read_file" function which has a more
240         complex interface.
241         
242         Because of the message protocol, there is a transfer
243         limit of somewhere between 2MB and 4MB. To transfer
244         large files you should use FTP.
245         """
246         return libguestfsmod.cat (self._o, path)
247
248     def ll (self, directory):
249         u"""List the files in "directory" (relative to the root
250         directory, there is no cwd) in the format of 'ls -la'.
251         
252         This command is mostly useful for interactive sessions.
253         It is *not* intended that you try to parse the output
254         string.
255         """
256         return libguestfsmod.ll (self._o, directory)
257
258     def ls (self, directory):
259         u"""List the files in "directory" (relative to the root
260         directory, there is no cwd). The '.' and '..' entries
261         are not returned, but hidden files are shown.
262         
263         This command is mostly useful for interactive sessions.
264         Programs should probably use "g.readdir" instead.
265         
266         This function returns a list of strings.
267         """
268         return libguestfsmod.ls (self._o, directory)
269
270     def list_devices (self):
271         u"""List all the block devices.
272         
273         The full block device names are returned, eg. "/dev/sda"
274         
275         This function returns a list of strings.
276         """
277         return libguestfsmod.list_devices (self._o)
278
279     def list_partitions (self):
280         u"""List all the partitions detected on all block devices.
281         
282         The full partition device names are returned, eg.
283         "/dev/sda1"
284         
285         This does not return logical volumes. For that you will
286         need to call "g.lvs".
287         
288         This function returns a list of strings.
289         """
290         return libguestfsmod.list_partitions (self._o)
291
292     def pvs (self):
293         u"""List all the physical volumes detected. This is the
294         equivalent of the pvs(8) command.
295         
296         This returns a list of just the device names that
297         contain PVs (eg. "/dev/sda2").
298         
299         See also "g.pvs_full".
300         
301         This function returns a list of strings.
302         """
303         return libguestfsmod.pvs (self._o)
304
305     def vgs (self):
306         u"""List all the volumes groups detected. This is the
307         equivalent of the vgs(8) command.
308         
309         This returns a list of just the volume group names that
310         were detected (eg. "VolGroup00").
311         
312         See also "g.vgs_full".
313         
314         This function returns a list of strings.
315         """
316         return libguestfsmod.vgs (self._o)
317
318     def lvs (self):
319         u"""List all the logical volumes detected. This is the
320         equivalent of the lvs(8) command.
321         
322         This returns a list of the logical volume device names
323         (eg. "/dev/VolGroup00/LogVol00").
324         
325         See also "g.lvs_full".
326         
327         This function returns a list of strings.
328         """
329         return libguestfsmod.lvs (self._o)
330
331     def pvs_full (self):
332         u"""List all the physical volumes detected. This is the
333         equivalent of the pvs(8) command. The "full" version
334         includes all fields.
335         
336         This function returns a list of PVs. Each PV is
337         represented as a dictionary.
338         """
339         return libguestfsmod.pvs_full (self._o)
340
341     def vgs_full (self):
342         u"""List all the volumes groups detected. This is the
343         equivalent of the vgs(8) command. The "full" version
344         includes all fields.
345         
346         This function returns a list of VGs. Each VG is
347         represented as a dictionary.
348         """
349         return libguestfsmod.vgs_full (self._o)
350
351     def lvs_full (self):
352         u"""List all the logical volumes detected. This is the
353         equivalent of the lvs(8) command. The "full" version
354         includes all fields.
355         
356         This function returns a list of LVs. Each LV is
357         represented as a dictionary.
358         """
359         return libguestfsmod.lvs_full (self._o)
360
361     def read_lines (self, path):
362         u"""Return the contents of the file named "path".
363         
364         The file contents are returned as a list of lines.
365         Trailing "LF" and "CRLF" character sequences are *not*
366         returned.
367         
368         Note that this function cannot correctly handle binary
369         files (specifically, files containing "\\0" character
370         which is treated as end of line). For those you need to
371         use the "g.read_file" function which has a more complex
372         interface.
373         
374         This function returns a list of strings.
375         """
376         return libguestfsmod.read_lines (self._o, path)
377
378     def aug_init (self, root, flags):
379         u"""Create a new Augeas handle for editing configuration
380         files. If there was any previous Augeas handle
381         associated with this guestfs session, then it is closed.
382         
383         You must call this before using any other "g.aug_*"
384         commands.
385         
386         "root" is the filesystem root. "root" must not be NULL,
387         use "/" instead.
388         
389         The flags are the same as the flags defined in
390         <augeas.h>, the logical *or* of the following integers:
391         
392         "AUG_SAVE_BACKUP" = 1
393         Keep the original file with a ".augsave" extension.
394         
395         "AUG_SAVE_NEWFILE" = 2
396         Save changes into a file with extension ".augnew",
397         and do not overwrite original. Overrides
398         "AUG_SAVE_BACKUP".
399         
400         "AUG_TYPE_CHECK" = 4
401         Typecheck lenses (can be expensive).
402         
403         "AUG_NO_STDINC" = 8
404         Do not use standard load path for modules.
405         
406         "AUG_SAVE_NOOP" = 16
407         Make save a no-op, just record what would have been
408         changed.
409         
410         "AUG_NO_LOAD" = 32
411         Do not load the tree in "g.aug_init".
412         
413         To close the handle, you can call "g.aug_close".
414         
415         To find out more about Augeas, see <http://augeas.net/>.
416         """
417         return libguestfsmod.aug_init (self._o, root, flags)
418
419     def aug_close (self):
420         u"""Close the current Augeas handle and free up any
421         resources used by it. After calling this, you have to
422         call "g.aug_init" again before you can use any other
423         Augeas functions.
424         """
425         return libguestfsmod.aug_close (self._o)
426
427     def aug_defvar (self, name, expr):
428         u"""Defines an Augeas variable "name" whose value is the
429         result of evaluating "expr". If "expr" is NULL, then
430         "name" is undefined.
431         
432         On success this returns the number of nodes in "expr",
433         or 0 if "expr" evaluates to something which is not a
434         nodeset.
435         """
436         return libguestfsmod.aug_defvar (self._o, name, expr)
437
438     def aug_defnode (self, name, expr, val):
439         u"""Defines a variable "name" whose value is the result of
440         evaluating "expr".
441         
442         If "expr" evaluates to an empty nodeset, a node is
443         created, equivalent to calling "g.aug_set" "expr",
444         "value". "name" will be the nodeset containing that
445         single node.
446         
447         On success this returns a pair containing the number of
448         nodes in the nodeset, and a boolean flag if a node was
449         created.
450         
451         This function returns a tuple (int, bool).
452         """
453         return libguestfsmod.aug_defnode (self._o, name, expr, val)
454
455     def aug_get (self, path):
456         u"""Look up the value associated with "path". If "path"
457         matches exactly one node, the "value" is returned.
458         """
459         return libguestfsmod.aug_get (self._o, path)
460
461     def aug_set (self, path, val):
462         u"""Set the value associated with "path" to "value".
463         """
464         return libguestfsmod.aug_set (self._o, path, val)
465
466     def aug_insert (self, path, label, before):
467         u"""Create a new sibling "label" for "path", inserting it
468         into the tree before or after "path" (depending on the
469         boolean flag "before").
470         
471         "path" must match exactly one existing node in the tree,
472         and "label" must be a label, ie. not contain "/", "*" or
473         end with a bracketed index "[N]".
474         """
475         return libguestfsmod.aug_insert (self._o, path, label, before)
476
477     def aug_rm (self, path):
478         u"""Remove "path" and all of its children.
479         
480         On success this returns the number of entries which were
481         removed.
482         """
483         return libguestfsmod.aug_rm (self._o, path)
484
485     def aug_mv (self, src, dest):
486         u"""Move the node "src" to "dest". "src" must match exactly
487         one node. "dest" is overwritten if it exists.
488         """
489         return libguestfsmod.aug_mv (self._o, src, dest)
490
491     def aug_match (self, path):
492         u"""Returns a list of paths which match the path expression
493         "path". The returned paths are sufficiently qualified so
494         that they match exactly one node in the current tree.
495         
496         This function returns a list of strings.
497         """
498         return libguestfsmod.aug_match (self._o, path)
499
500     def aug_save (self):
501         u"""This writes all pending changes to disk.
502         
503         The flags which were passed to "g.aug_init" affect
504         exactly how files are saved.
505         """
506         return libguestfsmod.aug_save (self._o)
507
508     def aug_load (self):
509         u"""Load files into the tree.
510         
511         See "aug_load" in the Augeas documentation for the full
512         gory details.
513         """
514         return libguestfsmod.aug_load (self._o)
515
516     def aug_ls (self, path):
517         u"""This is just a shortcut for listing "g.aug_match"
518         "path/*" and sorting the resulting nodes into
519         alphabetical order.
520         
521         This function returns a list of strings.
522         """
523         return libguestfsmod.aug_ls (self._o, path)
524
525     def rm (self, path):
526         u"""Remove the single file "path".
527         """
528         return libguestfsmod.rm (self._o, path)
529
530     def rmdir (self, path):
531         u"""Remove the single directory "path".
532         """
533         return libguestfsmod.rmdir (self._o, path)
534
535     def rm_rf (self, path):
536         u"""Remove the file or directory "path", recursively
537         removing the contents if its a directory. This is like
538         the "rm -rf" shell command.
539         """
540         return libguestfsmod.rm_rf (self._o, path)
541
542     def mkdir (self, path):
543         u"""Create a directory named "path".
544         """
545         return libguestfsmod.mkdir (self._o, path)
546
547     def mkdir_p (self, path):
548         u"""Create a directory named "path", creating any parent
549         directories as necessary. This is like the "mkdir -p"
550         shell command.
551         """
552         return libguestfsmod.mkdir_p (self._o, path)
553
554     def chmod (self, mode, path):
555         u"""Change the mode (permissions) of "path" to "mode". Only
556         numeric modes are supported.
557         """
558         return libguestfsmod.chmod (self._o, mode, path)
559
560     def chown (self, owner, group, path):
561         u"""Change the file owner to "owner" and group to "group".
562         
563         Only numeric uid and gid are supported. If you want to
564         use names, you will need to locate and parse the
565         password file yourself (Augeas support makes this
566         relatively easy).
567         """
568         return libguestfsmod.chown (self._o, owner, group, path)
569
570     def exists (self, path):
571         u"""This returns "true" if and only if there is a file,
572         directory (or anything) with the given "path" name.
573         
574         See also "g.is_file", "g.is_dir", "g.stat".
575         """
576         return libguestfsmod.exists (self._o, path)
577
578     def is_file (self, path):
579         u"""This returns "true" if and only if there is a file with
580         the given "path" name. Note that it returns false for
581         other objects like directories.
582         
583         See also "g.stat".
584         """
585         return libguestfsmod.is_file (self._o, path)
586
587     def is_dir (self, path):
588         u"""This returns "true" if and only if there is a directory
589         with the given "path" name. Note that it returns false
590         for other objects like files.
591         
592         See also "g.stat".
593         """
594         return libguestfsmod.is_dir (self._o, path)
595
596     def pvcreate (self, device):
597         u"""This creates an LVM physical volume on the named
598         "device", where "device" should usually be a partition
599         name such as "/dev/sda1".
600         """
601         return libguestfsmod.pvcreate (self._o, device)
602
603     def vgcreate (self, volgroup, physvols):
604         u"""This creates an LVM volume group called "volgroup" from
605         the non-empty list of physical volumes "physvols".
606         """
607         return libguestfsmod.vgcreate (self._o, volgroup, physvols)
608
609     def lvcreate (self, logvol, volgroup, mbytes):
610         u"""This creates an LVM volume group called "logvol" on the
611         volume group "volgroup", with "size" megabytes.
612         """
613         return libguestfsmod.lvcreate (self._o, logvol, volgroup, mbytes)
614
615     def mkfs (self, fstype, device):
616         u"""This creates a filesystem on "device" (usually a
617         partition of LVM logical volume). The filesystem type is
618         "fstype", for example "ext3".
619         """
620         return libguestfsmod.mkfs (self._o, fstype, device)
621
622     def sfdisk (self, device, cyls, heads, sectors, lines):
623         u"""This is a direct interface to the sfdisk(8) program for
624         creating partitions on block devices.
625         
626         "device" should be a block device, for example
627         "/dev/sda".
628         
629         "cyls", "heads" and "sectors" are the number of
630         cylinders, heads and sectors on the device, which are
631         passed directly to sfdisk as the *-C*, *-H* and *-S*
632         parameters. If you pass 0 for any of these, then the
633         corresponding parameter is omitted. Usually for 'large'
634         disks, you can just pass 0 for these, but for small
635         (floppy-sized) disks, sfdisk (or rather, the kernel)
636         cannot work out the right geometry and you will need to
637         tell it.
638         
639         "lines" is a list of lines that we feed to "sfdisk". For
640         more information refer to the sfdisk(8) manpage.
641         
642         To create a single partition occupying the whole disk,
643         you would pass "lines" as a single element list, when
644         the single element being the string "," (comma).
645         
646         This command is dangerous. Without careful use you can
647         easily destroy all your data.
648         """
649         return libguestfsmod.sfdisk (self._o, device, cyls, heads, sectors, lines)
650
651     def write_file (self, path, content, size):
652         u"""This call creates a file called "path". The contents of
653         the file is the string "content" (which can contain any
654         8 bit data), with length "size".
655         
656         As a special case, if "size" is 0 then the length is
657         calculated using "strlen" (so in this case the content
658         cannot contain embedded ASCII NULs).
659         
660         Because of the message protocol, there is a transfer
661         limit of somewhere between 2MB and 4MB. To transfer
662         large files you should use FTP.
663         """
664         return libguestfsmod.write_file (self._o, path, content, size)
665
666     def umount (self, pathordevice):
667         u"""This unmounts the given filesystem. The filesystem may
668         be specified either by its mountpoint (path) or the
669         device which contains the filesystem.
670         """
671         return libguestfsmod.umount (self._o, pathordevice)
672
673     def mounts (self):
674         u"""This returns the list of currently mounted filesystems.
675         It returns the list of devices (eg. "/dev/sda1",
676         "/dev/VG/LV").
677         
678         Some internal mounts are not shown.
679         
680         This function returns a list of strings.
681         """
682         return libguestfsmod.mounts (self._o)
683
684     def umount_all (self):
685         u"""This unmounts all mounted filesystems.
686         
687         Some internal mounts are not unmounted by this call.
688         """
689         return libguestfsmod.umount_all (self._o)
690
691     def lvm_remove_all (self):
692         u"""This command removes all LVM logical volumes, volume
693         groups and physical volumes.
694         
695         This command is dangerous. Without careful use you can
696         easily destroy all your data.
697         """
698         return libguestfsmod.lvm_remove_all (self._o)
699
700     def file (self, path):
701         u"""This call uses the standard file(1) command to determine
702         the type or contents of the file. This also works on
703         devices, for example to find out whether a partition
704         contains a filesystem.
705         
706         The exact command which runs is "file -bsL path". Note
707         in particular that the filename is not prepended to the
708         output (the "-b" option).
709         """
710         return libguestfsmod.file (self._o, path)
711
712     def command (self, arguments):
713         u"""This call runs a command from the guest filesystem. The
714         filesystem must be mounted, and must contain a
715         compatible operating system (ie. something Linux, with
716         the same or compatible processor architecture).
717         
718         The single parameter is an argv-style list of arguments.
719         The first element is the name of the program to run.
720         Subsequent elements are parameters. The list must be
721         non-empty (ie. must contain a program name).
722         
723         The $PATH environment variable will contain at least
724         "/usr/bin" and "/bin". If you require a program from
725         another location, you should provide the full path in
726         the first parameter.
727         
728         Shared libraries and data files required by the program
729         must be available on filesystems which are mounted in
730         the correct places. It is the caller's responsibility to
731         ensure all filesystems that are needed are mounted at
732         the right locations.
733         """
734         return libguestfsmod.command (self._o, arguments)
735
736     def command_lines (self, arguments):
737         u"""This is the same as "g.command", but splits the result
738         into a list of lines.
739         
740         This function returns a list of strings.
741         """
742         return libguestfsmod.command_lines (self._o, arguments)
743
744     def stat (self, path):
745         u"""Returns file information for the given "path".
746         
747         This is the same as the stat(2) system call.
748         
749         This function returns a dictionary, with keys matching
750         the various fields in the stat structure.
751         """
752         return libguestfsmod.stat (self._o, path)
753
754     def lstat (self, path):
755         u"""Returns file information for the given "path".
756         
757         This is the same as "g.stat" except that if "path" is a
758         symbolic link, then the link is stat-ed, not the file it
759         refers to.
760         
761         This is the same as the lstat(2) system call.
762         
763         This function returns a dictionary, with keys matching
764         the various fields in the stat structure.
765         """
766         return libguestfsmod.lstat (self._o, path)
767
768     def statvfs (self, path):
769         u"""Returns file system statistics for any mounted file
770         system. "path" should be a file or directory in the
771         mounted file system (typically it is the mount point
772         itself, but it doesn't need to be).
773         
774         This is the same as the statvfs(2) system call.
775         
776         This function returns a dictionary, with keys matching
777         the various fields in the statvfs structure.
778         """
779         return libguestfsmod.statvfs (self._o, path)
780
781     def tune2fs_l (self, device):
782         u"""This returns the contents of the ext2 or ext3 filesystem
783         superblock on "device".
784         
785         It is the same as running "tune2fs -l device". See
786         tune2fs(8) manpage for more details. The list of fields
787         returned isn't clearly defined, and depends on both the
788         version of "tune2fs" that libguestfs was built against,
789         and the filesystem itself.
790         
791         This function returns a dictionary.
792         """
793         return libguestfsmod.tune2fs_l (self._o, device)
794
795     def blockdev_setro (self, device):
796         u"""Sets the block device named "device" to read-only.
797         
798         This uses the blockdev(8) command.
799         """
800         return libguestfsmod.blockdev_setro (self._o, device)
801
802     def blockdev_setrw (self, device):
803         u"""Sets the block device named "device" to read-write.
804         
805         This uses the blockdev(8) command.
806         """
807         return libguestfsmod.blockdev_setrw (self._o, device)
808
809     def blockdev_getro (self, device):
810         u"""Returns a boolean indicating if the block device is
811         read-only (true if read-only, false if not).
812         
813         This uses the blockdev(8) command.
814         """
815         return libguestfsmod.blockdev_getro (self._o, device)
816
817     def blockdev_getss (self, device):
818         u"""This returns the size of sectors on a block device.
819         Usually 512, but can be larger for modern devices.
820         
821         (Note, this is not the size in sectors, use
822         "g.blockdev_getsz" for that).
823         
824         This uses the blockdev(8) command.
825         """
826         return libguestfsmod.blockdev_getss (self._o, device)
827
828     def blockdev_getbsz (self, device):
829         u"""This returns the block size of a device.
830         
831         (Note this is different from both *size in blocks* and
832         *filesystem block size*).
833         
834         This uses the blockdev(8) command.
835         """
836         return libguestfsmod.blockdev_getbsz (self._o, device)
837
838     def blockdev_setbsz (self, device, blocksize):
839         u"""This sets the block size of a device.
840         
841         (Note this is different from both *size in blocks* and
842         *filesystem block size*).
843         
844         This uses the blockdev(8) command.
845         """
846         return libguestfsmod.blockdev_setbsz (self._o, device, blocksize)
847
848     def blockdev_getsz (self, device):
849         u"""This returns the size of the device in units of 512-byte
850         sectors (even if the sectorsize isn't 512 bytes ...
851         weird).
852         
853         See also "g.blockdev_getss" for the real sector size of
854         the device, and "g.blockdev_getsize64" for the more
855         useful *size in bytes*.
856         
857         This uses the blockdev(8) command.
858         """
859         return libguestfsmod.blockdev_getsz (self._o, device)
860
861     def blockdev_getsize64 (self, device):
862         u"""This returns the size of the device in bytes.
863         
864         See also "g.blockdev_getsz".
865         
866         This uses the blockdev(8) command.
867         """
868         return libguestfsmod.blockdev_getsize64 (self._o, device)
869
870     def blockdev_flushbufs (self, device):
871         u"""This tells the kernel to flush internal buffers
872         associated with "device".
873         
874         This uses the blockdev(8) command.
875         """
876         return libguestfsmod.blockdev_flushbufs (self._o, device)
877
878     def blockdev_rereadpt (self, device):
879         u"""Reread the partition table on "device".
880         
881         This uses the blockdev(8) command.
882         """
883         return libguestfsmod.blockdev_rereadpt (self._o, device)
884