def test(self): subscription = create_snuba_subscription( self.project, "something", QueryDatasets.EVENTS, "level:error", QueryAggregations.TOTAL, timedelta(minutes=10), timedelta(minutes=1), ) subscription_id = subscription.id delete_snuba_subscription(subscription) assert not QuerySubscription.objects.filter(id=subscription_id).exists()
def test_with_task(self): with self.tasks(): snuba_query = create_snuba_query( QueryDatasets.EVENTS, "level:error", "count()", timedelta(minutes=10), timedelta(minutes=1), None, ) subscription = create_snuba_subscription(self.project, "something", snuba_query) subscription_id = subscription.id delete_snuba_subscription(subscription) assert not QuerySubscription.objects.filter(id=subscription_id).exists()
def test(self): with self.tasks(): snuba_query = create_snuba_query( QueryDatasets.EVENTS, "level:error", "count()", timedelta(minutes=10), timedelta(minutes=1), None, ) subscription = create_snuba_subscription(self.project, "something", snuba_query) # Refetch since snuba creation happens in a task subscription = QuerySubscription.objects.get(id=subscription.id) subscription_id = subscription.subscription_id assert subscription_id is not None delete_snuba_subscription(subscription) assert subscription.status == QuerySubscription.Status.DELETING.value assert subscription.subscription_id == subscription_id
def delete_alert_rule(alert_rule): """ Marks an alert rule as deleted and fires off a task to actually delete it. :param alert_rule: """ if alert_rule.status in ( AlertRuleStatus.PENDING_DELETION.value, AlertRuleStatus.DELETION_IN_PROGRESS.value, ): raise AlreadyDeletedError() # TODO: We're assuming only one subscription for the moment subscription = (AlertRuleQuerySubscription.objects.select_related( "query_subscription").get(alert_rule=alert_rule).query_subscription) alert_rule.update( # Randomize the name here so that we don't get unique constraint issues # while waiting for the deletion to process name=uuid4().get_hex(), status=AlertRuleStatus.PENDING_DELETION.value, ) tasks.delete_alert_rule.apply_async( kwargs={"alert_rule_id": alert_rule.id}) delete_snuba_subscription(subscription)