Generated code for the virtio_blk change.
[libguestfs.git] / python / guestfs.py
index 9cf9d88..ad44df7 100644 (file)
@@ -78,6 +78,87 @@ class GuestFS:
     def __del__ (self):
         libguestfsmod.close (self._o)
 
+    def test0 (self, str, optstr, strlist, b, integer, filein, fileout):
+        return libguestfsmod.test0 (self._o, str, optstr, strlist, b, integer, filein, fileout)
+
+    def test0rint (self, val):
+        return libguestfsmod.test0rint (self._o, val)
+
+    def test0rinterr (self):
+        return libguestfsmod.test0rinterr (self._o)
+
+    def test0rint64 (self, val):
+        return libguestfsmod.test0rint64 (self._o, val)
+
+    def test0rint64err (self):
+        return libguestfsmod.test0rint64err (self._o)
+
+    def test0rbool (self, val):
+        return libguestfsmod.test0rbool (self._o, val)
+
+    def test0rboolerr (self):
+        return libguestfsmod.test0rboolerr (self._o)
+
+    def test0rconststring (self, val):
+        return libguestfsmod.test0rconststring (self._o, val)
+
+    def test0rconststringerr (self):
+        return libguestfsmod.test0rconststringerr (self._o)
+
+    def test0rstring (self, val):
+        return libguestfsmod.test0rstring (self._o, val)
+
+    def test0rstringerr (self):
+        return libguestfsmod.test0rstringerr (self._o)
+
+    def test0rstringlist (self, val):
+        return libguestfsmod.test0rstringlist (self._o, val)
+
+    def test0rstringlisterr (self):
+        return libguestfsmod.test0rstringlisterr (self._o)
+
+    def test0rintbool (self, val):
+        return libguestfsmod.test0rintbool (self._o, val)
+
+    def test0rintboolerr (self):
+        return libguestfsmod.test0rintboolerr (self._o)
+
+    def test0rpvlist (self, val):
+        return libguestfsmod.test0rpvlist (self._o, val)
+
+    def test0rpvlisterr (self):
+        return libguestfsmod.test0rpvlisterr (self._o)
+
+    def test0rvglist (self, val):
+        return libguestfsmod.test0rvglist (self._o, val)
+
+    def test0rvglisterr (self):
+        return libguestfsmod.test0rvglisterr (self._o)
+
+    def test0rlvlist (self, val):
+        return libguestfsmod.test0rlvlist (self._o, val)
+
+    def test0rlvlisterr (self):
+        return libguestfsmod.test0rlvlisterr (self._o)
+
+    def test0rstat (self, val):
+        return libguestfsmod.test0rstat (self._o, val)
+
+    def test0rstaterr (self):
+        return libguestfsmod.test0rstaterr (self._o)
+
+    def test0rstatvfs (self, val):
+        return libguestfsmod.test0rstatvfs (self._o, val)
+
+    def test0rstatvfserr (self):
+        return libguestfsmod.test0rstatvfserr (self._o)
+
+    def test0rhashtable (self, val):
+        return libguestfsmod.test0rhashtable (self._o, val)
+
+    def test0rhashtableerr (self):
+        return libguestfsmod.test0rhashtableerr (self._o)
+
     def launch (self):
         u"""Internally libguestfs is implemented by running a
         virtual machine using qemu(1).
@@ -116,7 +197,13 @@ class GuestFS:
         to modify the image).
         
         This is equivalent to the qemu parameter "-drive
-        file=filename".
+        file=filename,cache=off,if=virtio".
+        
+        Note that this call checks for the existence of
+        "filename". This stops you from specifying other types
+        of drive which are supported by qemu such as "nbd:" and
+        "http:" URLs. To specify those, use the general
+        "g.config" call instead.
         """
         return libguestfsmod.add_drive (self._o, filename)
 
@@ -126,9 +213,37 @@ class GuestFS:
         
         This is equivalent to the qemu parameter "-cdrom
         filename".
