[PATCH rhel7-branch 7/9] Network TUI: don't traceback when applying config to device without link (#1011866)
Radek Vykydal
rvykydal at redhat.com
Wed Sep 25 12:54:27 UTC 2013
Resolves: rhbz#1011866
Port of commit 447dae925704d43ebb74b090f6eafb22f3836a1f
---
pyanaconda/nm.py | 30 +++++++++++++++++++++++-------
pyanaconda/ui/tui/spokes/network.py | 7 +++++--
2 files changed, 28 insertions(+), 9 deletions(-)
diff --git a/pyanaconda/nm.py b/pyanaconda/nm.py
index 57d4dc4..b65eec9 100644
--- a/pyanaconda/nm.py
+++ b/pyanaconda/nm.py
@@ -42,6 +42,11 @@ class UnknownDeviceError(ValueError):
def __str__(self):
return self.__repr__()
+class UnmanagedDeviceError(Exception):
+ """Device of specified name is not managed by NM or unavailable"""
+ def __str__(self):
+ return self.__repr__()
+
class PropertyNotFoundError(ValueError):
"""Property of NM object was not found"""
def __str__(self):
@@ -195,7 +200,7 @@ def nm_device_property(name, prop):
Gio.DBusCallFlags.NONE,
DEFAULT_DBUS_TIMEOUT,
None)
- except Exception as e:
+ except GLib.GError as e:
if "org.freedesktop.NetworkManager.UnknownDevice" in e.message:
raise UnknownDeviceError(name, e)
raise
@@ -543,6 +548,12 @@ def nm_device_setting_value(name, key1, key2):
return value
def nm_activate_device_connection(dev_name, con_uuid):
+ """Activate device with specified connection.
+
+ Exceptions:
+ UnknownDeviceError - device was not found
+
+ """
proxy = _get_proxy()
args = GLib.Variant('(s)', (dev_name,))
@@ -552,7 +563,7 @@ def nm_activate_device_connection(dev_name, con_uuid):
Gio.DBusCallFlags.NONE,
DEFAULT_DBUS_TIMEOUT,
None)
- except Exception as e:
+ except GLib.GError as e:
if "org.freedesktop.NetworkManager.UnknownDevice" in e.message:
raise UnknownDeviceError(dev_name, e)
raise
@@ -563,11 +574,16 @@ def nm_activate_device_connection(dev_name, con_uuid):
args = GLib.Variant('(ooo)', (con_path, device_path, "/"))
nm_proxy = _get_proxy()
- nm_proxy.call_sync("ActivateConnection",
- args,
- Gio.DBusCallFlags.NONE,
- DEFAULT_DBUS_TIMEOUT,
- None)
+ try:
+ nm_proxy.call_sync("ActivateConnection",
+ args,
+ Gio.DBusCallFlags.NONE,
+ DEFAULT_DBUS_TIMEOUT,
+ None)
+ except GLib.GError as e:
+ if "org.freedesktop.NetworkManager.UnmanagedDevice" in e.message:
+ raise UnmanagedDeviceError(dev_name, e)
+ raise
def nm_update_settings_of_device(name, new_values):
"""Update setting of device.
diff --git a/pyanaconda/ui/tui/spokes/network.py b/pyanaconda/ui/tui/spokes/network.py
index f717ac5..5589188 100644
--- a/pyanaconda/ui/tui/spokes/network.py
+++ b/pyanaconda/ui/tui/spokes/network.py
@@ -27,7 +27,7 @@ from pyanaconda.ui.tui.spokes import EditTUISpokeEntry as Entry
from pyanaconda.ui.tui.simpleline import TextWidget, ColumnWidget
from pyanaconda.i18n import _
from pyanaconda import network
-from pyanaconda.nm import nm_activated_devices, nm_state, nm_devices, nm_device_type_is_ethernet, nm_device_ip_config, nm_activate_device_connection, nm_device_setting_value
+from pyanaconda.nm import nm_activated_devices, nm_state, nm_devices, nm_device_type_is_ethernet, nm_device_ip_config, nm_activate_device_connection, nm_device_setting_value, UnmanagedDeviceError
# pylint: disable-msg=E0611
from gi.repository import NetworkManager
@@ -213,7 +213,10 @@ class NetworkSpoke(EditTUISpoke):
if ndata._apply:
uuid = nm_device_setting_value(devname, "connection", "uuid")
- nm_activate_device_connection(devname, uuid)
+ try:
+ nm_activate_device_connection(devname, uuid)
+ except UnmanagedDeviceError:
+ self.errors.append(_("Can't apply configuration, device activation failed."))
self.apply()
return True
--
1.7.11.7
More information about the anaconda-patches
mailing list