
Kiarie Kahurani wrote:
Kiarie Kahurani (1): src/xenconfig: XL parser
po/POTFILES.in | 1 + src/Makefile.am | 3 +- src/libvirt_xenconfig.syms | 5 + src/libxl/libxl_driver.c | 44 ++- src/xenconfig/xen_common.c | 140 ++++---- src/xenconfig/xen_common.h | 24 +- src/xenconfig/xen_xl.c | 461 ++++++++++++++++++++++++++ src/xenconfig/xen_xl.h | 29 ++ tests/Makefile.am | 9 +- tests/testutilsxen.c | 50 +++ tests/testutilsxen.h | 9 +- tests/xlconfigdata/test-fullvirt-new-disk.cfg | 27 ++ tests/xlconfigdata/test-fullvirt-new-disk.xml | 46 +++ tests/xlconfigtest.c | 222 +++++++++++++ 14 files changed, 981 insertions(+), 89 deletions(-) create mode 100644 src/xenconfig/xen_xl.c create mode 100644 src/xenconfig/xen_xl.h create mode 100644 tests/xlconfigdata/test-fullvirt-new-disk.cfg create mode 100644 tests/xlconfigdata/test-fullvirt-new-disk.xml create mode 100644 tests/xlconfigtest.c
After *toooo* long the xen-xl parser has arrived with support for xl disk format and spice graphics(with admittedly very kludgy code)
quick overview
1)coverts xl disk config such as
disk = ["/dev/sda,raw,hda,rw,"]
into xml config
<disk type='block' device='disk'> <driver name='phy'/> <source dev='/dev/sda/'> <target dev= 'hda' bus='ide'/> </disk>
and vice-versa
You notice that in the xl disk config there is no driver type but it appears on the xml;
Driver would be specified by the 'backendtype' keyword, e.g. backendtype=phy backendtype=tap backendtype=qdisk In the old, deprecated positional syntax, driver is part of the <format> [<format>:][<target>],<vdev>[:<devtype>],<access> E.g. "phy:/dev/bla/bla,hda,w" would be driverName = phy.
I use the format to intelligently guess the driver but this does not look very good again you notice I do not support disk backend config which is because there is no member of _virDomainDiskDef which I could relate to the backend
If format is not specified, then you should emit it from the xml too. E.g. disk = ["vdev=hda, access=rw, target=/dev/HostVG/XenGuest2, backendtype=phy"] should be converted to <disk type='block' device='disk'> <driver name='phy'/> <source dev='/dev/HostVG/XenGuest2'/> <target dev= 'hda' bus='ide'/> </disk> With no 'format', we shouldn't be guessing the 'type' attribute of <driver>.
2)converts spice graphics config
spice = 1 spicehost = "127.0.0.1" spiceport = 500 spicetls_port = 590 spicedisable_ticketing = 1 #with this set you require a passwd spicepasswd = "thebeast" spiceagent_mouse = 1
to <graphics type='spice' port='500' tlsPort='590' autoport='no' listen='127.0.0.1'> <listen type='address' address='127.0.0.1'/> <mouse mode='server'/>
and vice-versa
You notice that the passwd is not in the xml, am still trying to figure out why
Passwords are scrubbed from the xml unless VIR_DOMAIN_XML_SECURE flag is provided.
Again you will notice the current tests are a bit dependent on xen code(when initializing the xmlOpt) which would *better* be done away with but that would require some code in src/libxl/
Into the bargain, am not *sure* how exactly to initialize _virCapsPtr which is reqiured for xml formatting because I *assume* that tests should be able to run even with drivers not loaded.
Am also not *sure* that how to map disks to device type, the existing code(xm) code maps all the disks using another driver other than 'phy' to 'block'.Am not sure this is correct.
I think it is the other way around. If the driver is phy, then type is set to VIR_STORAGE_TYPE_BLOCK, otherwise type is set to VIR_STORAGE_TYPE_FILE. Regards, Jim