diff options
author | Richard Jones <rjones@redhat.com> | 2009-04-08 13:44:13 +0100 |
---|---|---|
committer | Richard Jones <rjones@redhat.com> | 2009-04-08 13:44:13 +0100 |
commit | 1ee6da96efe8340a7d3904a865d80cd59d9d3fde (patch) | |
tree | 41b5b106d06c65d24bd8216b88005654abc0e98d /perl/lib/Sys/Guestfs.pm | |
parent | 8dcc88f867ab0bed24df49d8c0f347f1357bfffd (diff) | |
download | libguestfs-1ee6da96efe8340a7d3904a865d80cd59d9d3fde.tar.gz libguestfs-1ee6da96efe8340a7d3904a865d80cd59d9d3fde.tar.xz libguestfs-1ee6da96efe8340a7d3904a865d80cd59d9d3fde.zip |
First version of Perl bindings, compiled but not tested.
Diffstat (limited to 'perl/lib/Sys/Guestfs.pm')
-rw-r--r-- | perl/lib/Sys/Guestfs.pm | 235 |
1 files changed, 235 insertions, 0 deletions
diff --git a/perl/lib/Sys/Guestfs.pm b/perl/lib/Sys/Guestfs.pm new file mode 100644 index 00000000..c0a9b79f --- /dev/null +++ b/perl/lib/Sys/Guestfs.pm @@ -0,0 +1,235 @@ +# libguestfs generated file +# WARNING: THIS FILE IS GENERATED BY 'src/generator.ml'. +# ANY CHANGES YOU MAKE TO THIS FILE WILL BE LOST. +# +# Copyright (C) 2009 Red Hat Inc. +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +=pod + +=head1 NAME + +Sys::Guestfs - Perl bindings for libguestfs + +=head1 SYNOPSIS + + use Sys::Guestfs; + + my $h = Sys::Guestfs->new (); + $h->add_drive ('guest.img'); + $h->launch (); + $h->wait_ready (); + $h->mount ('/dev/sda1', '/'); + $h->touch ('/hello'); + $h->sync (); + +=head1 DESCRIPTION + +The C<Sys::Guestfs> module provides a Perl XS binding to the +libguestfs API for examining and modifying virtual machine +disk images. + +Amongst the things this is good for: making batch configuration +changes to guests, getting disk used/free statistics (see also: +virt-df), migrating between virtualization systems (see also: +virt-p2v), performing partial backups, performing partial guest +clones, cloning guests and changing registry/UUID/hostname info, and +much else besides. + +Libguestfs uses Linux kernel and qemu code, and can access any type of +guest filesystem that Linux and qemu can, including but not limited +to: ext2/3/4, btrfs, FAT and NTFS, LVM, many different disk partition +schemes, qcow, qcow2, vmdk. + +Libguestfs provides ways to enumerate guest storage (eg. partitions, +LVs, what filesystem is in each LV, etc.). It can also run commands +in the context of the guest. Also you can access filesystems over FTP. + +=head1 ERRORS + +All errors turn into calls to C<croak> (see L<Carp(3)>). + +=head1 METHODS + +=over 4 + +=cut + +package Sys::Guestfs; + +use strict; +use warnings; + +require XSLoader; +XSLoader::load ('Sys::Guestfs'); + +=item $h = Sys::Guestfs->new (); + +Create a new guestfs handle. + +=cut + +sub new { + my $proto = shift; + my $class = ref ($proto) || $proto; + + my $self = Sys::Guestfs::_create (); + bless $self, $class; + return $self; +} + +=item $content = $h->cat (path); + +Return the contents of the file named C<path>. + +Note that this function cannot correctly handle binary files +(specifically, files containing C<\0> character which is treated +as end of string). For those you need to use the C<$h-E<gt>read_file> +function which has a more complex interface. + +Because of the message protocol, there is a transfer limit +of somewhere between 2MB and 4MB. To transfer large files you should use +FTP. + +=item @devices = $h->list_devices (); + +List all the block devices. + +The full block device names are returned, eg. C</dev/sda> + +=item @partitions = $h->list_partitions (); + +List all the partitions detected on all block devices. + +The full partition device names are returned, eg. C</dev/sda1> + +This does not return logical volumes. For that you will need to +call C<$h-E<gt>lvs>. + +=item $listing = $h->ll (directory); + +List the files in C<directory> (relative to the root directory, +there is no cwd) in the format of 'ls -la'. + +This command is mostly useful for interactive sessions. It +is I<not> intended that you try to parse the output string. + +=item @listing = $h->ls (directory); + +List the files in C<directory> (relative to the root directory, +there is no cwd). The '.' and '..' entries are not returned, but +hidden files are shown. + +This command is mostly useful for interactive sessions. Programs +should probably use C<$h-E<gt>readdir> instead. + +=item @logvols = $h->lvs (); + +List all the logical volumes detected. This is the equivalent +of the L<lvs(8)> command. + +This returns a list of the logical volume device names +(eg. C</dev/VolGroup00/LogVol00>). + +See also C<$h-E<gt>lvs_full>. + +=item @logvols = $h->lvs_full (); + +List all the logical volumes detected. This is the equivalent +of the L<lvs(8)> command. The "full" version includes all fields. + +=item $h->mount (device, mountpoint); + +Mount a guest disk at a position in the filesystem. Block devices +are named C</dev/sda>, C</dev/sdb> and so on, as they were added to +the guest. If those block devices contain partitions, they will have +the usual names (eg. C</dev/sda1>). Also LVM C</dev/VG/LV>-style +names can be used. + +The rules are the same as for L<mount(2)>: A filesystem must +first be mounted on C</> before others can be mounted. Other +filesystems can only be mounted on directories which already +exist. + +The mounted filesystem is writable, if we have sufficient permissions +on the underlying device. + +The filesystem options C<sync> and C<noatime> are set with this +call, in order to improve reliability. + +=item @physvols = $h->pvs (); + +List all the physical volumes detected. This is the equivalent +of the L<pvs(8)> command. + +This returns a list of just the device names that contain +PVs (eg. C</dev/sda2>). + +See also C<$h-E<gt>pvs_full>. + +=item @physvols = $h->pvs_full (); + +List all the physical volumes detected. This is the equivalent +of the L<pvs(8)> command. The "full" version includes all fields. + +=item $h->sync (); + +This syncs the disk, so that any writes are flushed through to the +underlying disk image. + +You should always call this if you have modified a disk image, before +closing the handle. + +=item $h->touch (path); + +Touch acts like the L<touch(1)> command. It can be used to +update the timestamps on a file, or, if the file does not exist, +to create a new zero-length file. + +=item @volgroups = $h->vgs (); + +List all the volumes groups detected. This is the equivalent +of the L<vgs(8)> command. + +This returns a list of just the volume group names that were +detected (eg. C<VolGroup00>). + +See also C<$h-E<gt>vgs_full>. + +=item @volgroups = $h->vgs_full (); + +List all the volumes groups detected. This is the equivalent +of the L<vgs(8)> command. The "full" version includes all fields. + +=cut + +1; + +=back + +=head1 COPYRIGHT + +Copyright (C) 2009 Red Hat Inc. + +=head1 LICENSE + +Please see the file COPYING.LIB for the full license. + +=head1 SEE ALSO + +L<guestfs(3)>, L<guestfish(1)>. + +=cut |