Resolves: rhbz#1179276 --- pyanaconda/ui/gui/spokes/network.py | 47 +++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 17 deletions(-)
diff --git a/pyanaconda/ui/gui/spokes/network.py b/pyanaconda/ui/gui/spokes/network.py index a89001f..5a84996 100644 --- a/pyanaconda/ui/gui/spokes/network.py +++ b/pyanaconda/ui/gui/spokes/network.py @@ -351,6 +351,8 @@ class NetworkControlBox(GObject.GObject): self._updating_device = False
self.client = NMClient.Client.new() + self.remote_settings = NMClient.RemoteSettings() + self.remote_settings.connect("new-connection", self.on_new_connection)
# devices list # limited to wired and wireless @@ -421,29 +423,37 @@ class NetworkControlBox(GObject.GObject): col.set_expand(True) treeview.append_column(col)
+ def add_connection_to_list(self, uuid): + if self.dev_cfg(uuid=uuid): + log.debug("network: GUI, not adding connection %s, already in list", uuid) + return False + dev_cfg = DeviceConfiguration(con_uuid=uuid) + if dev_cfg.setting_value("connection", "read-only"): + log.debug("network: GUI, not adding read-only connection %s", uuid) + return False + if dev_cfg.device_type not in self.supported_device_types: + log.debug("network: GUI, not adding connection %s of unsupported type", uuid) + return False + # Configs for ethernet has been already added, + # this must be some slave + if dev_cfg.device_type == NetworkManager.DeviceType.ETHERNET: + log.debug("network: GUI, not adding slave connection %s", uuid) + return False + # Wireless settings are handled in scope of its device's dev_cfg + if dev_cfg.device_type == NetworkManager.DeviceType.WIFI: + log.debug("network: GUI, not adding wireless connection %s", uuid) + return False + self.add_dev_cfg(dev_cfg) + log.debug("network: GUI, adding connection %s", uuid) + return True + def initialize(self): for device in self.client.get_devices(): self.add_device_to_list(device)
for setting in nm.nm_get_all_settings(): uuid = setting["connection"]["uuid"] - log.debug("network: GUI, connection %s found", uuid) - if self.dev_cfg(uuid=uuid): - continue - if setting["connection"].get("read-only", False): - log.debug("network: GUI, not adding read-only connection %s", uuid) - continue - dev_cfg = DeviceConfiguration(con_uuid=uuid) - if dev_cfg.device_type in self.supported_device_types: - # Configs for ethernet has been already added, - # this must be some slave. - if dev_cfg.device_type == NetworkManager.DeviceType.ETHERNET: - continue - # Wireless settings are handled in scope of its device's dev_cfg - if dev_cfg.device_type == NetworkManager.DeviceType.WIFI: - continue - # Virtual device settings (bond, team, vlan, ...) - self.add_dev_cfg(dev_cfg) + self.add_connection_to_list(uuid)
# select the first device treeview = self.builder.get_object("treeview_devices") @@ -517,6 +527,9 @@ class NetworkControlBox(GObject.GObject): self.client.add_and_activate_connection(None, dev_cfg.device, ap_obj_path, None, None)
+ def on_new_connection(self, remote_settings, connection): + self.add_connection_to_list(connection.get_uuid()) + def on_device_added(self, client, device, *args): self.add_device_to_list(device)
Related: rhbz#1179276 --- pyanaconda/ui/gui/spokes/network.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pyanaconda/ui/gui/spokes/network.py b/pyanaconda/ui/gui/spokes/network.py index 5a84996..a8660c8 100644 --- a/pyanaconda/ui/gui/spokes/network.py +++ b/pyanaconda/ui/gui/spokes/network.py @@ -799,7 +799,7 @@ class NetworkControlBox(GObject.GObject): try: ipv4cfg = nm.nm_device_ip_config(dev_cfg.device.get_iface(), version=4) ipv6cfg = nm.nm_device_ip_config(dev_cfg.device.get_iface(), version=6) - except nm.UnknownDeviceError: + except (nm.UnknownDeviceError, nm.UnknownMethodGetError): ipv4cfg = ipv6cfg = None else: ipv4cfg = ipv6cfg = None
These 2 look ok to me.
anaconda-patches@lists.fedorahosted.org