[libvirt] [PATCH 09/10] xenconfig: add support for parsing type= xl config entry

Jim Fehlig jfehlig at suse.com
Fri Sep 14 22:49:36 UTC 2018


On 8/5/18 3:48 PM, Marek Marczykowski-Górecki wrote:
> builder="hvm" is deprecated since Xen 4.10, new syntax is type="hvm" (or
> type="pv", which is default). Since the old one is still supported,
> still use it when writing native config, so the config will work on
> older Xen too (and will also not complicate tests).
> 
> Signed-off-by: Marek Marczykowski-Górecki <marmarek at invisiblethingslab.com>
> ---
> "type" option is the only syntax for specifying PVH guest, coming in
> next patch.
> ---
>   src/xenconfig/xen_common.c                | 18 +++++++++++++---
>   tests/xlconfigdata/test-fullvirt-type.cfg | 21 +++++++++++++++++++-
>   tests/xlconfigdata/test-fullvirt-type.xml | 27 ++++++++++++++++++++++++-
>   tests/xlconfigdata/test-paravirt-type.cfg | 13 ++++++++++++-
>   tests/xlconfigdata/test-paravirt-type.xml | 25 ++++++++++++++++++++++-
>   tests/xlconfigtest.c                      |  2 ++-
>   6 files changed, 103 insertions(+), 3 deletions(-)
>   create mode 100644 tests/xlconfigdata/test-fullvirt-type.cfg
>   create mode 100644 tests/xlconfigdata/test-fullvirt-type.xml
>   create mode 100644 tests/xlconfigdata/test-paravirt-type.cfg
>   create mode 100644 tests/xlconfigdata/test-paravirt-type.xml
> 
> diff --git a/src/xenconfig/xen_common.c b/src/xenconfig/xen_common.c
> index fdca984..c5d81d1 100644
> --- a/src/xenconfig/xen_common.c
> +++ b/src/xenconfig/xen_common.c
> @@ -1088,9 +1088,21 @@ xenParseGeneralMeta(virConfPtr conf, virDomainDefPtr def, virCapsPtr caps)
>       if (xenConfigGetUUID(conf, "uuid", def->uuid) < 0)
>           goto out;
>   
> -    if ((xenConfigGetString(conf, "builder", &str, "linux") == 0) &&
> -        STREQ(str, "hvm"))
> -        hvm = 1;
> +    if (xenConfigGetString(conf, "type", &str, NULL) == 0 && str) {
> +        if (STREQ(str, "pv"))
> +            hvm = 0;
> +        else if (STREQ(str, "hvm"))
> +            hvm = 1;
> +        else {
> +            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> +                           _("type %s is not supported"), str);
> +            return -1;
> +        }

Fails 'make syntax-check':