+        
+        Note that this call checks for the existence of
+        "filename". This stops you from specifying other types
+        of drive which are supported by qemu such as "nbd:" and
+        "http:" URLs. To specify those, use the general
+        "g.config" call instead.
         """
         return libguestfsmod.add_cdrom (self._o, filename)
 
+    def add_drive_ro (self, filename):
+        u"""This adds a drive in snapshot mode, making it
+        effectively read-only.
+        
+        Note that writes to the device are allowed, and will be
+        seen for the duration of the guestfs handle, but they
+        are written to a temporary file which is discarded as
+        soon as the guestfs handle is closed. We don't currently
+        have any method to enable changes to be committed,
+        although qemu can support this.
+        
+        This is equivalent to the qemu parameter "-drive
+        file=filename,snapshot=on,if=virtio".
+        
+        Note that this call checks for the existence of
+        "filename". This stops you from specifying other types
+        of drive which are supported by qemu such as "nbd:" and
+        "http:" URLs. To specify those, use the general
+        "g.config" call instead.
+        """
+        return libguestfsmod.add_drive_ro (self._o, filename)
+
     def config (self, qemuparam, qemuvalue):
         u"""This can be used to add arbitrary qemu command line
         parameters of the form "-param value". Actually it's not
@@ -152,10 +267,6 @@ class GuestFS:
         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.
         """
@@ -176,10 +287,6 @@ class GuestFS:
         The default is "$libdir/guestfs" unless overridden by
         setting "LIBGUESTFS_PATH" environment variable.
         
-        The string "path" is stashed in the libguestfs handle,
-        so the caller must make sure it remains valid for the
-        lifetime of the handle.
-        
         Setting "path" to "NULL" restores the default path.
         """
         return libguestfsmod.set_path (self._o, path)
@@ -192,6 +299,26 @@ class GuestFS:
         """
         return libguestfsmod.get_path (self._o)
 
+    def set_append (self, append):
+        u"""This function is used to add additional options to the
+        guest kernel command line.
+        
+        The default is "NULL" unless overridden by setting
+        "LIBGUESTFS_APPEND" environment variable.
+        
+        Setting "append" to "NULL" means *no* additional options
+        are passed (libguestfs always adds a few of its own).
+        """
+        return libguestfsmod.set_append (self._o, append)
+
+    def get_append (self):
+        u"""Return the additional kernel options which are added to
+        the guest kernel command line.
+        
+        If "NULL" then no options are added.
+        """
+        return libguestfsmod.get_append (self._o)
+
     def set_autosync (self, autosync):
         u"""If "autosync" is true, this enables autosync. Libguestfs
         will make a best effort attempt to run "g.umount_all"
@@ -279,6 +406,42 @@ class GuestFS:
         """
         return libguestfsmod.set_ready (self._o)
 
+    def end_busy (self):
+        u"""This sets the state to "READY", or if in "CONFIG" then
+        it leaves the state as is. This is only used when
+        implementing actions using the low-level API.
+        
+        For more information on states, see guestfs(3).
+        """
+        return libguestfsmod.end_busy (self._o)
+
+    def set_memsize (self, memsize):
+        u"""This sets the memory size in megabytes allocated to the
+        qemu subprocess. This only has any effect if called
+        before "g.launch".
+        
+        You can also change this by setting the environment
+        variable "LIBGUESTFS_MEMSIZE" before the handle is
+        created.
+        
+        For more information on the architecture of libguestfs,
+        see guestfs(3).
+        """
+        return libguestfsmod.set_memsize (self._o, memsize)
+
+    def get_memsize (self):
+        u"""This gets the memory size in megabytes allocated to the
+        qemu subprocess.
+        
+        If "g.set_memsize" was not called on this handle, and if
+        "LIBGUESTFS_MEMSIZE" was not set, then this returns the
+        compiled-in default value for memsize.
+        
+        For more information on the architecture of libguestfs,
+        see guestfs(3).
+        """
+        return libguestfsmod.get_memsize (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
@@ -729,6 +892,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.
         """
@@ -809,7 +974,16 @@ class GuestFS:
         The single parameter is an argv-style list of arguments.
         The first element is the name of the program to run.
         Subsequent elements are parameters. The list must be
