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

[Xen-devel] Re: [PATCH] Expand non absolute paths in domain config to xen dir



Bastian Blank wrote:
Hi folks

The attached patch changes the behaviour of xm create to expand the
values of kernel, ramdisk and device_model with the correct path within
the xen dir if relative, like /usr/lib/xen/boot and /usr/lib/xen/bin.

The old behaviour was unreliable as it used the working dir.

Why does that make it unreliable?

This patch will break a large number of existing configs that rely on relative path being the CWD.

I frequently make use of this behavior.

Regards,

Anthony Liguori


This change makes it possible to use only relative paths for supplied
parts like hvmloader and qemu-dm and don't rely on a known location.

Bastian



------------------------------------------------------------------------

diff -r 38f9bd7a4ce6 tools/python/xen/xm/create.py
--- a/tools/python/xen/xm/create.py     Tue Oct 03 11:39:22 2006 +0100
+++ b/tools/python/xen/xm/create.py     Tue Oct 03 19:45:29 2006 +0000
@@ -460,6 +460,14 @@ def strip(pre, s):
     else:
         return s
+def abspath(file, dir):
+    if file[0] == '/':
+        return file
+
+    import xen.util.auxbin
+    path = xen.util.auxbin.libpath()
+    return os.path.join(path, dir, file)
+
 def configure_image(vals):
     """Create the image config.
     """
@@ -467,9 +475,9 @@ def configure_image(vals):
         return None
     config_image = [ vals.builder ]
     if vals.kernel:
-        config_image.append([ 'kernel', os.path.abspath(vals.kernel) ])
+        config_image.append([ 'kernel', abspath(vals.kernel, 'boot') ])
     if vals.ramdisk:
-        config_image.append([ 'ramdisk', os.path.abspath(vals.ramdisk) ])
+        config_image.append([ 'ramdisk', abspath(vals.ramdisk, 'boot') ])
     if vals.cmdline_ip:
         cmdline_ip = strip('ip=', vals.cmdline_ip)
         config_image.append(['ip', cmdline_ip])
@@ -631,13 +639,15 @@ def configure_hvm(config_image, vals):
 def configure_hvm(config_image, vals):
     """Create the config for HVM devices.
     """
-    args = [ 'device_model', 'pae', 'vcpus', 'boot', 'fda', 'fdb',
+    args = [ 'pae', 'vcpus', 'boot', 'fda', 'fdb',
              'localtime', 'serial', 'stdvga', 'isa', 'nographic', 'soundhw',
              'vnc', 'vncdisplay', 'vncunused', 'vncconsole', 'sdl', 'display',
              'acpi', 'apic', 'xauthority', 'usb', 'usbdevice' ]
     for a in args:
         if (vals.__dict__[a]):
             config_image.append([a, vals.__dict__[a]])
+    if vals.device_model:
+        config_image.append([ 'device_model', abspath(vals.device_model, 
'bin') ])
def run_bootloader(vals, config_image):
     if not os.access(vals.bootloader, os.X_OK):


------------------------------------------------------------------------

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.