Commit graph

1330 commits

Author SHA1 Message Date
Vadim Stepanov
d8e1a1dfae
Allow custom wait delays (#4422)
# What this PR does

Allows custom wait durations for:
* `Wait` escalation policy
* `>X alerts per Y minutes` escalation policy
* `Wait` user notification policy

## Which issue(s) this PR closes

Related to https://github.com/grafana/oncall/issues/2464

## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.

---------

Co-authored-by: Rares Mardare <rares.mardare@grafana.com>
2024-05-31 13:18:59 +00:00
Matias Bordese
08d1e00430
Update escalation auditor to log total and failed escalations info (#4425)
Related to https://github.com/grafana/oncall-private/issues/2619
2024-05-30 18:53:53 +00:00
Matias Bordese
5291feeb51
Fix update slack group to not raise if group is not found (#4423)
Fixes https://github.com/grafana/oncall-private/issues/2664
2024-05-30 11:27:25 +00:00
Matias Bordese
8160482b5e
Fix team uniqueness db migration (#4416) 2024-05-28 19:41:42 +00:00
Vadim Stepanov
ef47e54f24
fix bad redirects (#4413) 2024-05-28 18:24:57 +00:00
Matias Bordese
6acbb71fad
Do not retry on SlackAPICantUpdateMessageError errors (#4405)
Related to https://github.com/grafana/oncall/pull/4329
2024-05-28 17:46:15 +00:00
Matias Bordese
7e3008ba0f
Setup team uniqueness at DB level (#4396)
Avoid potential duplicated teams. Also it should help ensuring
`sync_organization` idempotency.
2024-05-27 17:41:20 +00:00
Michael Derynck
357857faca
Add endpoint to get a single user group (#4395)
# What this PR does
Add endpoint to return slack user group from public primary key

## Which issue(s) this PR closes

<!--
*Note*: if you have more than one GitHub issue that this PR closes, be
sure to preface
each issue link with a [closing
keyword](https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/using-keywords-in-issues-and-pull-requests#linking-a-pull-request-to-an-issue).
This ensures that the issue(s) are auto-closed once the PR has been
merged.
-->

## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.
2024-05-24 20:26:28 +00:00
Joey Orlando
a92203e71c
remove unnecessary CI step bash command (#4397)
# What this PR does

This command is no longer necessary. Currently it doesn't seem to be
working (see screenshot 👇). Presumably `netcat-traditional` is installed
on the `ubuntu-latest-8-cores` runner.

![Screenshot 2024-05-24 at 14 42
23](https://github.com/grafana/oncall/assets/9406895/dcb80711-6168-4885-a7b8-a05e323c03bf)
2024-05-24 15:13:38 -04:00
Joey Orlando
93ab3407ff
rename settings/ci-test.py to settings/ci_test.py (#4391)
# What this PR does

Related to Drone -> GitHub Actions migration
2024-05-24 13:55:08 +00:00
Matias Bordese
d316c9121e
Fix order filtering when executing notify all/group steps from snapshot (#4381)
Fixes https://github.com/grafana/oncall-private/issues/2708
2024-05-23 12:36:28 +00:00
Vadim Stepanov
f9f5ae9042
fix silence_options schema (#4384) 2024-05-23 11:06:00 +00:00
Vadim Stepanov
ce887e4b6f
Fix Slack user group warning false positives (#4367)
# What this PR does

Fixes Slack user group warning false positives on the schedule detail
page

## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.
2024-05-22 15:43:59 +00:00
Joey Orlando
a3187953ec
remove deprecated rbac workaround (#4377)
## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.
2024-05-22 15:27:16 +00:00
Yulya Artyukhina
f583da5b56
Add service_name label to insight metrics (#4300)
# What this PR does
Adds `service_name` label to insight metrics
NOTE: It is related to [this
PR](https://github.com/grafana/oncall/pull/4227) and should be merged no
sooner than two days after the next release (current release version is
1.4.4), because we need to wait for the metrics cache to be updated for
all organizations (uses the new cache structure with `services`)

## Which issue(s) this PR closes
Related to https://github.com/grafana/oncall-private/issues/2610

## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.
2024-05-22 14:17:42 +00:00
Maxim Mordasov
a2859553ce
Fix AG date range based filters default values (#4354)
# What this PR does

Fix AG date range based filters default values

## Which issue(s) this PR closes


## Checklist

- [ ] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.

---------

Co-authored-by: Michael Derynck <michael.derynck@grafana.com>
2024-05-22 12:02:56 +00:00
Matias Bordese
3c58c2f6f8
Make type required when creating an escalation policy step (#4356)
Related to https://github.com/grafana/oncall-private/issues/2689
2024-05-20 13:49:19 +00:00
Joey Orlando
bd6d8f1aaf
fix typo 2024-05-15 11:10:04 -04:00
Joey Orlando
2582a1b1dc
Refactor how RBAC enabled/disabled status is determined for Grafana Cloud stacks (#4279)
# What this PR does

In cloud we are currently (somewhat) improperly determining whether or
not a Grafana stack had the `accessControlOnCall` feature flag enabled.
At first things worked fine. We would enable this feature toggle via the
Grafana Admin UI, and then the OnCall backend would read this value from
GCOM's `GET /instance/<stack_id>` endpoint (via
`config.feature_toggles`), and everything worked as expected.

There was a recent change made in `grafana/deployment_tools` to set this
feature flag to True for all stacks. However, for some reason, the GCOM
endpoint above doesn't return the `accessControlOnCall` feature toggle
value in `config.feature_toggles` if it is set in this manner (it only
returns the value if it is set via the Grafana Admin UI).

So what we should instead be doing is such instead of asking GCOM for
this feature toggle, infer whether RBAC is enabled on the stack by doing
a `HEAD /api/access-control/users/permissions/search` (this endpoint _is
only_ available on a Grafana stack if `accessControlOnCall` is enabled).

**Few caveats to this ☝️**
1. we first have to make sure that the cloud stack is in an `active`
state (ie. not paused). This is because, no matter if the
`accessControlOnCall` is enabled or not, if the stack is in a `paused`
state it will ALWAYS return `HTTP 200` which can be misleading and lead
to bugs (this feels like a bug on the Grafana API, will follow up with
core grafana team)
2. Once we roll out this change we will effectively **actually** be
enabling RBAC for OnCall for all orgs. The Identity Access team would
prefer a progressive rollout, which is why I decided to introduce the
concept of
[`settings.CLOUD_RBAC_ROLLOUT_PERCENTAGE`](https://github.com/grafana/oncall/pull/4279/files#diff-3383aef931e41e44d95829ad971641eeb98fe001be2f5da92217446d300ea1b3R918)
(see also [`Organization.
should_be_considered_for_rbac_permissioning`](https://github.com/grafana/oncall/pull/4279/files#diff-2ca9917f4f56349be39545ee8abd459be5076295d02ca3a7ec545152fcddccdfR348-R362))

## Which issue(s) this PR closes

Related to https://github.com/grafana/identity-access-team/issues/667

## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.
2024-05-14 16:30:16 +00:00
Matias Bordese
b07b140383
Avoid generating response time value metrics for empty integrations (#4339)
This should help with ongoing issue generating too big metrics payloads
(issue introduced when including service name labels).
2024-05-13 17:23:22 +00:00
Matias Bordese
d70eeb12df
Improve query performance when fetching alert payload for templating (#4338)
Related to https://github.com/grafana/support-escalations/issues/10505
(getting only `id` is enough here and the query performs **much**
better)
2024-05-13 17:07:06 +00:00
Matias Bordese
d4ba57b68b
Avoid retrying to update Slack log message if cant_update_message (#4329)
Do not retry updating a message if Slack returns `cant_update_message`
API [error](https://api.slack.com/methods/chat.update#errors) (meaning
bot user has no permission to update the message).
2024-05-09 16:16:53 +00:00
Matias Bordese
832d044829
Update out of office task to not retry on HttpError (#4328)
Do not keep retrying on HttpErrors (eg. 403). Also, we will re-queued
periodically later.
2024-05-09 16:16:46 +00:00
Salvatore Giordano
720bcf983a
Update deep link URL for Slack messages (#4317)
# What this PR does

It updates the slack deep link url to respect the [correct
format](https://api.slack.com/reference/deep-linking#app_or_bot)
requested [here](https://github.com/grafana/oncall/issues/4122)

## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.

---------

Co-authored-by: Ildar Iskhakov <Ildar.iskhakov@grafana.com>
2024-05-09 10:18:48 +00:00
Matias Bordese
01cb87cd62
Minor query optimizations (#4325)
Related to some API latency issues we were noticing.
2024-05-08 17:27:36 +00:00
Michael Derynck
8db285e4e8
Fix escalation chain webhooks executing when disabled (#4319)
# What this PR does
Fixes issue where custom webhooks that are part of an escalation chain
were still being executed even though they were disabled. Now the
attempt will be logged in the escalation log and noted that the webhook
was disabled.

## Which issue(s) this PR closes

<!--
*Note*: if you have more than one GitHub issue that this PR closes, be
sure to preface
each issue link with a [closing
keyword](https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/using-keywords-in-issues-and-pull-requests#linking-a-pull-request-to-an-issue).
This ensures that the issue(s) are auto-closed once the PR has been
merged.
-->

## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.
2024-05-07 19:58:49 +00:00
Matias Bordese
d4095d8131
Set a timeout for mobile app incident proxy requests (#4306) 2024-05-03 13:00:06 +00:00
Maxim Mordasov
713c51ce07
Display human readable time ranges in AG filters (#4288)
# What this PR does

Display human readable time ranges in AG filters

## Which issue(s) this PR closes

Closes https://github.com/grafana/oncall/issues/4272

## Checklist

- [ ] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.

---------

Co-authored-by: Michael Derynck <michael.derynck@grafana.com>
2024-05-02 14:23:33 +00:00
Yulya Artyukhina
0790d45ab5
Fix calculating metrics from different services in metrics collector (#4297)
# What this PR does
Fix calculating metric values per integration from different services

## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.
2024-04-29 12:08:53 +00:00
Yulya Artyukhina
d1085b718c
Prepare insight metrics structure for adding service_name label (#4227)
# What this PR does
Prepare insight metrics for adding `service_name` label.
This PR updates metrics cache structure, supporting both old and new
version of cache.
`service_name` label can be added with additional PR when all metric
cache is updated.

## Which issue(s) this PR closes
https://github.com/grafana/oncall-private/issues/2610

## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.
2024-04-29 09:45:23 +00:00
Ravishankar
0e59fadf38
Add acknowledged, resolved user information on webhook payload (#4176)
# What this PR does
Adds acknowledged and resolved user information to the web hook payload

## Which issue(s) this PR closes

Closes #4126 

## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.

---------

Co-authored-by: Joey Orlando <joey.orlando@grafana.com>
2024-04-26 21:50:08 +00:00
Joey Orlando
3fd9a73a52
GCal autogenerated shift swap requests - don't recreate if one was previously created and deleted (#4281)
# What this PR does

Addresses two issues:
- addresses an internal feature request ([in
Slack](https://raintank-corp.slack.com/archives/C03KS498VGV/p1713550543916289?thread_ts=1713546008.831749&cid=C03KS498VGV))
to not have a new shift swap request auto-generated if one previously
was, but than the user decided to delete that SSR
- when disconnecting the GCal integration from your user, I've seen
cases where Google will return HTTP 400 as such ([example
logs](https://ops.grafana-ops.net/goto/8vX76pBSg?orgId=1)):
  ```
{'error': 'invalid_token', 'error_description': 'Token expired or
revoked'}
  ```
I can't seem to find detailed documentation on the revoke endpoint (`GET
https://accounts.google.com/o/oauth2/revoke?token=<token>`) to try and
better understand the possible `error` values.. but I think our best bet
here is to just continue forward w/
`user.finish_google_oauth2_disconnection_flow()` (which deletes the
`GoogleOAuth2User` associated with the user and sets
`user.google_calendar_settings = None`)

## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.
2024-04-25 18:16:42 +00:00
Innokentii Konstantinov
9afbcfc063
Fix docs and UI for connecting Grafana Alerting from other stack (#4243)
This PR fixes docs and UI to avoid usage of Grafana (Other) integration
which is using old mechanism for alert creation.
1. Rename Grafana (Other) integration to Grafana Alerting Legacy
2. Remove its mentions from docs and correct docs for connection Grafana
Alerting
3. Make AlertManager featured integration and upgrade its description.

![image](https://github.com/grafana/oncall/assets/20221722/6e84403e-c293-4791-9905-4d06c69775e9)

---------

Co-authored-by: Rares Mardare <rares.mardare@grafana.com>
2024-04-24 08:02:51 +00:00
Ravishankar
6f3f4e3f14
Allow webhook modification by API for advanced webhook (#4175)
# What this PR does

Enables the API to perform updates on the advanced webhooks created via
the UI

## Which issue(s) this PR closes

Closes #3958 

## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.
2024-04-23 19:18:12 +00:00
Matias Bordese
cb613deedb
Update chatops connected integration organization check (#4268)
Related to https://github.com/grafana/oncall-private/issues/2563
2024-04-23 16:34:44 +00:00
Matias Bordese
65ee57f563
Ignore uncompleted notifications if policy is deleted (#4260)
Related to https://github.com/grafana/oncall-private/issues/2637
2024-04-23 11:40:24 +00:00
Matias Bordese
9977179651
Update cached schedule users to consider deleted users (#4246)
Fixes https://github.com/grafana/oncall-private/issues/2529
2024-04-23 11:40:02 +00:00
Matias Bordese
9c7cc228a6
Enable search for integration type options filter internal endpoint (#4255) 2024-04-19 14:31:50 +00:00
Joey Orlando
5a8d2baa28
ignore shift swap generation for gcal events with specific keyword in title (#4228)
# What this PR does

Related to
[this](https://raintank-corp.slack.com/archives/C0229FD3CE9/p1713193452179019)
internal feature request

## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.

---------

Co-authored-by: Matias Bordese <mbordese@gmail.com>
2024-04-16 13:56:41 -04:00
Vadim Stepanov
7969ad6fe4
Fix deleting integration with connected webhooks (#4237)
It makes it so webhooks are deleted when a "connected" integration is
deleted. Related to
https://github.com/grafana/oncall-private/issues/2615.

## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.
2024-04-16 17:02:41 +00:00
Michael Derynck
d75590b943
Handle alert group deleted when task is already queued (#4230)
# What this PR does
- Since send_alert_create_signal is inside transaction on_commit we can
conclude that if it does not exist it was intentionally deleted before
the task could run and the task can exit instead of retrying
- Improve logging when send_alert_create_signal is called so both alert
and alert group are in the same line so you don't need to search the
logs as much
- Improve logging on public api delete alert group so we can know what
the alert group belonged to and the responsible user/org
- Remove distribute_alerts (Stopped using a while back, code should be
safe to remove now, no tasks running in system)

## Which issue(s) this PR closes

Closes https://github.com/grafana/oncall-private/issues/2640

<!--
*Note*: if you have more than one GitHub issue that this PR closes, be
sure to preface
each issue link with a [closing
keyword](https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/using-keywords-in-issues-and-pull-requests#linking-a-pull-request-to-an-issue).
This ensures that the issue(s) are auto-closed once the PR has been
merged.
-->

## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.
2024-04-16 14:39:00 +00:00
Matias Bordese
0989c40abb
Add alert groups external URLs information to details API (#4226)
Alert groups connected to an external source will return external URLs
information, eg.

```
{
  "external_urls": [
    {
      "integration": "C2IFSTV93NQUW",
      "integration_type": "servicenow",
      "external_id": "4c686e1e83d1021075feb3a6feaad3a8",
      "url": "https://some.service-now.com/incident.do?sys_id=4c686e1e83d1021075feb3a6feaad3a8"
    }
  ]
}

```
Related to https://github.com/grafana/oncall-private/issues/2615
2024-04-15 17:49:51 +00:00
Joey Orlando
25f8963749
Google Calendar Integration + automatic Shift Swap Request generation (#4220)
# What this PR does

## Which issue(s) this PR closes

Closes https://github.com/grafana/oncall-private/issues/2591

## Checklist

- [ ] Unit, integration, and e2e (if applicable) tests updated (N/A)
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.
2024-04-15 12:56:28 +00:00
Joey Orlando
28ed2ddf61
fix incorrect args passed to apps.webhooks.tasks.trigger_webhook.execute_webhook (#4217)
## Which issue(s) this PR closes

fix incorrect args passed to
`apps.webhooks.tasks.trigger_webhook.execute_webhook`

## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.
2024-04-12 17:56:26 +00:00
Matias Bordese
980058305b
Avoid creating a webhook response if request is not triggered (#4211)
Only create a response object if the request is triggered, otherwise log
the reason.
Avoid creating multiple/unneeded responses, which can be also confusing
when displaying response objects. If there is no response, the
webhook/request wasn't triggered (possible reasons: integrations are
filtered, or the trigger template evaluates to False).

Related to https://github.com/grafana/oncall-private/issues/2615
2024-04-12 14:05:09 +00:00
Matias Bordese
b3c1800f87
Add Slack deep link entry to alert group permalinks (#4205)
Related to https://github.com/grafana/oncall/issues/4122
2024-04-12 13:25:48 +00:00
Matias Bordese
a17bd893d0
Add endpoint for organization config checks (#4204)
Related to https://github.com/grafana/oncall-private/issues/2563
2024-04-11 14:51:56 +00:00
Yulya Artyukhina
08ce22b59b
Optimize GET /users internal api endpoint (#4168)
# What this PR does
Speed up `GET /users` internal api endpoint by reducing number of calls
to database

## Which issue(s) this PR closes
Related to slow schedules page issue -
https://github.com/grafana/oncall-private/issues/1552
## Checklist

- [ ] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.
2024-04-11 14:49:47 +00:00
Yulya Artyukhina
6a5267b847
Optimize GET /schedules and /current_user_events internal api endpoints (#4169)
# What this PR does
Speed up `GET /schedules` and `GET /current_user_events` internal api
endpoints by reducing number of calls to database

## Which issue(s) this PR closes
Related to https://github.com/grafana/oncall-private/issues/1552

## Checklist

- [ ] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.
2024-04-11 14:46:51 +00:00
Joey Orlando
7c6ccd772c
update mobile app proxy's usage of the Cloud Auth API (#4194)
# What this PR does

## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.
2024-04-11 14:45:21 +00:00