Exemplo n.º 1
0
 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()
Exemplo n.º 2
0
 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()
Exemplo n.º 3
0
 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
Exemplo n.º 4
0
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)