On Thu, Nov 23, 2017 at 05:42:32PM +0100, Ján Tomko wrote: > 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 <berrange@xxxxxxxxxx> > > --- > > > > 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... Indeed, it is not visible in QMP schema, nor command line help, as this falls in one of the gaps in QEMU's capabilities reporting. > > > 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 Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list