[PATCH 4/4] capabilities: Allow suppressing error message from virCapabilitiesDomainSupported()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



In a few cases (CH driver) we want
virCapabilitiesDomainSupported() just to check whether given
virtType is supported and report a different error message (that
suggests how to solve the problem). Introduce reportError
argument which makes the function report an error iff set.

Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx>
---
 src/bhyve/bhyve_domain.c   | 3 ++-
 src/ch/ch_domain.c         | 5 ++++-
 src/ch/ch_driver.c         | 4 ++--
 src/ch/ch_process.c        | 4 ++--
 src/conf/capabilities.c    | 5 +++--
 src/conf/capabilities.h    | 3 ++-
 src/libxl/libxl_domain.c   | 3 ++-
 src/lxc/lxc_domain.c       | 3 ++-
 src/openvz/openvz_conf.c   | 3 ++-
 src/vmware/vmware_driver.c | 3 ++-
 src/vmx/vmx.c              | 3 ++-
 src/vz/vz_driver.c         | 3 ++-
 12 files changed, 27 insertions(+), 15 deletions(-)

diff --git a/src/bhyve/bhyve_domain.c b/src/bhyve/bhyve_domain.c
index c47ad392a0..684d870749 100644
--- a/src/bhyve/bhyve_domain.c
+++ b/src/bhyve/bhyve_domain.c
@@ -89,7 +89,8 @@ bhyveDomainDefPostParse(virDomainDef *def,
 
     if (!virCapabilitiesDomainSupported(caps, def->os.type,
                                         def->os.arch,
-                                        def->virtType))
+                                        def->virtType,
+                                        true))
         return -1;
 
     /* Add an implicit PCI root controller */
diff --git a/src/ch/ch_domain.c b/src/ch/ch_domain.c
index acadd76edc..8e3e205c8c 100644
--- a/src/ch/ch_domain.c
+++ b/src/ch/ch_domain.c
@@ -125,11 +125,14 @@ virCHDomainDefPostParse(virDomainDef *def,
 {
     virCHDriver *driver = opaque;
     g_autoptr(virCaps) caps = virCHDriverGetCapabilities(driver, false);
+
     if (!caps)
         return -1;
+
     if (!virCapabilitiesDomainSupported(caps, def->os.type,
                                         def->os.arch,
-                                        def->virtType))
+                                        def->virtType,
+                                        true))
         return -1;
 
     return 0;
diff --git a/src/ch/ch_driver.c b/src/ch/ch_driver.c
index 9394924f2d..ae550802f5 100644
--- a/src/ch/ch_driver.c
+++ b/src/ch/ch_driver.c
@@ -890,9 +890,9 @@ static int chStateInitialize(bool privileged,
         goto cleanup;
 
     if (!virCapabilitiesDomainSupported(ch_driver->caps, -1,
-                                        VIR_ARCH_NONE, VIR_DOMAIN_VIRT_KVM) &&
+                                        VIR_ARCH_NONE, VIR_DOMAIN_VIRT_KVM, false) &&
         !virCapabilitiesDomainSupported(ch_driver->caps, -1,
-                                        VIR_ARCH_NONE, VIR_DOMAIN_VIRT_HYPERV)) {
+                                        VIR_ARCH_NONE, VIR_DOMAIN_VIRT_HYPERV, false)) {
         VIR_INFO("/dev/kvm and /dev/mshv are missing. CH driver failed to initialize.");
         return VIR_DRV_STATE_INIT_SKIPPED;
     }
diff --git a/src/ch/ch_process.c b/src/ch/ch_process.c
index 7488b1d65d..b532f547b3 100644
--- a/src/ch/ch_process.c
+++ b/src/ch/ch_process.c
@@ -660,7 +660,7 @@ virCHProcessStartValidate(virCHDriver *driver,
     if (vm->def->virtType == VIR_DOMAIN_VIRT_KVM) {
         VIR_DEBUG("Checking for KVM availability");
         if (!virCapabilitiesDomainSupported(driver->caps, -1,
-                                            VIR_ARCH_NONE, VIR_DOMAIN_VIRT_KVM)) {
+                                            VIR_ARCH_NONE, VIR_DOMAIN_VIRT_KVM, false)) {
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
                            _("Domain requires KVM, but it is not available. Check that virtualization is enabled in the host BIOS, and host configuration is setup to load the kvm modules."));
             return -1;
@@ -668,7 +668,7 @@ virCHProcessStartValidate(virCHDriver *driver,
     } else if (vm->def->virtType == VIR_DOMAIN_VIRT_HYPERV) {
         VIR_DEBUG("Checking for mshv availability");
         if (!virCapabilitiesDomainSupported(driver->caps, -1,
-                                            VIR_ARCH_NONE, VIR_DOMAIN_VIRT_HYPERV)) {
+                                            VIR_ARCH_NONE, VIR_DOMAIN_VIRT_HYPERV, false)) {
             virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
                            _("Domain requires MSHV device, but it is not available. Check that virtualization is enabled in the host BIOS, and host configuration is setup to load the mshv modules."));
             return -1;
diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c
index 5a0c7de646..c8b897dd10 100644
--- a/src/conf/capabilities.c
+++ b/src/conf/capabilities.c
@@ -769,7 +769,8 @@ bool
 virCapabilitiesDomainSupported(virCaps *caps,
                                int ostype,
                                virArch arch,
-                               int virttype)
+                               int virttype,
+                               bool reportError)
 {
     g_autofree virCapsDomainData *capsdata = NULL;
 
@@ -777,7 +778,7 @@ virCapabilitiesDomainSupported(virCaps *caps,
                                                arch,
                                                virttype,
                                                NULL, NULL,
-                                               true);
+                                               reportError);
 
     return capsdata != NULL;
 }
