Added notes to the 'fsck' command documentation.
[libguestfs.git] / python / guestfs.py
index 9739fa5..022150b 100644 (file)
@@ -143,6 +143,32 @@ class GuestFS:
         """
         return libguestfsmod.config (self._o, qemuparam, qemuvalue)
 
         """
         return libguestfsmod.config (self._o, qemuparam, qemuvalue)
 
+    def set_qemu (self, qemu):
+        u"""Set the qemu binary that we will use.
+        
+        The default is chosen when the library was compiled by
+        the configure script.
+        
+        You can also override this by setting the
+        "LIBGUESTFS_QEMU" environment variable.
+        
+        The string "qemu" is stashed in the libguestfs handle,
+        so the caller must make sure it remains valid for the
+        lifetime of the handle.
+        
+        Setting "qemu" to "NULL" restores the default qemu
+        binary.
+        """
+        return libguestfsmod.set_qemu (self._o, qemu)
+
+    def get_qemu (self):
+        u"""Return the current qemu binary.
+        
+        This is always non-NULL. If it wasn't set already, then
+        this will return the default qemu binary name.
+        """
+        return libguestfsmod.get_qemu (self._o)
+
     def set_path (self, path):
         u"""Set the path that libguestfs searches for kernel and
         initrd.img.
     def set_path (self, path):
         u"""Set the path that libguestfs searches for kernel and
         initrd.img.
@@ -168,9 +194,12 @@ class GuestFS:
 
     def set_autosync (self, autosync):
         u"""If "autosync" is true, this enables autosync. Libguestfs
 
     def set_autosync (self, autosync):
         u"""If "autosync" is true, this enables autosync. Libguestfs
-        will make a best effort attempt to run "g.sync" when the
-        handle is closed (also if the program exits without
-        closing handles).
+        will make a best effort attempt to run "g.umount_all"
+        followed by "g.sync" when the handle is closed (also if
+        the program exits without closing handles).
+        
+        This is disabled by default (except in guestfish where
+        it is enabled by default).
         """
         return libguestfsmod.set_autosync (self._o, autosync)
 
         """
         return libguestfsmod.set_autosync (self._o, autosync)
 
@@ -193,6 +222,63 @@ class GuestFS:
         """
         return libguestfsmod.get_verbose (self._o)
 
         """
         return libguestfsmod.get_verbose (self._o)
 
+    def is_ready (self):
+        u"""This returns true iff this handle is ready to accept
+        commands (in the "READY" state).
+        
+        For more information on states, see guestfs(3).
+        """
+        return libguestfsmod.is_ready (self._o)
+
+    def is_config (self):
+        u"""This returns true iff this handle is being configured
+        (in the "CONFIG" state).
+        
+        For more information on states, see guestfs(3).
+        """
+        return libguestfsmod.is_config (self._o)
+
+    def is_launching (self):
+        u"""This returns true iff this handle is launching the
+        subprocess (in the "LAUNCHING" state).
+        
+        For more information on states, see guestfs(3).
+        """
+        return libguestfsmod.is_launching (self._o)
+
+    def is_busy (self):
+        u"""This returns true iff this handle is busy processing a
+        command (in the "BUSY" state).
+        
+        For more information on states, see guestfs(3).
+        """
+        return libguestfsmod.is_busy (self._o)
+
+    def get_state (self):
+        u"""This returns the current state as an opaque integer.
+        This is only useful for printing debug and internal
+        error messages.
+        
+        For more information on states, see guestfs(3).
+        """
+        return libguestfsmod.get_state (self._o)
+
+    def set_busy (self):
+        u"""This sets the state to "BUSY". This is only used when
+        implementing actions using the low-level API.
+        
+        For more information on states, see guestfs(3).
+        """
+        return libguestfsmod.set_busy (self._o)
+
+    def set_ready (self):
+        u"""This sets the state to "READY". This is only used when
+        implementing actions using the low-level API.
+        
+        For more information on states, see guestfs(3).
+        """
+        return libguestfsmod.set_ready (self._o)
+
     def mount (self, device, mountpoint):
         u"""Mount a guest disk at a position in the filesystem.
         Block devices are named "/dev/sda", "/dev/sdb" and so
     def mount (self, device, mountpoint):
         u"""Mount a guest disk at a position in the filesystem.
         Block devices are named "/dev/sda", "/dev/sdb" and so
