[PATCH f20-branch] network gui spoke: use GDBus to obtain list of settings (#1018467)
Brian C. Lane
bcl at redhat.com
Tue Oct 15 00:12:03 UTC 2013
On Mon, Oct 14, 2013 at 05:00:08PM +0200, Radek Vykydal wrote:
> Another step in moving to GDBus.
> libnm-glib (NMRemoteSettings.list_connections()) returns empty list
> when called for the first time.
> ---
> pyanaconda/installclasses/fedora.py | 2 +-
> pyanaconda/network.py | 6 +-
> pyanaconda/nm.py | 47 ++++++++++++--
> pyanaconda/ui/gui/spokes/network.py | 118 +++++++++++++-----------------------
> 4 files changed, 86 insertions(+), 87 deletions(-)
> +def nm_ap_setting_value(ssid, key1, key2):
> + """Return value of ap's setting specified by key1 and key2.
> +
> + :param name: name of ap (ssid)
> + :type name: str
Looks like you changed it to ssid, not name.
> + :param key1: first-level key of setting (eg "connection")
> + :type key1: str
> + :param key2: second-level key of setting (eg "uuid")
> + :type key2: str
> + :return: value of setting or None if the setting was not found
> + which means it does not exist or default value is used
> + by NM
> + :rtype: unpacked GDBus variant or None
> + :raise SettingsNotFoundError: if settings were not found
> + (eg for "wlan0")
> + """
> + settings_path = _settings_for_ap(ssid)
> + if not settings_path:
> + raise SettingsNotFoundError(ssid)
> + proxy = _get_proxy(object_path=settings_path, interface_name="org.freedesktop.NetworkManager.Settings.Connection")
> + args = None
> + settings = proxy.call_sync("GetSettings",
> + args,
> + Gio.DBusCallFlags.NONE,
> + DEFAULT_DBUS_TIMEOUT,
> + None)
> + settings = settings.unpack()[0]
> + try:
> + value = settings[key1][key2]
> + except KeyError:
> + #raise SettingNotFoundError(key1, key2)
> + value = None
It isn't actually raising it :)
> + return value
> +
> +
> def nm_activate_device_connection(dev_name, con_uuid):
> """Activate device with specified connection.
> @@ -958,7 +993,7 @@ def test():
> if wireless_device:
> try:
> nm_update_settings_of_device(wireless_device, [[key1, key2, new_value, None]])
> - except DeviceSettingsNotFoundError as e:
> + except SettingsNotFoundError as e:
> print "%s" % e
Not new, but we shouldn't be printing anything.
> class CellRendererSignal(Gtk.CellRendererPixbuf):
> @@ -386,11 +381,14 @@ class NetworkControlBox(object):
>
> log.info("network: access point changed: %s", ssid_target)
>
> - con = self.find_connection_for_device(device, ssid_target)
> - if con:
> - self.client.activate_connection(con, device,
> - None, None, None)
> - else:
> + try:
> + uuid = nm.nm_ap_setting_value(ssid_target, "connection", "uuid")
> + try:
> + nm.nm_activate_device_connection(device.get_iface(), uuid)
> + except nm.UnmanagedDeviceError as e:
> + log.debug("network: on_wireless_ap_changed: %s", e)
> + except nm.SettingsNotFoundError as e:
> + log.debug("network: on_wireless_ap_changed: %s", e)
> self.client.add_and_activate_connection(None, device, ap_obj_path,
> None, None)
I don't think you need 2 levels of try here, just have separate except
clauses since the errors are different.
Other than those it looks ok.
--
Brian C. Lane | Anaconda Team | IRC: bcl #anaconda | Port Orchard, WA (PST8PDT)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 482 bytes
Desc: not available
URL: <https://lists.fedorahosted.org/pipermail/anaconda-patches/attachments/20131014/e8513475/attachment.sig>
More information about the anaconda-patches
mailing list