X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=java%2Fcom%2Fredhat%2Fet%2Flibguestfs%2FGuestFS.java;h=3cb1c7f38093d2ad6cd6af7e9410dfac5635d591;hp=d340b8cbf77c6000e0ab5b813088a3628eb3cb06;hb=0884d8bbae6d76a603ec1385ada2938f88981c5c;hpb=c41fe04a652437c920acb0e820762c53bf44a139 diff --git a/java/com/redhat/et/libguestfs/GuestFS.java b/java/com/redhat/et/libguestfs/GuestFS.java index d340b8c..3cb1c7f 100644 --- a/java/com/redhat/et/libguestfs/GuestFS.java +++ b/java/com/redhat/et/libguestfs/GuestFS.java @@ -427,7 +427,13 @@ public HashMap test0rhashtableerr () * to modify the image). *

* This is equivalent to the qemu parameter "-drive - * file=filename". + * file=filename,cache=off". + *

+ * 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. *

* @throws LibGuestFSException */ @@ -450,6 +456,12 @@ public HashMap test0rhashtableerr () * 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. + *

* @throws LibGuestFSException */ public void add_cdrom (String filename) @@ -463,6 +475,40 @@ public HashMap test0rhashtableerr () throws LibGuestFSException; /** + * add a drive in snapshot mode (read-only) + *

+ * 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". + *

+ * 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. + *

+ * @throws LibGuestFSException + */ + public void add_drive_ro (String filename) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("add_drive_ro: handle is closed"); + _add_drive_ro (g, filename); + } + private native void _add_drive_ro (long g, String filename) + throws LibGuestFSException; + + /** * add qemu parameters *

* This can be used to add arbitrary qemu command line @@ -862,6 +908,57 @@ public HashMap test0rhashtableerr () throws LibGuestFSException; /** + * set memory allocated to the qemu subprocess + *

+ * 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). + *

+ * @throws LibGuestFSException + */ + public void set_memsize (int memsize) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("set_memsize: handle is closed"); + _set_memsize (g, memsize); + } + private native void _set_memsize (long g, int memsize) + throws LibGuestFSException; + + /** + * get memory allocated to the qemu subprocess + *

+ * 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). + *

+ * @throws LibGuestFSException + */ + public int get_memsize () + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("get_memsize: handle is closed"); + return _get_memsize (g); + } + private native int _get_memsize (long g) + throws LibGuestFSException; + + /** * mount a guest disk at a position in the filesystem *

* Mount a guest disk at a position in the filesystem. @@ -1952,7 +2049,9 @@ public HashMap test0rhashtableerr () * 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. @@ -1994,6 +2093,8 @@ public HashMap test0rhashtableerr () * This is the same as "g.command", but splits the result * into a list of lines. *

+ * See also: "g.sh_lines" + *

* Because of the message protocol, there is a transfer * limit of somewhere between 2MB and 4MB. To transfer * large files you should use FTP. @@ -2751,6 +2852,8 @@ public HashMap test0rhashtableerr () * sufficient to remove any partition tables, filesystem * superblocks and so on. *

+ * See also: "g.scrub_device". + *

* @throws LibGuestFSException */ public void zero (String device) @@ -3060,14 +3163,14 @@ public HashMap test0rhashtableerr () *

* @throws LibGuestFSException */ - public void sfdisk_N (String device, int n, int cyls, int heads, int sectors, String line) + public void sfdisk_N (String device, int partnum, int cyls, int heads, int sectors, String line) throws LibGuestFSException { if (g == 0) throw new LibGuestFSException ("sfdisk_N: handle is closed"); - _sfdisk_N (g, device, n, cyls, heads, sectors, line); + _sfdisk_N (g, device, partnum, cyls, heads, sectors, line); } - private native void _sfdisk_N (long g, String device, int n, int cyls, int heads, int sectors, String line) + private native void _sfdisk_N (long g, String device, int partnum, int cyls, int heads, int sectors, String line) throws LibGuestFSException; /** @@ -3291,4 +3394,660 @@ public HashMap test0rhashtableerr () private native void _e2fsck_f (long g, String device) throws LibGuestFSException; + /** + * sleep for some seconds + *

+ * Sleep for "secs" seconds. + *

+ * @throws LibGuestFSException + */ + public void sleep (int secs) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("sleep: handle is closed"); + _sleep (g, secs); + } + private native void _sleep (long g, int secs) + throws LibGuestFSException; + + /** + * probe NTFS volume + *

+ * 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. + *

+ * @throws LibGuestFSException + */ + public int ntfs_3g_probe (boolean rw, String device) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("ntfs_3g_probe: handle is closed"); + return _ntfs_3g_probe (g, rw, device); + } + private native int _ntfs_3g_probe (long g, boolean rw, String device) + throws LibGuestFSException; + + /** + * run a command via the shell + *

+ * 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. + *

+ * @throws LibGuestFSException + */ + public String sh (String command) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("sh: handle is closed"); + return _sh (g, command); + } + private native String _sh (long g, String command) + throws LibGuestFSException; + + /** + * run a command via the shell returning lines + *

+ * This is the same as "g.sh", but splits the result into a + * list of lines. + *

+ * See also: "g.command_lines" + *

+ * @throws LibGuestFSException + */ + public String[] sh_lines (String command) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("sh_lines: handle is closed"); + return _sh_lines (g, command); + } + private native String[] _sh_lines (long g, String command) + throws LibGuestFSException; + + /** + * expand a wildcard path + *

+ * 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. + *

+ * @throws LibGuestFSException + */ + public String[] glob_expand (String pattern) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("glob_expand: handle is closed"); + return _glob_expand (g, pattern); + } + private native String[] _glob_expand (long g, String pattern) + throws LibGuestFSException; + + /** + * scrub (securely wipe) a device + *

+ * 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. + *

+ * @throws LibGuestFSException + */ + public void scrub_device (String device) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("scrub_device: handle is closed"); + _scrub_device (g, device); + } + private native void _scrub_device (long g, String device) + throws LibGuestFSException; + + /** + * scrub (securely wipe) a file + *

+ * 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. + *

+ * @throws LibGuestFSException + */ + public void scrub_file (String file) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("scrub_file: handle is closed"); + _scrub_file (g, file); + } + private native void _scrub_file (long g, String file) + throws LibGuestFSException; + + /** + * scrub (securely wipe) free space + *

+ * 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. + *

+ * @throws LibGuestFSException + */ + public void scrub_freespace (String dir) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("scrub_freespace: handle is closed"); + _scrub_freespace (g, dir); + } + private native void _scrub_freespace (long g, String dir) + throws LibGuestFSException; + + /** + * create a temporary directory + *

+ * 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) + *

+ * @throws LibGuestFSException + */ + public String mkdtemp (String template) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("mkdtemp: handle is closed"); + return _mkdtemp (g, template); + } + private native String _mkdtemp (long g, String template) + throws LibGuestFSException; + + /** + * count lines in a file + *

+ * This command counts the lines in a file, using the "wc + * -l" external command. + *

+ * @throws LibGuestFSException + */ + public int wc_l (String path) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("wc_l: handle is closed"); + return _wc_l (g, path); + } + private native int _wc_l (long g, String path) + throws LibGuestFSException; + + /** + * count words in a file + *

+ * This command counts the words in a file, using the "wc + * -w" external command. + *

+ * @throws LibGuestFSException + */ + public int wc_w (String path) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("wc_w: handle is closed"); + return _wc_w (g, path); + } + private native int _wc_w (long g, String path) + throws LibGuestFSException; + + /** + * count characters in a file + *

+ * This command counts the characters in a file, using the + * "wc -c" external command. + *

+ * @throws LibGuestFSException + */ + public int wc_c (String path) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("wc_c: handle is closed"); + return _wc_c (g, path); + } + private native int _wc_c (long g, String path) + throws LibGuestFSException; + + /** + * return first 10 lines of a file + *

+ * This command returns up to the first 10 lines of a file + * as 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. + *

+ * @throws LibGuestFSException + */ + public String[] head (String path) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("head: handle is closed"); + return _head (g, path); + } + private native String[] _head (long g, String path) + throws LibGuestFSException; + + /** + * return first N lines of a file + *

+ * 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. + *

+ * Because of the message protocol, there is a transfer + * limit of somewhere between 2MB and 4MB. To transfer + * large files you should use FTP. + *

+ * @throws LibGuestFSException + */ + public String[] head_n (int nrlines, String path) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("head_n: handle is closed"); + return _head_n (g, nrlines, path); + } + private native String[] _head_n (long g, int nrlines, String path) + throws LibGuestFSException; + + /** + * return last 10 lines of a file + *

+ * This command returns up to the last 10 lines of a file + * as 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. + *

+ * @throws LibGuestFSException + */ + public String[] tail (String path) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("tail: handle is closed"); + return _tail (g, path); + } + private native String[] _tail (long g, String path) + throws LibGuestFSException; + + /** + * return last N lines of a file + *

+ * 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. + *

+ * Because of the message protocol, there is a transfer + * limit of somewhere between 2MB and 4MB. To transfer + * large files you should use FTP. + *

+ * @throws LibGuestFSException + */ + public String[] tail_n (int nrlines, String path) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("tail_n: handle is closed"); + return _tail_n (g, nrlines, path); + } + private native String[] _tail_n (long g, int nrlines, String path) + throws LibGuestFSException; + + /** + * report file system disk space usage + *

+ * 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. + *

+ * @throws LibGuestFSException + */ + public String df () + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("df: handle is closed"); + return _df (g); + } + private native String _df (long g) + throws LibGuestFSException; + + /** + * report file system disk space usage (human readable) + *

+ * 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. + *

+ * @throws LibGuestFSException + */ + public String df_h () + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("df_h: handle is closed"); + return _df_h (g); + } + private native String _df_h (long g) + throws LibGuestFSException; + + /** + * estimate file space usage + *

+ * 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). + *

+ * @throws LibGuestFSException + */ + public long du (String path) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("du: handle is closed"); + return _du (g, path); + } + private native long _du (long g, String path) + throws LibGuestFSException; + + /** + * list files in an initrd + *

+ * 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). + *

+ * @throws LibGuestFSException + */ + public String[] initrd_list (String path) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("initrd_list: handle is closed"); + return _initrd_list (g, path); + } + private native String[] _initrd_list (long g, String path) + throws LibGuestFSException; + + /** + * mount a file using the loop device + *

+ * 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". + *

+ * @throws LibGuestFSException + */ + public void mount_loop (String file, String mountpoint) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("mount_loop: handle is closed"); + _mount_loop (g, file, mountpoint); + } + private native void _mount_loop (long g, String file, String mountpoint) + throws LibGuestFSException; + + /** + * create a swap partition + *

+ * Create a swap partition on "device". + *

+ * @throws LibGuestFSException + */ + public void mkswap (String device) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("mkswap: handle is closed"); + _mkswap (g, device); + } + private native void _mkswap (long g, String device) + throws LibGuestFSException; + + /** + * create a swap partition with a label + *

+ * Create a swap partition on "device" with label "label". + *

+ * @throws LibGuestFSException + */ + public void mkswap_L (String label, String device) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("mkswap_L: handle is closed"); + _mkswap_L (g, label, device); + } + private native void _mkswap_L (long g, String label, String device) + throws LibGuestFSException; + + /** + * create a swap partition with an explicit UUID + *

+ * Create a swap partition on "device" with UUID "uuid". + *

+ * @throws LibGuestFSException + */ + public void mkswap_U (String uuid, String device) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("mkswap_U: handle is closed"); + _mkswap_U (g, uuid, device); + } + private native void _mkswap_U (long g, String uuid, String device) + throws LibGuestFSException; + + /** + * make block, character or FIFO devices + *

+ * 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. + *

+ * @throws LibGuestFSException + */ + public void mknod (int mode, int devmajor, int devminor, String path) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("mknod: handle is closed"); + _mknod (g, mode, devmajor, devminor, path); + } + private native void _mknod (long g, int mode, int devmajor, int devminor, String path) + throws LibGuestFSException; + + /** + * make FIFO (named pipe) + *

+ * This call creates a FIFO (named pipe) called "path" with + * mode "mode". It is just a convenient wrapper around + * "g.mknod". + *

+ * @throws LibGuestFSException + */ + public void mkfifo (int mode, String path) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("mkfifo: handle is closed"); + _mkfifo (g, mode, path); + } + private native void _mkfifo (long g, int mode, String path) + throws LibGuestFSException; + + /** + * make block device node + *

+ * 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". + *

+ * @throws LibGuestFSException + */ + public void mknod_b (int mode, int devmajor, int devminor, String path) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("mknod_b: handle is closed"); + _mknod_b (g, mode, devmajor, devminor, path); + } + private native void _mknod_b (long g, int mode, int devmajor, int devminor, String path) + throws LibGuestFSException; + + /** + * make char device node + *

+ * 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". + *

+ * @throws LibGuestFSException + */ + public void mknod_c (int mode, int devmajor, int devminor, String path) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("mknod_c: handle is closed"); + _mknod_c (g, mode, devmajor, devminor, path); + } + private native void _mknod_c (long g, int mode, int devmajor, int devminor, String path) + throws LibGuestFSException; + + /** + * set file mode creation mask (umask) + *

+ * 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". + *

+ * See also umask(2), "g.mknod", "g.mkdir". + *

+ * This call returns the previous umask. + *

+ * @throws LibGuestFSException + */ + public int umask (int mask) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("umask: handle is closed"); + return _umask (g, mask); + } + private native int _umask (long g, int mask) + throws LibGuestFSException; + }