oncall-engine/engine/apps
Joey Orlando d5b43b0439
minor improvements for check_escalation_finished celery task (#2554)
# What this PR does

This PR adds some enhancements to the `check_escalation_finished` celery
task. It short-circuits auditing of an alert group if it does not have
an escalation chain associated with it. In
`EscalationSnapshotMixin.start_escalation_if_needed`
we will not set `raw_escalation_snapshot`
([here](https://github.com/grafana/oncall/blob/dev/engine/apps/alerts/escalation_snapshot/escalation_snapshot_mixin.py#L262))
in this case:
```python3
def start_escalation_if_needed(self, countdown=START_ESCALATION_DELAY, eta=None):
        """
        :type self:AlertGroup
        """
        AlertGroup = apps.get_model("alerts", "AlertGroup")

        is_on_maintenace_or_debug_mode = self.channel.maintenance_mode is not None

        if (
            self.is_restricted
            or is_on_maintenace_or_debug_mode
            or self.pause_escalation
            or not self.escalation_chain_exists <-- here
        ):
            logger.debug(
                f"Not escalating alert group w/ pk: {self.pk}\n"
                f"is_restricted: {self.is_restricted}\n"
                f"is_on_maintenace_or_debug_mode: {is_on_maintenace_or_debug_mode}\n"
                f"pause_escalation: {self.pause_escalation}\n"
                f"escalation_chain_exists: {self.escalation_chain_exists}"
            )
            return

        logger.debug(f"Start escalation for alert group with pk: {self.pk}")

        # take raw escalation snapshot from db if escalation is paused
        raw_escalation_snapshot = (
            self.build_raw_escalation_snapshot() if not self.pause_escalation else self.raw_escalation_snapshot
        )
        task_id = celery_uuid()

        AlertGroup.all_objects.filter(pk=self.pk,).update(
            active_escalation_id=task_id,
            is_escalation_finished=False,
            raw_escalation_snapshot=raw_escalation_snapshot,
        )
```

`EscalationSnapshotMixin.escalation_chain_exists` is as such:
```python3
@property
    def escalation_chain_exists(self) -> bool:
        if self.pause_escalation:
            return False
        elif not self.channel_filter:
            return False
        return self.channel_filter.escalation_chain is not None
```

## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [ ] Documentation added (or `pr:no public docs` PR label added if not
required) (N/A)
- [ ] `CHANGELOG.md` updated (or `pr:no changelog` PR label added if not
required) (N/A)
2023-07-17 14:04:53 +00:00
..
alerts minor improvements for check_escalation_finished celery task (#2554) 2023-07-17 14:04:53 +00:00
api Direct paging improvements (#2537) 2023-07-17 14:21:56 +01:00
api_for_grafana_incident Incident API: include 'title' and permalinks in serializer (#2480) 2023-07-11 07:53:39 +00:00
auth_token add missing database migrations 2023-07-05 18:27:56 +02:00
base add zvonok integration (#2339) 2023-07-05 05:55:53 +00:00
email Fix warnings when running backend tests (#2079) 2023-06-06 18:38:00 +00:00
grafana_plugin fix parsing of grafana feature flags that're enabled via the feature_toggles.enabled syntax (#2477) 2023-07-10 04:59:15 -04:00
heartbeat remove deprecated heartbeat_heartbeat table/model (#2534) 2023-07-17 01:38:04 -04:00
integrations remove deprecated heartbeat_heartbeat table/model (#2534) 2023-07-17 01:38:04 -04:00
metrics_exporter Add "user_was_notified_of_alert_groups" metric (#2334) 2023-06-28 08:15:19 +00:00
mobile_app modify FCMDevice model to be a proxy model so that we dont create a table for it 2023-07-05 18:38:38 +02:00
oss_installation augment API response pagination attributes (#2471) 2023-07-14 11:19:40 -04:00
phone_notifications set default phone provider (#2523) 2023-07-17 13:04:55 +00:00
public_api Remove INTEGRATIONS_TO_REVERSE_URL_MAP (#2533) 2023-07-17 04:43:24 +00:00
schedules Exclude schedules from deleted organizations from notification list (#2493) 2023-07-11 10:32:10 +00:00
slack Direct paging improvements (#2537) 2023-07-17 14:21:56 +01:00
social_auth Social auth exception logging (#2041) 2023-06-02 11:20:54 +00:00
telegram fix mypy return errors (#2408) 2023-07-05 11:36:59 +00:00
twilioapp remove deprecated backend code (#2502) 2023-07-12 02:07:45 -04:00
user_management Polish user settings and warnings (#2425) 2023-07-17 18:34:58 +08:00
webhooks Fix authorization header masked (#2541) 2023-07-14 22:52:41 +00:00
zvonok Update CHANGELOG.md 2023-07-05 14:30:51 +08:00
__init__.py World, meet OnCall! 2022-06-03 08:09:47 -06:00