def getEventSummariesGenerator(self, filter=None, exclude=None, sort=None, archive=False, timeout=None): if isinstance(exclude, dict): exclude = from_dict(EventFilter, exclude) if isinstance(filter, dict): filter = from_dict(EventFilter, filter) if sort is not None: sort = tuple(self._getEventSort(s) for s in safeTuple(sort)) searchid = self.client.createSavedSearch(event_filter=filter, exclusion_filter=exclude, sort=sort, archive=archive, timeout=timeout) log.debug("created saved search %s", searchid) eventSearchFn = partial(self.client.savedSearch, searchid, archive=archive) offset = 0 limit = 1000 try: while offset is not None: result = self._getEventSummaries(eventSearchFn, offset, limit) for evt in result['events']: yield evt offset = result['next_offset'] finally: try: log.debug("closing saved search %s", searchid) self.client.deleteSavedSearch(searchid, archive=archive) except Exception as e: log.debug("error closing saved search %s (%s) - %s", searchid, type(e), e)
def getEventSummaries(self, offset, limit=1000, sort=None, filter=None, exclusion_filter=None, client_fn=None, use_permissions=False): if client_fn is None: client_fn = self.client.getEventSummaries if filter is not None and isinstance(filter, dict): filter = from_dict(EventFilter, filter) if exclusion_filter is not None and isinstance(exclusion_filter, dict): exclusion_filter = from_dict(EventFilter, exclusion_filter) if sort is not None: sort = tuple(self._getEventSort(s) for s in safeTuple(sort)) result = None if use_permissions: user = getSecurityManager().getUser() userSettings = self._dmd.ZenUsers._getOb(user.getId()) hasGlobalRoles = not userSettings.hasNoGlobalRoles() if not hasGlobalRoles: adminRoles = userSettings.getAllAdminRoles() if adminRoles: # get ids for the objects they have permission to access # and add to filter ids = [ IGlobalIdentifier(x.managedObject()).getGUID() for x in adminRoles ] if filter is None: filter = EventFilter() tf = filter.tag_filter.add() tf.tag_uuids.extend(ids) else: # no permission to see events, return 0 result = { 'total': 0, 'events': [], } if not result: result = self._getEventSummaries(source=partial( client_fn, filter=filter, exclusion_filter=exclusion_filter, sort=sort), offset=offset, limit=limit) return result
def getEventSummaries(self, offset, limit=1000, sort=None, filter=None, exclusion_filter=None, client_fn=None, use_permissions=False): if client_fn is None: client_fn = self.client.getEventSummaries if filter is not None and isinstance(filter,dict): filter = from_dict(EventFilter, filter) if exclusion_filter is not None and isinstance(exclusion_filter, dict): exclusion_filter['operator'] = 1 # Set operator to OR exclusion_filter = from_dict(EventFilter, exclusion_filter) if sort is not None: sort = tuple(self._getEventSort(s) for s in safeTuple(sort)) result = None if use_permissions: user = getSecurityManager().getUser() userSettings = self._dmd.ZenUsers._getOb(user.getId()) hasGlobalRoles = not userSettings.hasNoGlobalRoles() if not hasGlobalRoles: # get guids for the objects user has permission to access # and add to filter guids = userSettings.getAllAdminGuids(returnChildrenForRootObj=True) if guids: if filter is None: filter = EventFilter() tf = filter.tag_filter.add() tf.tag_uuids.extend(guids) else: # no permission to see events, return 0 result = { 'total' : 0, 'events' : [], } if not result: result = self._getEventSummaries(source=partial(client_fn, filter=filter, exclusion_filter=exclusion_filter, sort=sort ), offset=offset, limit=limit ) return result
def getEventSummaries(self, offset, limit=1000, sort=None, filter=None, exclusion_filter=None, client_fn=None, use_permissions=False): if client_fn is None: client_fn = self.client.getEventSummaries if filter is not None and isinstance(filter,dict): filter = from_dict(EventFilter, filter) if exclusion_filter is not None and isinstance(exclusion_filter, dict): exclusion_filter = from_dict(EventFilter, exclusion_filter) if sort is not None: sort = tuple(self._getEventSort(s) for s in safeTuple(sort)) result = None if use_permissions: user = getSecurityManager().getUser() userSettings = self._dmd.ZenUsers._getOb(user.getId()) hasGlobalRoles = not userSettings.hasNoGlobalRoles() if not hasGlobalRoles: adminRoles = userSettings.getAllAdminRoles() if adminRoles: # get ids for the objects they have permission to access # and add to filter ids = [IGlobalIdentifier(x.managedObject()).getGUID() for x in adminRoles] if filter is None: filter = EventFilter() tf = filter.tag_filter.add() tf.tag_uuids.extend(ids) else: # no permission to see events, return 0 result = { 'total' : 0, 'events' : [], } if not result: result = self._getEventSummaries(source=partial(client_fn, filter=filter, exclusion_filter=exclusion_filter, sort=sort ), offset=offset, limit=limit ) return result