[libvirt] [PATCH 3/7] Add smbios element to schema and configuration

the element has a mode attribute allowing only 3 values: - emulate: use the smbios emulation from the hypervisor - host: try to use the smbios values from the node - sysinfo: grab the values from the <sysinfo> fields * docs/schemas/domain.rng: extend the schemas * src/conf/domain_conf.h: add the flag to the domain config * src/conf/domain_conf.h: parse and serialize the smbios if present Signed-off-by: Daniel Veillard <veillard@redhat.com> --- docs/schemas/domain.rng | 16 ++++++++++++++++ src/conf/domain_conf.c | 17 +++++++++++++++++ src/conf/domain_conf.h | 11 +++++++++++ 3 files changed, 44 insertions(+), 0 deletions(-)

On Tue, Nov 02, 2010 at 05:36:45PM +0100, Daniel Veillard wrote:
the element has a mode attribute allowing only 3 values: - emulate: use the smbios emulation from the hypervisor - host: try to use the smbios values from the node - sysinfo: grab the values from the <sysinfo> fields
* docs/schemas/domain.rng: extend the schemas * src/conf/domain_conf.h: add the flag to the domain config * src/conf/domain_conf.h: parse and serialize the smbios if present
Signed-off-by: Daniel Veillard <veillard@redhat.com> --- docs/schemas/domain.rng | 16 ++++++++++++++++ src/conf/domain_conf.c | 17 +++++++++++++++++ src/conf/domain_conf.h | 11 +++++++++++ 3 files changed, 44 insertions(+), 0 deletions(-)
Ah, ok some parts of patch 2 need to be pulled into this patch 3 to ensure the code is bisectable still.
diff --git a/docs/schemas/domain.rng b/docs/schemas/domain.rng index ced46f3..aee425f 100644 --- a/docs/schemas/domain.rng +++ b/docs/schemas/domain.rng @@ -33,6 +33,9 @@ <optional> <ref name="sysinfo"/> </optional> + <optional> + <ref name="smbios"/> + </optional> <ref name="os"/> <ref name="clock"/> <ref name="resources"/>
This bit should be under <define name='oshvm'>
@@ -1819,6 +1822,19 @@ </data> </define>
+ <define name="smbios"> + <element name="smbios"> + <attribute name="mode"> + <choice> + <value>emulate</value> + <value>host</value> + <value>sysinfo</value> + </choice> + </attribute> + <empty/> + </element> + </define>
Looks good.
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 2fc761b..259ee80 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c
@@ -5068,6 +5074,17 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps, if (def->sysinfo == NULL) goto error; } + tmp = virXPathString("string(./smbios/@mode)", ctxt);
This would needs to be ./os/smbios/@mode
+ if (tmp) { + if ((def->smbios_mode = virDomainSmbiosModeTypeFromString(tmp)) < 0) { + virDomainReportError(VIR_ERR_INTERNAL_ERROR, + _("unknown smbios mode '%s'"), tmp); + goto error; + } + VIR_FREE(tmp); + } else { + def->smbios_mode = VIR_DOMAIN_SMBIOS_NONE; /* not present */ + }
@@ -968,6 +977,7 @@ struct _virDomainDef { virDomainMemballoonDefPtr memballoon; virCPUDefPtr cpu; virSysinfoDefPtr sysinfo; + int smbios_mode;
And this moved to virDomainOsDef. Regards, Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
participants (2)
-
Daniel P. Berrange
-
Daniel Veillard