Sys::Guestfs::Lib::open_guest: Add interface parameter.
authorRichard Jones <rjones@redhat.com>
Fri, 12 Feb 2010 12:13:40 +0000 (12:13 +0000)
committerRichard Jones <rjones@redhat.com>
Fri, 12 Feb 2010 12:13:40 +0000 (12:13 +0000)
This allows you to override the default QEMU block device emulation.

perl/lib/Sys/Guestfs/Lib.pm

index c9a3237..e17728d 100644 (file)
@@ -117,6 +117,10 @@ disk image, then C<$conn> and C<$dom> will be C<undef>.
 If the C<Sys::Virt> module is not available, then libvirt is bypassed,
 and this function can only open disk images.
 
 If the C<Sys::Virt> module is not available, then libvirt is bypassed,
 and this function can only open disk images.
 
+The optional C<interface> parameter can be used to open devices with
+C<add_drive{,_ro}_with_if>.  See
+L<Sys::Guestfs/guestfs_add_drive_with_if> for more details.
+
 =cut
 
 sub open_guest
 =cut
 
 sub open_guest
@@ -127,6 +131,7 @@ sub open_guest
 
     my $rw = $params{rw};
     my $address = $params{address};
 
     my $rw = $params{rw};
     my $address = $params{address};
+    my $interface = $params{interface};
 
     my @images = ();
     if (ref ($first) eq "ARRAY") {
 
     my @images = ();
     if (ref ($first) eq "ARRAY") {
@@ -203,9 +208,17 @@ sub open_guest
     my $g = Sys::Guestfs->new ();
     foreach (@images) {
         if ($rw) {
     my $g = Sys::Guestfs->new ();
     foreach (@images) {
         if ($rw) {
-            $g->add_drive ($_);
+            if ($interface) {
+                $g->add_drive_with_if ($_, $interface);
+            } else {
+                $g->add_drive ($_);
+            }
         } else {
         } else {
-            $g->add_drive_ro ($_);
+            if ($interface) {
+                $g->add_drive_ro_with_if ($_, $interface);
+            } else {
+                $g->add_drive_ro ($_);
+            }
         }
     }
 
         }
     }