On Mon, 2013-09-23 at 17:28 +0200, Radek Vykydal wrote:
Also do not read slaves from settings but use new 'Slaves' property to read current slaves instead.
pyanaconda/network.py | 15 ++++++--------- pyanaconda/nm.py | 23 +++++++++++++++++++++++ 2 files changed, 29 insertions(+), 9 deletions(-)
diff --git a/pyanaconda/network.py b/pyanaconda/network.py index dcb6ee0..03dbaec 100644 --- a/pyanaconda/network.py +++ b/pyanaconda/network.py @@ -34,6 +34,7 @@ import threading import re import dbus import IPy +import itertools
from simpleconfig import SimpleConfigFile from blivet.devices import FcoeDiskDevice, iScsiDiskDevice @@ -1046,22 +1047,18 @@ def status_message():
slaves = {} ssids = {}
nonslaves = [] # first find slaves and wireless aps for devname in active_devs:
master = nm.nm_device_setting_value(devname, "connection", "master")
if master:
if master in slaves:
slaves[master].append(devname)
else:
slaves[master] = [devname]
else:
nonslaves.append(devname)
slaves[devname] = nm.nm_device_slaves(devname) or [] if nm.nm_device_type_is_wifi(devname): ssids[devname] = nm.nm_device_active_ssid(devname) or ""
all_slaves = set(itertools.chain.from_iterable(slaves.values()))
nonslaves = [dev for dev in active_devs if dev not in all_slaves]
if len(nonslaves) == 1:
devname = nonslaves[0] if nm.nm_device_type_is_ethernet(devname): msg = _("Wired (%(interface_name)s) connected") \ % {"interface_name": devname}
diff --git a/pyanaconda/nm.py b/pyanaconda/nm.py index 3c587dc..17b765d 100644 --- a/pyanaconda/nm.py +++ b/pyanaconda/nm.py @@ -440,6 +440,29 @@ def nm_device_ip_config(name, version=4):
return [addr_list, ns_list]
+def nm_device_slaves(name):
- """Return slaves of device.
:param name: name of device
:type name: str
:return: names of slaves of device or None if device has no 'Slaves' property
:rtype: list of strings or None
:raise UnknownDeviceError if device is not found
:raise UnknownDeviceError: if device is not found
Otherwise this looks good to me.