mirror of https://gitee.com/openkylin/libvirt.git
smbios: support system family
* docs/schemas/domain.rng (sysinfo-system-name): Also allow family. * src/util/sysinfo.h (struct _virSysinfoDef): Add system_family. * src/conf/domain_conf.c (virSysinfoParseXML) (virDomainSysinfoDefFormat): Support it. * src/util/sysinfo.c (virSysinfoDefFree, virSysinfoRead): Likewise. * src/qemu/qemu_conf.c (qemuBuildSmbiosSystemStr): Likewise. * tests/qemuxml2argvdata/qemuxml2argv-smbios.xml: Adjust test. * tests/qemuxml2argvdata/qemuxml2argv-smbios.args: Likewise.
This commit is contained in:
parent
575914cf3d
commit
8cad56037b
docs/schemas
src
tests/qemuxml2argvdata
|
@ -1875,6 +1875,7 @@
|
||||||
<value>serial</value>
|
<value>serial</value>
|
||||||
<value>uuid</value>
|
<value>uuid</value>
|
||||||
<value>sku</value>
|
<value>sku</value>
|
||||||
|
<value>family</value>
|
||||||
</choice>
|
</choice>
|
||||||
</define>
|
</define>
|
||||||
|
|
||||||
|
|
|
@ -3625,6 +3625,8 @@ virSysinfoParseXML(const xmlNodePtr node,
|
||||||
virXPathString("string(system/entry[@name='uuid'])", ctxt);
|
virXPathString("string(system/entry[@name='uuid'])", ctxt);
|
||||||
def->system_sku =
|
def->system_sku =
|
||||||
virXPathString("string(system/entry[@name='sku'])", ctxt);
|
virXPathString("string(system/entry[@name='sku'])", ctxt);
|
||||||
|
def->system_family =
|
||||||
|
virXPathString("string(system/entry[@name='family'])", ctxt);
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
VIR_FREE(type);
|
VIR_FREE(type);
|
||||||
|
@ -6425,7 +6427,8 @@ virDomainSysinfoDefFormat(virBufferPtr buf,
|
||||||
}
|
}
|
||||||
if ((def->system_manufacturer != NULL) || (def->system_product != NULL) ||
|
if ((def->system_manufacturer != NULL) || (def->system_product != NULL) ||
|
||||||
(def->system_version != NULL) || (def->system_serial != NULL) ||
|
(def->system_version != NULL) || (def->system_serial != NULL) ||
|
||||||
(def->system_uuid != NULL) || (def->system_sku != NULL)) {
|
(def->system_uuid != NULL) || (def->system_sku != NULL) ||
|
||||||
|
(def->system_family != NULL)) {
|
||||||
virBufferAddLit(buf, " <system>\n");
|
virBufferAddLit(buf, " <system>\n");
|
||||||
if (def->system_manufacturer != NULL)
|
if (def->system_manufacturer != NULL)
|
||||||
virBufferEscapeString(buf,
|
virBufferEscapeString(buf,
|
||||||
|
@ -6451,6 +6454,10 @@ virDomainSysinfoDefFormat(virBufferPtr buf,
|
||||||
virBufferEscapeString(buf,
|
virBufferEscapeString(buf,
|
||||||
" <entry name='sku'>%s</entry>\n",
|
" <entry name='sku'>%s</entry>\n",
|
||||||
def->system_sku);
|
def->system_sku);
|
||||||
|
if (def->system_family != NULL)
|
||||||
|
virBufferEscapeString(buf,
|
||||||
|
" <entry name='family'>%s</entry>\n",
|
||||||
|
def->system_family);
|
||||||
virBufferAddLit(buf, " </system>\n");
|
virBufferAddLit(buf, " </system>\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3651,7 +3651,8 @@ static char *qemuBuildSmbiosSystemStr(virSysinfoDefPtr def)
|
||||||
|
|
||||||
if ((def->system_manufacturer == NULL) && (def->system_sku == NULL) &&
|
if ((def->system_manufacturer == NULL) && (def->system_sku == NULL) &&
|
||||||
(def->system_product == NULL) && (def->system_uuid == NULL) &&
|
(def->system_product == NULL) && (def->system_uuid == NULL) &&
|
||||||
(def->system_version == NULL) && (def->system_serial == NULL))
|
(def->system_version == NULL) && (def->system_serial == NULL) &&
|
||||||
|
(def->system_family == NULL))
|
||||||
return(NULL);
|
return(NULL);
|
||||||
|
|
||||||
virBufferAddLit(&buf, "type=1");
|
virBufferAddLit(&buf, "type=1");
|
||||||
|
@ -3675,6 +3676,9 @@ static char *qemuBuildSmbiosSystemStr(virSysinfoDefPtr def)
|
||||||
/* 1:SKU Number */
|
/* 1:SKU Number */
|
||||||
if (def->system_sku)
|
if (def->system_sku)
|
||||||
virBufferVSprintf(&buf, ",sku=%s", def->system_sku);
|
virBufferVSprintf(&buf, ",sku=%s", def->system_sku);
|
||||||
|
/* 1:Family */
|
||||||
|
if (def->system_family)
|
||||||
|
virBufferVSprintf(&buf, ",family=%s", def->system_family);
|
||||||
|
|
||||||
if (virBufferError(&buf)) {
|
if (virBufferError(&buf)) {
|
||||||
virReportOOMError();
|
virReportOOMError();
|
||||||
|
|
|
@ -68,6 +68,7 @@ void virSysinfoDefFree(virSysinfoDefPtr def)
|
||||||
VIR_FREE(def->system_serial);
|
VIR_FREE(def->system_serial);
|
||||||
VIR_FREE(def->system_uuid);
|
VIR_FREE(def->system_uuid);
|
||||||
VIR_FREE(def->system_sku);
|
VIR_FREE(def->system_sku);
|
||||||
|
VIR_FREE(def->system_family);
|
||||||
VIR_FREE(def);
|
VIR_FREE(def);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,6 +218,12 @@ virSysinfoRead(void) {
|
||||||
if ((eol) && ((ret->system_sku = strndup(cur, eol - cur)) == NULL))
|
if ((eol) && ((ret->system_sku = strndup(cur, eol - cur)) == NULL))
|
||||||
goto no_memory;
|
goto no_memory;
|
||||||
}
|
}
|
||||||
|
if ((cur = strstr(base, "Family: ")) != NULL) {
|
||||||
|
cur += 8;
|
||||||
|
eol = strchr(cur, '\n');
|
||||||
|
if ((eol) && ((ret->system_family = strndup(cur, eol - cur)) == NULL))
|
||||||
|
goto no_memory;
|
||||||
|
}
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
VIR_FREE(outbuf);
|
VIR_FREE(outbuf);
|
||||||
|
|
|
@ -49,6 +49,7 @@ struct _virSysinfoDef {
|
||||||
char *system_serial;
|
char *system_serial;
|
||||||
char *system_uuid;
|
char *system_uuid;
|
||||||
char *system_sku;
|
char *system_sku;
|
||||||
|
char *system_family;
|
||||||
};
|
};
|
||||||
|
|
||||||
virSysinfoDefPtr virSysinfoRead(void);
|
virSysinfoDefPtr virSysinfoRead(void);
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 -smbios type=0,vendor=QEmu/KVM,version=0.13 -smbios type=1,manufacturer=Fedora,product=Virt-Manager,version=0.8.2-3.fc14,serial=32dfcb37-5af1-552b-357c-be8c3aa38310,uuid=c7a5fdbd-edaf-9455-926a-d65c16db1809 -nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial none -parallel none -usb
|
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 -smbios type=0,vendor=QEmu/KVM,version=0.13 -smbios type=1,manufacturer=Fedora,product=Virt-Manager,version=0.8.2-3.fc14,serial=32dfcb37-5af1-552b-357c-be8c3aa38310,uuid=c7a5fdbd-edaf-9455-926a-d65c16db1809,sku=1234567890,family=Red Hat -nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -hda /dev/HostVG/QEMUGuest1 -net none -serial none -parallel none -usb
|
||||||
|
|
|
@ -15,6 +15,8 @@
|
||||||
<entry name="version">0.8.2-3.fc14</entry>
|
<entry name="version">0.8.2-3.fc14</entry>
|
||||||
<entry name="serial">32dfcb37-5af1-552b-357c-be8c3aa38310</entry>
|
<entry name="serial">32dfcb37-5af1-552b-357c-be8c3aa38310</entry>
|
||||||
<entry name="uuid">c7a5fdbd-edaf-9455-926a-d65c16db1809</entry>
|
<entry name="uuid">c7a5fdbd-edaf-9455-926a-d65c16db1809</entry>
|
||||||
|
<entry name="sku">1234567890</entry>
|
||||||
|
<entry name="family">Red Hat</entry>
|
||||||
</system>
|
</system>
|
||||||
</sysinfo>
|
</sysinfo>
|
||||||
<os>
|
<os>
|
||||||
|
|
Loading…
Reference in New Issue