def add_node(self, node): if self.get_node(node.id): return node.created_at = utils.get_utc() node.updated_at = node.created_at LOG.debug("Adding node: %s", node) self._driver.add_node(node) self._notify_listeners(GraphEvent.NODE_ADDED, node)
def add_link(self, link): if self.get_link(link.id): return link.created_at = utils.get_utc() link.updated_at = link.created_at LOG.debug("Adding link: %s", link) self._driver.add_link(link) self._notify_listeners(GraphEvent.LINK_ADDED, link)
def delete_link(self, link_id): link = self.get_link(link_id) if not link: return link.deleted_at = utils.get_utc() LOG.debug("Deleting link: %s", link) self._driver.update_link(link) self._notify_listeners(GraphEvent.LINK_DELETED, link)
def update_link(self, new_link): link = self.get_link(new_link.id) if not link: return link.properties = new_link.properties link.updated_at = utils.get_utc() LOG.debug("Updating link: %s", new_link) self._driver.update_link(link) self._notify_listeners(GraphEvent.LINK_UPDATED, link)
def update_node(self, new_node): node = self.get_node(new_node.id) if not node: return node.properties = new_node.properties node.updated_at = utils.get_utc() LOG.debug("Updating node: %s", node) self._driver.update_node(node) self._notify_listeners(GraphEvent.NODE_UPDATED, node)
def collect(self): nodes = self._graph.get_nodes(properties={ 'origin': self._node_spec.origin, 'kind': self._node_spec.kind }) nodes_to_remove = [] for node in nodes: if utils.get_utc() - node.updated_at > self._staleness_period: nodes_to_remove.append(node) return nodes_to_remove
def delete_node(self, node_id): node = self.get_node(node_id) if not node: return links = self._driver.get_node_links(node) for link in links: self.delete_link(link.id) node.deleted_at = utils.get_utc() LOG.debug("Deleting node: %s", node) self._driver.update_node(node) self._notify_listeners(GraphEvent.NODE_DELETED, node)
def _extract_activation_time(self, entity): # TODO: Extract activation time from alert payload return utils.get_utc()
def get_nodes(self, time_point=None, properties=None): if not time_point: time_point = utils.get_utc() if not properties: properties = {} return self._driver.get_nodes(time_point, properties)