Blame examples/python/dbus/list-devices.py

Packit Service b23acc
#!/usr/bin/env python
Packit Service b23acc
# SPDX-License-Identifier: GPL-2.0+
Packit Service b23acc
#
Packit Service b23acc
# Copyright (C) 2011 - 2012 Red Hat, Inc.
Packit Service b23acc
#
Packit Service b23acc
Packit Service b23acc
import dbus
Packit Service b23acc
Packit Service b23acc
# This example lists basic information about network interfaces known to NM
Packit Service b23acc
Packit Service b23acc
# For the types see include/NetworkManager.h
Packit Service b23acc
devtypes = {
Packit Service b23acc
    1: "Ethernet",
Packit Service b23acc
    2: "Wi-Fi",
Packit Service b23acc
    5: "Bluetooth",
Packit Service b23acc
    6: "OLPC",
Packit Service b23acc
    7: "WiMAX",
Packit Service b23acc
    8: "Modem",
Packit Service b23acc
    9: "InfiniBand",
Packit Service b23acc
    10: "Bond",
Packit Service b23acc
    11: "VLAN",
Packit Service b23acc
    12: "ADSL",
Packit Service b23acc
    13: "Bridge",
Packit Service b23acc
    14: "Generic",
Packit Service b23acc
    15: "Team",
Packit Service b23acc
    16: "TUN",
Packit Service b23acc
    17: "IPTunnel",
Packit Service b23acc
    18: "MACVLAN",
Packit Service b23acc
    19: "VXLAN",
Packit Service b23acc
    20: "Veth",
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
states = {
Packit Service b23acc
    0: "Unknown",
Packit Service b23acc
    10: "Unmanaged",
Packit Service b23acc
    20: "Unavailable",
Packit Service b23acc
    30: "Disconnected",
Packit Service b23acc
    40: "Prepare",
Packit Service b23acc
    50: "Config",
Packit Service b23acc
    60: "Need Auth",
Packit Service b23acc
    70: "IP Config",
Packit Service b23acc
    80: "IP Check",
Packit Service b23acc
    90: "Secondaries",
Packit Service b23acc
    100: "Activated",
Packit Service b23acc
    110: "Deactivating",
Packit Service b23acc
    120: "Failed",
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
bus = dbus.SystemBus()
Packit Service b23acc
Packit Service b23acc
# Get a proxy for the base NetworkManager object
Packit Service b23acc
proxy = bus.get_object(
Packit Service b23acc
    "org.freedesktop.NetworkManager", "/org/freedesktop/NetworkManager"
Packit Service b23acc
)
Packit Service b23acc
manager = dbus.Interface(proxy, "org.freedesktop.NetworkManager")
Packit Service b23acc
Packit Service b23acc
# Get all devices known to NM and print their properties
Packit Service b23acc
devices = manager.GetDevices()
Packit Service b23acc
for d in devices:
Packit Service b23acc
    dev_proxy = bus.get_object("org.freedesktop.NetworkManager", d)
Packit Service b23acc
    prop_iface = dbus.Interface(dev_proxy, "org.freedesktop.DBus.Properties")
Packit Service b23acc
    props = prop_iface.GetAll("org.freedesktop.NetworkManager.Device")
Packit Service b23acc
    print("============================")
Packit Service b23acc
Packit Service b23acc
    print("Interface: %s" % props["Interface"])
Packit Service b23acc
    try:
Packit Service b23acc
        devtype = devtypes[props["DeviceType"]]
Packit Service b23acc
    except KeyError:
Packit Service b23acc
        devtype = "Unknown"
Packit Service b23acc
    print("Type: %s" % devtype)
Packit Service b23acc
Packit Service b23acc
    print("Driver: %s" % props["Driver"])
Packit Service b23acc
Packit Service b23acc
    try:
Packit Service b23acc
        state = states[props["State"]]
Packit Service b23acc
    except KeyError:
Packit Service b23acc
        state = "Unknown"
Packit Service b23acc
    print("State: %s" % state)