@@ -236,7 +322,7 @@ class GuestFS:
         Note that this function cannot correctly handle binary
         files (specifically, files containing "\\0" character
         which is treated as end of string). For those you need
         Note that this function cannot correctly handle binary
         files (specifically, files containing "\\0" character
         which is treated as end of string). For those you need
-        to use the "g.read_file" function which has a more
+        to use the "g.download" function which has a more
         complex interface.
         
         Because of the message protocol, there is a transfer
         complex interface.
         
         Because of the message protocol, there is a transfer
@@ -779,8 +865,8 @@ class GuestFS:
         return libguestfsmod.statvfs (self._o, path)
 
     def tune2fs_l (self, device):
         return libguestfsmod.statvfs (self._o, path)
 
     def tune2fs_l (self, device):
-        u"""This returns the contents of the ext2 or ext3 filesystem
-        superblock on "device".
+        u"""This returns the contents of the ext2, ext3 or ext4
+        filesystem superblock on "device".
         
         It is the same as running "tune2fs -l device". See
         tune2fs(8) manpage for more details. The list of fields
         
         It is the same as running "tune2fs -l device". See
         tune2fs(8) manpage for more details. The list of fields
@@ -882,3 +968,218 @@ class GuestFS:
         """
         return libguestfsmod.blockdev_rereadpt (self._o, device)
 
         """
         return libguestfsmod.blockdev_rereadpt (self._o, device)
 