diff --git a/src/conf/capabilities.h b/src/conf/capabilities.h
index c67b3ce397..daea835817 100644
--- a/src/conf/capabilities.h
+++ b/src/conf/capabilities.h
@@ -316,7 +316,8 @@ bool
 virCapabilitiesDomainSupported(virCaps *caps,
                                int ostype,
                                virArch arch,
-                               int domaintype);
+                               int domaintype,
+                               bool reportError);
 
 
 void
diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c
index ad2ad1ce0e..16c2ab973b 100644
--- a/src/libxl/libxl_domain.c
+++ b/src/libxl/libxl_domain.c
@@ -309,7 +309,8 @@ libxlDomainDefValidate(const virDomainDef *def,
 
     if (!virCapabilitiesDomainSupported(cfg->caps, def->os.type,
                                         def->os.arch,
-                                        def->virtType))
+                                        def->virtType,
+                                        true))
         return -1;
 
     /* Xen+ovmf does not support secure boot */
diff --git a/src/lxc/lxc_domain.c b/src/lxc/lxc_domain.c
index cf9bf96a4e..afd8d6e980 100644
--- a/src/lxc/lxc_domain.c
+++ b/src/lxc/lxc_domain.c
@@ -238,7 +238,8 @@ virLXCDomainDefPostParse(virDomainDef *def,
         return -1;
     if (!virCapabilitiesDomainSupported(caps, def->os.type,
                                         def->os.arch,
-                                        def->virtType))
+                                        def->virtType,
+                                        true))
         return -1;
 
     /* check for emulator and create a default one if needed */
diff --git a/src/openvz/openvz_conf.c b/src/openvz/openvz_conf.c
index eab3f748d0..81769eb147 100644
--- a/src/openvz/openvz_conf.c
+++ b/src/openvz/openvz_conf.c
@@ -1007,7 +1007,8 @@ openvzDomainDefPostParse(virDomainDef *def,
     struct openvz_driver *driver = opaque;
     if (!virCapabilitiesDomainSupported(driver->caps, def->os.type,
                                         def->os.arch,
-                                        def->virtType))
+                                        def->virtType,
+                                        true))
         return -1;
 
     /* fill the init path */
diff --git a/src/vmware/vmware_driver.c b/src/vmware/vmware_driver.c
index 416ce126e8..e28c732cb0 100644
--- a/src/vmware/vmware_driver.c
+++ b/src/vmware/vmware_driver.c
@@ -106,7 +106,8 @@ vmwareDomainDefPostParse(virDomainDef *def,
     struct vmware_driver *driver = opaque;
     if (!virCapabilitiesDomainSupported(driver->caps, def->os.type,
                                         def->os.arch,
-                                        def->virtType))
+                                        def->virtType,
+                                        true))
         return -1;
 
     return 0;
diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c
index 69ee66e668..5da67aae60 100644
--- a/src/vmx/vmx.c
+++ b/src/vmx/vmx.c
@@ -613,7 +613,8 @@ virVMXDomainDefPostParse(virDomainDef *def,
     virCaps *caps = opaque;
     if (!virCapabilitiesDomainSupported(caps, def->os.type,
                                         def->os.arch,
-                                        def->virtType))
+                                        def->virtType,
+                                        true))
         return -1;
 
     return 0;
diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c
index c7ceec2339..380fdcb57e 100644
--- a/src/vz/vz_driver.c
+++ b/src/vz/vz_driver.c
@@ -241,7 +241,8 @@ vzDomainDefPostParse(virDomainDef *def,
     struct _vzDriver *driver = opaque;
     if (!virCapabilitiesDomainSupported(driver->caps, def->os.type,
                                         def->os.arch,
-                                        def->virtType))
+                                        def->virtType,
+                                        true))
         return -1;
 
     if (vzDomainDefAddDefaultInputDevices(def) < 0)
-- 
2.43.0
_______________________________________________
Devel mailing list -- devel@xxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxx




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux