summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCamVan Nguyen <ctnguyen@us.ibm.com>2018-03-05 12:19:46 -0600
committerCamVan Nguyen <ctnguyen@us.ibm.com>2018-03-12 13:43:46 -0500
commit2fd4b1f88492ad5e743ff4321beb9fe0d052cc80 (patch)
tree25815668cecbc03f6d2ad0c5cda0073b9089693e
parent140f4102169adc30911413352494961867b2b6a3 (diff)
downloadphosphor-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.py27
-rw-r--r--obmc/mapper/server.py17
-rw-r--r--obmc/mapper/utils.py6
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
OpenPOWER on IntegriCloud