diff options
author | CamVan Nguyen <ctnguyen@us.ibm.com> | 2018-03-05 12:19:46 -0600 |
---|---|---|
committer | CamVan Nguyen <ctnguyen@us.ibm.com> | 2018-03-12 13:43:46 -0500 |
commit | 2fd4b1f88492ad5e743ff4321beb9fe0d052cc80 (patch) | |
tree | 25815668cecbc03f6d2ad0c5cda0073b9089693e | |
parent | 140f4102169adc30911413352494961867b2b6a3 (diff) | |
download | phosphor-objmgr-2fd4b1f88492ad5e743ff4321beb9fe0d052cc80.tar.gz phosphor-objmgr-2fd4b1f88492ad5e743ff4321beb9fe0d052cc80.zip |
Port to python 3
Port code to python 3 yet remain backward compatible to python 2.
This port is in preparation for yocto 2.4 upgrade.
Partially resolves openbmc/openbmc#2920
Change-Id: I0fb2642d6a8d1857ec1a4c4a5c8b962fd327641a
Signed-off-by: CamVan Nguyen <ctnguyen@us.ibm.com>
-rw-r--r-- | obmc/mapper/bindings.py | 27 | ||||
-rw-r--r-- | obmc/mapper/server.py | 17 | ||||
-rw-r--r-- | obmc/mapper/utils.py | 6 |
3 files changed, 30 insertions, 20 deletions
diff --git a/obmc/mapper/bindings.py b/obmc/mapper/bindings.py index bd19f19..f5f96d0 100644 --- a/obmc/mapper/bindings.py +++ b/obmc/mapper/bindings.py @@ -122,7 +122,7 @@ class Mapper: obj = {} - for owner, interfaces in mapper_data[path].items(): + for owner, interfaces in list(mapper_data[path].items()): obj.update( self.__get_properties_on_bus( path, owner, interfaces, match)) @@ -140,8 +140,8 @@ class Mapper: # look for objectmanager implementations as they result # in fewer dbus calls - for path, bus_data in mapper_data.items(): - for owner, interfaces in bus_data.items(): + for path, bus_data in list(mapper_data.items()): + for owner, interfaces in list(bus_data.items()): owners.append(owner) if dbus.BUS_DAEMON_IFACE + '.ObjectManager' in interfaces: managers[owner] = path @@ -156,14 +156,14 @@ class Mapper: if e.get_dbus_name() != MAPPER_NOT_FOUND: raise - for path, bus_data in ancestors.items(): - for owner, interfaces in bus_data.items(): + for path, bus_data in list(ancestors.items()): + for owner, interfaces in list(bus_data.items()): if dbus.BUS_DAEMON_IFACE + '.ObjectManager' in interfaces: managers[owner] = path # make all the manager gmo (get managed objects) calls results = {} - for owner, path in managers.items(): + for owner, path in list(managers.items()): if owner not in owners: continue obj = self.bus.get_object(owner, path, introspect=False) @@ -171,17 +171,18 @@ class Mapper: obj, dbus.BUS_DAEMON_IFACE + '.ObjectManager') # flatten (remove interface names) gmo results - for path, interfaces in iface.GetManagedObjects().items(): - if path not in iter(mapper_data.keys()): + for path, interfaces in \ + list(iface.GetManagedObjects().items()): + if path not in iter(list(mapper_data.keys())): continue properties = {} - for iface, props in interfaces.items(): + for iface, props in list(interfaces.items()): properties.update(props) results.setdefault(path, {}).setdefault(owner, properties) # make dbus calls for any remaining objects - for path, bus_data in mapper_data.items(): - for owner, interfaces in bus_data.items(): + for path, bus_data in list(mapper_data.items()): + for owner, interfaces in list(bus_data.items()): if results.setdefault(path, {}).setdefault(owner, {}): continue results[path][owner].update( @@ -189,8 +190,8 @@ class Mapper: path, owner, interfaces, match)) objs = obmc.utils.pathtree.PathTree() - for path, owners in results.items(): - for owner, properties in owners.items(): + for path, owners in list(results.items()): + for owner, properties in list(owners.items()): objs.setdefault(path, {}).update(properties) return objs diff --git a/obmc/mapper/server.py b/obmc/mapper/server.py index a6df224..01c18ee 100644 --- a/obmc/mapper/server.py +++ b/obmc/mapper/server.py @@ -18,7 +18,11 @@ import dbus import dbus.service import dbus.exceptions import dbus.mainloop.glib -import gobject +# TODO: openbmc/openbmc#2994 remove python 2 support +try: # python 2 + import gobject +except ImportError: # python 3 + from gi.repository import GObject as gobject import xml.etree.ElementTree as ET import obmc.utils.pathtree import obmc.mapper @@ -97,7 +101,7 @@ def find_dbus_interfaces(conn, service, path, callback, error_callback, **kw): def _gmo_callback(self, path, objs): try: self.gmo_pending.remove(path) - for k, v in objs.items(): + for k, v in list(objs.items()): self.results[k] = v except Exception as e: error_callback(service, path, e) @@ -308,7 +312,7 @@ class ObjectMapper(dbus.service.Object): owner = self.bus_normalize(str(kw['sender'])) if not owner: return - interfaces = self.filter_signal_interfaces(iter(iprops.keys())) + interfaces = self.filter_signal_interfaces(iter(list(iprops.keys()))) if not interfaces: return @@ -439,7 +443,7 @@ class ObjectMapper(dbus.service.Object): path, owner, old_assoc, new_assoc, created, destroyed) def add_items(self, owner, bus_items): - for path, items in bus_items.items(): + for path, items in list(bus_items.items()): self.update_interfaces(path, str(owner), old=[], new=items) def path_match(self, path): @@ -569,7 +573,8 @@ class ObjectMapper(dbus.service.Object): obj_map = lambda o: ( tuple(*list(filter(svc_filter, list(map(svc_map, [o])))))) - return dict([x for x in map(obj_map, iter(item.items())) if x]) + return dict( + [x for x in map(obj_map, iter(list(item.items()))) if x]) # Called with a list of path/object tuples. if not ifaces: @@ -611,7 +616,7 @@ class ObjectMapper(dbus.service.Object): @staticmethod def has_interfaces(item): - for owner in item.keys(): + for owner in list(item.keys()): if ObjectMapper.interfaces_get(item, owner): return True return False diff --git a/obmc/mapper/utils.py b/obmc/mapper/utils.py index 75b4229..a7b93b2 100644 --- a/obmc/mapper/utils.py +++ b/obmc/mapper/utils.py @@ -17,7 +17,11 @@ import sys import dbus import dbus.mainloop.glib -import gobject +# TODO: openbmc/openbmc#2994 remove python 2 support +try: # python 2 + import gobject +except ImportError: # python 3 + from gi.repository import GObject as gobject import obmc.mapper |