11import dbus
22import sys
33
4+ if sys .version_info >= (3 ,0 ):
5+ basestring = str
6+
47class NMDbusInterface (object ):
58 bus = dbus .SystemBus ()
69 dbus_service = 'org.freedesktop.NetworkManager'
@@ -13,15 +16,17 @@ def __init__(self, object_path=None):
1316 self .proxy = self .bus .get_object (self .dbus_service , self .object_path )
1417 self .interface = dbus .Interface (self .proxy , self .interface_name )
1518
19+ properties = []
1620 try :
1721 properties = self .proxy .GetAll (self .interface_name ,
1822 dbus_interface = 'org.freedesktop.DBus.Properties' )
19- for p in properties :
20- if not hasattr (self .__class__ , p ):
21- setattr (self .__class__ , p , self ._make_property (p ))
22- except dbus .exceptions .DBusException , e :
23+ except dbus .exceptions .DBusException as e :
2324 if e .get_dbus_name () != 'org.freedesktop.DBus.Error.UnknownMethod' :
2425 raise
26+ for p in properties :
27+ p = str (p )
28+ if not hasattr (self .__class__ , p ):
29+ setattr (self .__class__ , p , self ._make_property (p ))
2530
2631 def _make_property (self , name ):
2732 def get (self ):
@@ -33,10 +38,12 @@ def set(self, value):
3338 return property (get , set )
3439
3540 def unwrap (self , val ):
41+ if isinstance (val , dbus .ByteArray ):
42+ return "" .join ([str (x ) for x in val ])
3643 if isinstance (val , (dbus .Array , list , tuple )):
3744 return [self .unwrap (x ) for x in val ]
3845 if isinstance (val , (dbus .Dictionary , dict )):
39- return dict ([(self .unwrap (x ), self .unwrap (y )) for x ,y in val .iteritems ()])
46+ return dict ([(self .unwrap (x ), self .unwrap (y )) for x ,y in val .items ()])
4047 if isinstance (val , dbus .ObjectPath ):
4148 if val .startswith ('/org/freedesktop/NetworkManager/' ):
4249 classname = val .split ('/' )[4 ]
@@ -45,12 +52,8 @@ def unwrap(self, val):
4552 'Devices' : 'Device' ,
4653 }.get (classname , classname )
4754 return globals ()[classname ](val )
48- if isinstance (val , dbus .ByteArray ):
49- return "" .join ([str (x ) for x in val ])
5055 if isinstance (val , (dbus .Signature , dbus .String )):
5156 return str (val )
52- if isinstance (val , dbus .UTF8String ):
53- return unicode (val )
5457 if isinstance (val , dbus .Boolean ):
5558 return bool (val )
5659 if isinstance (val , (dbus .Int16 , dbus .UInt16 , dbus .Int32 , dbus .UInt32 , dbus .Int64 , dbus .UInt64 )):
@@ -62,14 +65,12 @@ def wrap(self, val):
6265 return val .object_path
6366 if hasattr (val , '__iter__' ) and not isinstance (val , basestring ):
6467 if hasattr (val , 'items' ):
65- return dict ([(x , self .wrap (y )) for x , y in val .iteritems ()])
68+ return dict ([(x , self .wrap (y )) for x , y in val .items ()])
6669 else :
6770 return [self .wrap (x ) for x in val ]
6871 return val
6972
7073 def __getattr__ (self , name ):
71- if name == 'object_path' :
72- print name
7374 try :
7475 return super (NMDbusInterface , self ).__getattribute__ (name )
7576 except AttributeError :
@@ -148,9 +149,10 @@ class IP6Config(NMDbusInterface):
148149class VPNConnection (NMDbusInterface ):
149150 interface_name = 'org.freedesktop.NetworkManager.VPN.Connection'
150151
152+
151153def const (prefix , val ):
152154 prefix = 'NM_' + prefix .upper () + '_'
153- for key , vval in globals ().iteritems ():
155+ for key , vval in globals ().items ():
154156 if 'REASON' in key and 'REASON' not in prefix :
155157 continue
156158 if key .startswith (prefix ) and val == vval :
@@ -176,6 +178,8 @@ def const(prefix, val):
176178NM_DEVICE_TYPE_WIMAX = 7
177179NM_DEVICE_TYPE_MODEM = 8
178180NM_DEVICE_TYPE_INFINIBAND = 9
181+ NM_DEVICE_TYPE_BOND = 10
182+ NM_DEVICE_TYPE_VLAN = 11
179183NM_DEVICE_CAP_NONE = 0
180184NM_DEVICE_CAP_NM_SUPPORTED = 1
181185NM_DEVICE_CAP_CARRIER_DETECT = 2
@@ -274,6 +278,7 @@ def const(prefix, val):
274278NM_DEVICE_STATE_REASON_GSM_SIM_PUK_REQUIRED = 47
275279NM_DEVICE_STATE_REASON_GSM_SIM_WRONG = 48
276280NM_DEVICE_STATE_REASON_INFINIBAND_MODE = 49
281+ NM_DEVICE_STATE_REASON_DEPENDENCY_FAILED = 50
277282NM_DEVICE_STATE_REASON_LAST = 65535
278283NM_ACTIVE_CONNECTION_STATE_UNKNOWN = 0
279284NM_ACTIVE_CONNECTION_STATE_ACTIVATING = 1
0 commit comments