diff options
author | Brad Bishop <bradleyb@us.ibm.com> | 2016-02-04 15:40:26 -0500 |
---|---|---|
committer | Brad Bishop <bradleyb@us.ibm.com> | 2016-02-04 15:40:26 -0500 |
commit | 4b84941769b42e5cc3c7a81763d79cabcecef5ca (patch) | |
tree | 6b34b06a48dc0340eea389a5fc141d5b82fd060c /phosphor-mapper | |
parent | e07fb494405326a93fab2a0b50ba13299b20ed91 (diff) | |
download | phosphor-objmgr-4b84941769b42e5cc3c7a81763d79cabcecef5ca.tar.gz phosphor-objmgr-4b84941769b42e5cc3c7a81763d79cabcecef5ca.zip |
Run phosphor-mapper through pep8
This is all whitespace adjustments flagged by pep8.
Diffstat (limited to 'phosphor-mapper')
-rw-r--r-- | phosphor-mapper | 335 |
1 files changed, 174 insertions, 161 deletions
diff --git a/phosphor-mapper b/phosphor-mapper index da4ae63..255897f 100644 --- a/phosphor-mapper +++ b/phosphor-mapper @@ -24,175 +24,188 @@ import gobject from OpenBMCMapper import IntrospectionParser, PathTree import OpenBMCMapper + class MapperNotFoundException(dbus.exceptions.DBusException): - _dbus_error_name = OpenBMCMapper.MAPPER_NOT_FOUND - def __init__(self, path): - super(MapperNotFoundException, self).__init__( - "path or object not found: %s" %(path)) + _dbus_error_name = OpenBMCMapper.MAPPER_NOT_FOUND + + def __init__(self, path): + super(MapperNotFoundException, self).__init__( + "path or object not found: %s" % (path)) + class ObjectMapper(dbus.service.Object): - def __init__(self, bus, path, - name_match = OpenBMCMapper.org_dot_openbmc_match, - intf_match = OpenBMCMapper.org_dot_openbmc_match): - super(ObjectMapper, self).__init__(bus.dbus, path) - self.cache = PathTree() - self.bus = bus - self.name_match = name_match - self.intf_match = intf_match - self.tag_match = OpenBMCMapper.ListMatch(['children', 'interface']) - self.service = None - - gobject.idle_add(self.discover) - self.bus.dbus.add_signal_receiver(self.bus_handler, - dbus_interface = dbus.BUS_DAEMON_IFACE, - signal_name = 'NameOwnerChanged') - self.bus.dbus.add_signal_receiver(self.interfaces_added_handler, - dbus_interface = dbus.BUS_DAEMON_IFACE + '.ObjectManager', - signal_name = 'InterfacesAdded', - sender_keyword = 'sender') - self.bus.dbus.add_signal_receiver(self.interfaces_removed_handler, - dbus_interface = dbus.BUS_DAEMON_IFACE + '.ObjectManager', - signal_name = 'InterfacesRemoved', - sender_keyword = 'sender') - - def bus_match(self, name): - if name == OpenBMCMapper.MAPPER_NAME: - return False - return self.name_match(name) - - def discovery_pending(self): - return not bool(self.service) - - def interfaces_added_handler(self, path, iprops, **kw): - name = self.bus.get_owned_name(self.bus_match, kw['sender']) - if self.discovery_pending() or \ - not self.bus_match(name): - return - - matches = [ x for x in iprops.iterkeys() if self.intf_match(x) ] - self.add_interfaces(path, kw['sender'], matches) - - def interfaces_removed_handler(self, path, interfaces, **kw): - name = self.bus.get_owned_name(self.bus_match, kw['sender']) - if self.discovery_pending() or \ - not self.bus_match(name): - return - item = self.cache[path] - sender = kw['sender'] - for x in interfaces: - if self.intf_match(x): - try: - item[sender].remove(x) - except ValueError: - pass - - # remove the owner if there aren't any interfaces left - if not item[sender]: - del item[sender] - - # update if interfaces remain - if item: - self.cache[path] = item - # mark for removal if no interfaces remain - elif self.cache.get_children(path): - self.cache.demote(path) - # delete the entire path if everything is gone - else: - del self.cache[path] - - def process_new_owner(self, name): - # unique name - return self.discover([ IntrospectionParser(name, - self.bus.dbus, self.tag_match, self.intf_match) ]) - - def process_old_owner(self, name): - for x,y in self.cache.dataitems(): - if name not in y: - continue - del y[name] - if y: - self.cache[x] = y - elif self.cache.get_children(x): - self.cache.demote(x) - else: - del self.cache[x] - - def bus_handler(self, service, old, new): - if self.discovery_pending() or \ - not self.bus_match(service): - return - - if new: - self.process_new_owner(new) - if old: - self.process_old_owner(old) - - def add_interfaces(self, path, owner, interfaces): - d = self.cache.setdefault(path, {}) - d = d.setdefault(owner, []) - self.cache[path][owner] = list(set(d + interfaces)) - - def add_items(self, owner, bus_items): - for x,y in bus_items.iteritems(): - self.add_interfaces(x, owner, y['interfaces']) - - def discover(self, owners = None): - if not owners: - owners = [ IntrospectionParser(x, self.bus.dbus, - self.tag_match, self.intf_match) \ - for x in self.bus.get_owner_names(self.bus_match) ] - for o in owners: - self.add_items(o.name, o.introspect()) - - if self.discovery_pending(): - print "ObjectMapper discovery complete..." - self.service = dbus.service.BusName( - OpenBMCMapper.MAPPER_NAME, self.bus.dbus) - - @dbus.service.method(OpenBMCMapper.MAPPER_IFACE, 's', 'a{sas}') - def GetObject(self, path): - o = self.cache.get(path) - if not o: - raise MapperNotFoundException(path) - return o - - @dbus.service.method(OpenBMCMapper.MAPPER_IFACE, 'si', 'as') - def GetSubTreePaths(self, path, depth): - try: - return self.cache.iterkeys(path, depth) - except KeyError: - raise MapperNotFoundException(path) - - @dbus.service.method(OpenBMCMapper.MAPPER_IFACE, 'si', 'a{sa{sas}}') - def GetSubTree(self, path, depth): - try: - return { x:y for x, y in self.cache.dataitems(path, depth) } - except KeyError: - raise MapperNotFoundException(path) + def __init__(self, bus, path, + name_match=OpenBMCMapper.org_dot_openbmc_match, + intf_match=OpenBMCMapper.org_dot_openbmc_match): + super(ObjectMapper, self).__init__(bus.dbus, path) + self.cache = PathTree() + self.bus = bus + self.name_match = name_match + self.intf_match = intf_match + self.tag_match = OpenBMCMapper.ListMatch(['children', 'interface']) + self.service = None + + gobject.idle_add(self.discover) + self.bus.dbus.add_signal_receiver( + self.bus_handler, + dbus_interface= + dbus.BUS_DAEMON_IFACE, + signal_name='NameOwnerChanged') + self.bus.dbus.add_signal_receiver( + self.interfaces_added_handler, + dbus_interface= + dbus.BUS_DAEMON_IFACE + '.ObjectManager', + signal_name='InterfacesAdded', + sender_keyword='sender') + self.bus.dbus.add_signal_receiver( + self.interfaces_removed_handler, + dbus_interface=dbus.BUS_DAEMON_IFACE + '.ObjectManager', + signal_name='InterfacesRemoved', + sender_keyword='sender') + + def bus_match(self, name): + if name == OpenBMCMapper.MAPPER_NAME: + return False + return self.name_match(name) + + def discovery_pending(self): + return not bool(self.service) + + def interfaces_added_handler(self, path, iprops, **kw): + name = self.bus.get_owned_name(self.bus_match, kw['sender']) + if self.discovery_pending() or \ + not self.bus_match(name): + return + + matches = [x for x in iprops.iterkeys() if self.intf_match(x)] + self.add_interfaces(path, kw['sender'], matches) + + def interfaces_removed_handler(self, path, interfaces, **kw): + name = self.bus.get_owned_name(self.bus_match, kw['sender']) + if self.discovery_pending() or \ + not self.bus_match(name): + return + item = self.cache[path] + sender = kw['sender'] + for x in interfaces: + if self.intf_match(x): + try: + item[sender].remove(x) + except ValueError: + pass + + # remove the owner if there aren't any interfaces left + if not item[sender]: + del item[sender] + + # update if interfaces remain + if item: + self.cache[path] = item + # mark for removal if no interfaces remain + elif self.cache.get_children(path): + self.cache.demote(path) + # delete the entire path if everything is gone + else: + del self.cache[path] + + def process_new_owner(self, name): + # unique name + return self.discover([IntrospectionParser(name, + self.bus.dbus, + self.tag_match, + self.intf_match)]) + + def process_old_owner(self, name): + for x, y in self.cache.dataitems(): + if name not in y: + continue + del y[name] + if y: + self.cache[x] = y + elif self.cache.get_children(x): + self.cache.demote(x) + else: + del self.cache[x] + + def bus_handler(self, service, old, new): + if self.discovery_pending() or \ + not self.bus_match(service): + return + + if new: + self.process_new_owner(new) + if old: + self.process_old_owner(old) + + def add_interfaces(self, path, owner, interfaces): + d = self.cache.setdefault(path, {}) + d = d.setdefault(owner, []) + self.cache[path][owner] = list(set(d + interfaces)) + + def add_items(self, owner, bus_items): + for x, y in bus_items.iteritems(): + self.add_interfaces(x, owner, y['interfaces']) + + def discover(self, owners=None): + if not owners: + owners = [IntrospectionParser(x, self.bus.dbus, + self.tag_match, + self.intf_match) + for x in self.bus.get_owner_names(self.bus_match)] + for o in owners: + self.add_items(o.name, o.introspect()) + + if self.discovery_pending(): + print "ObjectMapper discovery complete..." + self.service = dbus.service.BusName( + OpenBMCMapper.MAPPER_NAME, self.bus.dbus) + + @dbus.service.method(OpenBMCMapper.MAPPER_IFACE, 's', 'a{sas}') + def GetObject(self, path): + o = self.cache.get(path) + if not o: + raise MapperNotFoundException(path) + return o + + @dbus.service.method(OpenBMCMapper.MAPPER_IFACE, 'si', 'as') + def GetSubTreePaths(self, path, depth): + try: + return self.cache.iterkeys(path, depth) + except KeyError: + raise MapperNotFoundException(path) + + @dbus.service.method(OpenBMCMapper.MAPPER_IFACE, 'si', 'a{sa{sas}}') + def GetSubTree(self, path, depth): + try: + return {x: y for x, y in self.cache.dataitems(path, depth)} + except KeyError: + raise MapperNotFoundException(path) + class BusWrapper: - def __init__(self, bus): - self.dbus = bus + def __init__(self, bus): + self.dbus = bus - def get_owned_name(self, match, bus): - for x in self.get_service_names(match): - if self.dbus.get_name_owner(x) == bus: - return x + def get_owned_name(self, match, bus): + for x in self.get_service_names(match): + if self.dbus.get_name_owner(x) == bus: + return x - def get_service_names(self, match): - # these are well known names - return [ x for x in self.dbus.list_names() \ - if match(x) ] + def get_service_names(self, match): + # these are well known names + return [x for x in self.dbus.list_names() + if match(x)] - def get_owner_names(self, match): - # these are unique connection names - return list( set( [ self.dbus.get_name_owner(x) \ - for x in self.get_service_names(match) ] ) ) + def get_owner_names(self, match): + # these are unique connection names + return list(set( + [self.dbus.get_name_owner(x) + for x in self.get_service_names(match)])) if __name__ == '__main__': - dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) - bus = dbus.SystemBus() - o = ObjectMapper(BusWrapper(bus), OpenBMCMapper.MAPPER_PATH) - loop = gobject.MainLoop() + dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) + bus = dbus.SystemBus() + o = ObjectMapper(BusWrapper(bus), OpenBMCMapper.MAPPER_PATH) + loop = gobject.MainLoop() - loop.run() + loop.run() |