[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-cim] Python script problems, part 1 - domUloader patch
This is the first of several emails I exchanged with Jim wrt some problems I had running python scripts. We emailed off list but it makes sense to bring this onto the list. -----Original Message----- From: Jim Fehlig Sent: Monday, June 11, 2007 5:22 PM To: Szymanski, Lukasz K Subject: Re: Python script problems In config.sxp, is see that vbd has '(bootable 0)'. This implies your xen is 3.1.0 or greater. Currently Xen_VirtualSystemManagementService does not set disk to bootable when creating the vbd. I guess I should just set all disks bootable before creating the vbd. BTW, I now recall asking about the vbd bootable field on Xen API ml http://lists.xensource.com/archives/html/xen-api/2007-05/msg00001.html Never received a response :-(. Typical of my posts to xen mailing lists. Anyway, if you have a config where kernel/ramdisk live on any disk other than the first, you will need the attached patch for domUloader to work - in addition to a fix for Xen_VirtualSystemManagementService that I will commit shortly. Jim Szymanski, Lukasz K wrote: > Attached are xend.log and config.sxp > > Thanks, > Luke > > -----Original Message----- > From: Jim Fehlig > Sent: Monday, June 11, 2007 3:36 PM > To: Szymanski, Lukasz K > Subject: Re: Python script problems > > Szymanski, Lukasz K wrote: > >> Jim - >> >> I have tinkered around with the python script (attached) for awhile >> now and have not gotten very far. Here is the breakdown: >> >> - The create works, but the start fails (see disk error below). The >> funny thing is, xm list shows the vm as running. >> - I can use xm create with the very same disk, and have no problems. >> - domUloader is missing, but I copied it from somewhere and it >> supposedly works >> - This exact script USED to work. >> >> Any suggestions are greatly appreciated. >> >> > > What is output to xend.log when start is invoked? The contents of > /var/lib/xend/domains/<dom_uuid>/config.sxp would be useful also. > > >> Also, do you have any python scripts where you use embedded instances? >> >> > > Attached is an example. > > Jim > > Index: xen-3.1-testing/tools/python/xen/xend/XendBootloader.py =================================================================== --- xen-3.1-testing.orig/tools/python/xen/xend/XendBootloader.py +++ xen-3.1-testing/tools/python/xen/xend/XendBootloader.py @@ -14,6 +14,7 @@ import os, select, errno, stat, signal import random +import re import shlex from xen.xend import sxp @@ -187,3 +188,14 @@ def bootloader_tidy(dom): os.kill(pid, signal.SIGKILL) +def bootfilter(bootloader, bootloader_args, vdisk): + """Is this virtual disk ok to boot from?""" + if vdisk.endswith(':disk'): + vdisk = vdisk[:-5] # temporary work-around for bug 237414 + if bootloader.endswith('domUloader.py'): + for arg in bootloader_args.split(): + if arg.startswith('--entry='): + m = re.match(r'^([hsx]v?d[a-z])[0-9]*:[^,]*(,[^,]*)?$', arg[8:]) + if m: + return vdisk == m.group(1) or vdisk == m.group(2) + return True Index: xen-3.1-testing/tools/python/xen/xend/XendDomainInfo.py =================================================================== --- xen-3.1-testing.orig/tools/python/xen/xend/XendDomainInfo.py +++ xen-3.1-testing/tools/python/xen/xend/XendDomainInfo.py @@ -42,7 +42,7 @@ from xen.xend import balloon, sxp, uuid, from xen.xend import XendOptions, XendNode, XendConfig from xen.xend.XendConfig import scrub_password -from xen.xend.XendBootloader import bootloader, bootloader_tidy +from xen.xend.XendBootloader import bootloader, bootloader_tidy, bootfilter from xen.xend.XendError import XendError, VmError from xen.xend.XendDevices import XendDevices from xen.xend.XendTask import XendTask @@ -1783,8 +1783,11 @@ class XendDomainInfo: blexec = osdep.pygrub_path blcfg = None - disks = [x for x in self.info['vbd_refs'] - if self.info['devices'][x][1]['bootable']] + disks = [] + for x in self.info['vbd_refs']: + vdisk = self.info['devices'][x][1]['dev'] + if bootfilter(blexec, bootloader_args, vdisk): + disks.append(x) if not disks: msg = "Had a bootloader specified, but no disks are bootable" _______________________________________________ Xen-cim mailing list Xen-cim@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-cim
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |