155 lines
6.6 KiB
Diff
155 lines
6.6 KiB
Diff
Subject: connectauth: Drop sanity checking for libvirtd
|
|
From: Cole Robinson crobinso@redhat.com Tue Sep 12 13:18:42 2023 -0400
|
|
Date: Sun Sep 24 16:31:58 2023 -0400:
|
|
Git: 775edfd5dc668c26ffbdf07f6404ca80d91c3a3a
|
|
|
|
Nowadays with libvirt split daemons, libvirtd isn't required to
|
|
be installed for a first run local connection to succeed, so we
|
|
are needlessly blocking the app from 'just working' in many cases.
|
|
Especially considering that many distros often have libvirt running
|
|
out of the box due to gnome-boxes pulling it in.
|
|
|
|
Drop the daemon checking entirely.
|
|
|
|
Signed-off-by: Cole Robinson <crobinso@redhat.com>
|
|
|
|
diff --git a/tests/uitests/test_cli.py b/tests/uitests/test_cli.py
|
|
index 7e7ab6ea..b317bf28 100644
|
|
--- a/tests/uitests/test_cli.py
|
|
+++ b/tests/uitests/test_cli.py
|
|
@@ -139,15 +139,12 @@ def testCLIFirstRunURIBad(app):
|
|
app.click_alert_button("bad:///uri", "Close")
|
|
|
|
|
|
-def testCLIFirstRunNoLibvirtd(app):
|
|
+def testCLIFirstRunNoURI(app):
|
|
# Emulate first run with no libvirtd detected
|
|
- app.open(use_uri=False, firstrun_uri="bad:///uri",
|
|
- extra_opts=["--test-options=fake-no-libvirtd"])
|
|
+ app.open(use_uri=False, firstrun_uri="")
|
|
errlabel = app.topwin.find("error-label")
|
|
lib.utils.check(
|
|
lambda: "Checking for virtualization" in errlabel.text)
|
|
- lib.utils.check(
|
|
- lambda: "libvirtd service does not appear" in errlabel.text)
|
|
lib.utils.check(
|
|
lambda: "detect a default hypervisor" in errlabel.text)
|
|
|
|
diff --git a/virtManager/engine.py b/virtManager/engine.py
|
|
index 58fd8026..a90b5464 100644
|
|
--- a/virtManager/engine.py
|
|
+++ b/virtManager/engine.py
|
|
@@ -131,14 +131,14 @@ class vmmEngine(vmmGObject):
|
|
"""
|
|
from .lib import connectauth
|
|
|
|
- tryuri = vmmCreateConn.default_uri()
|
|
- log.debug("Probed default URI=%s", tryuri)
|
|
+ detected_uri = vmmCreateConn.default_uri()
|
|
+ log.debug("Probed default URI=%s", detected_uri)
|
|
if self.config.CLITestOptions.firstrun_uri is not None:
|
|
- tryuri = self.config.CLITestOptions.firstrun_uri or None
|
|
- log.debug("Using test-options firstrun_uri=%s", tryuri)
|
|
+ detected_uri = self.config.CLITestOptions.firstrun_uri or None
|
|
+ log.debug("Using test-options firstrun_uri=%s", detected_uri)
|
|
|
|
manager = self._get_manager()
|
|
- msg = connectauth.setup_first_uri(self.config, tryuri)
|
|
+ msg = connectauth.setup_first_uri(self.config, detected_uri)
|
|
if msg:
|
|
manager.set_startup_error(msg)
|
|
return
|
|
@@ -149,7 +149,7 @@ class vmmEngine(vmmGObject):
|
|
if ConnectError:
|
|
self._handle_conn_error(c, ConnectError)
|
|
|
|
- conn = vmmConnectionManager.get_instance().add_conn(tryuri)
|
|
+ conn = vmmConnectionManager.get_instance().add_conn(detected_uri)
|
|
conn.set_autoconnect(True)
|
|
conn.connect_once("open-completed", _open_completed)
|
|
conn.open()
|
|
diff --git a/virtManager/lib/connectauth.py b/virtManager/lib/connectauth.py
|
|
index 71e1b21f..9baec603 100644
|
|
--- a/virtManager/lib/connectauth.py
|
|
+++ b/virtManager/lib/connectauth.py
|
|
@@ -7,7 +7,6 @@
|
|
import collections
|
|
import os
|
|
import re
|
|
-import shutil
|
|
import time
|
|
|
|
from gi.repository import GLib
|
|
@@ -161,7 +160,7 @@ def connect_error(conn, errmsg, tb, warnconsole):
|
|
"or install an SSH askpass package locally.")
|
|
show_errmsg = False
|
|
else:
|
|
- hint += _("Verify that the 'libvirtd' daemon is running "
|
|
+ hint += _("Verify that an appropriate libvirt daemon is running "
|
|
"on the remote host.")
|
|
|
|
elif conn.is_xen(): # pragma: no cover
|
|
@@ -176,8 +175,8 @@ def connect_error(conn, errmsg, tb, warnconsole):
|
|
"may not be able to connect to libvirt as a "
|
|
"regular user. Try running as root.")
|
|
show_errmsg = False
|
|
- elif re.search(r"libvirt-sock", tb): # pragma: no cover
|
|
- hint += _("Verify that the 'libvirtd' daemon is running.")
|
|
+ elif re.search(r"virt[a-z]*-sock", tb): # pragma: no cover
|
|
+ hint += _("Verify that an appropriate libvirt daemon is running.")
|
|
show_errmsg = False
|
|
|
|
msg = _("Unable to connect to libvirt %s." % conn.get_uri())
|
|
@@ -203,27 +202,11 @@ def connect_error(conn, errmsg, tb, warnconsole):
|
|
# App first run connection setup #
|
|
##################################
|
|
|
|
-def setup_first_uri(config, tryuri):
|
|
- # Add /usr/sbin to the path in case non-root user launches virt-manager
|
|
- libvirtd_installed = bool(shutil.which("libvirtd", path=os.environ['PATH'] + os.pathsep + "/usr/sbin"))
|
|
- if config.CLITestOptions.fake_no_libvirtd:
|
|
- libvirtd_installed = False
|
|
-
|
|
- if tryuri and libvirtd_installed:
|
|
- return
|
|
-
|
|
- # Manager fail message
|
|
+def setup_first_uri(_config, detected_uri):
|
|
msg = ""
|
|
- if not libvirtd_installed: # pragma: no cover
|
|
- msg += _("The libvirtd service does not appear to be installed. "
|
|
- "Install and run the libvirtd service to manage "
|
|
- "virtualization on this host.")
|
|
-
|
|
- if not tryuri or "qemu" not in tryuri:
|
|
- if msg:
|
|
- msg += "\n\n" # pragma: no cover
|
|
+ if not detected_uri:
|
|
msg += _("Could not detect a default hypervisor. Make "
|
|
- "sure the appropriate QEMU/KVM virtualization "
|
|
+ "sure the appropriate QEMU/KVM virtualization and libvirt "
|
|
"packages are installed to manage virtualization "
|
|
"on this host.")
|
|
|
|
diff --git a/virtManager/lib/testmock.py b/virtManager/lib/testmock.py
|
|
index 1f3e91ac..d2ee6972 100644
|
|
--- a/virtManager/lib/testmock.py
|
|
+++ b/virtManager/lib/testmock.py
|
|
@@ -168,8 +168,6 @@ class CLITestOptionsClass:
|
|
|
|
* firstrun-uri: If set, use this as the initial connection URI
|
|
if we are doing firstrun testing
|
|
- * fake-no-libvirtd: If doing firstrun testing, fake that
|
|
- libvirtd is not installed
|
|
* fake-vnc-username: Fake VNC username auth request
|
|
* fake-console-resolution: Fake viewer console resolution response.
|
|
Spice doesn't return values here when we are just testing
|
|
@@ -223,7 +221,6 @@ class CLITestOptionsClass:
|
|
self.test_vm_run_fail = _get("test-vm-run-fail")
|
|
self.spice_agent = _get("spice-agent")
|
|
self.firstrun_uri = _get_value("firstrun-uri")
|
|
- self.fake_no_libvirtd = _get("fake-no-libvirtd")
|
|
self.fake_vnc_username = _get("fake-vnc-username")
|
|
self.fake_console_resolution = _get("fake-console-resolution")
|
|
self.fake_systray = _get("fake-systray")
|