def assert_args(start, end, filter_by, filter_vals, only_active_alarms, sort_dirs): if only_active_alarms and (start or end): raise VitrageInputError("'only_active_alarms' can't be used " "with 'start' or 'end' ") if end and not start: raise VitrageInputError("'end' can't be used without 'start'") if (filter_by and not filter_vals) or (filter_vals and not filter_by): raise VitrageInputError('Cannot perform filtering, one of ' 'filter_by or filter_vals are missing') if filter_by and filter_vals and len(filter_by) != len(filter_vals): raise VitrageInputError("Cannot perform filtering, len of " "'filter_by' and 'filter_vals' differs") for d in sort_dirs: if d not in (ASC, DESC): raise VitrageInputError("Unknown sort direction %s" % d)
def query(self, event_id=None, collector_timestamp=None, payload=None, gt_collector_timestamp=None, lt_collector_timestamp=None): """Yields a lists of events that match filters. :raises: vitrage.common.exception.VitrageInputError. :rtype: list of vitrage.storage.sqlalchemy.models.Event """ if (event_id or collector_timestamp or payload) and \ (gt_collector_timestamp or lt_collector_timestamp): msg = "Calling function with both specific event and range of " \ "events parameters at the same time " LOG.debug(msg) raise VitrageInputError(msg) query = self.query_filter(models.Event, event_id=event_id, collector_timestamp=collector_timestamp, payload=payload) query = self._update_query_gt_lt(gt_collector_timestamp, lt_collector_timestamp, query) return query.order_by(models.Event.collector_timestamp.desc()).all()
def delete(self, event_id=None, collector_timestamp=None, gt_collector_timestamp=None, lt_collector_timestamp=None): """Delete all events that match the filters. :raises: vitrage.common.exception.VitrageInputError. """ if (event_id or collector_timestamp) and \ (gt_collector_timestamp or lt_collector_timestamp): msg = "Calling function with both specific event and range of " \ "events parameters at the same time " LOG.debug(msg) raise VitrageInputError(msg) query = self.query_filter(models.Event, event_id=event_id, collector_timestamp=collector_timestamp) query = self._update_query_gt_lt(gt_collector_timestamp, lt_collector_timestamp, query) query.delete()