+    def upload (self, filename, remotefilename):
+        u"""Upload local file "filename" to "remotefilename" on the
+        filesystem.
+        
+        "filename" can also be a named pipe.
+        
+        See also "g.download".
+        """
+        return libguestfsmod.upload (self._o, filename, remotefilename)
+
+    def download (self, remotefilename, filename):
+        u"""Download file "remotefilename" and save it as "filename"
+        on the local machine.
+        
+        "filename" can also be a named pipe.
+        
+        See also "g.upload", "g.cat".
+        """
+        return libguestfsmod.download (self._o, remotefilename, filename)
+
+    def checksum (self, csumtype, path):
+        u"""This call computes the MD5, SHAx or CRC checksum of the
+        file named "path".
+        
+        The type of checksum to compute is given by the
+        "csumtype" parameter which must have one of the
+        following values:
+        
+        "crc"
+        Compute the cyclic redundancy check (CRC) specified
+        by POSIX for the "cksum" command.
+        
+        "md5"
+        Compute the MD5 hash (using the "md5sum" program).
+        
+        "sha1"
+        Compute the SHA1 hash (using the "sha1sum" program).
+        
+        "sha224"
+        Compute the SHA224 hash (using the "sha224sum"
+        program).
+        
+        "sha256"
+        Compute the SHA256 hash (using the "sha256sum"
+        program).
+        
+        "sha384"
+        Compute the SHA384 hash (using the "sha384sum"
+        program).
+        
+        "sha512"
+        Compute the SHA512 hash (using the "sha512sum"
+        program).
+        
+        The checksum is returned as a printable string.
+        """
+        return libguestfsmod.checksum (self._o, csumtype, path)
+
+    def tar_in (self, tarfile, directory):
+        u"""This command uploads and unpacks local file "tarfile"
+        (an *uncompressed* tar file) into "directory".
+        
+        To upload a compressed tarball, use "g.tgz_in".
+        """
+        return libguestfsmod.tar_in (self._o, tarfile, directory)
+
+    def tar_out (self, directory, tarfile):
+        u"""This command packs the contents of "directory" and
+        downloads it to local file "tarfile".
+        
+        To download a compressed tarball, use "g.tgz_out".
+        """
+        return libguestfsmod.tar_out (self._o, directory, tarfile)
+
+    def tgz_in (self, tarball, directory):
+        u"""This command uploads and unpacks local file "tarball" (a
+        *gzip compressed* tar file) into "directory".
+        
+        To upload an uncompressed tarball, use "g.tar_in".
+        """
+        return libguestfsmod.tgz_in (self._o, tarball, directory)
+
+    def tgz_out (self, directory, tarball):
+        u"""This command packs the contents of "directory" and
+        downloads it to local file "tarball".
+        
+        To download an uncompressed tarball, use "g.tar_out".
+        """
+        return libguestfsmod.tgz_out (self._o, directory, tarball)
+
+    def mount_ro (self, device, mountpoint):
+        u"""This is the same as the "g.mount" command, but it mounts
+        the filesystem with the read-only (*-o ro*) flag.
+        """
+        return libguestfsmod.mount_ro (self._o, device, mountpoint)
+
+    def mount_options (self, options, device, mountpoint):
+        u"""This is the same as the "g.mount" command, but it allows
+        you to set the mount options as for the mount(8) *-o*
+        flag.
+        """
+        return libguestfsmod.mount_options (self._o, options, device, mountpoint)
+
+    def mount_vfs (self, options, vfstype, device, mountpoint):
+        u"""This is the same as the "g.mount" command, but it allows
+        you to set both the mount options and the vfstype as for
+        the mount(8) *-o* and *-t* flags.
+        """
+        return libguestfsmod.mount_vfs (self._o, options, vfstype, device, mountpoint)
+
+    def debug (self, subcmd, extraargs):
+        u"""The "g.debug" command exposes some internals of
+        "guestfsd" (the guestfs daemon) that runs inside the
+        qemu subprocess.
+        
+        There is no comprehensive help for this command. You
+        have to look at the file "daemon/debug.c" in the
+        libguestfs source to find out what you can do.
+        """
+        return libguestfsmod.debug (self._o, subcmd, extraargs)
+
+    def lvremove (self, device):
+        u"""Remove an LVM logical volume "device", where "device" is
+        the path to the LV, such as "/dev/VG/LV".
+        
+        You can also remove all LVs in a volume group by
+        specifying the VG name, "/dev/VG".
+        """
+        return libguestfsmod.lvremove (self._o, device)
+
+    def vgremove (self, vgname):
+        u"""Remove an LVM volume group "vgname", (for example "VG").
+        
+        This also forcibly removes all logical volumes in the
+        volume group (if any).
+        """
+        return libguestfsmod.vgremove (self._o, vgname)
+
+    def pvremove (self, device):
+        u"""This wipes a physical volume "device" so that LVM will
+        no longer recognise it.
+        
+        The implementation uses the "pvremove" command which
+        refuses to wipe physical volumes that contain any volume
+        groups, so you have to remove those first.
+        """
+        return libguestfsmod.pvremove (self._o, device)
+
+    def set_e2label (self, device, label):
+        u"""This sets the ext2/3/4 filesystem label of the
+        filesystem on "device" to "label". Filesystem labels are
+        limited to 16 characters.
+        
+        You can use either "g.tune2fs_l" or "g.get_e2label" to
+        return the existing label on a filesystem.
+        """
+        return libguestfsmod.set_e2label (self._o, device, label)
+
+    def get_e2label (self, device):
+        u"""This returns the ext2/3/4 filesystem label of the
+        filesystem on "device".
+        """
+        return libguestfsmod.get_e2label (self._o, device)
+
+    def set_e2uuid (self, device, uuid):
+        u"""This sets the ext2/3/4 filesystem UUID of the filesystem
+        on "device" to "uuid". The format of the UUID and
+        alternatives such as "clear", "random" and "time" are
+        described in the tune2fs(8) manpage.
+        
+        You can use either "g.tune2fs_l" or "g.get_e2uuid" to
+        return the existing UUID of a filesystem.
+        """
+        return libguestfsmod.set_e2uuid (self._o, device, uuid)
+
+    def get_e2uuid (self, device):
+        u"""This returns the ext2/3/4 filesystem UUID of the
+        filesystem on "device".
+        """
+        return libguestfsmod.get_e2uuid (self._o, device)
+
+    def fsck (self, fstype, device):
+        u"""This runs the filesystem checker (fsck) on "device"
+        which should have filesystem type "fstype".
+        
+        The returned integer is the status. See fsck(8) for the
+        list of status codes from "fsck".
+        
+        Notes:
+        
+        *   Multiple status codes can be summed together.
+        
+        *   A non-zero return code can mean "success", for
+        example if errors have been corrected on the
+        filesystem.
+        
+        *   Checking or repairing NTFS volumes is not supported
+        (by linux-ntfs).
+        
+        This command is entirely equivalent to running "fsck -a
+        -t fstype device".
+        """
+        return libguestfsmod.fsck (self._o, fstype, device)
+
+    def zero (self, device):
+        u"""This command writes zeroes over the first few blocks of
+        "device".
+        
+        How many blocks are zeroed isn't specified (but it's
+        *not* enough to securely wipe the device). It should be
+        sufficient to remove any partition tables, filesystem
+        superblocks and so on.
+        """
+        return libguestfsmod.zero (self._o, device)
+