[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