On Fri, Nov 17, 2017 at 04:48:53PM +0000, Daniel P. Berrange wrote:
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/x86_64/os</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 <[email protected]> --- 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
Let me guess, there will be no way to tell whether QEMU supports this option or not...
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/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"));
This copy-and-paste error message with the wrong element name should not happen, since we only call this function if we found an 'oemStrings' node.
+ return ret;
+ }
+
+ nstrings = virXPathNodeSet("./entry", ctxt, &strings);
+ if (nstrings < 0)
+ return -1;
+ if (nstrings == 0)
+ return 0;
+
+ if (VIR_ALLOC(def) < 0)
+ goto cleanup;
+
ACK Would look better with the XML changes and command line formatter changes separated Jan
signature.asc
Description: Digital signature
-- libvir-list mailing list [email protected] https://www.redhat.com/mailman/listinfo/libvir-list
