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.
5 # Copyright (C) 2009 Red Hat Inc.
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.
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.
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
21 u"""Python bindings for libguestfs
24 g = guestfs.GuestFS ()
25 g.add_drive ("guest.img")
28 parts = g.list_partitions ()
30 The guestfs module provides a Python binding to the libguestfs API
31 for examining and modifying virtual machine disk images.
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
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.
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.
49 Errors which happen while using the API are turned into Python
50 RuntimeError exceptions.
52 To create a guestfs handle you usually have to perform the following
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")
60 # Launch the qemu subprocess and wait for it to become ready:
64 # Now you can issue commands, for example:
72 """Instances of this class are libguestfs API handles."""
75 """Create a new libguestfs handle."""
76 self._o = libguestfsmod.create ()
79 libguestfsmod.close (self._o)
82 u"""Internally libguestfs is implemented by running a
83 virtual machine using qemu(1).
85 You should call this after configuring the handle (eg.
86 adding drives) but before performing any actions.
88 return libguestfsmod.launch (self._o)
90 def wait_ready (self):
91 u"""Internally libguestfs is implemented by running a
92 virtual machine using qemu(1).
94 You should call this after "g.launch" to wait for the
97 return libguestfsmod.wait_ready (self._o)
99 def kill_subprocess (self):
100 u"""This kills the qemu subprocess. You should never need to
103 return libguestfsmod.kill_subprocess (self._o)
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.
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).
118 This is equivalent to the qemu parameter "-drive
121 return libguestfsmod.add_drive (self._o, filename)
123 def add_cdrom (self, filename):
124 u"""This function adds a virtual CD-ROM disk image to the
127 This is equivalent to the qemu parameter "-cdrom
130 return libguestfsmod.add_cdrom (self._o, filename)
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
139 The first character of "param" string must be a "-"
144 return libguestfsmod.config (self._o, qemuparam, qemuvalue)
146 def set_qemu (self, qemu):
147 u"""Set the qemu binary that we will use.
149 The default is chosen when the library was compiled by
150 the configure script.
152 You can also override this by setting the
153 "LIBGUESTFS_QEMU" environment variable.
155 The string "qemu" is stashed in the libguestfs handle,
156 so the caller must make sure it remains valid for the
157 lifetime of the handle.
159 Setting "qemu" to "NULL" restores the default qemu
162 return libguestfsmod.set_qemu (self._o, qemu)
165 u"""Return the current qemu binary.
167 This is always non-NULL. If it wasn't set already, then
168 this will return the default qemu binary name.
170 return libguestfsmod.get_qemu (self._o)
172 def set_path (self, path):
173 u"""Set the path that libguestfs searches for kernel and
176 The default is "$libdir/guestfs" unless overridden by
177 setting "LIBGUESTFS_PATH" environment variable.
179 The string "path" is stashed in the libguestfs handle,
180 so the caller must make sure it remains valid for the
181 lifetime of the handle.
183 Setting "path" to "NULL" restores the default path.
185 return libguestfsmod.set_path (self._o, path)
188 u"""Return the current search path.
190 This is always non-NULL. If it wasn't set already, then
191 this will return the default path.
193 return libguestfsmod.get_path (self._o)
195 def set_autosync (self, autosync):
196 u"""If "autosync" is true, this enables autosync. Libguestfs
197 will make a best effort attempt to run "g.umount_all"
198 followed by "g.sync" when the handle is closed (also if
199 the program exits without closing handles).
201 This is disabled by default (except in guestfish where
202 it is enabled by default).
204 return libguestfsmod.set_autosync (self._o, autosync)
206 def get_autosync (self):
207 u"""Get the autosync flag.
209 return libguestfsmod.get_autosync (self._o)
211 def set_verbose (self, verbose):
212 u"""If "verbose" is true, this turns on verbose messages (to
215 Verbose messages are disabled unless the environment
216 variable "LIBGUESTFS_DEBUG" is defined and set to 1.
218 return libguestfsmod.set_verbose (self._o, verbose)
220 def get_verbose (self):
221 u"""This returns the verbose messages flag.
223 return libguestfsmod.get_verbose (self._o)
226 u"""This returns true iff this handle is ready to accept
227 commands (in the "READY" state).
229 For more information on states, see guestfs(3).
231 return libguestfsmod.is_ready (self._o)
233 def is_config (self):
234 u"""This returns true iff this handle is being configured
235 (in the "CONFIG" state).
237 For more information on states, see guestfs(3).
239 return libguestfsmod.is_config (self._o)
241 def is_launching (self):
242 u"""This returns true iff this handle is launching the
243 subprocess (in the "LAUNCHING" state).
245 For more information on states, see guestfs(3).
247 return libguestfsmod.is_launching (self._o)
250 u"""This returns true iff this handle is busy processing a
251 command (in the "BUSY" state).
253 For more information on states, see guestfs(3).
255 return libguestfsmod.is_busy (self._o)
257 def get_state (self):
258 u"""This returns the current state as an opaque integer.
259 This is only useful for printing debug and internal
262 For more information on states, see guestfs(3).
264 return libguestfsmod.get_state (self._o)
267 u"""This sets the state to "BUSY". This is only used when
268 implementing actions using the low-level API.
270 For more information on states, see guestfs(3).
272 return libguestfsmod.set_busy (self._o)
274 def set_ready (self):
275 u"""This sets the state to "READY". This is only used when
276 implementing actions using the low-level API.
278 For more information on states, see guestfs(3).
280 return libguestfsmod.set_ready (self._o)
282 def mount (self, device, mountpoint):
283 u"""Mount a guest disk at a position in the filesystem.
284 Block devices are named "/dev/sda", "/dev/sdb" and so
285 on, as they were added to the guest. If those block
286 devices contain partitions, they will have the usual
287 names (eg. "/dev/sda1"). Also LVM "/dev/VG/LV"-style
290 The rules are the same as for mount(2): A filesystem
291 must first be mounted on "/" before others can be
292 mounted. Other filesystems can only be mounted on
293 directories which already exist.
295 The mounted filesystem is writable, if we have
296 sufficient permissions on the underlying device.
298 The filesystem options "sync" and "noatime" are set with
299 this call, in order to improve reliability.
301 return libguestfsmod.mount (self._o, device, mountpoint)
304 u"""This syncs the disk, so that any writes are flushed
305 through to the underlying disk image.
307 You should always call this if you have modified a disk
308 image, before closing the handle.
310 return libguestfsmod.sync (self._o)
312 def touch (self, path):
313 u"""Touch acts like the touch(1) command. It can be used to
314 update the timestamps on a file, or, if the file does
315 not exist, to create a new zero-length file.
317 return libguestfsmod.touch (self._o, path)
319 def cat (self, path):
320 u"""Return the contents of the file named "path".
322 Note that this function cannot correctly handle binary
323 files (specifically, files containing "\\0" character
324 which is treated as end of string). For those you need
325 to use the "g.download" function which has a more
328 Because of the message protocol, there is a transfer
329 limit of somewhere between 2MB and 4MB. To transfer
330 large files you should use FTP.
332 return libguestfsmod.cat (self._o, path)
334 def ll (self, directory):
335 u"""List the files in "directory" (relative to the root
336 directory, there is no cwd) in the format of 'ls -la'.
338 This command is mostly useful for interactive sessions.
339 It is *not* intended that you try to parse the output
342 return libguestfsmod.ll (self._o, directory)
344 def ls (self, directory):
345 u"""List the files in "directory" (relative to the root
346 directory, there is no cwd). The '.' and '..' entries
347 are not returned, but hidden files are shown.
349 This command is mostly useful for interactive sessions.
350 Programs should probably use "g.readdir" instead.
352 This function returns a list of strings.
354 return libguestfsmod.ls (self._o, directory)
356 def list_devices (self):
357 u"""List all the block devices.
359 The full block device names are returned, eg. "/dev/sda"
361 This function returns a list of strings.
363 return libguestfsmod.list_devices (self._o)
365 def list_partitions (self):
366 u"""List all the partitions detected on all block devices.
368 The full partition device names are returned, eg.
371 This does not return logical volumes. For that you will
372 need to call "g.lvs".
374 This function returns a list of strings.
376 return libguestfsmod.list_partitions (self._o)
379 u"""List all the physical volumes detected. This is the
380 equivalent of the pvs(8) command.
382 This returns a list of just the device names that
383 contain PVs (eg. "/dev/sda2").
385 See also "g.pvs_full".
387 This function returns a list of strings.
389 return libguestfsmod.pvs (self._o)
392 u"""List all the volumes groups detected. This is the
393 equivalent of the vgs(8) command.
395 This returns a list of just the volume group names that
396 were detected (eg. "VolGroup00").
398 See also "g.vgs_full".
400 This function returns a list of strings.
402 return libguestfsmod.vgs (self._o)
405 u"""List all the logical volumes detected. This is the
406 equivalent of the lvs(8) command.
408 This returns a list of the logical volume device names
409 (eg. "/dev/VolGroup00/LogVol00").
411 See also "g.lvs_full".
413 This function returns a list of strings.
415 return libguestfsmod.lvs (self._o)
418 u"""List all the physical volumes detected. This is the
419 equivalent of the pvs(8) command. The "full" version
422 This function returns a list of PVs. Each PV is
423 represented as a dictionary.
425 return libguestfsmod.pvs_full (self._o)
428 u"""List all the volumes groups detected. This is the
429 equivalent of the vgs(8) command. The "full" version
432 This function returns a list of VGs. Each VG is
433 represented as a dictionary.
435 return libguestfsmod.vgs_full (self._o)
438 u"""List all the logical volumes detected. This is the
439 equivalent of the lvs(8) command. The "full" version
442 This function returns a list of LVs. Each LV is
443 represented as a dictionary.
445 return libguestfsmod.lvs_full (self._o)
447 def read_lines (self, path):
448 u"""Return the contents of the file named "path".
450 The file contents are returned as a list of lines.
451 Trailing "LF" and "CRLF" character sequences are *not*
454 Note that this function cannot correctly handle binary
455 files (specifically, files containing "\\0" character
456 which is treated as end of line). For those you need to
457 use the "g.read_file" function which has a more complex
460 This function returns a list of strings.
462 return libguestfsmod.read_lines (self._o, path)
464 def aug_init (self, root, flags):
465 u"""Create a new Augeas handle for editing configuration
466 files. If there was any previous Augeas handle
467 associated with this guestfs session, then it is closed.
469 You must call this before using any other "g.aug_*"
472 "root" is the filesystem root. "root" must not be NULL,
475 The flags are the same as the flags defined in
476 <augeas.h>, the logical *or* of the following integers:
478 "AUG_SAVE_BACKUP" = 1
479 Keep the original file with a ".augsave" extension.
481 "AUG_SAVE_NEWFILE" = 2
482 Save changes into a file with extension ".augnew",
483 and do not overwrite original. Overrides
487 Typecheck lenses (can be expensive).
490 Do not use standard load path for modules.
493 Make save a no-op, just record what would have been
497 Do not load the tree in "g.aug_init".
499 To close the handle, you can call "g.aug_close".
501 To find out more about Augeas, see <http://augeas.net/>.
503 return libguestfsmod.aug_init (self._o, root, flags)
505 def aug_close (self):
506 u"""Close the current Augeas handle and free up any
507 resources used by it. After calling this, you have to
508 call "g.aug_init" again before you can use any other
511 return libguestfsmod.aug_close (self._o)
513 def aug_defvar (self, name, expr):
514 u"""Defines an Augeas variable "name" whose value is the
515 result of evaluating "expr". If "expr" is NULL, then
518 On success this returns the number of nodes in "expr",
519 or 0 if "expr" evaluates to something which is not a
522 return libguestfsmod.aug_defvar (self._o, name, expr)
524 def aug_defnode (self, name, expr, val):
525 u"""Defines a variable "name" whose value is the result of
528 If "expr" evaluates to an empty nodeset, a node is
529 created, equivalent to calling "g.aug_set" "expr",
530 "value". "name" will be the nodeset containing that
533 On success this returns a pair containing the number of
534 nodes in the nodeset, and a boolean flag if a node was
537 This function returns a tuple (int, bool).
539 return libguestfsmod.aug_defnode (self._o, name, expr, val)
541 def aug_get (self, path):
542 u"""Look up the value associated with "path". If "path"
543 matches exactly one node, the "value" is returned.
545 return libguestfsmod.aug_get (self._o, path)
547 def aug_set (self, path, val):
548 u"""Set the value associated with "path" to "value".
550 return libguestfsmod.aug_set (self._o, path, val)
552 def aug_insert (self, path, label, before):
553 u"""Create a new sibling "label" for "path", inserting it
554 into the tree before or after "path" (depending on the
555 boolean flag "before").
557 "path" must match exactly one existing node in the tree,
558 and "label" must be a label, ie. not contain "/", "*" or
559 end with a bracketed index "[N]".
561 return libguestfsmod.aug_insert (self._o, path, label, before)
563 def aug_rm (self, path):
564 u"""Remove "path" and all of its children.
566 On success this returns the number of entries which were
569 return libguestfsmod.aug_rm (self._o, path)
571 def aug_mv (self, src, dest):
572 u"""Move the node "src" to "dest". "src" must match exactly
573 one node. "dest" is overwritten if it exists.
575 return libguestfsmod.aug_mv (self._o, src, dest)
577 def aug_match (self, path):
578 u"""Returns a list of paths which match the path expression
579 "path". The returned paths are sufficiently qualified so
580 that they match exactly one node in the current tree.
582 This function returns a list of strings.
584 return libguestfsmod.aug_match (self._o, path)
587 u"""This writes all pending changes to disk.
589 The flags which were passed to "g.aug_init" affect
590 exactly how files are saved.
592 return libguestfsmod.aug_save (self._o)
595 u"""Load files into the tree.
597 See "aug_load" in the Augeas documentation for the full
600 return libguestfsmod.aug_load (self._o)
602 def aug_ls (self, path):
603 u"""This is just a shortcut for listing "g.aug_match"
604 "path/*" and sorting the resulting nodes into
607 This function returns a list of strings.
609 return libguestfsmod.aug_ls (self._o, path)
612 u"""Remove the single file "path".
614 return libguestfsmod.rm (self._o, path)
616 def rmdir (self, path):
617 u"""Remove the single directory "path".
619 return libguestfsmod.rmdir (self._o, path)
621 def rm_rf (self, path):
622 u"""Remove the file or directory "path", recursively
623 removing the contents if its a directory. This is like
624 the "rm -rf" shell command.
626 return libguestfsmod.rm_rf (self._o, path)
628 def mkdir (self, path):
629 u"""Create a directory named "path".
631 return libguestfsmod.mkdir (self._o, path)
633 def mkdir_p (self, path):
634 u"""Create a directory named "path", creating any parent
635 directories as necessary. This is like the "mkdir -p"
638 return libguestfsmod.mkdir_p (self._o, path)
640 def chmod (self, mode, path):
641 u"""Change the mode (permissions) of "path" to "mode". Only
642 numeric modes are supported.
644 return libguestfsmod.chmod (self._o, mode, path)
646 def chown (self, owner, group, path):
647 u"""Change the file owner to "owner" and group to "group".
649 Only numeric uid and gid are supported. If you want to
650 use names, you will need to locate and parse the
651 password file yourself (Augeas support makes this
654 return libguestfsmod.chown (self._o, owner, group, path)
656 def exists (self, path):
657 u"""This returns "true" if and only if there is a file,
658 directory (or anything) with the given "path" name.
660 See also "g.is_file", "g.is_dir", "g.stat".
662 return libguestfsmod.exists (self._o, path)
664 def is_file (self, path):
665 u"""This returns "true" if and only if there is a file with
666 the given "path" name. Note that it returns false for
667 other objects like directories.
671 return libguestfsmod.is_file (self._o, path)
673 def is_dir (self, path):
674 u"""This returns "true" if and only if there is a directory
675 with the given "path" name. Note that it returns false
676 for other objects like files.
680 return libguestfsmod.is_dir (self._o, path)
682 def pvcreate (self, device):
683 u"""This creates an LVM physical volume on the named
684 "device", where "device" should usually be a partition
685 name such as "/dev/sda1".
687 return libguestfsmod.pvcreate (self._o, device)
689 def vgcreate (self, volgroup, physvols):
690 u"""This creates an LVM volume group called "volgroup" from
691 the non-empty list of physical volumes "physvols".
693 return libguestfsmod.vgcreate (self._o, volgroup, physvols)
695 def lvcreate (self, logvol, volgroup, mbytes):
696 u"""This creates an LVM volume group called "logvol" on the
697 volume group "volgroup", with "size" megabytes.
699 return libguestfsmod.lvcreate (self._o, logvol, volgroup, mbytes)
701 def mkfs (self, fstype, device):
702 u"""This creates a filesystem on "device" (usually a
703 partition or LVM logical volume). The filesystem type is
704 "fstype", for example "ext3".
706 return libguestfsmod.mkfs (self._o, fstype, device)
708 def sfdisk (self, device, cyls, heads, sectors, lines):
709 u"""This is a direct interface to the sfdisk(8) program for
710 creating partitions on block devices.
712 "device" should be a block device, for example
715 "cyls", "heads" and "sectors" are the number of
716 cylinders, heads and sectors on the device, which are
717 passed directly to sfdisk as the *-C*, *-H* and *-S*
718 parameters. If you pass 0 for any of these, then the
719 corresponding parameter is omitted. Usually for 'large'
720 disks, you can just pass 0 for these, but for small
721 (floppy-sized) disks, sfdisk (or rather, the kernel)
722 cannot work out the right geometry and you will need to
725 "lines" is a list of lines that we feed to "sfdisk". For
726 more information refer to the sfdisk(8) manpage.
728 To create a single partition occupying the whole disk,
729 you would pass "lines" as a single element list, when
730 the single element being the string "," (comma).
732 This command is dangerous. Without careful use you can
733 easily destroy all your data.
735 return libguestfsmod.sfdisk (self._o, device, cyls, heads, sectors, lines)
737 def write_file (self, path, content, size):
738 u"""This call creates a file called "path". The contents of
739 the file is the string "content" (which can contain any
740 8 bit data), with length "size".
742 As a special case, if "size" is 0 then the length is
743 calculated using "strlen" (so in this case the content
744 cannot contain embedded ASCII NULs).
746 *NB.* Owing to a bug, writing content containing ASCII
747 NUL characters does *not* work, even if the length is
748 specified. We hope to resolve this bug in a future
749 version. In the meantime use "g.upload".
751 Because of the message protocol, there is a transfer
752 limit of somewhere between 2MB and 4MB. To transfer
753 large files you should use FTP.
755 return libguestfsmod.write_file (self._o, path, content, size)
757 def umount (self, pathordevice):
758 u"""This unmounts the given filesystem. The filesystem may
759 be specified either by its mountpoint (path) or the
760 device which contains the filesystem.
762 return libguestfsmod.umount (self._o, pathordevice)
765 u"""This returns the list of currently mounted filesystems.
766 It returns the list of devices (eg. "/dev/sda1",
769 Some internal mounts are not shown.
771 This function returns a list of strings.
773 return libguestfsmod.mounts (self._o)
775 def umount_all (self):
776 u"""This unmounts all mounted filesystems.
778 Some internal mounts are not unmounted by this call.
780 return libguestfsmod.umount_all (self._o)
782 def lvm_remove_all (self):
783 u"""This command removes all LVM logical volumes, volume
784 groups and physical volumes.
786 This command is dangerous. Without careful use you can
787 easily destroy all your data.
789 return libguestfsmod.lvm_remove_all (self._o)
791 def file (self, path):
792 u"""This call uses the standard file(1) command to determine
793 the type or contents of the file. This also works on
794 devices, for example to find out whether a partition
795 contains a filesystem.
797 The exact command which runs is "file -bsL path". Note
798 in particular that the filename is not prepended to the
799 output (the "-b" option).
801 return libguestfsmod.file (self._o, path)
803 def command (self, arguments):
804 u"""This call runs a command from the guest filesystem. The
805 filesystem must be mounted, and must contain a
806 compatible operating system (ie. something Linux, with
807 the same or compatible processor architecture).
809 The single parameter is an argv-style list of arguments.
810 The first element is the name of the program to run.
811 Subsequent elements are parameters. The list must be
812 non-empty (ie. must contain a program name).
814 The $PATH environment variable will contain at least
815 "/usr/bin" and "/bin". If you require a program from
816 another location, you should provide the full path in
819 Shared libraries and data files required by the program
820 must be available on filesystems which are mounted in
821 the correct places. It is the caller's responsibility to
822 ensure all filesystems that are needed are mounted at
825 return libguestfsmod.command (self._o, arguments)
827 def command_lines (self, arguments):
828 u"""This is the same as "g.command", but splits the result
829 into a list of lines.
831 This function returns a list of strings.
833 return libguestfsmod.command_lines (self._o, arguments)
835 def stat (self, path):
836 u"""Returns file information for the given "path".
838 This is the same as the stat(2) system call.
840 This function returns a dictionary, with keys matching
841 the various fields in the stat structure.
843 return libguestfsmod.stat (self._o, path)
845 def lstat (self, path):
846 u"""Returns file information for the given "path".
848 This is the same as "g.stat" except that if "path" is a
849 symbolic link, then the link is stat-ed, not the file it
852 This is the same as the lstat(2) system call.
854 This function returns a dictionary, with keys matching
855 the various fields in the stat structure.
857 return libguestfsmod.lstat (self._o, path)
859 def statvfs (self, path):
860 u"""Returns file system statistics for any mounted file
861 system. "path" should be a file or directory in the
862 mounted file system (typically it is the mount point
863 itself, but it doesn't need to be).
865 This is the same as the statvfs(2) system call.
867 This function returns a dictionary, with keys matching
868 the various fields in the statvfs structure.
870 return libguestfsmod.statvfs (self._o, path)
872 def tune2fs_l (self, device):
873 u"""This returns the contents of the ext2, ext3 or ext4
874 filesystem superblock on "device".
876 It is the same as running "tune2fs -l device". See
877 tune2fs(8) manpage for more details. The list of fields
878 returned isn't clearly defined, and depends on both the
879 version of "tune2fs" that libguestfs was built against,
880 and the filesystem itself.
882 This function returns a dictionary.
884 return libguestfsmod.tune2fs_l (self._o, device)
886 def blockdev_setro (self, device):
887 u"""Sets the block device named "device" to read-only.
889 This uses the blockdev(8) command.
891 return libguestfsmod.blockdev_setro (self._o, device)
893 def blockdev_setrw (self, device):
894 u"""Sets the block device named "device" to read-write.
896 This uses the blockdev(8) command.
898 return libguestfsmod.blockdev_setrw (self._o, device)
900 def blockdev_getro (self, device):
901 u"""Returns a boolean indicating if the block device is
902 read-only (true if read-only, false if not).
904 This uses the blockdev(8) command.
906 return libguestfsmod.blockdev_getro (self._o, device)
908 def blockdev_getss (self, device):
909 u"""This returns the size of sectors on a block device.
910 Usually 512, but can be larger for modern devices.
912 (Note, this is not the size in sectors, use
913 "g.blockdev_getsz" for that).
915 This uses the blockdev(8) command.
917 return libguestfsmod.blockdev_getss (self._o, device)
919 def blockdev_getbsz (self, device):
920 u"""This returns the block size of a device.
922 (Note this is different from both *size in blocks* and
923 *filesystem block size*).
925 This uses the blockdev(8) command.
927 return libguestfsmod.blockdev_getbsz (self._o, device)
929 def blockdev_setbsz (self, device, blocksize):
930 u"""This sets the block size of a device.
932 (Note this is different from both *size in blocks* and
933 *filesystem block size*).
935 This uses the blockdev(8) command.
937 return libguestfsmod.blockdev_setbsz (self._o, device, blocksize)
939 def blockdev_getsz (self, device):
940 u"""This returns the size of the device in units of 512-byte
941 sectors (even if the sectorsize isn't 512 bytes ...
944 See also "g.blockdev_getss" for the real sector size of
945 the device, and "g.blockdev_getsize64" for the more
946 useful *size in bytes*.
948 This uses the blockdev(8) command.
950 return libguestfsmod.blockdev_getsz (self._o, device)
952 def blockdev_getsize64 (self, device):
953 u"""This returns the size of the device in bytes.
955 See also "g.blockdev_getsz".
957 This uses the blockdev(8) command.
959 return libguestfsmod.blockdev_getsize64 (self._o, device)
961 def blockdev_flushbufs (self, device):
962 u"""This tells the kernel to flush internal buffers
963 associated with "device".
965 This uses the blockdev(8) command.
967 return libguestfsmod.blockdev_flushbufs (self._o, device)
969 def blockdev_rereadpt (self, device):
970 u"""Reread the partition table on "device".
972 This uses the blockdev(8) command.
974 return libguestfsmod.blockdev_rereadpt (self._o, device)
976 def upload (self, filename, remotefilename):
977 u"""Upload local file "filename" to "remotefilename" on the
980 "filename" can also be a named pipe.
982 See also "g.download".
984 return libguestfsmod.upload (self._o, filename, remotefilename)
986 def download (self, remotefilename, filename):
987 u"""Download file "remotefilename" and save it as "filename"
988 on the local machine.
990 "filename" can also be a named pipe.
992 See also "g.upload", "g.cat".
994 return libguestfsmod.download (self._o, remotefilename, filename)
996 def checksum (self, csumtype, path):
997 u"""This call computes the MD5, SHAx or CRC checksum of the
1000 The type of checksum to compute is given by the
1001 "csumtype" parameter which must have one of the
1005 Compute the cyclic redundancy check (CRC) specified
1006 by POSIX for the "cksum" command.
1009 Compute the MD5 hash (using the "md5sum" program).
1012 Compute the SHA1 hash (using the "sha1sum" program).
1015 Compute the SHA224 hash (using the "sha224sum"
1019 Compute the SHA256 hash (using the "sha256sum"
1023 Compute the SHA384 hash (using the "sha384sum"
1027 Compute the SHA512 hash (using the "sha512sum"
1030 The checksum is returned as a printable string.
1032 return libguestfsmod.checksum (self._o, csumtype, path)
1034 def tar_in (self, tarfile, directory):
1035 u"""This command uploads and unpacks local file "tarfile"
1036 (an *uncompressed* tar file) into "directory".
1038 To upload a compressed tarball, use "g.tgz_in".
1040 return libguestfsmod.tar_in (self._o, tarfile, directory)
1042 def tar_out (self, directory, tarfile):
1043 u"""This command packs the contents of "directory" and
1044 downloads it to local file "tarfile".
1046 To download a compressed tarball, use "g.tgz_out".
1048 return libguestfsmod.tar_out (self._o, directory, tarfile)
1050 def tgz_in (self, tarball, directory):
1051 u"""This command uploads and unpacks local file "tarball" (a
1052 *gzip compressed* tar file) into "directory".
1054 To upload an uncompressed tarball, use "g.tar_in".
1056 return libguestfsmod.tgz_in (self._o, tarball, directory)
1058 def tgz_out (self, directory, tarball):
1059 u"""This command packs the contents of "directory" and
1060 downloads it to local file "tarball".
1062 To download an uncompressed tarball, use "g.tar_out".
1064 return libguestfsmod.tgz_out (self._o, directory, tarball)
1066 def mount_ro (self, device, mountpoint):
1067 u"""This is the same as the "g.mount" command, but it mounts
1068 the filesystem with the read-only (*-o ro*) flag.
1070 return libguestfsmod.mount_ro (self._o, device, mountpoint)
1072 def mount_options (self, options, device, mountpoint):
1073 u"""This is the same as the "g.mount" command, but it allows
1074 you to set the mount options as for the mount(8) *-o*
1077 return libguestfsmod.mount_options (self._o, options, device, mountpoint)
1079 def mount_vfs (self, options, vfstype, device, mountpoint):
1080 u"""This is the same as the "g.mount" command, but it allows
1081 you to set both the mount options and the vfstype as for
1082 the mount(8) *-o* and *-t* flags.
1084 return libguestfsmod.mount_vfs (self._o, options, vfstype, device, mountpoint)
1086 def debug (self, subcmd, extraargs):
1087 u"""The "g.debug" command exposes some internals of
1088 "guestfsd" (the guestfs daemon) that runs inside the
1091 There is no comprehensive help for this command. You
1092 have to look at the file "daemon/debug.c" in the
1093 libguestfs source to find out what you can do.
1095 return libguestfsmod.debug (self._o, subcmd, extraargs)
1097 def lvremove (self, device):
1098 u"""Remove an LVM logical volume "device", where "device" is
1099 the path to the LV, such as "/dev/VG/LV".
1101 You can also remove all LVs in a volume group by
1102 specifying the VG name, "/dev/VG".
1104 return libguestfsmod.lvremove (self._o, device)
1106 def vgremove (self, vgname):
1107 u"""Remove an LVM volume group "vgname", (for example "VG").
1109 This also forcibly removes all logical volumes in the
1110 volume group (if any).
1112 return libguestfsmod.vgremove (self._o, vgname)
1114 def pvremove (self, device):
1115 u"""This wipes a physical volume "device" so that LVM will
1116 no longer recognise it.
1118 The implementation uses the "pvremove" command which
1119 refuses to wipe physical volumes that contain any volume
1120 groups, so you have to remove those first.
1122 return libguestfsmod.pvremove (self._o, device)
1124 def set_e2label (self, device, label):
1125 u"""This sets the ext2/3/4 filesystem label of the
1126 filesystem on "device" to "label". Filesystem labels are
1127 limited to 16 characters.
1129 You can use either "g.tune2fs_l" or "g.get_e2label" to
1130 return the existing label on a filesystem.
1132 return libguestfsmod.set_e2label (self._o, device, label)
1134 def get_e2label (self, device):
1135 u"""This returns the ext2/3/4 filesystem label of the
1136 filesystem on "device".
1138 return libguestfsmod.get_e2label (self._o, device)
1140 def set_e2uuid (self, device, uuid):
1141 u"""This sets the ext2/3/4 filesystem UUID of the filesystem
1142 on "device" to "uuid". The format of the UUID and
1143 alternatives such as "clear", "random" and "time" are
1144 described in the tune2fs(8) manpage.
1146 You can use either "g.tune2fs_l" or "g.get_e2uuid" to
1147 return the existing UUID of a filesystem.
1149 return libguestfsmod.set_e2uuid (self._o, device, uuid)
1151 def get_e2uuid (self, device):
1152 u"""This returns the ext2/3/4 filesystem UUID of the
1153 filesystem on "device".
1155 return libguestfsmod.get_e2uuid (self._o, device)
1157 def fsck (self, fstype, device):
1158 u"""This runs the filesystem checker (fsck) on "device"
1159 which should have filesystem type "fstype".
1161 The returned integer is the status. See fsck(8) for the
1162 list of status codes from "fsck".
1166 * Multiple status codes can be summed together.
1168 * A non-zero return code can mean "success", for
1169 example if errors have been corrected on the
1172 * Checking or repairing NTFS volumes is not supported
1175 This command is entirely equivalent to running "fsck -a
1178 return libguestfsmod.fsck (self._o, fstype, device)
1180 def zero (self, device):
1181 u"""This command writes zeroes over the first few blocks of
1184 How many blocks are zeroed isn't specified (but it's
1185 *not* enough to securely wipe the device). It should be
1186 sufficient to remove any partition tables, filesystem
1187 superblocks and so on.
1189 return libguestfsmod.zero (self._o, device)
1191 def grub_install (self, root, device):
1192 u"""This command installs GRUB (the Grand Unified
1193 Bootloader) on "device", with the root directory being
1196 return libguestfsmod.grub_install (self._o, root, device)
1198 def cp (self, src, dest):
1199 u"""This copies a file from "src" to "dest" where "dest" is
1200 either a destination filename or destination directory.
1202 return libguestfsmod.cp (self._o, src, dest)
1204 def cp_a (self, src, dest):
1205 u"""This copies a file or directory from "src" to "dest"
1206 recursively using the "cp -a" command.
1208 return libguestfsmod.cp_a (self._o, src, dest)
1210 def mv (self, src, dest):
1211 u"""This moves a file from "src" to "dest" where "dest" is
1212 either a destination filename or destination directory.
1214 return libguestfsmod.mv (self._o, src, dest)
1216 def drop_caches (self, whattodrop):
1217 u"""This instructs the guest kernel to drop its page cache,
1218 and/or dentries and inode caches. The parameter
1219 "whattodrop" tells the kernel what precisely to drop,
1220 see <http://linux-mm.org/Drop_Caches>
1222 Setting "whattodrop" to 3 should drop everything.
1224 This automatically calls sync(2) before the operation,
1225 so that the maximum guest memory is freed.
1227 return libguestfsmod.drop_caches (self._o, whattodrop)
1230 u"""This returns the kernel messages ("dmesg" output) from
1231 the guest kernel. This is sometimes useful for extended
1232 debugging of problems.
1234 Another way to get the same information is to enable
1235 verbose messages with "g.set_verbose" or by setting the
1236 environment variable "LIBGUESTFS_DEBUG=1" before running
1239 return libguestfsmod.dmesg (self._o)
1241 def ping_daemon (self):
1242 u"""This is a test probe into the guestfs daemon running
1243 inside the qemu subprocess. Calling this function checks
1244 that the daemon responds to the ping message, without
1245 affecting the daemon or attached block device(s) in any
1248 return libguestfsmod.ping_daemon (self._o)
1250 def equal (self, file1, file2):
1251 u"""This compares the two files "file1" and "file2" and
1252 returns true if their content is exactly equal, or false
1255 The external cmp(1) program is used for the comparison.
1257 return libguestfsmod.equal (self._o, file1, file2)
1259 def strings (self, path):
1260 u"""This runs the strings(1) command on a file and returns
1261 the list of printable strings found.
1263 This function returns a list of strings.
1265 Because of the message protocol, there is a transfer
1266 limit of somewhere between 2MB and 4MB. To transfer
1267 large files you should use FTP.
1269 return libguestfsmod.strings (self._o, path)
1271 def strings_e (self, encoding, path):
1272 u"""This is like the "g.strings" command, but allows you to
1273 specify the encoding.
1275 See the strings(1) manpage for the full list of
1278 Commonly useful encodings are "l" (lower case L) which
1279 will show strings inside Windows/x86 files.
1281 The returned strings are transcoded to UTF-8.
1283 This function returns a list of strings.
1285 Because of the message protocol, there is a transfer
1286 limit of somewhere between 2MB and 4MB. To transfer
1287 large files you should use FTP.
1289 return libguestfsmod.strings_e (self._o, encoding, path)
1291 def hexdump (self, path):
1292 u"""This runs "hexdump -C" on the given "path". The result
1293 is the human-readable, canonical hex dump of the file.
1295 Because of the message protocol, there is a transfer
1296 limit of somewhere between 2MB and 4MB. To transfer
1297 large files you should use FTP.
1299 return libguestfsmod.hexdump (self._o, path)