[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [Libguestfs] [PATCH][RFC] launch: appliance is optional



On Mon, Oct 08, 2012 at 07:54:08PM +0100, Richard W.M. Jones wrote:
> On Mon, Oct 08, 2012 at 08:50:47PM +0200, Olaf Hering wrote:
> > On Mon, Oct 08, Richard W.M. Jones wrote:
> > 
> > > But out of interest, how are you creating this appliance?  I thought
> > > we'd ripped out support for old-style appliances from the rest of the
> > > toolchain ...
> > 
> > I use mkinitrd to pull in all tools and run guestfsd instead of
> > /sysroot/sbin/init. This allows me to build the package automated as
> > unprivileged user in the buildsystem. Creating a loop file requires
> > root, which is cumbersome in the openSuSE buildservice.
> > 
> > In src/appliance I noticed that initramfs.<arch>.img etc. is obsolete,
> > will it be removed for 1.20?
> 
> No we shouldn't remove this, I guess I'll have to make this work.
> 
> There are quite a lot of assumptions in the libvirt backend that
> appliance != NULL, but we can fix them ...

The attached patch isn't tested, but it seems as if it should work.
I've based it on top of my current set of hotplugging patches because
this code has changed so much.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-p2v converts physical machines to virtual machines.  Boot with a
live CD or over the network (PXE) and turn machines into Xen guests.
http://et.redhat.com/~rjones/virt-p2v
From f93f1538649d96d1b11eb7a4368aac0496acc2bc Mon Sep 17 00:00:00 2001
From: Olaf Hering <olaf aepfle de>
Date: Mon, 8 Oct 2012 20:10:36 +0200
Subject: [PATCH] launch: appliance is optional

 # virt-filesystems -v -d 6326ad4e-5805-2ab4-1338-d1dad8c76162 --all
libguestfs: libvirt version = 10002
libguestfs: [00000ms] connect to libvirt
libguestfs: [00001ms] get libvirt capabilities
libguestfs: [00234ms] build appliance
libguestfs: [00234ms] create libvirt XML
libguestfs: error: error constructing libvirt XML at "xmlTextWriterWriteAttribute (xo, BAD_CAST "file", BAD_CAST appliance)": No such file or directory
libguestfs: closing guestfs handle 0x656270 (state 0)

 # ls -lh /usr/lib64/guestfs/*
-rw-r--r-- 1 root root  13M Oct  8 16:15 /usr/lib64/guestfs/initramfs.x86_64.img
-rw-r--r-- 1 root root 3.7M Oct  6 09:25 /usr/lib64/guestfs/vmlinuz.x86_64

Signed-off-by: Olaf Hering <olaf aepfle de>
---
 src/launch-libvirt.c |   22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/src/launch-libvirt.c b/src/launch-libvirt.c
index 5b7897d..183008e 100644
--- a/src/launch-libvirt.c
+++ b/src/launch-libvirt.c
@@ -194,10 +194,13 @@ launch_libvirt (guestfs_h *g, const char *libvirt_uri)
 
   /* Create overlays for read-only drives and the appliance.  This
    * works around lack of support for <transient/> disks in libvirt.
+   * Note that appliance can be NULL if using the old-style appliance.
    */
-  appliance_overlay = make_qcow2_overlay (g, appliance, "raw");
-  if (!appliance_overlay)
-    goto cleanup;
+  if (appliance) {
+    appliance_overlay = make_qcow2_overlay (g, appliance, "raw");
+    if (!appliance_overlay)
+      goto cleanup;
+  }
 
   ITER_DRIVES (g, i, drv) {
     if (make_qcow2_overlay_for_drive (g, drv) == -1)
@@ -393,7 +396,8 @@ launch_libvirt (guestfs_h *g, const char *libvirt_uri)
     goto cleanup;
   }
 
-  guestfs___add_dummy_appliance_drive (g);
+  if (appliance)
+    guestfs___add_dummy_appliance_drive (g);
 
   TRACE0 (launch_libvirt_end);
 
@@ -739,10 +743,12 @@ construct_libvirt_xml_devices (guestfs_h *g, xmlTextWriterPtr xo,
       goto err;
   }
 
-  /* Appliance disk. */
-  if (construct_libvirt_xml_appliance (g, xo, appliance_overlay,
-                                       appliance_index) == -1)
-    goto err;
+  if (appliance_overlay) {
+    /* Appliance disk. */
+    if (construct_libvirt_xml_appliance (g, xo, appliance_overlay,
+                                         appliance_index) == -1)
+      goto err;
+  }
 
   /* Console. */
   XMLERROR (-1, xmlTextWriterStartElement (xo, BAD_CAST "serial"));
-- 
1.7.10.4


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]