src/xenconfig/xen_common.c:1096:        else {
maint.mk: if one side of if-else uses {}, both sides must use it

Looks good otherwise.

Regards,
Jim

> +    } else {
> +        if ((xenConfigGetString(conf, "builder", &str, "linux") == 0) &&
> +            STREQ(str, "hvm"))
> +            hvm = 1;
> +    }
>   
>       def->os.type = (hvm ? VIR_DOMAIN_OSTYPE_HVM : VIR_DOMAIN_OSTYPE_XEN);
>   
> diff --git a/tests/xlconfigdata/test-fullvirt-type.cfg b/tests/xlconfigdata/test-fullvirt-type.cfg
> new file mode 100644
> index 0000000..f8ecc2e
> --- /dev/null
> +++ b/tests/xlconfigdata/test-fullvirt-type.cfg
> @@ -0,0 +1,21 @@
> +name = "XenGuest2"
> +uuid = "c7a5fdb2-cdaf-9455-926a-d65c16db1809"
> +maxmem = 579
> +memory = 394
> +vcpus = 1
> +pae = 1
> +acpi = 1
> +apic = 1
> +viridian = 0
> +rtc_timeoffset = 0
> +localtime = 0
> +on_poweroff = "destroy"
> +on_reboot = "restart"
> +on_crash = "restart"
> +device_model = "/usr/lib/xen/bin/qemu-system-i386"
> +sdl = 0
> +vnc = 0
> +parallel = "none"
> +serial = "none"
> +type = "hvm"
> +boot = "d"
> diff --git a/tests/xlconfigdata/test-fullvirt-type.xml b/tests/xlconfigdata/test-fullvirt-type.xml
> new file mode 100644
> index 0000000..da8e360
> --- /dev/null
> +++ b/tests/xlconfigdata/test-fullvirt-type.xml
> @@ -0,0 +1,27 @@
> +<domain type='xen'>
> +  <name>XenGuest2</name>
> +  <uuid>c7a5fdb2-cdaf-9455-926a-d65c16db1809</uuid>
> +  <memory unit='KiB'>592896</memory>
> +  <currentMemory unit='KiB'>403456</currentMemory>
> +  <vcpu placement='static'>1</vcpu>
> +  <os>
> +    <type arch='x86_64' machine='xenfv'>hvm</type>
> +    <loader type='rom'>/usr/lib/xen/boot/hvmloader</loader>
> +    <boot dev='cdrom'/>
> +  </os>
> +  <features>
> +    <acpi/>
> +    <apic/>
> +    <pae/>
> +  </features>
> +  <clock offset='variable' adjustment='0' basis='utc'/>
> +  <on_poweroff>destroy</on_poweroff>
> +  <on_reboot>restart</on_reboot>
> +  <on_crash>restart</on_crash>
> +  <devices>
> +    <emulator>/usr/lib/xen/bin/qemu-system-i386</emulator>
> +    <input type='mouse' bus='ps2'/>
> +    <input type='keyboard' bus='ps2'/>
> +    <memballoon model='xen'/>
> +  </devices>
> +</domain>
> diff --git a/tests/xlconfigdata/test-paravirt-type.cfg b/tests/xlconfigdata/test-paravirt-type.cfg
> new file mode 100644
> index 0000000..078db99
> --- /dev/null
> +++ b/tests/xlconfigdata/test-paravirt-type.cfg
> @@ -0,0 +1,13 @@
> +name = "XenGuest2"
> +uuid = "c7a5fdb2-cdaf-9455-926a-d65c16db1809"
> +type = "pv"
> +maxmem = 579
> +memory = 394
> +vcpus = 1
> +localtime = 0
> +on_poweroff = "destroy"
> +on_reboot = "restart"
> +on_crash = "restart"
> +kernel = "/tmp/vmlinuz"
> +ramdisk = "/tmp/initrd"
> +cmdline = "root=/dev/xvda1 console=hvc0"
> diff --git a/tests/xlconfigdata/test-paravirt-type.xml b/tests/xlconfigdata/test-paravirt-type.xml
> new file mode 100644
> index 0000000..4357640
> --- /dev/null
> +++ b/tests/xlconfigdata/test-paravirt-type.xml
> @@ -0,0 +1,25 @@
> +<domain type='xen'>
> +  <name>XenGuest2</name>
> +  <uuid>c7a5fdb2-cdaf-9455-926a-d65c16db1809</uuid>
> +  <memory unit='KiB'>592896</memory>
> +  <currentMemory unit='KiB'>403456</currentMemory>
> +  <vcpu placement='static'>1</vcpu>
> +  <os>
> +    <type arch='x86_64' machine='xenpv'>linux</type>
> +    <kernel>/tmp/vmlinuz</kernel>
> +    <initrd>/tmp/initrd</initrd>
> +    <cmdline>root=/dev/xvda1 console=hvc0</cmdline>
> +  </os>
> +  <clock offset='utc' adjustment='reset'/>
> +  <on_poweroff>destroy</on_poweroff>
> +  <on_reboot>restart</on_reboot>
> +  <on_crash>restart</on_crash>
> +  <devices>
> +    <console type='pty'>
> +      <target type='xen' port='0'/>
> +    </console>
> +    <input type='mouse' bus='xen'/>
> +    <input type='keyboard' bus='xen'/>
> +    <memballoon model='xen'/>
> +  </devices>
> +</domain>
> diff --git a/tests/xlconfigtest.c b/tests/xlconfigtest.c
> index 36f7699..ad6a964 100644
> --- a/tests/xlconfigtest.c
> +++ b/tests/xlconfigtest.c
> @@ -281,6 +281,8 @@ mymain(void)
>       DO_TEST_FORMAT("paravirt-cmdline-extra-root", false);
>       DO_TEST_FORMAT("paravirt-cmdline-bogus-extra-root", false);
>       DO_TEST("rbd-multihost-noauth");
> +    DO_TEST_FORMAT("paravirt-type", false);
> +    DO_TEST_FORMAT("fullvirt-type", false);
>   
>   #ifdef LIBXL_HAVE_DEVICE_CHANNEL
>       DO_TEST("channel-pty");
> 




More information about the libvir-list mailing list