-        non-empty (ie. must contain a program name).
+        non-empty (ie. must contain a program name). Note that
+        the command runs directly, and is *not* invoked via the
+        shell (see "g.sh").
+        
+        The return value is anything printed to *stdout* by the
+        command.
+        
+        If the command returns a non-zero exit status, then this
+        function returns an error message. The error message
+        string is the content of *stderr* from the command.
         
         The $PATH environment variable will contain at least
         "/usr/bin" and "/bin". If you require a program from
@@ -821,6 +995,10 @@ class GuestFS:
         the correct places. It is the caller's responsibility to
         ensure all filesystems that are needed are mounted at
         the right locations.
+        
+        Because of the message protocol, there is a transfer
+        limit of somewhere between 2MB and 4MB. To transfer
+        large files you should use FTP.
         """
         return libguestfsmod.command (self._o, arguments)
 
@@ -828,7 +1006,13 @@ class GuestFS:
         u"""This is the same as "g.command", but splits the result
         into a list of lines.
         
+        See also: "g.sh_lines"
+        
         This function returns a list of strings.
+        
+        Because of the message protocol, there is a transfer
+        limit of somewhere between 2MB and 4MB. To transfer
+        large files you should use FTP.
         """
         return libguestfsmod.command_lines (self._o, arguments)
 
@@ -1185,6 +1369,8 @@ class GuestFS:
         *not* enough to securely wipe the device). It should be
         sufficient to remove any partition tables, filesystem
         superblocks and so on.
+        
+        See also: "g.scrub_device".
         """
         return libguestfsmod.zero (self._o, device)
 
@@ -1298,3 +1484,477 @@ class GuestFS:
         """
         return libguestfsmod.hexdump (self._o, path)
 
+    def zerofree (self, device):
+        u"""This runs the *zerofree* program on "device". This
+        program claims to zero unused inodes and disk blocks on
+        an ext2/3 filesystem, thus making it possible to
+        compress the filesystem more effectively.
+        
+        You should not run this program if the filesystem is
+        mounted.
+        
+        It is possible that using this program can damage the
+        filesystem or data on the filesystem.
+        """
+        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, partnum, 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, partnum, 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)
+
+    def vg_activate_all (self, activate):
+        u"""This command activates or (if "activate" is false)
+        deactivates all logical volumes in all volume groups. If
+        activated, then they are made known to the kernel, ie.
+        they appear as "/dev/mapper" devices. If deactivated,
+        then those devices disappear.
+        
+        This command is the same as running "vgchange -a y|n"
+        """
+        return libguestfsmod.vg_activate_all (self._o, activate)
+
+    def vg_activate (self, activate, volgroups):
+        u"""This command activates or (if "activate" is false)
+        deactivates all logical volumes in the listed volume
+        groups "volgroups". If activated, then they are made
+        known to the kernel, ie. they appear as "/dev/mapper"
+        devices. If deactivated, then those devices disappear.
+        
+        This command is the same as running "vgchange -a y|n
+        volgroups..."
+        
+        Note that if "volgroups" is an empty list then all
+        volume groups are activated or deactivated.
+        """
+        return libguestfsmod.vg_activate (self._o, activate, volgroups)
+
+    def lvresize (self, device, mbytes):
+        u"""This resizes (expands or shrinks) an existing LVM
+        logical volume to "mbytes". When reducing, data in the
+        reduced part is lost.
+        """
+        return libguestfsmod.lvresize (self._o, device, mbytes)
+
+    def resize2fs (self, device):
+        u"""This resizes an ext2 or ext3 filesystem to match the
+        size of the underlying device.
+        
+        *Note:* It is sometimes required that you run
+        "g.e2fsck_f" on the "device" before calling this
+        command. For unknown reasons "resize2fs" sometimes gives
+        an error about this and sometimes not. In any case, it
+        is always safe to call "g.e2fsck_f" before calling this
+        function.
+        """
+        return libguestfsmod.resize2fs (self._o, device)
+
+    def find (self, directory):
+        u"""This command lists out all files and directories,
+        recursively, starting at "directory". It is essentially
+        equivalent to running the shell command "find directory
+        -print" but some post-processing happens on the output,
+        described below.
+        
+        This returns a list of strings *without any prefix*.
+        Thus if the directory structure was:
+        
+        /tmp/a
+        /tmp/b
+        /tmp/c/d
+        
+        then the returned list from "g.find" "/tmp" would be 4
+        elements:
+        
+        a
+        b
+        c
+        c/d
+        
+        If "directory" is not a directory, then this command
+        returns an error.
+        
+        The returned list is sorted.
+        
+        This function returns a list of strings.
+        """
+        return libguestfsmod.find (self._o, directory)
+
+    def e2fsck_f (self, device):
+        u"""This runs "e2fsck -p -f device", ie. runs the ext2/ext3
+        filesystem checker on "device", noninteractively ("-p"),
+        even if the filesystem appears to be clean ("-f").
+        
+        This command is only needed because of "g.resize2fs"
+        (q.v.). Normally you should use "g.fsck".
+        """
+        return libguestfsmod.e2fsck_f (self._o, device)
+
+    def sleep (self, secs):
+        u"""Sleep for "secs" seconds.
+        """
+        return libguestfsmod.sleep (self._o, secs)
+
+    def ntfs_3g_probe (self, rw, device):
+        u"""This command runs the ntfs-3g.probe(8) command which
+        probes an NTFS "device" for mountability. (Not all NTFS
+        volumes can be mounted read-write, and some cannot be
+        mounted at all).
+        
+        "rw" is a boolean flag. Set it to true if you want to
+        test if the volume can be mounted read-write. Set it to
+        false if you want to test if the volume can be mounted
+        read-only.
+        
+        The return value is an integer which 0 if the operation
+        would succeed, or some non-zero value documented in the
+        ntfs-3g.probe(8) manual page.
+        """
+        return libguestfsmod.ntfs_3g_probe (self._o, rw, device)
+
+    def sh (self, command):
+        u"""This call runs a command from the guest filesystem via
+        the guest's "/bin/sh".
+        
+        This is like "g.command", but passes the command to:
+        
+        /bin/sh -c "command"
+        
+        Depending on the guest's shell, this usually results in
+        wildcards being expanded, shell expressions being
+        interpolated and so on.
+        
+        All the provisos about "g.command" apply to this call.
+        """
+        return libguestfsmod.sh (self._o, command)
+
+    def sh_lines (self, command):
+        u"""This is the same as "g.sh", but splits the result into a
+        list of lines.
+        
+        See also: "g.command_lines"
+        
+        This function returns a list of strings.
+        """
+        return libguestfsmod.sh_lines (self._o, command)
+
+    def glob_expand (self, pattern):
+        u"""This command searches for all the pathnames matching
+        "pattern" according to the wildcard expansion rules used
+        by the shell.
+        
+        If no paths match, then this returns an empty list
+        (note: not an error).
+        
+        It is just a wrapper around the C glob(3) function with
+        flags "GLOB_MARK|GLOB_BRACE". See that manual page for
+        more details.
+        
+        This function returns a list of strings.
+        """
+        return libguestfsmod.glob_expand (self._o, pattern)
+
+    def scrub_device (self, device):
+        u"""This command writes patterns over "device" to make data
+        retrieval more difficult.
+        
+        It is an interface to the scrub(1) program. See that
+        manual page for more details.
+        
+        This command is dangerous. Without careful use you can
+        easily destroy all your data.
+        """
+        return libguestfsmod.scrub_device (self._o, device)
+
+    def scrub_file (self, file):
+        u"""This command writes patterns over a file to make data
+        retrieval more difficult.
+        
+        The file is *removed* after scrubbing.
+        
+        It is an interface to the scrub(1) program. See that
+        manual page for more details.
+        """
+        return libguestfsmod.scrub_file (self._o, file)
+
+    def scrub_freespace (self, dir):
+        u"""This command creates the directory "dir" and then fills
+        it with files until the filesystem is full, and scrubs
+        the files as for "g.scrub_file", and deletes them. The
+        intention is to scrub any free space on the partition
+        containing "dir".
+        
+        It is an interface to the scrub(1) program. See that
+        manual page for more details.
+        """
+        return libguestfsmod.scrub_freespace (self._o, dir)
+
+    def mkdtemp (self, template):
+        u"""This command creates a temporary directory. The
+        "template" parameter should be a full pathname for the
+        temporary directory name with the final six characters
+        being "XXXXXX".
+        
+        For example: "/tmp/myprogXXXXXX" or
+        "/Temp/myprogXXXXXX", the second one being suitable for
+        Windows filesystems.
+        
+        The name of the temporary directory that was created is
+        returned.
+        
+        The temporary directory is created with mode 0700 and is
+        owned by root.
+        
+        The caller is responsible for deleting the temporary
+        directory and its contents after use.
+        
+        See also: mkdtemp(3)
+        """
+        return libguestfsmod.mkdtemp (self._o, template)
+
+    def wc_l (self, path):
+        u"""This command counts the lines in a file, using the "wc
+        -l" external command.
+        """
+        return libguestfsmod.wc_l (self._o, path)
+
+    def wc_w (self, path):
+        u"""This command counts the words in a file, using the "wc
+        -w" external command.
+        """
+        return libguestfsmod.wc_w (self._o, path)
+
+    def wc_c (self, path):
+        u"""This command counts the characters in a file, using the
+        "wc -c" external command.
+        """
+        return libguestfsmod.wc_c (self._o, path)
+
+    def head (self, path):
+        u"""This command returns up to the first 10 lines of a file
+        as a list of strings.
+        
+        This function returns a list of strings.
+        
+        Because of the message protocol, there is a transfer
+        limit of somewhere between 2MB and 4MB. To transfer
+        large files you should use FTP.
+        """
+        return libguestfsmod.head (self._o, path)
+
+    def head_n (self, nrlines, path):
+        u"""If the parameter "nrlines" is a positive number, this
+        returns the first "nrlines" lines of the file "path".
+        
+        If the parameter "nrlines" is a negative number, this
+        returns lines from the file "path", excluding the last
+        "nrlines" lines.
+        
+        If the parameter "nrlines" is zero, this returns an
+        empty list.
+        
+        This function returns a list of strings.
+        
+        Because of the message protocol, there is a transfer
+        limit of somewhere between 2MB and 4MB. To transfer
+        large files you should use FTP.
+        """
+        return libguestfsmod.head_n (self._o, nrlines, path)
+
+    def tail (self, path):
+        u"""This command returns up to the last 10 lines of a file
+        as a list of strings.
+        
+        This function returns a list of strings.
+        
+        Because of the message protocol, there is a transfer
+        limit of somewhere between 2MB and 4MB. To transfer
+        large files you should use FTP.
+        """
+        return libguestfsmod.tail (self._o, path)
+
+    def tail_n (self, nrlines, path):
+        u"""If the parameter "nrlines" is a positive number, this
+        returns the last "nrlines" lines of the file "path".
+        
+        If the parameter "nrlines" is a negative number, this
+        returns lines from the file "path", starting with the
+        "-nrlines"th line.
+        
+        If the parameter "nrlines" is zero, this returns an
+        empty list.
+        
+        This function returns a list of strings.
+        
+        Because of the message protocol, there is a transfer
+        limit of somewhere between 2MB and 4MB. To transfer
+        large files you should use FTP.
+        """
+        return libguestfsmod.tail_n (self._o, nrlines, path)
+
+    def df (self):
+        u"""This command runs the "df" command to report disk space
+        used.
+        
+        This command is mostly useful for interactive sessions.
+        It is *not* intended that you try to parse the output
+        string. Use "statvfs" from programs.
+        """
+        return libguestfsmod.df (self._o)
+
+    def df_h (self):
+        u"""This command runs the "df -h" command to report disk
+        space used in human-readable format.
+        
+        This command is mostly useful for interactive sessions.
+        It is *not* intended that you try to parse the output
+        string. Use "statvfs" from programs.
+        """
+        return libguestfsmod.df_h (self._o)
+
+    def du (self, path):
+        u"""This command runs the "du -s" command to estimate file
+        space usage for "path".
+        
+        "path" can be a file or a directory. If "path" is a
+        directory then the estimate includes the contents of the
+        directory and all subdirectories (recursively).
+        
+        The result is the estimated size in *kilobytes* (ie.
+        units of 1024 bytes).
+        """
+        return libguestfsmod.du (self._o, path)
+
+    def initrd_list (self, path):
+        u"""This command lists out files contained in an initrd.
+        
+        The files are listed without any initial "/" character.
+        The files are listed in the order they appear (not
+        necessarily alphabetical). Directory names are listed as
+        separate items.
+        
+        Old Linux kernels (2.4 and earlier) used a compressed
+        ext2 filesystem as initrd. We *only* support the newer
+        initramfs format (compressed cpio files).
+        
+        This function returns a list of strings.
+        """
+        return libguestfsmod.initrd_list (self._o, path)
+
+    def mount_loop (self, file, mountpoint):
+        u"""This command lets you mount "file" (a filesystem image
+        in a file) on a mount point. It is entirely equivalent
+        to the command "mount -o loop file mountpoint".
+        """
+        return libguestfsmod.mount_loop (self._o, file, mountpoint)
+
+    def mkswap (self, device):
+        u"""Create a swap partition on "device".
+        """
+        return libguestfsmod.mkswap (self._o, device)
+
+    def mkswap_L (self, label, device):
+        u"""Create a swap partition on "device" with label "label".
+        """
+        return libguestfsmod.mkswap_L (self._o, label, device)
+
+    def mkswap_U (self, uuid, device):
+        u"""Create a swap partition on "device" with UUID "uuid".
+        """
+        return libguestfsmod.mkswap_U (self._o, uuid, device)
+
+    def mknod (self, mode, devmajor, devminor, path):
+        u"""This call creates block or character special devices, or
+        named pipes (FIFOs).
+        
+        The "mode" parameter should be the mode, using the
+        standard constants. "devmajor" and "devminor" are the
+        device major and minor numbers, only used when creating
+        block and character special devices.
+        """
+        return libguestfsmod.mknod (self._o, mode, devmajor, devminor, path)
+
+    def mkfifo (self, mode, path):
+        u"""This call creates a FIFO (named pipe) called "path" with
+        mode "mode". It is just a convenient wrapper around
+        "g.mknod".
+        """
+        return libguestfsmod.mkfifo (self._o, mode, path)
+
+    def mknod_b (self, mode, devmajor, devminor, path):
+        u"""This call creates a block device node called "path" with
+        mode "mode" and device major/minor "devmajor" and
+        "devminor". It is just a convenient wrapper around
+        "g.mknod".
+        """
+        return libguestfsmod.mknod_b (self._o, mode, devmajor, devminor, path)
+
+    def mknod_c (self, mode, devmajor, devminor, path):
+        u"""This call creates a char device node called "path" with
+        mode "mode" and device major/minor "devmajor" and
+        "devminor". It is just a convenient wrapper around
+        "g.mknod".
+        """
+        return libguestfsmod.mknod_c (self._o, mode, devmajor, devminor, path)
+
+    def umask (self, mask):
+        u"""This function sets the mask used for creating new files
+        and device nodes to "mask & 0777".
+        
+        Typical umask values would be 022 which creates new
+        files with permissions like "-rw-r--r--" or
+        "-rwxr-xr-x", and 002 which creates new files with
+        permissions like "-rw-rw-r--" or "-rwxrwxr-x".
+        
+        The default umask is 022. This is important because it
+        means that directories and device nodes will be created
+        with 0644 or 0755 mode even if you specify 0777.
+        
+        See also umask(2), "g.mknod", "g.mkdir".
+        
+        This call returns the previous umask.
+        """
+        return libguestfsmod.umask (self._o, mask)
+