[libvirt] [PATCH v2 00/12] Make auto completion better
by Michal Privoznik
v2 of:
https://www.redhat.com/archives/libvir-list/2017-November/msg00213.html
diff to v1:
-cmdComplete reworked
-Dozen of small improvements
The command completion is still missing. I mean, 'virsh start<TAB><TAB>' will
still give you list of --options rather than a list of domains to start with
it. And honestly, the code is so ugly, that I haven't even tried to implement
it. Be my guest.
Michal Privoznik (12):
vshCommandParse: Don't leak @tkdata
vshCommandStringParse: Allow retrieving partial result
vshReadlineParse: Escape returned results if needed
vshCommandOpt: Allow caller avoiding assert()
vsh: Fix vshCompleter signature
vsh: Call vshCmdOptDef.completer properly
vshCompleter: Pass partially parsed command
vsh: Introduce complete command
tools: Provide bash autompletion file
virsh: Introduce virshDomainNameCompleter
virsh: Introduce virshDomainInterfaceCompleter
virt-admin: Introduce vshAdmServerCompleter
configure.ac | 3 +
libvirt.spec.in | 2 +
m4/virt-bash-completion.m4 | 74 ++++++++++++++
tools/Makefile.am | 40 +++++++-
tools/bash-completion/vsh | 67 +++++++++++++
tools/virsh-completer.c | 150 ++++++++++++++++++++++++++++
tools/virsh-completer.h | 41 ++++++++
tools/virsh-domain-monitor.c | 33 +++---
tools/virsh-domain.c | 186 +++++++++++++++++-----------------
tools/virsh-snapshot.c | 24 ++---
tools/virsh.c | 5 +-
tools/virsh.h | 7 +-
tools/virt-admin-completer.c | 76 ++++++++++++++
tools/virt-admin-completer.h | 33 ++++++
tools/virt-admin.c | 13 ++-
tools/vsh.c | 232 +++++++++++++++++++++++++++++++++----------
tools/vsh.h | 23 ++++-
17 files changed, 831 insertions(+), 178 deletions(-)
create mode 100644 m4/virt-bash-completion.m4
create mode 100644 tools/bash-completion/vsh
create mode 100644 tools/virsh-completer.c
create mode 100644 tools/virsh-completer.h
create mode 100644 tools/virt-admin-completer.c
create mode 100644 tools/virt-admin-completer.h
--
2.13.6
6 years, 12 months
[libvirt] [PATCH] storage: Fix broken storage_driver build
by John Ferlan
Commit id '5d5c732d7' had an incorrect assignment and was found
by travis build:
storage/storage_driver.c:1668:14: error: equality comparison with extraneous
parentheses [-Werror,-Wparentheses-equality]
if ((obj == virStoragePoolObjListSearch(&driver->pools,
~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: John Ferlan <jferlan(a)redhat.com>
---
<sigh> Where are those damn pink ears.
Pushed as a build breaker.
src/storage/storage_driver.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c
index cb45052ef7..561ca36f90 100644
--- a/src/storage/storage_driver.c
+++ b/src/storage/storage_driver.c
@@ -1665,9 +1665,9 @@ storagePoolLookupByTargetPath(virConnectPtr conn,
return NULL;
storageDriverLock();
- if ((obj == virStoragePoolObjListSearch(&driver->pools,
- storagePoolLookupByTargetPathCallback,
- path))) {
+ if ((obj = virStoragePoolObjListSearch(&driver->pools,
+ storagePoolLookupByTargetPathCallback,
+ path))) {
def = virStoragePoolObjGetDef(obj);
pool = virGetStoragePool(conn, def->name, def->uuid, NULL, NULL);
virStoragePoolObjEndAPI(&obj);
--
2.13.6
6 years, 12 months
[libvirt] [PATCH v2 00/21] Fix serial console behavior on non-x86 architectures
by Andrea Bolognani
Changes from [v1]:
* introduce target model to go along with target type and
store the actual hypervisor-specific device name, as
suggested by Pavel;
* shorten the names of the esisting target types;
* introduce a bunch of additional cleanups required for the
first item.
I've kept existing R-bs because the changes didn't IMHO invalidate
them, but feel free to double check and possibly disagree.
Proper documentation will come as a follow-up, see the previous
version to get an idea of what it will look like.
[1] https://www.redhat.com/archives/libvir-list/2017-November/msg00545.html
Andrea Bolognani (17):
qemu: Introduce qemuDomainChrDefPostParse()
conf: Run devicePostParse() again for the first serial device
conf: Introduce VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_NONE
conf: Drop virDomainChrDeviceType.targetTypeAttr
conf: Introduce virDomainChrTargetDefFormat()
conf: Improve error handling in virDomainChrDefFormat()
conf: Improve virDomainChrTargetDefFormat()
conf: Remove ATTRIBUTE_FALLTHROUGH from virDomainChrTargetDefFormat()
qemu: Introduce qemuDomainChrTargetDefValidate()
conf: Parse and format virDomainChrSerialTargetModel
qemu: Set targetModel based on targetType for serial devices
qemu: Validate target model for serial devices
qemu: Format targetModel for serial devices
conf: Shorten names in virDomainChrSerialTarget enumeration
conf: Add target type and model for spapr-vty
qemu: Support usb-serial and pci-serial on pSeries
conf: Add target type and model for pl011
Pino Toscano (4):
conf: add VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_SCLP
conf: pass parseFlags down to virDomainDefAddConsoleCompat
conf: convert sclp/sclplm <console> as <serial>
qemu: switch s390/s390x default console back to serial
docs/formatdomain.html.in | 13 +-
docs/schemas/domaincommon.rng | 26 ++
src/conf/domain_conf.c | 311 +++++++++++++++++----
src/conf/domain_conf.h | 26 +-
src/libvirt_private.syms | 2 +
src/qemu/qemu_command.c | 126 ++++-----
src/qemu/qemu_domain.c | 310 ++++++++++++++++++--
src/qemu/qemu_domain_address.c | 7 +-
src/vz/vz_sdk.c | 5 +-
.../qemuargv2xml-console-compat.xml | 4 +-
tests/qemuargv2xmldata/qemuargv2xml-serial-dev.xml | 4 +-
.../qemuargv2xmldata/qemuargv2xml-serial-file.xml | 4 +-
.../qemuargv2xmldata/qemuargv2xml-serial-many.xml | 8 +-
tests/qemuargv2xmldata/qemuargv2xml-serial-pty.xml | 4 +-
.../qemuargv2xml-serial-tcp-telnet.xml | 4 +-
tests/qemuargv2xmldata/qemuargv2xml-serial-tcp.xml | 4 +-
tests/qemuargv2xmldata/qemuargv2xml-serial-udp.xml | 8 +-
.../qemuargv2xmldata/qemuargv2xml-serial-unix.xml | 4 +-
tests/qemuargv2xmldata/qemuargv2xml-serial-vc.xml | 4 +-
...otplug-console-compat-2-live+console-virtio.xml | 12 +-
.../qemuhotplug-console-compat-2-live.xml | 12 +-
.../qemuxml2argv-mach-virt-console-native.args | 1 +
.../qemuxml2argv-mach-virt-console-native.xml | 17 ++
... => qemuxml2argv-mach-virt-console-virtio.args} | 15 +-
.../qemuxml2argv-mach-virt-console-virtio.xml | 19 ++
...muxml2argv-mach-virt-serial+console-native.args | 1 +
...emuxml2argv-mach-virt-serial+console-native.xml | 18 ++
.../qemuxml2argv-mach-virt-serial-compat.args | 1 +
.../qemuxml2argv-mach-virt-serial-compat.xml | 19 ++
...muxml2argv-mach-virt-serial-invalid-machine.xml | 21 ++
...s => qemuxml2argv-mach-virt-serial-native.args} | 12 +-
.../qemuxml2argv-mach-virt-serial-native.xml | 16 ++
.../qemuxml2argv-mach-virt-serial-pci.args | 26 ++
.../qemuxml2argv-mach-virt-serial-pci.xml | 18 ++
.../qemuxml2argv-mach-virt-serial-usb.args | 27 ++
.../qemuxml2argv-mach-virt-serial-usb.xml | 21 ++
.../qemuxml2argv-pseries-basic.args | 2 +-
.../qemuxml2argv-pseries-console-native.args | 1 +
.../qemuxml2argv-pseries-console-native.xml | 17 ++
...gs => qemuxml2argv-pseries-console-virtio.args} | 10 +-
.../qemuxml2argv-pseries-console-virtio.xml | 19 ++
.../qemuxml2argv-pseries-cpu-compat-power9.args | 2 +-
.../qemuxml2argv-pseries-cpu-compat.args | 2 +-
.../qemuxml2argv-pseries-cpu-exact.args | 2 +-
.../qemuxml2argv-pseries-cpu-le.args | 2 +-
.../qemuxml2argv-pseries-panic-missing.args | 2 +-
.../qemuxml2argv-pseries-panic-no-address.args | 2 +-
...qemuxml2argv-pseries-serial+console-native.args | 1 +
.../qemuxml2argv-pseries-serial+console-native.xml | 18 ++
.../qemuxml2argv-pseries-serial-compat.args | 1 +
.../qemuxml2argv-pseries-serial-compat.xml | 19 ++
...qemuxml2argv-pseries-serial-invalid-machine.xml | 19 ++
...rgs => qemuxml2argv-pseries-serial-native.args} | 7 +-
.../qemuxml2argv-pseries-serial-native.xml | 16 ++
...c.args => qemuxml2argv-pseries-serial-pci.args} | 7 +-
.../qemuxml2argv-pseries-serial-pci.xml | 18 ++
...c.args => qemuxml2argv-pseries-serial-usb.args} | 8 +-
.../qemuxml2argv-pseries-serial-usb.xml | 21 ++
.../qemuxml2argv-pseries-usb-default.args | 2 +-
.../qemuxml2argv-pseries-usb-kbd.args | 2 +-
.../qemuxml2argv-pseries-usb-multi.args | 2 +-
.../qemuxml2argv-pseries-vio-user-assigned.args | 4 +-
.../qemuxml2argvdata/qemuxml2argv-pseries-vio.args | 4 +-
....args => qemuxml2argv-s390-console2serial.args} | 11 +-
.../qemuxml2argv-s390-console2serial.xml | 19 ++
...power9.args => qemuxml2argv-s390-serial-2.args} | 14 +-
.../qemuxml2argv-s390-serial-2.xml | 19 ++
....args => qemuxml2argv-s390-serial-console.args} | 11 +-
.../qemuxml2argv-s390-serial-console.xml | 15 +
...es-basic.args => qemuxml2argv-s390-serial.args} | 11 +-
.../qemuxml2argvdata/qemuxml2argv-s390-serial.xml | 14 +
...muxml2argv-serial-tcp-tlsx509-chardev-notls.xml | 8 +-
.../qemuxml2argvdata/qemuxml2argv-user-aliases.xml | 8 +-
tests/qemuxml2argvtest.c | 72 +++++
.../qemuxml2xmlout-aarch64-pci-serial.xml | 4 +-
.../qemuxml2xmlout-aarch64-virtio-pci-default.xml | 4 +-
.../qemuxml2xmlout-bios-nvram-os-interleave.xml | 4 +-
.../qemuxml2xmlout-chardev-label.xml | 8 +-
.../qemuxml2xmlout-console-compat-auto.xml | 4 +-
.../qemuxml2xmlout-console-compat.xml | 4 +-
.../qemuxml2xmlout-console-compat2.xml | 4 +-
.../qemuxml2xmlout-console-virtio-many.xml | 4 +-
.../qemuxml2xmlout-interface-driver.xml | 4 +-
.../qemuxml2xmlout-interface-server.xml | 8 +-
.../qemuxml2xmlout-mach-virt-console-native.xml | 1 +
...=> qemuxml2xmlout-mach-virt-console-virtio.xml} | 19 +-
...uxml2xmlout-mach-virt-serial+console-native.xml | 1 +
.../qemuxml2xmlout-mach-virt-serial-compat.xml | 31 ++
.../qemuxml2xmlout-mach-virt-serial-native.xml | 1 +
...xml => qemuxml2xmlout-mach-virt-serial-pci.xml} | 15 +-
.../qemuxml2xmlout-mach-virt-serial-usb.xml | 41 +++
.../qemuxml2xmlout-net-bandwidth.xml | 4 +-
.../qemuxml2xmlout-net-bandwidth2.xml | 4 +-
.../qemuxml2xmlout-net-coalesce.xml | 4 +-
.../qemuxml2xmloutdata/qemuxml2xmlout-net-mtu.xml | 4 +-
.../qemuxml2xmlout-panic-pseries.xml | 4 +-
.../qemuxml2xmlout-pci-serial-dev-chardev.xml | 4 +-
.../qemuxml2xmlout-pseries-console-native.xml | 1 +
...l => qemuxml2xmlout-pseries-console-virtio.xml} | 16 +-
.../qemuxml2xmlout-pseries-cpu-compat-power9.xml | 4 +-
.../qemuxml2xmlout-pseries-cpu-compat.xml | 4 +-
.../qemuxml2xmlout-pseries-cpu-exact.xml | 4 +-
.../qemuxml2xmlout-pseries-panic-missing.xml | 4 +-
.../qemuxml2xmlout-pseries-panic-no-address.xml | 4 +-
...emuxml2xmlout-pseries-serial+console-native.xml | 1 +
.../qemuxml2xmlout-pseries-serial-compat.xml | 1 +
...ml => qemuxml2xmlout-pseries-serial-native.xml} | 10 +-
...g.xml => qemuxml2xmlout-pseries-serial-pci.xml} | 16 +-
...g.xml => qemuxml2xmlout-pseries-serial-usb.xml} | 13 +-
.../qemuxml2xmlout-q35-virt-manager-basic.xml | 4 +-
.../qemuxml2xmlout-s390-defaultconsole.xml | 8 +-
.../qemuxml2xmlout-s390-serial-2.xml | 33 +++
.../qemuxml2xmlout-s390-serial-console.xml | 28 ++
.../qemuxml2xmlout-s390-serial.xml | 28 ++
.../qemuxml2xmlout-serial-spiceport-nospice.xml | 4 +-
.../qemuxml2xmlout-serial-spiceport.xml | 4 +-
.../qemuxml2xmlout-serial-target-port-auto.xml | 12 +-
.../qemuxml2xmlout-serial-tcp-tlsx509-chardev.xml | 8 +-
.../qemuxml2xmlout-tap-vhost-incorrect.xml | 4 +-
.../qemuxml2xmlout-tap-vhost.xml | 4 +-
.../qemuxml2xmlout-vhost_queues.xml | 4 +-
tests/qemuxml2xmltest.c | 54 ++++
122 files changed, 1667 insertions(+), 329 deletions(-)
create mode 120000 tests/qemuxml2argvdata/qemuxml2argv-mach-virt-console-native.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-mach-virt-console-native.xml
copy tests/qemuxml2argvdata/{qemuxml2argv-pseries-basic.args => qemuxml2argv-mach-virt-console-virtio.args} (53%)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-mach-virt-console-virtio.xml
create mode 120000 tests/qemuxml2argvdata/qemuxml2argv-mach-virt-serial+console-native.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-mach-virt-serial+console-native.xml
create mode 120000 tests/qemuxml2argvdata/qemuxml2argv-mach-virt-serial-compat.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-mach-virt-serial-compat.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-mach-virt-serial-invalid-machine.xml
copy tests/qemuxml2argvdata/{qemuxml2argv-pseries-basic.args => qemuxml2argv-mach-virt-serial-native.args} (62%)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-mach-virt-serial-native.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-mach-virt-serial-pci.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-mach-virt-serial-pci.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-mach-virt-serial-usb.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-mach-virt-serial-usb.xml
create mode 120000 tests/qemuxml2argvdata/qemuxml2argv-pseries-console-native.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-console-native.xml
copy tests/qemuxml2argvdata/{qemuxml2argv-pseries-basic.args => qemuxml2argv-pseries-console-virtio.args} (59%)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-console-virtio.xml
create mode 120000 tests/qemuxml2argvdata/qemuxml2argv-pseries-serial+console-native.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-serial+console-native.xml
create mode 120000 tests/qemuxml2argvdata/qemuxml2argv-pseries-serial-compat.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-serial-compat.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-serial-invalid-machine.xml
copy tests/qemuxml2argvdata/{qemuxml2argv-pseries-basic.args => qemuxml2argv-pseries-serial-native.args} (70%)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-serial-native.xml
copy tests/qemuxml2argvdata/{qemuxml2argv-pseries-basic.args => qemuxml2argv-pseries-serial-pci.args} (70%)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-serial-pci.xml
copy tests/qemuxml2argvdata/{qemuxml2argv-pseries-basic.args => qemuxml2argv-pseries-serial-usb.args} (65%)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-serial-usb.xml
copy tests/qemuxml2argvdata/{qemuxml2argv-pseries-basic.args => qemuxml2argv-s390-console2serial.args} (71%)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-s390-console2serial.xml
copy tests/qemuxml2argvdata/{qemuxml2argv-pseries-cpu-compat-power9.args => qemuxml2argv-s390-serial-2.args} (62%)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-s390-serial-2.xml
copy tests/qemuxml2argvdata/{qemuxml2argv-pseries-basic.args => qemuxml2argv-s390-serial-console.args} (71%)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-s390-serial-console.xml
copy tests/qemuxml2argvdata/{qemuxml2argv-pseries-basic.args => qemuxml2argv-s390-serial.args} (71%)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-s390-serial.xml
create mode 120000 tests/qemuxml2xmloutdata/qemuxml2xmlout-mach-virt-console-native.xml
copy tests/qemuxml2xmloutdata/{qemuxml2xmlout-s390-defaultconsole.xml => qemuxml2xmlout-mach-virt-console-virtio.xml} (50%)
create mode 120000 tests/qemuxml2xmloutdata/qemuxml2xmlout-mach-virt-serial+console-native.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-mach-virt-serial-compat.xml
create mode 120000 tests/qemuxml2xmloutdata/qemuxml2xmlout-mach-virt-serial-native.xml
copy tests/qemuxml2xmloutdata/{qemuxml2xmlout-aarch64-pci-serial.xml => qemuxml2xmlout-mach-virt-serial-pci.xml} (79%)
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-mach-virt-serial-usb.xml
create mode 120000 tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-console-native.xml
copy tests/qemuxml2xmloutdata/{qemuxml2xmlout-panic-pseries.xml => qemuxml2xmlout-pseries-console-virtio.xml} (75%)
create mode 120000 tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-serial+console-native.xml
create mode 120000 tests/qemuxml2xmloutdata/qemuxml2xmlout-pseries-serial-compat.xml
copy tests/qemuxml2xmloutdata/{qemuxml2xmlout-pseries-panic-missing.xml => qemuxml2xmlout-pseries-serial-native.xml} (82%)
copy tests/qemuxml2xmloutdata/{qemuxml2xmlout-pseries-panic-missing.xml => qemuxml2xmlout-pseries-serial-pci.xml} (74%)
copy tests/qemuxml2xmloutdata/{qemuxml2xmlout-pseries-panic-missing.xml => qemuxml2xmlout-pseries-serial-usb.xml} (75%)
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-s390-serial-2.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-s390-serial-console.xml
create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-s390-serial.xml
--
2.14.3
6 years, 12 months
[libvirt] [PATCH 0/5] Fix labeling for evdev passthrough hotplug
by Ján Tomko
https://bugzilla.redhat.com/show_bug.cgi?id=1509866
Ján Tomko (5):
Introduce virDomainInputDefGetPath
security: Introduce functions for input device hot(un)plug
qemu: Introduce functions for input device cgroup manipulation
qemu: functions for dealing with input device namespaces and labels
qemu: Properly label and create evdev on input device hotplug
src/conf/domain_conf.c | 16 +++++++
src/conf/domain_conf.h | 1 +
src/libvirt_private.syms | 3 ++
src/qemu/qemu_cgroup.c | 25 ++++++++++-
src/qemu/qemu_cgroup.h | 4 ++
src/qemu/qemu_domain.c | 93 +++++++++++++++++++++++++++++++++--------
src/qemu/qemu_domain.h | 6 +++
src/qemu/qemu_hotplug.c | 40 ++++++++++++++++--
src/qemu/qemu_security.c | 58 +++++++++++++++++++++++++
src/qemu/qemu_security.h | 6 +++
src/security/security_dac.c | 3 ++
src/security/security_driver.h | 9 ++++
src/security/security_manager.c | 36 ++++++++++++++++
src/security/security_manager.h | 8 ++++
src/security/security_nop.c | 11 +++++
src/security/security_selinux.c | 3 ++
src/security/security_stack.c | 38 +++++++++++++++++
17 files changed, 339 insertions(+), 21 deletions(-)
--
2.13.6
6 years, 12 months
[libvirt] [PATCH v2 0/2] Removing backend support when net interface is user/direct/hostdev.
by Julio Faracco
The <backend> xml tag is not supported for some interface types and the virsh
command 'attach-device' permits to add <backend> settings to all of them.
These commits avoid <backend> for user, direct and hostdev interface types.
One commit changes some test cases to avoid wrong <backend> usage.
Julio Faracco (2):
tests: changing network interface types when backend tag is defined.
qemu: network user/direct/hostdev do not support backend.
src/qemu/qemu_domain.c | 15 +++++++++++++++
.../qemuxml2argvdata/qemuxml2argv-tap-vhost-incorrect.xml | 6 ++++--
tests/qemuxml2argvdata/qemuxml2argv-tap-vhost.xml | 3 ++-
.../qemuxml2xmlout-tap-vhost-incorrect.xml | 6 ++++--
tests/qemuxml2xmloutdata/qemuxml2xmlout-tap-vhost.xml | 3 ++-
5 files changed, 27 insertions(+), 6 deletions(-)
--
2.7.4
7 years
[libvirt] [REPOST PATCH v6 0/8] Use secret objects to pass iSCSI passwords
by John Ferlan
Repost after updating the series to account for Peter's most recent
-drive and blockdev-add saga changes.
Includes adding the port number to the .args output and updating
the *.xmlfor the newly added ppc and gic*-aarch64 capabilitiesdata
Also merge the news.xml changes w/ recent vbox changes.
Previous repost here:
https://www.redhat.com/archives/libvir-list/2017-November/msg00124.html
Original:
https://www.redhat.com/archives/libvir-list/2017-October/msg01012.html
Copy of Original cover letter:
v5: https://www.redhat.com/archives/libvir-list/2017-October/msg00228.html
FWIW: AFAICT this series does not need/require changes that Peter has
posted for continuing blocked-add saga related to user-specified
backing chains:
https://www.redhat.com/archives/libvir-list/2017-October/msg00956.html
Changes since v5:
* Some patches pushed as part of Peter Krempa's work and the two patches
to perform the parsing of auth and encryption data in virStorageSource
were pushed separately
* Removed patches dealing with qemuDomainStorageSourceCopy and
virDomainDiskStorageSourceNew
Patches 9->16 reworked
Patch1: (previous patch 10)
- Rework logic to remove the need to pass around the @xmlopt for
virStorageSourcePtr allocation and instead VIR_ALLOC(iscsisrc->src)
directly as other consumers do.
Patch2: (previous patch 11)
- Use the qemuDomainStorageSourcePrivatePtr and friend macro
QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE to manage the iscsisrc->src data
making sure to ensure that srcPriv (e.g. privateData) exists.
Patch3: (previous patch 12)
- Only minor merge related changes.
Patch4: (previous patch 13)
- Merge related plus additional check to ensure srcPriv exists before
dereference secinfo
Patch5: (previous patch 14)
- No change
Patch 6: (previous patch 15)
- Merge related changes, plus checks for srcPriv before deref secinfo
NB: Testing note - I did ensure at this point if the password secret
capability check fails that the code will still do the right thing.
Patch7: (previous patch 9)
- No change... Presented since it wasn't ACK'd before
Patch8: (previous patch16)
- No change
John Ferlan (8):
conf,qemu: Replace iscsisrc fields with virStorageSourcePtr
qemu: Use private storage source for iscsi instead of private hostdev
qemu: Remove private hostdev
qemu: Refactor qemuBuildSCSIiSCSIHostdevDrvStr slightly
qemu: Get capabilities to use iscsi password-secret argument
qemu: Use secret objects to pass iSCSI passwords
docs: Add news article regarding auth/encryption placement
docs: Add news article to describe iSCSI usage of secret object
docs/news.xml | 23 ++++++
src/conf/domain_conf.c | 58 ++++++++--------
src/conf/domain_conf.h | 9 +--
src/lxc/lxc_native.c | 2 +-
src/qemu/qemu_capabilities.c | 2 +
src/qemu/qemu_capabilities.h | 1 +
src/qemu/qemu_command.c | 75 +++++++++++++++-----
src/qemu/qemu_command.h | 3 +-
src/qemu/qemu_domain.c | 81 +++++++---------------
src/qemu/qemu_domain.h | 14 ----
src/qemu/qemu_hotplug.c | 52 +++++++++++++-
src/qemu/qemu_parse_command.c | 4 +-
src/vbox/vbox_common.c | 2 +-
src/xenconfig/xen_common.c | 2 +-
src/xenconfig/xen_sxpr.c | 2 +-
src/xenconfig/xen_xl.c | 2 +-
.../caps_2.10.0-gicv2.aarch64.xml | 1 +
.../caps_2.10.0-gicv3.aarch64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 +
tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml | 1 +
tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 +
...xml2argv-disk-drive-network-iscsi-auth-AES.args | 41 +++++++++++
...uxml2argv-disk-drive-network-iscsi-auth-AES.xml | 43 ++++++++++++
...ml2argv-hostdev-scsi-virtio-iscsi-auth-AES.args | 45 ++++++++++++
...xml2argv-hostdev-scsi-virtio-iscsi-auth-AES.xml | 48 +++++++++++++
tests/qemuxml2argvtest.c | 10 +++
tests/virhostdevtest.c | 2 +-
30 files changed, 390 insertions(+), 139 deletions(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-drive-network-iscsi-auth-AES.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-drive-network-iscsi-auth-AES.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-scsi-virtio-iscsi-auth-AES.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-scsi-virtio-iscsi-auth-AES.xml
--
2.13.6
7 years
[libvirt] [PATCH] tools: Work around ancient readline
by Michal Privoznik
My latest commit of a785186446de785d uncovered a problem we fixed
in 9eb23fe2 but then reverted in 834c5720e443. Turns out, some
systems (I'm looking at you OS X) have ancient readline with
broken header file.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
Pushed as build breaker.
tools/vsh.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/tools/vsh.c b/tools/vsh.c
index 472438ead..e878119b9 100644
--- a/tools/vsh.c
+++ b/tools/vsh.c
@@ -2892,6 +2892,7 @@ vshReadlineInit(vshControl *ctl)
int ret = -1;
char *histsize_env = NULL;
const char *histsize_str = NULL;
+ const char *break_characters = " \t\n\\`@$><=;|&{(";
/* Opaque data for autocomplete callbacks. */
autoCompleteOpaque = ctl;
@@ -2900,12 +2901,20 @@ vshReadlineInit(vshControl *ctl)
* Work around ancient readline 4.1 (hello Mac OS X),
* which declared it as 'char *' instead of 'const char *'.
*/
+# if defined(RL_READLINE_VERSION) && RL_READLINE_VERSION > 0x0402
rl_readline_name = ctl->name;
+# else
+ rl_readline_name = (char *) ctl->name;
+# endif
/* Tell the completer that we want a crack first. */
rl_attempted_completion_function = vshReadlineCompletion;
- rl_basic_word_break_characters = " \t\n\\`@$><=;|&{(";
+# if defined(RL_READLINE_VERSION) && RL_READLINE_VERSION > 0x0402
+ rl_basic_word_break_characters = break_characters;
+# else
+ rl_basic_word_break_characters = (char *) break_characters;
+# endif
if (virAsprintf(&histsize_env, "%s_HISTSIZE", ctl->env_prefix) < 0)
goto cleanup;
--
2.13.6
7 years
[libvirt] [PATCH 0/6] qemu: command: Clean up formatting of some attributes (blockdev-add saga)
by Peter Krempa
'file.password-secret' and 'file.debug' were improperly added to a
random place when formatting -drive. This would not play well when the
same attributes should be formatted via the JSON generator.
Clean up the mess.
Peter Krempa (6):
qemu: command: Inject password-secret only when not using JSON props
util: storage: Add fields for debug options for disk drivers
qemu: block: Add support for formatting gluster debug level via JSON
qemu: hotplug: Rename qemuDomainPrepareDisk to
qemuHotplugPrepareDiskAccess
qemu: domain: Unify disk source prepare steps
qemu: command: Properly format disk 'debug' attribute
src/qemu/qemu_block.c | 17 +++++++++++++++--
src/qemu/qemu_command.c | 34 ++++++++++------------------------
src/qemu/qemu_command.h | 1 -
src/qemu/qemu_domain.c | 27 +++++++++++++++++++++++++--
src/qemu/qemu_domain.h | 16 ++++++----------
src/qemu/qemu_hotplug.c | 29 +++++++++++++----------------
src/qemu/qemu_process.c | 5 +----
src/util/virstoragefile.c | 2 ++
src/util/virstoragefile.h | 3 +++
9 files changed, 75 insertions(+), 59 deletions(-)
--
2.14.3
7 years
[libvirt] [PATCH v2 00/11] qemu: Fix <shareable/> disks for new qemu
by Peter Krempa
Introduction of the disk image locking in qemu created a regression
where disk shared access with <shareable/> would not work.
Since the disk locking is a desired feature, allow libvirt to configure
qemu in such way that <shareable/> disks are exempt from write locks.
First few patches refactor some stuff so that it's less ugly.
This series also mandates that sharing is used only with 'raw' disks
since other formats could corrupt metadata.
v2:
- better capability detection (all the drive types)
- fixed bug when share-rw would be used only with virtio disks
- improved error message with automatic format probing
- rebased to current master (new capability)
- added BZ links into few cover letters
Peter Krempa (11):
qemu: Move snapshot disk validation functions into one
qemu: domain: Despaghetify qemuDomainDeviceDefValidate
qemu: domain: Move hostdev validation into separate function
qemu: domain: Move video device validation into separate function
qemu: domain: Refactor domain device validation function
qemu: block: Add function to check if storage source allows concurrent
access
qemu: domain: Reject shared disk access if backing format does not
support it
qemu: snapshot: Disallow snapshot of unsupported shared disks
qemu: Disallow pivot of shared disks to unsupported storage
qemu: caps: Add capability for 'share-rw' disk option
qemu: command: Mark <shared/> disks as such in qemu
src/qemu/qemu_block.c | 15 ++
src/qemu/qemu_block.h | 3 +
src/qemu/qemu_capabilities.c | 5 +
src/qemu/qemu_capabilities.h | 1 +
src/qemu/qemu_command.c | 4 +
src/qemu/qemu_domain.c | 299 +++++++++++++--------
src/qemu/qemu_driver.c | 121 +++++----
.../caps_2.10.0-gicv2.aarch64.xml | 1 +
.../caps_2.10.0-gicv3.aarch64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 +
tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml | 1 +
tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml | 1 +
tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 +
.../qemuxml2argv-disk-drive-shared-locking.args | 32 +++
.../qemuxml2argv-disk-drive-shared-locking.xml | 42 +++
.../qemuxml2argv-disk-drive-shared-qcow.xml | 28 ++
.../qemuxml2argv-disk-drive-shared.args | 2 +-
.../qemuxml2argv-disk-drive-shared.xml | 2 +-
tests/qemuxml2argvtest.c | 3 +
21 files changed, 401 insertions(+), 164 deletions(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-drive-shared-locking.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-drive-shared-locking.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-drive-shared-qcow.xml
--
2.14.3
7 years
[libvirt] [PATCH] qemu: add support for setting OEM strings SMBIOS data fields
by Daniel P. Berrange
The OEM strings table in SMBIOS allows the vendor to pass arbitrary strings
into the guest OS. This can be used as a way to pass data to an application like
cloud-init, or potentially as an alternative to the kernel command line for OS
installers where you can't modify the install ISO image to change the kernel
args.
As an example, consider if cloud-init and anaconda supported OEM strings you
could use something like
<oemStrings>
<entry>cloud-init:ds=nocloud-net;s=http://10.10.0.1:8000/</entry>
<entry>anaconda:method=http://dl.fedoraproject.org/pub/fedora/linux/releases/25/...</entry>
</oemStrings>
use of a application specific prefix as illustrated above is recommended so that
an app can reliably identify which of the many OEM strings are targetted at it.
Signed-off-by: Daniel P. Berrange <berrange(a)redhat.com>
---
NB, the QEMU side of this patch is queued but won't merge until 2.12 opens
up for dev work, so this libvirt patch will need to wait a little
docs/formatdomain.html.in | 13 ++++++
docs/schemas/domaincommon.rng | 9 ++++
src/conf/domain_conf.c | 53 ++++++++++++++++++++++
src/qemu/qemu_command.c | 28 ++++++++++++
src/util/virsysinfo.c | 33 ++++++++++++++
src/util/virsysinfo.h | 10 ++++
tests/qemuxml2argvdata/qemuxml2argv-smbios.args | 2 +
tests/qemuxml2argvdata/qemuxml2argv-smbios.xml | 5 ++
tests/qemuxml2xmloutdata/qemuxml2xmlout-smbios.xml | 5 ++
9 files changed, 158 insertions(+)
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index 8dbea6af71..bd7c542173 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -411,6 +411,10 @@
<entry name='version'>0B98401 Pro</entry>
<entry name='serial'>W1KS427111E</entry>
</baseBoard>
+ <oemStrings>
+ <entry>myappname:some arbitrary data</entry>
+ <entry>otherappname:more arbitrary data</entry>
+ </oemStrings>
</sysinfo>
...</pre>
@@ -498,6 +502,15 @@
validation and <code>date</code> format checking, all values are
passed as strings to the hypervisor driver.
</dd>
+ <dt><code>oemStrings</code></dt>
+ <dd>
+ This is block 11 of SMBIOS. This element should appear once and
+ can have multiple <code>entry</code> child elements, each providing
+ arbitrary string data. There are no restrictions on what data can
+ be provided in the entries, however, if the data is intended to be
+ consumed by an application in the guest, it is recommended to use
+ the application name as a prefix in the string.
+ </dd>
</dl>
</dd>
</dl>
diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index 82fdfd5f73..98de7d2cb1 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -4834,6 +4834,15 @@
</oneOrMore>
</element>
</zeroOrMore>
+ <optional>
+ <element name="oemStrings">
+ <oneOrMore>
+ <element name="entry">
+ <ref name="sysinfo-value"/>
+ </element>
+ </oneOrMore>
+ </element>
+ </optional>
</interleave>
</element>
</define>
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 0e4f76f066..5d81fbb555 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -14315,6 +14315,48 @@ virSysinfoBaseBoardParseXML(xmlXPathContextPtr ctxt,
return ret;
}
+static int
+virSysinfoOEMStringsParseXML(xmlNodePtr node,
+ xmlXPathContextPtr ctxt,
+ virSysinfoOEMStringsDefPtr *oem)
+{
+ int ret = -1;
+ virSysinfoOEMStringsDefPtr def;
+ xmlNodePtr *strings = NULL;
+ int nstrings;
+ size_t i;
+
+ if (!virXMLNodeNameEqual(node, "oemStrings")) {
+ virReportError(VIR_ERR_XML_ERROR, "%s",
+ _("XML does not contain expected 'system' element"));
+ return ret;
+ }
+
+ nstrings = virXPathNodeSet("./entry", ctxt, &strings);
+ if (nstrings < 0)
+ return -1;
+ if (nstrings == 0)
+ return 0;
+
+ if (VIR_ALLOC(def) < 0)
+ goto cleanup;
+
+ if (VIR_ALLOC_N(def->values, nstrings) < 0)
+ goto cleanup;
+
+ def->nvalues = nstrings;
+ for (i = 0; i < nstrings; i++)
+ def->values[i] = virXMLNodeContentString(strings[i]);
+
+ *oem = def;
+ def = NULL;
+ ret = 0;
+ cleanup:
+ VIR_FREE(strings);
+ virSysinfoOEMStringsDefFree(def);
+ return ret;
+}
+
static virSysinfoDefPtr
virSysinfoParseXML(xmlNodePtr node,
xmlXPathContextPtr ctxt,
@@ -14373,6 +14415,17 @@ virSysinfoParseXML(xmlNodePtr node,
if (virSysinfoBaseBoardParseXML(ctxt, &def->baseBoard, &def->nbaseBoard) < 0)
goto error;
+ /* Extract system related metadata */
+ if ((tmpnode = virXPathNode("./oemStrings[1]", ctxt)) != NULL) {
+ oldnode = ctxt->node;
+ ctxt->node = tmpnode;
+ if (virSysinfoOEMStringsParseXML(tmpnode, ctxt, &def->oemStrings) < 0) {
+ ctxt->node = oldnode;
+ goto error;
+ }
+ ctxt->node = oldnode;
+ }
+
cleanup:
VIR_FREE(type);
return def;
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 56729e4981..01fb8dff6e 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -6063,6 +6063,26 @@ qemuBuildSmbiosBaseBoardStr(virSysinfoBaseBoardDefPtr def)
}
+static char *
+qemuBuildSmbiosOEMStringsStr(virSysinfoOEMStringsDefPtr def)
+{
+ virBuffer buf = VIR_BUFFER_INITIALIZER;
+ size_t i;
+
+ if (!def)
+ return NULL;
+
+ virBufferAddLit(&buf, "type=11");
+
+ for (i = 0; i < def->nvalues; i++) {
+ virBufferAddLit(&buf, ",value=");
+ virQEMUBuildBufferEscapeComma(&buf, def->values[i]);
+ }
+
+ return virBufferContentAndReset(&buf);
+}
+
+
static int
qemuBuildSmbiosCommandLine(virCommandPtr cmd,
virQEMUDriverPtr driver,
@@ -6133,6 +6153,14 @@ qemuBuildSmbiosCommandLine(virCommandPtr cmd,
virCommandAddArgList(cmd, "-smbios", smbioscmd, NULL);
VIR_FREE(smbioscmd);
}
+
+ if (source->oemStrings) {
+ if (!(smbioscmd = qemuBuildSmbiosOEMStringsStr(source->oemStrings)))
+ return -1;
+
+ virCommandAddArgList(cmd, "-smbios", smbioscmd, NULL);
+ VIR_FREE(smbioscmd);
+ }
}
return 0;
diff --git a/src/util/virsysinfo.c b/src/util/virsysinfo.c
index ab81b1f7f0..0ad3e6c70d 100644
--- a/src/util/virsysinfo.c
+++ b/src/util/virsysinfo.c
@@ -106,6 +106,18 @@ void virSysinfoBaseBoardDefClear(virSysinfoBaseBoardDefPtr def)
VIR_FREE(def->location);
}
+void virSysinfoOEMStringsDefFree(virSysinfoOEMStringsDefPtr def)
+{
+ size_t i;
+
+ if (def == NULL)
+ return;
+
+ for (i = 0; i < def->nvalues; i++)
+ VIR_FREE(def->values[i]);
+ VIR_FREE(def->values);
+}
+
/**
* virSysinfoDefFree:
* @def: a sysinfo structure
@@ -155,6 +167,8 @@ void virSysinfoDefFree(virSysinfoDefPtr def)
}
VIR_FREE(def->memory);
+ virSysinfoOEMStringsDefFree(def->oemStrings);
+
VIR_FREE(def);
}
@@ -1263,6 +1277,24 @@ virSysinfoMemoryFormat(virBufferPtr buf, virSysinfoDefPtr def)
}
}
+static void
+virSysinfoOEMStringsFormat(virBufferPtr buf, virSysinfoOEMStringsDefPtr def)
+{
+ size_t i;
+
+ if (!def)
+ return;
+
+ virBufferAddLit(buf, "<oemStrings>\n");
+ virBufferAdjustIndent(buf, 2);
+ for (i = 0; i < def->nvalues; i++) {
+ virBufferEscapeString(buf, "<entry>%s</entry>\n",
+ def->values[i]);
+ }
+ virBufferAdjustIndent(buf, -2);
+ virBufferAddLit(buf, "</oemStrings>\n");
+}
+
/**
* virSysinfoFormat:
* @buf: buffer to append output to (may use auto-indentation)
@@ -1293,6 +1325,7 @@ virSysinfoFormat(virBufferPtr buf, virSysinfoDefPtr def)
virSysinfoBaseBoardFormat(&childrenBuf, def->baseBoard, def->nbaseBoard);
virSysinfoProcessorFormat(&childrenBuf, def);
virSysinfoMemoryFormat(&childrenBuf, def);
+ virSysinfoOEMStringsFormat(&childrenBuf, def->oemStrings);
virBufferAsprintf(buf, "<sysinfo type='%s'", type);
if (virBufferUse(&childrenBuf)) {
diff --git a/src/util/virsysinfo.h b/src/util/virsysinfo.h
index 1e51d2cafa..ecb3a36eb8 100644
--- a/src/util/virsysinfo.h
+++ b/src/util/virsysinfo.h
@@ -98,6 +98,13 @@ struct _virSysinfoBaseBoardDef {
/* XXX board type */
};
+typedef struct _virSysinfoOEMStringsDef virSysinfoOEMStringsDef;
+typedef virSysinfoOEMStringsDef *virSysinfoOEMStringsDefPtr;
+struct _virSysinfoOEMStringsDef {
+ size_t nvalues;
+ char **values;
+};
+
typedef struct _virSysinfoDef virSysinfoDef;
typedef virSysinfoDef *virSysinfoDefPtr;
struct _virSysinfoDef {
@@ -114,6 +121,8 @@ struct _virSysinfoDef {
size_t nmemory;
virSysinfoMemoryDefPtr memory;
+
+ virSysinfoOEMStringsDefPtr oemStrings;
};
virSysinfoDefPtr virSysinfoRead(void);
@@ -121,6 +130,7 @@ virSysinfoDefPtr virSysinfoRead(void);
void virSysinfoBIOSDefFree(virSysinfoBIOSDefPtr def);
void virSysinfoSystemDefFree(virSysinfoSystemDefPtr def);
void virSysinfoBaseBoardDefClear(virSysinfoBaseBoardDefPtr def);
+void virSysinfoOEMStringsDefFree(virSysinfoOEMStringsDefPtr def);
void virSysinfoDefFree(virSysinfoDefPtr def);
int virSysinfoFormat(virBufferPtr buf, virSysinfoDefPtr def)
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-smbios.args b/tests/qemuxml2argvdata/qemuxml2argv-smbios.args
index 3d94a109f9..d27d436a3a 100644
--- a/tests/qemuxml2argvdata/qemuxml2argv-smbios.args
+++ b/tests/qemuxml2argvdata/qemuxml2argv-smbios.args
@@ -17,6 +17,8 @@ serial=32dfcb37-5af1-552b-357c-be8c3aa38310,\
uuid=c7a5fdbd-edaf-9455-926a-d65c16db1809,sku=1234567890,family=Red Hat' \
-smbios 'type=2,manufacturer=Hewlett-Packard,product=0B4Ch,version=D,\
serial=CZC1065993,asset=CZC1065993,location=Upside down' \
+-smbios 'type=11,value=Hello,value=World,value=This is,,\
+ more tricky value=escaped' \
-nographic \
-nodefaults \
-chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-smbios.xml b/tests/qemuxml2argvdata/qemuxml2argv-smbios.xml
index c12477dcb5..319bdf61df 100644
--- a/tests/qemuxml2argvdata/qemuxml2argv-smbios.xml
+++ b/tests/qemuxml2argvdata/qemuxml2argv-smbios.xml
@@ -26,6 +26,11 @@
<entry name='asset'>CZC1065993</entry>
<entry name='location'>Upside down</entry>
</baseBoard>
+ <oemStrings>
+ <entry>Hello</entry>
+ <entry>World</entry>
+ <entry>This is, more tricky value=escaped</entry>
+ </oemStrings>
</sysinfo>
<os>
<type arch='i686' machine='pc'>hvm</type>
diff --git a/tests/qemuxml2xmloutdata/qemuxml2xmlout-smbios.xml b/tests/qemuxml2xmloutdata/qemuxml2xmlout-smbios.xml
index d21f6275f0..cbe616c7da 100644
--- a/tests/qemuxml2xmloutdata/qemuxml2xmlout-smbios.xml
+++ b/tests/qemuxml2xmloutdata/qemuxml2xmlout-smbios.xml
@@ -26,6 +26,11 @@
<entry name='asset'>CZC1065993</entry>
<entry name='location'>Upside down</entry>
</baseBoard>
+ <oemStrings>
+ <entry>Hello</entry>
+ <entry>World</entry>
+ <entry>This is, more tricky value=escaped</entry>
+ </oemStrings>
</sysinfo>
<os>
<type arch='i686' machine='pc'>hvm</type>
--
2.14.3
7 years