server: fix unexpected GetSubTreePaths behavior
The intent is that subtree paths enumerate all paths, even paths
that don't have any objects associated with them. For example
a get subtree paths on /xyz should provide /xyz/openbmc_project.
Starting with 1c33c22 get subtree paths incorrectly searches for
paths with objects under them.
Resolves: openbmc/openbmc#1544
Change-Id: If6db079d10a4216b192bf18d26b4bacbcc264314
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/obmc/mapper/server.py b/obmc/mapper/server.py
index 18f50c1..0766daf 100644
--- a/obmc/mapper/server.py
+++ b/obmc/mapper/server.py
@@ -555,7 +555,9 @@
@dbus.service.method(obmc.mapper.MAPPER_IFACE, 'sias', 'as')
def GetSubTreePaths(self, path, depth, interfaces):
try:
- return self.GetSubTree(path, depth, interfaces).iterkeys()
+ return self.filter_interfaces(
+ self.cache.iteritems(path, depth),
+ interfaces)
except KeyError:
raise MapperNotFoundException(path)