diff options
| author | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2018-10-19 20:58:53 -0400 |
|---|---|---|
| committer | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2018-10-25 08:47:42 -0400 |
| commit | 365dee325c14d5b92365895178373c442342bb5c (patch) | |
| tree | 07481babbb788c9804375e244f8a80e1be5e0ff8 | |
| parent | cfe3e4424efbf16d56a7570af0579ef574fd74f6 (diff) | |
| download | phosphor-objmgr-365dee325c14d5b92365895178373c442342bb5c.tar.gz phosphor-objmgr-365dee325c14d5b92365895178373c442342bb5c.zip | |
python-mapper: Switch to dbus service whitelist
Use dbus service/busname filtering to match the c++ mapper. This
facilitates an easy transition to c++ mapper.
Set service-namespace as a required parameter.
Set path-namespace as an optional parameter.
Change-Id: I6b16622ee1cb354030a82e7b9d412235933c2d39
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
| -rw-r--r-- | obmc/mapper/server.py | 26 | ||||
| -rw-r--r-- | phosphor-mapper | 4 |
2 files changed, 15 insertions, 15 deletions
diff --git a/obmc/mapper/server.py b/obmc/mapper/server.py index 29a65a4..4a6ce16 100644 --- a/obmc/mapper/server.py +++ b/obmc/mapper/server.py @@ -43,7 +43,6 @@ class MapperNotFoundException(dbus.exceptions.DBusException): def find_dbus_interfaces(conn, service, path, callback, error_callback, **kw): iface_match = kw.pop('iface_match', bool) - subtree_match = kw.pop('subtree_match', bool) class _FindInterfaces(object): def __init__(self): @@ -148,7 +147,7 @@ def find_dbus_interfaces(conn, service, path, callback, error_callback, **kw): self._to_path(chain(path_elements, self._to_path_elements(x))) for x in sorted(children)] - for child in filter(subtree_match, children): + for child in children: if child not in self.results: self._find_interfaces(child) except Exception as e: @@ -374,7 +373,8 @@ class ObjectMapper(dbus.service.Object): def process_new_owner(self, owned_name, owner): # unique name try: - return self.discover([(owned_name, owner)]) + if self.busname_match(owned_name): + self.discover([(owned_name, owner)]) except dbus.exceptions.DBusException as e: if obmc.dbuslib.enums.DBUS_UNKNOWN_SERVICE \ not in e.get_dbus_name(): @@ -443,17 +443,18 @@ class ObjectMapper(dbus.service.Object): for path, items in bus_items.items(): self.update_interfaces(path, str(owner), old=[], new=items) - def path_match(self, path): + def busname_match(self, busname): match = False - if not any([x for x in self.blacklist if x in path]): + if not any([x for x in self.service_blacklist if x in busname]): # not blacklisted - if any([x for x in self.namespaces if x in path]): - # a watched namespace contains the path + if any([x for x in self.service_namespaces if x in busname]): + # a watched busname contains the path match = True - elif any([path for x in self.namespaces if path in x]): - # the path contains a watched namespace + elif any([busname for x in self.service_namespaces + if busname in x]): + # the busname contains a watched namespace match = True return match @@ -476,7 +477,6 @@ class ObjectMapper(dbus.service.Object): find_dbus_interfaces(self.bus, owner, '/', self.discovery_callback, self.discovery_error, - subtree_match=self.path_match, iface_match=self.interface_match) def discover(self, owners=None): @@ -490,8 +490,9 @@ class ObjectMapper(dbus.service.Object): traceback.print_exception(*sys.exc_info()) if not owners: - owned_names = [x for x in self.bus.list_names() - if not obmc.dbuslib.bindings.is_unique(x)] + owned_names = [ + x for x in filter(self.busname_match, self.bus.list_names()) + if not obmc.dbuslib.bindings.is_unique(x)] owners = filter(bool, (get_owner(name) for name in owned_names)) for owned_name, o in owners: if not self.bus_normalize(owned_name): @@ -502,7 +503,6 @@ class ObjectMapper(dbus.service.Object): self.bus, owned_name, '/', self.discovery_callback, self.discovery_error_retry, - subtree_match=self.path_match, iface_match=self.interface_match) def bus_normalize(self, name): diff --git a/phosphor-mapper b/phosphor-mapper index 25d9867..4303434 100644 --- a/phosphor-mapper +++ b/phosphor-mapper @@ -24,10 +24,10 @@ if __name__ == '__main__': parser = ArgumentParser() parser.add_argument( '-p', '--path_namespaces', - required=True) + default="") parser.add_argument( '-s', '--service_namespaces', - default="") + required=True) parser.add_argument( '-i', '--interface_namespaces', required=True) |

