Bastian Blank
2006-Oct-03 19:58 UTC
[Xen-devel] [PATCH] Expand non absolute paths in domain config to xen dir
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. 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 -- Without facts, the decision cannot be made logically. You must rely on your human intuition. -- Spock, "Assignment: Earth", stardate unknown _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Anthony Liguori
2006-Oct-03 20:10 UTC
[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@lists.xensource.com > http://lists.xensource.com/xen-devel_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Anthony Liguori
2006-Oct-03 20:13 UTC
[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 this make it unreliable? I suspect you''ll break many existing configs with this patch. I rely on the current CWD expansion to specify kernel/disk paths. 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@lists.xensource.com > http://lists.xensource.com/xen-devel_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel