def impacted_by(self, relname): relationship = getattr(self.adapted, relname, None) if relationship and callable(relationship): related = relationship() if not related: return try: for obj in related: yield edge(guid(obj), self.guid()) except TypeError: yield edge(guid(related), self.guid())
def impacts_for(thing): ''' Return a two element tuple. First element is a list of object ids impacted by thing. Second element is a list of object ids impacting thing. ''' from ZenPacks.zenoss.Impact.impactd.interfaces \ import IRelationshipDataProvider impacted_by = [] impacting = [] guid_manager = IGUIDManager(thing.getDmd()) for subscriber in subscribers([thing], IRelationshipDataProvider): for edge in subscriber.getEdges(): if edge.source == guid(thing): impacted_by.append(guid_manager.getObject(edge.impacted).id) elif edge.impacted == guid(thing): impacting.append(guid_manager.getObject(edge.source).id) return (impacted_by, impacting)
def guid(self): if not hasattr(self, '_guid'): self._guid = guid(self.adapted) return self._guid