commit d9579e983f5a196e7ed155035c0e8283c4f9f904
Author: Thomas Woerner <twoerner@redhat.com>
Date: Mon Aug 15 11:51:32 2016 +0200
firewall.client: Generate new DBUS_ERROR if SystemBus can not be aquired
This happens for example in change roots. The SystemBus() call in slip.dbus
fails and also the dbus.SystemBus() call.
New error code: DBUS_ERROR
diff --git a/src/firewall/client.py b/src/firewall/client.py
index 177a74e..5875df2 100644
--- a/src/firewall/client.py
+++ b/src/firewall/client.py
@@ -2207,8 +2207,13 @@ class FirewallClient(object):
self.bus = slip.dbus.SystemBus()
self.bus.default_timeout = None
except Exception:
- print("Not using slip")
- self.bus = dbus.SystemBus()
+ try:
+ self.bus = dbus.SystemBus()
+ except dbus.exceptions.DBusException as e:
+ raise FirewallError(errors.DBUS_ERROR,
+ e.get_dbus_message())
+ else:
+ print("Not using slip.dbus")
else:
self.bus = bus
diff --git a/src/firewall/errors.py b/src/firewall/errors.py
index d939864..34d1d18 100644
--- a/src/firewall/errors.py
+++ b/src/firewall/errors.py
@@ -44,6 +44,7 @@ IPSET_WITH_TIMEOUT = 32
BUILTIN_IPSET = 33
ALREADY_SET = 34
MISSING_IMPORT = 35
+DBUS_ERROR = 36
INVALID_ACTION = 100
INVALID_SERVICE = 101
commit 937eb926a1ec6f09a3ff825296927e9964232204
Author: Thomas Woerner <twoerner@redhat.com>
Date: Mon Aug 15 11:55:19 2016 +0200
firewall-cmd, firewallctl: Gracefully fail if SystemBus can not be aquired
diff --git a/src/firewall-cmd b/src/firewall-cmd
index 3cf3059..75513c7 100755
--- a/src/firewall-cmd
+++ b/src/firewall-cmd
@@ -911,7 +911,13 @@ if a.help:
sys.exit(0)
zone = a.zone
-fw = FirewallClient()
+
+try:
+ fw = FirewallClient()
+except FirewallError as msg:
+ code = FirewallError.get_code(str(msg))
+ cmd.print_and_exit("Error: %s" % msg, code)
+
fw.setExceptionHandler(cmd.exception_handler)
if fw.connected == False:
if a.state:
commit 63f4f46180d5fe26a68ef6517d2f612fb74a3254
Author: Thomas Woerner <twoerner@redhat.com>
Date: Mon Aug 15 11:57:06 2016 +0200
firewall.core.fw_nm: Ignore NetworkManager if NM.Client connect fails
This happens for example in change roots.
diff --git a/src/firewall/core/fw_nm.py b/src/firewall/core/fw_nm.py
index 5f8c8f8..c958e9a 100644
--- a/src/firewall/core/fw_nm.py
+++ b/src/firewall/core/fw_nm.py
@@ -27,6 +27,7 @@ __all__ = [ "check_nm_imported", "nm_is_imported",
"nm_get_bus_name", "nm_get_dbus_interface" ]
import gi
+from gi.repository import GLib
try:
gi.require_version('NM', '1.0')
except ValueError:
@@ -35,8 +36,7 @@ else:
try:
from gi.repository import NM
_nm_imported = True
- except (ImportError, ValueError):
- NetworkManager = None
+ except (ImportError, ValueError, GLib.Error):
_nm_imported = False
from firewall import errors