X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=java%2Fcom%2Fredhat%2Fet%2Flibguestfs%2FGuestFS.java;h=5b8162388a02e6213f7be5d6aa694f3688277085;hp=8c2265e72eebd7b377b515fc92741bdeae6f9b7a;hb=36f9dac1a2530b575dab9226f6ddd85e6e8c8590;hpb=7f818fa00c3d019146c7178f152408038d4a4d52 diff --git a/java/com/redhat/et/libguestfs/GuestFS.java b/java/com/redhat/et/libguestfs/GuestFS.java index 8c2265e..5b81623 100644 --- a/java/com/redhat/et/libguestfs/GuestFS.java +++ b/java/com/redhat/et/libguestfs/GuestFS.java @@ -219,6 +219,56 @@ public class GuestFS { throws LibGuestFSException; /** + * set the qemu binary + * + * 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. + * + * @throws LibGuestFSException + */ + public void set_qemu (String qemu) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("set_qemu: handle is closed"); + _set_qemu (g, qemu); + } + private native void _set_qemu (long g, String qemu) + throws LibGuestFSException; + + /** + * get the qemu binary + * + * 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. + * + * @throws LibGuestFSException + */ + public String get_qemu () + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("get_qemu: handle is closed"); + return _get_qemu (g); + } + private native String _get_qemu (long g) + throws LibGuestFSException; + + /** * set the search path * * Set the path that libguestfs searches for kernel and @@ -269,9 +319,12 @@ public class GuestFS { * set autosync mode * * 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). * * @throws LibGuestFSException */ @@ -1673,10 +1726,10 @@ public class GuestFS { throws LibGuestFSException; /** - * get ext2/ext3 superblock details + * get ext2/ext3/ext4 superblock details * - * This returns the contents of the ext2 or ext3 filesystem - * superblock on "device". + * 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 @@ -2080,4 +2133,285 @@ public class GuestFS { private native void _tgz_out (long g, String directory, String tarball) throws LibGuestFSException; + /** + * mount a guest disk, read-only + * + * This is the same as the "g.mount" command, but it mounts + * the filesystem with the read-only (*-o ro*) flag. + * + * @throws LibGuestFSException + */ + public void mount_ro (String device, String mountpoint) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("mount_ro: handle is closed"); + _mount_ro (g, device, mountpoint); + } + private native void _mount_ro (long g, String device, String mountpoint) + throws LibGuestFSException; + + /** + * mount a guest disk with mount options + * + * 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. + * + * @throws LibGuestFSException + */ + public void mount_options (String options, String device, String mountpoint) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("mount_options: handle is closed"); + _mount_options (g, options, device, mountpoint); + } + private native void _mount_options (long g, String options, String device, String mountpoint) + throws LibGuestFSException; + + /** + * mount a guest disk with mount options and vfstype + * + * 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. + * + * @throws LibGuestFSException + */ + public void mount_vfs (String options, String vfstype, String device, String mountpoint) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("mount_vfs: handle is closed"); + _mount_vfs (g, options, vfstype, device, mountpoint); + } + private native void _mount_vfs (long g, String options, String vfstype, String device, String mountpoint) + throws LibGuestFSException; + + /** + * debugging and internals + * + * 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. + * + * @throws LibGuestFSException + */ + public String debug (String subcmd, String[] extraargs) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("debug: handle is closed"); + return _debug (g, subcmd, extraargs); + } + private native String _debug (long g, String subcmd, String[] extraargs) + throws LibGuestFSException; + + /** + * remove an LVM logical volume + * + * 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". + * + * @throws LibGuestFSException + */ + public void lvremove (String device) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("lvremove: handle is closed"); + _lvremove (g, device); + } + private native void _lvremove (long g, String device) + throws LibGuestFSException; + + /** + * remove an LVM volume group + * + * Remove an LVM volume group "vgname", (for example "VG"). + * + * This also forcibly removes all logical volumes in the + * volume group (if any). + * + * @throws LibGuestFSException + */ + public void vgremove (String vgname) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("vgremove: handle is closed"); + _vgremove (g, vgname); + } + private native void _vgremove (long g, String vgname) + throws LibGuestFSException; + + /** + * remove an LVM physical volume + * + * 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. + * + * @throws LibGuestFSException + */ + public void pvremove (String device) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("pvremove: handle is closed"); + _pvremove (g, device); + } + private native void _pvremove (long g, String device) + throws LibGuestFSException; + + /** + * set the ext2/3/4 filesystem label + * + * 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. + * + * @throws LibGuestFSException + */ + public void set_e2label (String device, String label) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("set_e2label: handle is closed"); + _set_e2label (g, device, label); + } + private native void _set_e2label (long g, String device, String label) + throws LibGuestFSException; + + /** + * get the ext2/3/4 filesystem label + * + * This returns the ext2/3/4 filesystem label of the + * filesystem on "device". + * + * @throws LibGuestFSException + */ + public String get_e2label (String device) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("get_e2label: handle is closed"); + return _get_e2label (g, device); + } + private native String _get_e2label (long g, String device) + throws LibGuestFSException; + + /** + * set the ext2/3/4 filesystem UUID + * + * 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. + * + * @throws LibGuestFSException + */ + public void set_e2uuid (String device, String uuid) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("set_e2uuid: handle is closed"); + _set_e2uuid (g, device, uuid); + } + private native void _set_e2uuid (long g, String device, String uuid) + throws LibGuestFSException; + + /** + * get the ext2/3/4 filesystem UUID + * + * This returns the ext2/3/4 filesystem UUID of the + * filesystem on "device". + * + * @throws LibGuestFSException + */ + public String get_e2uuid (String device) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("get_e2uuid: handle is closed"); + return _get_e2uuid (g, device); + } + private native String _get_e2uuid (long g, String device) + throws LibGuestFSException; + + /** + * run the filesystem checker + * + * 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". + * + * @throws LibGuestFSException + */ + public int fsck (String fstype, String device) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("fsck: handle is closed"); + return _fsck (g, fstype, device); + } + private native int _fsck (long g, String fstype, String device) + throws LibGuestFSException; + + /** + * write zeroes to the device + * + * 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. + * + * @throws LibGuestFSException + */ + public void zero (String device) + throws LibGuestFSException + { + if (g == 0) + throw new LibGuestFSException ("zero: handle is closed"); + _zero (g, device); + } + private native void _zero (long g, String device) + throws LibGuestFSException; + }