Commit graph

89 commits

Author SHA1 Message Date
Innokentii Konstantinov
7341641b3f
Introduce org uuid (#947)
* Introduce org uuid

* Rename uuid_with_org_id to uuid_with_org_uuid

Co-authored-by: Joey Orlando <joey.orlando@grafana.com>
2022-12-06 22:42:58 +08:00
Joey Orlando
ffda80ae34
add permalinks.web attribute to alert group internal/public api response (#953) 2022-12-06 11:06:05 +01:00
Joey Orlando
9e598385f4
Add RBAC Support (#777)
* Modify plugin.json to support RBAC role registration

* defines 26 new custom roles in plugin.json. The main roles are:

- Admin: read/write access to everything in OnCall
- Reader: read access to everything in OnCall
- OnCaller : read access to everything in OnCall + edit access to Alert Groups and Schedules
- <object-type> Editor: read/write access to everything related to <object-type>
- <object-type> Reader: read access for <object-type>
- User Settings Admin: read/write access to all user's settings, not just own settings. This is in comparison to User Settings Editor which can only read/write own settings

* update changelog and documentation (#686)

* implement RBAC for OnCall backend

This commit refactors backend authorization. It trys to use RBAC authorization if the org's grafana instance supports it, otherwise it falls back to basic role authorization.

* update RBAC backend tests

* add tests for RBAC changes
- run backend tests as matrix where RBAC is enabled/disabled. When RBAC is enabled, the permissions granted are read from the role grants in the frontend's plugin.json file (instead of relying what we specify in RBACPermission.Permissions)
- remove --reuse-db --nomigrations flags from engine/tox.ini
- minor autoformatting changes to docker-compose-developer.yml

* remove --ds=settings.ci-test from pytest CI command

DJANGO_SETTINGS_MODULE is already specified as an env var so this is just unecessary duplication

* update gitignore

* update github action job name for "test"

* RBAC frontend changes

* refactors the use of basic roles (ex. Viewer, Editor, Admin) use RBAC permissions (when supported), or falling back to basic roles when RBAC is not supported.

- updates the UserAction enum in grafana-plugin/src/state/userAction.ts. Previously this was hardcoded to a list of strings that were being returned by the OnCall API. Now the values here correspond to the permissions in plugin.json (plus a fallback role)

* changes per Gabriel's comments:
- get rid of group attribute in rbac roles
- remove displayName role attribute
- remove hidden role attribute
- add back role to includes section

* don't try to update user timezone if they don't have permission
2022-11-29 09:41:56 +01:00
Michael Derynck
3582f9b08f
Improve Jinja Template feedback and error handling (#884)
* Improve feedback so template errors are given to user

* Add security error logging

* Add limits for templates, payloads, results

* Show popup error notification for webhook errors and template errors that don't have a result

* Update tests

* Split exceptions into warnings/errors to give more control when previewing, rendering, saving templates

* Limit title lengths

* Make TypeError a warning

* Adjust title length limit

* Remove length limiting on urlize since it is being done on template render

* Fix tests

* Add KeyError and ValueError to warnings

* No longer enforcing json result when saving webhook in case it is dependent on payload

* Add tests for expected exceptions coming from apply_jinja_template

* Update changelog

* Send raw post if template result is not JSON
2022-11-28 09:46:51 -07:00
Vadim Stepanov
dc6fcf5c05
Add internal API fields for the mobile app (#910)
* add permalinks list to internal API alertgroup view

* add user's name and full avatar URL to the user view

* make avatar_full_url a property

* fix tests

* fix user connection criteria
2022-11-28 15:52:31 +00:00
Vadim Stepanov
255964ceaf
Mobile app messaging backend (#874)
* move mobile notifications to a separate backend, remove critical notification

* remove outdated mobile app code

* MOBILE_APP_PUSH_NOTIFICATIONS_ENABLED -> FEATURE_MOBILE_APP_INTEGRATION_ENABLED

* create error log if no devices are set up

* move mobile auth related code to the mobile_app Django app

* move mobile auth related code to the mobile_app Django app

* move mobile auth related code to the mobile_app Django app

* fix typing

* add GCMDevice todos

* add user connection capabilities

* add user connect/disconnect to the messaging backend

* move APNS endpoint to mobile_app Django app

* restore critical notifications

* support hackathon app

* tweak migrations so mobile app auth tokens are preserved

* reuse notify_by IDs

* use mobile app template to render push notification

* add GCM/FCM (Android) support

* fix unlink user

* logger.error -> logger.info
2022-11-23 15:56:43 +00:00
Innokentii Konstantinov
0816813237 Handle 404 for get_alerting_config 2022-11-18 17:07:39 +08:00
Innokentii Konstantinov
f9a9c1d978
Cleanup on deletion/archivation of slack channel (#822)
* Cleanup on deletion/archivation of slack channel

* Bulk update of organizations, filter channel filters by org

* Optimize org bulk update
2022-11-16 17:56:05 +08:00
Michael Derynck
25826690a8 Use common environment for templates 2022-11-05 00:31:51 -06:00
Joey Orlando
627afe37e1
Remove references to Alert.migrator_lock attribute
This commit patches issue related to #708.

#708 forgot to remove attributes on models outside of the migration_tool django app that were referencing model attributes from migration_tool.

The only attribute that referenced a field in migration_tool was migrator_lock on the Alert model. This commit removes any references to that attribute.
2022-10-27 13:52:03 +02:00
Matias Bordese
2c8c66a8c8 Not previously handled backends (eg. mobile) could end here without a messaging backend 2022-10-26 09:30:13 -03:00
Michael Derynck
a37df38930 Merge branch 'dev' into mderynck/add-check-notify-group-task 2022-10-25 12:50:12 -06:00
Matias Bordese
8e2bcf5274 Fix failing test related to users org caching 2022-10-25 14:27:27 -03:00
Michael Derynck
ef097fcdd9 Add check for usergroup to notify group task 2022-10-25 10:23:19 -06:00
Innokentii Konstantinov
2c6a27154f
Support mutliregion telegram (#676)
* Support mutliregion telegram

* Fix test_personal_message

* Fix tg verification code tests

* Simplify /start cmd handler

* Comment about link with org_id in tg msg
2022-10-25 14:53:07 +08:00
Matias Bordese
eb32fa7ba0 Handle scenario when multiple general team manual integrations are available 2022-10-21 14:23:45 -03:00
Vadim Stepanov
e67d3519fe
Restore email notifications (#621)
* remove email verification related code

* remove email verification related code

* remove sendgrid callback

* remove sendgrid related code

* remove sendgrid related code

* rename sendgrid app to email

* remove email from built-in channels

* remove email from built-in channels

* remove email from built-in channels

* add email backend: https://github.com/grafana/oncall/pull/50

* add email templater

* add email templater

* convert md to html

* add email settings to live settings

* use task to send email, handle some exceptions to create logs

* remove ERROR_NOTIFICATION_MAIL_DELIVERY_FAILED usage

* add email limit logic

* fix tests

* add docs

* remove old email templates

* remove old email templates

* add template_fields to messaging backend

* add messaging backends templates to public api

* add comment for deprecated fields

* fix test

* fix tests

* disable email by default

* don't retry on SMTPException and TimeoutError

* add tests

* bring email back to public api docs

* return ERROR_NOTIFICATION_MAIL_LIMIT_EXCEEDED

* make template_fields tuple

* build_subject_and_title -> build_subject_and_message

* add one more comment about template deprecation

* use 8 as backend id

* add comment about gaierror and BadHeaderError

* add comment on importing in notify_user_async

* edit oss docs
2022-10-19 12:32:56 +01:00
Michael Derynck
8e48c441e8
Merge pull request #651 from grafana/mderynck/handle-channel-filter-exception
Catch exception for parsing regex during channel filtering
2022-10-18 09:43:08 -06:00
Michael Derynck
4eb814798c Make return value explicit 2022-10-18 08:05:01 -06:00
David van der Spek
292849e782
fix relation already exists (#660)
Signed-off-by: DavidSpek <vanderspek.david@gmail.com>

Signed-off-by: DavidSpek <vanderspek.david@gmail.com>
2022-10-18 14:04:27 +01:00
Michael Derynck
c731b9b113 Catch exception for parsing regex during channel filtering 2022-10-13 18:34:04 -06:00
Matias Bordese
3e99b26022 Update slack lookup days when checking for next shift 2022-09-30 12:25:51 -03:00
Joey Orlando
9f3f691ea4
Feat 549 - add telegram permalink to alert groups http response (#551)
* rename AlertGroup.permalink to slack_permalink

* add telegram key to alert_groups permalinks object in public API response
2022-09-28 16:59:57 +02:00
Matias Bordese
4412ae52d2
Merge pull request #552 from grafana/matiasb/fix-outgoing-webhook-resolve-hostname
Fix outgoing webhook to resolve IP from parsed hostname
2022-09-22 20:22:29 -03:00
Matias Bordese
2988c10c92 Fix outgoing webhook to resolve IP from parsed hostname 2022-09-22 14:35:37 -03:00
Matias Bordese
8c3d5656a2
Merge pull request #548 from grafana/matiasb/rework-bulk-actions
Rework queries for alert groups bulk actions
2022-09-22 10:41:30 -03:00
Joey Orlando
e16064c6ba
#539 - add slack permalink to alert group public API response (#543)
* add .python-version to .gitignore

* add .nvmrc to frontend

Also update DEVELOPER.md to mention optionally using nvm

* update DEVELOPER.md to reflect running successfully locally

* markdown autoformatter styling changes

* add slack permalink to alertgroup public api http response

* update changelog

* address PR comments

- rename permalink to permalinks in alert group public api seralizer
- add permalinks property to AlertGroup model
- update public api alert groups test
- update alertgroups public documentation to include permalinks property

* add default DEBUG = True in dev.py settings
2022-09-22 15:17:17 +02:00
Matias Bordese
859a04e42a Add transaction blocks 2022-09-22 09:15:13 -03:00
Matias Bordese
8e7c6cf554 Rework queries for alert groups bulk actions 2022-09-21 15:50:31 -03:00
Innokentii Konstantinov
d8365db8f5
is_icals_equal fixes (#510)
* is_icals_equal fixes

* treat None SEQUENCE as equal
2022-09-08 16:11:03 +05:00
Yulya Artyukhina
84bcbb375f
Merge pull request #477 from grafana/shift-notifications-for-web-schedule
Fix slack notification for web schedules
2022-09-08 12:03:41 +03:00
Michael Derynck
c8fc19b402 Use stack-slug instead of org-title 2022-09-06 13:45:34 -06:00
Michael Derynck
a8fd2d96e2
Merge pull request #467 from grafana/retrying-tasks-fixes
Handle exceptions on some retrying tasks
2022-09-06 09:20:24 -06:00
Innokentii Konstantinov
4e8727d1a1
New ical comparision func (#480)
* New ical comparision func

* Add support for field `sequence` for custom on-call shifts

* Fix ical comparison

* New ical comparision func 2

* fix

* Revert "Add support for field `sequence` for custom on-call shifts"

This reverts commit b7b18d5a

Co-authored-by: Julia <ferril.darkdiver@gmail.com>
2022-09-06 19:12:10 +05:00
Vadim Stepanov
afe13550da
Alert group search (#488)
* use web title template to render alert group verbose name

* remove group_verbose_name from tests

* clean up group_verbose_name

* remove verbose_name from API & plugin

* verbose_name migration

* update verbose name on web title template change

* use long queue for updating verbose name

* use first alert for updating verbose name

* improve batch_ids

* fix update_verbose_name

* post-review fixes

* post-review fixes
2022-09-06 11:30:12 +01:00
Vadim Stepanov
920a863262
Revert "Alert group search by title (#466)" (#479)
This reverts commit f1f4303825.
2022-09-05 11:44:22 +01:00
Vadim Stepanov
f1f4303825
Alert group search by title (#466)
* use web title template to render alert group verbose name

* remove group_verbose_name from tests

* clean up group_verbose_name

* remove verbose_name from API & plugin

* verbose_name migration

* update verbose name on web title template change

* use long queue for updating verbose name

* use first alert for updating verbose name

* improve batch_ids
2022-09-05 10:05:19 +01:00
Julia
607330a79c Fix shifts and gaps notifications for web schedules with respect to rotation start and until 2022-09-05 11:10:47 +03:00
Michael Derynck
50dc7d6240 Handle a exceptions on some retrying tasks 2022-09-01 11:39:47 -06:00
Vadim Stepanov
cc67d49047
Remove outdated tasks & DynamicSettingsManager (#465) 2022-09-01 17:50:17 +01:00
Vadim Stepanov
5f69350679
Handle JSONDecodeError for outgoing webhooks (#460) 2022-09-01 14:36:34 +01:00
Michael Derynck
53b9bb638c Check if notification policies is empty 2022-08-30 15:29:10 -06:00
Michael Derynck
c26158ba9d Check if notification policies is empty 2022-08-30 15:26:04 -06:00
Innokentii Konstantinov
76901a564b Handle case when user somehow deleted all their notification policies 2022-08-26 14:26:01 +05:00
Innokentii Konstantinov
356aa336ad
Remove auto-recreating logic for UserNotificationPolicy (#414)
* Remove auto-recreating logic for UserNotificationPolicy

It's removed to get rid of select_for_update on User on each notify_user_task

* Fix and add tests

* remove get_user_policies method
2022-08-26 13:46:50 +05:00
Vadim Stepanov
b32d24a85e
Generate unique distinction for alert groups with broken templates / unrenderable distinction (#405)
* Generate unique distinction for alert groups with broken templates

* insert_demo_uuid -> insert_random_uuid
2022-08-24 16:40:10 +01:00
Innokentii Konstantinov
4765c9b07c
Insight logs (#348)
* Entity events insight logs

* Insight logging

* Fix event for updating templates

* Format fixes

* Remove organization_log_type.py

* Simplify signature of chatops_insight_log

* insight logs formatting

* Add possibility to enable all insight logging via DynamicSetting

* Fixes

* Style fixes

* Add migration

* Fix migration
2022-08-24 12:04:44 +05:00
Ildar Iskhakov
3933c225d9 Merge branch 'dev' into 167-slack-notification-not-displaying 2022-08-04 15:33:58 +03:00
Ildar Iskhakov
21e87bc0d6
Merge pull request #326 from grafana/ildar/critical-alert-on-ios
Enable critical alerts for IOS devices
2022-08-03 13:18:57 +03:00
Ildar Iskhakov
4fee9049e0 Enable critical alerts for IOS devices 2022-08-03 12:56:15 +03:00