Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
---
include/libvirt/libvirt-host.h | 1 +
src/bhyve/bhyve_driver.c | 7 +++++--
src/libxl/libxl_driver.c | 7 +++++--
src/qemu/qemu_driver.c | 18 +++++++++++++-----
tools/virsh-host.c | 14 ++++++++++++++
5 files changed, 38 insertions(+), 9 deletions(-)
diff --git a/include/libvirt/libvirt-host.h b/include/libvirt/libvirt-host.h
index 6972834175..9e7840b9c2 100644
--- a/include/libvirt/libvirt-host.h
+++ b/include/libvirt/libvirt-host.h
@@ -754,6 +754,7 @@ typedef enum {
typedef enum {
VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE = (1 << 0), /* treat incompatible
CPUs as failure */
+ VIR_CONNECT_COMPARE_CPU_VALIDATE_XML = (1 << 1), /* validate xml files */
} virConnectCompareCPUFlags;
int virConnectCompareCPU(virConnectPtr conn,
diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c
index fc57ccd504..7dce3f8648 100644
--- a/src/bhyve/bhyve_driver.c
+++ b/src/bhyve/bhyve_driver.c
@@ -1442,14 +1442,17 @@ bhyveConnectCompareCPU(virConnectPtr conn,
int ret = VIR_CPU_COMPARE_ERROR;
virCapsPtr caps = NULL;
bool failIncompatible;
+ bool validateXML;
- virCheckFlags(VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE,
+ virCheckFlags(VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE |
+ VIR_CONNECT_COMPARE_CPU_VALIDATE_XML,
VIR_CPU_COMPARE_ERROR);
if (virConnectCompareCPUEnsureACL(conn) < 0)
goto cleanup;
failIncompatible = !!(flags & VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE);
+ validateXML = !!(flags & VIR_CONNECT_COMPARE_CPU_VALIDATE_XML);
if (!(caps = bhyveDriverGetCapabilities(driver)))
goto cleanup;
@@ -1465,7 +1468,7 @@ bhyveConnectCompareCPU(virConnectPtr conn,
}
} else {
ret = virCPUCompareXML(caps->host.arch, caps->host.cpu,
- xmlDesc, failIncompatible, false);
+ xmlDesc, failIncompatible, validateXML);
}
cleanup:
diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
index 72864c2dc9..6d1f2edd54 100644
--- a/src/libxl/libxl_driver.c
+++ b/src/libxl/libxl_driver.c
@@ -6529,19 +6529,22 @@ libxlConnectCompareCPU(virConnectPtr conn,
libxlDriverConfigPtr cfg;
int ret = VIR_CPU_COMPARE_ERROR;
bool failIncompatible;
+ bool validateXML;
- virCheckFlags(VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE,
+ virCheckFlags(VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE |
+ VIR_CONNECT_COMPARE_CPU_VALIDATE_XML,
VIR_CPU_COMPARE_ERROR);
if (virConnectCompareCPUEnsureACL(conn) < 0)
return ret;
failIncompatible = !!(flags & VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE);
+ validateXML = !!(flags & VIR_CONNECT_COMPARE_CPU_VALIDATE_XML);
cfg = libxlDriverConfigGet(driver);
ret = virCPUCompareXML(cfg->caps->host.arch, cfg->caps->host.cpu,
- xmlDesc, failIncompatible, false);
+ xmlDesc, failIncompatible, validateXML);
virObjectUnref(cfg);
return ret;
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index a7961ad3f0..a0c0a4c777 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -12227,20 +12227,23 @@ qemuConnectCompareCPU(virConnectPtr conn,
virQEMUDriverPtr driver = conn->privateData;
g_autoptr(virCPUDef) cpu = NULL;
bool failIncompatible;
+ bool validateXML;
- virCheckFlags(VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE,
+ virCheckFlags(VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE |
+ VIR_CONNECT_COMPARE_CPU_VALIDATE_XML,
VIR_CPU_COMPARE_ERROR);
if (virConnectCompareCPUEnsureACL(conn) < 0)
return VIR_CPU_COMPARE_ERROR;
failIncompatible = !!(flags & VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE);
+ validateXML = !!(flags & VIR_CONNECT_COMPARE_CPU_VALIDATE_XML);
if (!(cpu = virQEMUDriverGetHostCPU(driver)))
return VIR_CPU_COMPARE_ERROR;
return virCPUCompareXML(driver->hostarch, cpu,
- xmlDesc, failIncompatible, false);
+ xmlDesc, failIncompatible, validateXML);
}
@@ -12295,18 +12298,21 @@ qemuConnectCompareHypervisorCPU(virConnectPtr conn,
g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
g_autoptr(virQEMUCaps) qemuCaps = NULL;
bool failIncompatible;
+ bool validateXML;
virCPUDefPtr hvCPU;
virCPUDefPtr cpu = NULL;
virArch arch;
virDomainVirtType virttype;
- virCheckFlags(VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE,
+ virCheckFlags(VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE |
+ VIR_CONNECT_COMPARE_CPU_VALIDATE_XML,
VIR_CPU_COMPARE_ERROR);
if (virConnectCompareHypervisorCPUEnsureACL(conn) < 0)
goto cleanup;
failIncompatible = !!(flags & VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE);
+ validateXML = !!(flags & VIR_CONNECT_COMPARE_CPU_VALIDATE_XML);
qemuCaps = virQEMUCapsCacheLookupDefault(driver->qemuCapsCache,
emulator,
@@ -12330,10 +12336,12 @@ qemuConnectCompareHypervisorCPU(virConnectPtr conn,
}
if (ARCH_IS_X86(arch)) {
- ret = virCPUCompareXML(arch, hvCPU, xmlCPU, failIncompatible, false);
+ ret = virCPUCompareXML(arch, hvCPU, xmlCPU, failIncompatible,
+ validateXML);
} else if (ARCH_IS_S390(arch) &&
virQEMUCapsGet(qemuCaps, QEMU_CAPS_QUERY_CPU_MODEL_COMPARISON)) {
- if (virCPUDefParseXMLString(xmlCPU, VIR_CPU_TYPE_AUTO, &cpu, false) < 0)
+ if (virCPUDefParseXMLString(xmlCPU, VIR_CPU_TYPE_AUTO, &cpu,
+ validateXML) < 0)
goto cleanup;
ret = qemuConnectCPUModelComparison(qemuCaps, cfg->libDir,
diff --git a/tools/virsh-host.c b/tools/virsh-host.c
index 722c47958b..80edfae16c 100644
--- a/tools/virsh-host.c
+++ b/tools/virsh-host.c
@@ -1214,6 +1214,10 @@ static const vshCmdOptDef opts_cpu_compare[] = {
.type = VSH_OT_BOOL,
.help = N_("report error if CPUs are incompatible")
},
+ {.name = "validate",
+ .type = VSH_OT_BOOL,
+ .help = N_("enable XML file validation")
+ },
{.name = NULL}
};
@@ -1230,6 +1234,9 @@ cmdCPUCompare(vshControl *ctl, const vshCmd *cmd)
if (vshCommandOptBool(cmd, "error"))
flags |= VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE;
+ if (vshCommandOptBool(cmd, "validate"))
+ flags |= VIR_CONNECT_COMPARE_CPU_VALIDATE_XML;
+
if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0)
return false;
@@ -1636,6 +1643,10 @@ static const vshCmdOptDef opts_hypervisor_cpu_compare[] = {
.type = VSH_OT_BOOL,
.help = N_("report error if CPUs are incompatible")
},
+ {.name = "validate",
+ .type = VSH_OT_BOOL,
+ .help = N_("enable XML file validation")
+ },
{.name = NULL}
};
@@ -1657,6 +1668,9 @@ cmdHypervisorCPUCompare(vshControl *ctl,
if (vshCommandOptBool(cmd, "error"))
flags |= VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE;
+ if (vshCommandOptBool(cmd, "validate"))
+ flags |= VIR_CONNECT_COMPARE_CPU_VALIDATE_XML;
+
if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0 ||
vshCommandOptStringReq(ctl, cmd, "virttype", &virttype) < 0 ||
vshCommandOptStringReq(ctl, cmd, "emulator", &emulator) < 0 ||
--
2.26.2
On Mon, Sep 21, 2020 at 15:07:30 +0200, Tim Wiederhake wrote:
Again the summary is misleading and empty commit message doesn't help.
This patch also adds a flag to the public API which is an important
change rather than just modifying virsh.
The summary should mention the public API change rather than the virsh
bit.
> Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
> ---
> include/libvirt/libvirt-host.h | 1 +
> src/bhyve/bhyve_driver.c | 7 +++++--
> src/libxl/libxl_driver.c | 7 +++++--
> src/qemu/qemu_driver.c | 18 +++++++++++++-----
> tools/virsh-host.c | 14 ++++++++++++++
> 5 files changed, 38 insertions(+), 9 deletions(-)
[...]
> diff --git a/tools/virsh-host.c b/tools/virsh-host.c
> index 722c47958b..80edfae16c 100644
> --- a/tools/virsh-host.c
> +++ b/tools/virsh-host.c
> @@ -1214,6 +1214,10 @@ static const vshCmdOptDef opts_cpu_compare[] = {
> .type = VSH_OT_BOOL,
> .help = N_("report error if CPUs are incompatible")
> },
> + {.name = "validate",
> + .type = VSH_OT_BOOL,
> + .help = N_("enable XML file validation")
> + },
> {.name = NULL}
> };
Missing addition to virsh man page
[...]
> @@ -1636,6 +1643,10 @@ static const vshCmdOptDef opts_hypervisor_cpu_compare[] = {
> .type = VSH_OT_BOOL,
> .help = N_("report error if CPUs are incompatible")
> },
> + {.name = "validate",
> + .type = VSH_OT_BOOL,
> + .help = N_("enable XML file validation")
> + },
> {.name = NULL}
> };
Missing addition to virsh man page
On a Tuesday in 2020, Peter Krempa wrote:
>On Mon, Sep 21, 2020 at 15:07:30 +0200, Tim Wiederhake wrote:
>
>Again the summary is misleading and empty commit message doesn't help.
>
>This patch also adds a flag to the public API which is an important
>change rather than just modifying virsh.
>
The virsh changes should be separated from the API changes.
Jano
>The summary should mention the public API change rather than the virsh
>bit.
>
>> Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
>> ---
>> include/libvirt/libvirt-host.h | 1 +
>> src/bhyve/bhyve_driver.c | 7 +++++--
>> src/libxl/libxl_driver.c | 7 +++++--
>> src/qemu/qemu_driver.c | 18 +++++++++++++-----
>> tools/virsh-host.c | 14 ++++++++++++++
>> 5 files changed, 38 insertions(+), 9 deletions(-)
>
>[...]
>
>> diff --git a/tools/virsh-host.c b/tools/virsh-host.c
>> index 722c47958b..80edfae16c 100644
>> --- a/tools/virsh-host.c
>> +++ b/tools/virsh-host.c
>> @@ -1214,6 +1214,10 @@ static const vshCmdOptDef opts_cpu_compare[] = {
>> .type = VSH_OT_BOOL,
>> .help = N_("report error if CPUs are incompatible")
>> },
>> + {.name = "validate",
>> + .type = VSH_OT_BOOL,
>> + .help = N_("enable XML file validation")
>> + },
>> {.name = NULL}
>> };
>
>Missing addition to virsh man page
>
>[...]
>
>> @@ -1636,6 +1643,10 @@ static const vshCmdOptDef opts_hypervisor_cpu_compare[] = {
>> .type = VSH_OT_BOOL,
>> .help = N_("report error if CPUs are incompatible")
>> },
>> + {.name = "validate",
>> + .type = VSH_OT_BOOL,
>> + .help = N_("enable XML file validation")
>> + },
>> {.name = NULL}
>> };
>
>Missing addition to virsh man page
>
On a Monday in 2020, Tim Wiederhake wrote:
>Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
>---
> include/libvirt/libvirt-host.h | 1 +
> src/bhyve/bhyve_driver.c | 7 +++++--
> src/libxl/libxl_driver.c | 7 +++++--
> src/qemu/qemu_driver.c | 18 +++++++++++++-----
> tools/virsh-host.c | 14 ++++++++++++++
> 5 files changed, 38 insertions(+), 9 deletions(-)
>
>diff --git a/include/libvirt/libvirt-host.h b/include/libvirt/libvirt-host.h
>index 6972834175..9e7840b9c2 100644
>--- a/include/libvirt/libvirt-host.h
>+++ b/include/libvirt/libvirt-host.h
>@@ -754,6 +754,7 @@ typedef enum {
> typedef enum {
> VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE = (1 << 0), /* treat incompatible
> CPUs as failure */
>+ VIR_CONNECT_COMPARE_CPU_VALIDATE_XML = (1 << 1), /* validate xml files */
It does not strictly have to be a file.
We use:
Validate the XML document against schema
elsewhere
Jano
> } virConnectCompareCPUFlags;
>
> int virConnectCompareCPU(virConnectPtr conn,
>diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c
>index fc57ccd504..7dce3f8648 100644
>--- a/src/bhyve/bhyve_driver.c
>+++ b/src/bhyve/bhyve_driver.c
>@@ -1442,14 +1442,17 @@ bhyveConnectCompareCPU(virConnectPtr conn,
> int ret = VIR_CPU_COMPARE_ERROR;
> virCapsPtr caps = NULL;
> bool failIncompatible;
>+ bool validateXML;
>
>- virCheckFlags(VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE,
>+ virCheckFlags(VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE |
>+ VIR_CONNECT_COMPARE_CPU_VALIDATE_XML,
> VIR_CPU_COMPARE_ERROR);
>
> if (virConnectCompareCPUEnsureACL(conn) < 0)
> goto cleanup;
>
> failIncompatible = !!(flags & VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE);
>+ validateXML = !!(flags & VIR_CONNECT_COMPARE_CPU_VALIDATE_XML);
>
> if (!(caps = bhyveDriverGetCapabilities(driver)))
> goto cleanup;
>@@ -1465,7 +1468,7 @@ bhyveConnectCompareCPU(virConnectPtr conn,
> }
> } else {
> ret = virCPUCompareXML(caps->host.arch, caps->host.cpu,
>- xmlDesc, failIncompatible, false);
>+ xmlDesc, failIncompatible, validateXML);
> }
>
> cleanup:
>diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
>index 72864c2dc9..6d1f2edd54 100644
>--- a/src/libxl/libxl_driver.c
>+++ b/src/libxl/libxl_driver.c
>@@ -6529,19 +6529,22 @@ libxlConnectCompareCPU(virConnectPtr conn,
> libxlDriverConfigPtr cfg;
> int ret = VIR_CPU_COMPARE_ERROR;
> bool failIncompatible;
>+ bool validateXML;
>
>- virCheckFlags(VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE,
>+ virCheckFlags(VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE |
>+ VIR_CONNECT_COMPARE_CPU_VALIDATE_XML,
> VIR_CPU_COMPARE_ERROR);
>
> if (virConnectCompareCPUEnsureACL(conn) < 0)
> return ret;
>
> failIncompatible = !!(flags & VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE);
>+ validateXML = !!(flags & VIR_CONNECT_COMPARE_CPU_VALIDATE_XML);
>
> cfg = libxlDriverConfigGet(driver);
>
> ret = virCPUCompareXML(cfg->caps->host.arch, cfg->caps->host.cpu,
>- xmlDesc, failIncompatible, false);
>+ xmlDesc, failIncompatible, validateXML);
>
> virObjectUnref(cfg);
> return ret;
>diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
>index a7961ad3f0..a0c0a4c777 100644
>--- a/src/qemu/qemu_driver.c
>+++ b/src/qemu/qemu_driver.c
>@@ -12227,20 +12227,23 @@ qemuConnectCompareCPU(virConnectPtr conn,
> virQEMUDriverPtr driver = conn->privateData;
> g_autoptr(virCPUDef) cpu = NULL;
> bool failIncompatible;
>+ bool validateXML;
>
>- virCheckFlags(VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE,
>+ virCheckFlags(VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE |
>+ VIR_CONNECT_COMPARE_CPU_VALIDATE_XML,
> VIR_CPU_COMPARE_ERROR);
>
> if (virConnectCompareCPUEnsureACL(conn) < 0)
> return VIR_CPU_COMPARE_ERROR;
>
> failIncompatible = !!(flags & VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE);
>+ validateXML = !!(flags & VIR_CONNECT_COMPARE_CPU_VALIDATE_XML);
>
> if (!(cpu = virQEMUDriverGetHostCPU(driver)))
> return VIR_CPU_COMPARE_ERROR;
>
> return virCPUCompareXML(driver->hostarch, cpu,
>- xmlDesc, failIncompatible, false);
>+ xmlDesc, failIncompatible, validateXML);
> }
>
>
>@@ -12295,18 +12298,21 @@ qemuConnectCompareHypervisorCPU(virConnectPtr conn,
> g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
> g_autoptr(virQEMUCaps) qemuCaps = NULL;
> bool failIncompatible;
>+ bool validateXML;
> virCPUDefPtr hvCPU;
> virCPUDefPtr cpu = NULL;
> virArch arch;
> virDomainVirtType virttype;
>
>- virCheckFlags(VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE,
>+ virCheckFlags(VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE |
>+ VIR_CONNECT_COMPARE_CPU_VALIDATE_XML,
> VIR_CPU_COMPARE_ERROR);
>
> if (virConnectCompareHypervisorCPUEnsureACL(conn) < 0)
> goto cleanup;
>
> failIncompatible = !!(flags & VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE);
>+ validateXML = !!(flags & VIR_CONNECT_COMPARE_CPU_VALIDATE_XML);
>
> qemuCaps = virQEMUCapsCacheLookupDefault(driver->qemuCapsCache,
> emulator,
>@@ -12330,10 +12336,12 @@ qemuConnectCompareHypervisorCPU(virConnectPtr conn,
> }
>
> if (ARCH_IS_X86(arch)) {
>- ret = virCPUCompareXML(arch, hvCPU, xmlCPU, failIncompatible, false);
>+ ret = virCPUCompareXML(arch, hvCPU, xmlCPU, failIncompatible,
>+ validateXML);
> } else if (ARCH_IS_S390(arch) &&
> virQEMUCapsGet(qemuCaps, QEMU_CAPS_QUERY_CPU_MODEL_COMPARISON)) {
>- if (virCPUDefParseXMLString(xmlCPU, VIR_CPU_TYPE_AUTO, &cpu, false) < 0)
>+ if (virCPUDefParseXMLString(xmlCPU, VIR_CPU_TYPE_AUTO, &cpu,
>+ validateXML) < 0)
> goto cleanup;
>
> ret = qemuConnectCPUModelComparison(qemuCaps, cfg->libDir,
>diff --git a/tools/virsh-host.c b/tools/virsh-host.c
>index 722c47958b..80edfae16c 100644
>--- a/tools/virsh-host.c
>+++ b/tools/virsh-host.c
>@@ -1214,6 +1214,10 @@ static const vshCmdOptDef opts_cpu_compare[] = {
> .type = VSH_OT_BOOL,
> .help = N_("report error if CPUs are incompatible")
> },
>+ {.name = "validate",
>+ .type = VSH_OT_BOOL,
>+ .help = N_("enable XML file validation")
>+ },
> {.name = NULL}
> };
>
>@@ -1230,6 +1234,9 @@ cmdCPUCompare(vshControl *ctl, const vshCmd *cmd)
> if (vshCommandOptBool(cmd, "error"))
> flags |= VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE;
>
>+ if (vshCommandOptBool(cmd, "validate"))
>+ flags |= VIR_CONNECT_COMPARE_CPU_VALIDATE_XML;
>+
> if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0)
> return false;
>
>@@ -1636,6 +1643,10 @@ static const vshCmdOptDef opts_hypervisor_cpu_compare[] = {
> .type = VSH_OT_BOOL,
> .help = N_("report error if CPUs are incompatible")
> },
>+ {.name = "validate",
>+ .type = VSH_OT_BOOL,
>+ .help = N_("enable XML file validation")
>+ },
> {.name = NULL}
> };
>
>@@ -1657,6 +1668,9 @@ cmdHypervisorCPUCompare(vshControl *ctl,
> if (vshCommandOptBool(cmd, "error"))
> flags |= VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE;
>
>+ if (vshCommandOptBool(cmd, "validate"))
>+ flags |= VIR_CONNECT_COMPARE_CPU_VALIDATE_XML;
>+
> if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0 ||
> vshCommandOptStringReq(ctl, cmd, "virttype", &virttype) < 0 ||
> vshCommandOptStringReq(ctl, cmd, "emulator", &emulator) < 0 ||
>--
>2.26.2
>
© 2016 - 2026 Red Hat, Inc.