-
Notifications
You must be signed in to change notification settings - Fork 296
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Jack Baldry <[email protected]> Co-authored-by: Jack Baldry <[email protected]>
- Loading branch information
1 parent
290d826
commit 39f1d3b
Showing
3 changed files
with
104 additions
and
124 deletions.
There are no files selected for viewing
57 changes: 10 additions & 47 deletions
57
.github/workflows/publish-technical-documentation-next.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,58 +1,21 @@ | ||
name: "Publish Technical Documentation (next)" | ||
name: publish-technical-documentation-next | ||
|
||
on: | ||
push: | ||
branches: | ||
- "main" | ||
- main | ||
paths: | ||
- "docs/sources/**" | ||
workflow_dispatch: | ||
|
||
jobs: | ||
test: | ||
runs-on: "ubuntu-latest" | ||
steps: | ||
- name: "Check out code" | ||
uses: "actions/checkout@v4" | ||
- name: "Build website" | ||
# -e HUGO_REFLINKSERRORLEVEL=ERROR prevents merging broken refs with the downside | ||
# that no refs to external content can be used as these refs will not resolve in the | ||
# docs-base image. | ||
run: > | ||
docker run -v ${PWD}/docs/sources:/hugo/content/docs/oncall/latest | ||
-e HUGO_REFLINKSERRORLEVEL=ERROR | ||
--rm grafana/docs-base:latest /bin/bash | ||
-c 'echo -e "---\\nredirectURL: /hugo/content/docs/oncall/latest/\\ntype: redirect\\nversioned: true\\n---\\n" | ||
> /hugo/content/docs/oncall/_index.md; make hugo' | ||
sync: | ||
runs-on: "ubuntu-latest" | ||
needs: "test" | ||
if: github.repository == 'grafana/oncall' | ||
permissions: | ||
contents: read | ||
id-token: write | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: "Check out code" | ||
uses: "actions/checkout@v4" | ||
|
||
- name: "Clone website-sync Action" | ||
# WEBSITE_SYNC_TOKEN is a fine-grained GitHub Personal Access Token that expires. | ||
# It must be regenerated in the grafanabot GitHub account and requires a Grafana organization | ||
# GitHub administrator to update the organization secret. | ||
# The IT helpdesk can update the organization secret. | ||
run: | | ||
git clone --single-branch --no-tags --depth 1 \ | ||
-b master https://grafanabot:${{ secrets.WEBSITE_SYNC_TOKEN }}@github.com/grafana/website-sync \ | ||
./.github/actions/website-sync | ||
- name: "Publish to website repository (next)" | ||
uses: "./.github/actions/website-sync" | ||
id: "publish-next" | ||
- uses: actions/checkout@v4 | ||
- uses: grafana/writers-toolkit/publish-technical-documentation@publish-technical-documentation/v1 | ||
with: | ||
repository: "grafana/website" | ||
branch: "master" | ||
host: "github.com" | ||
# PUBLISH_TO_WEBSITE_TOKEN is a fine-grained GitHub Personal Access Token that expires. | ||
# It must be regenerated in the grafanabot GitHub account and requires a Grafana organization | ||
# GitHub administrator to update the organization secret. | ||
# The IT helpdesk can update the organization secret. | ||
github_pat: "grafanabot:${{ secrets.PUBLISH_TO_WEBSITE_TOKEN }}" | ||
source_folder: "docs/sources" | ||
target_folder: "content/docs/oncall/next" | ||
website_directory: content/docs/oncall/next |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
82 changes: 82 additions & 0 deletions
82
engine/apps/alerts/migrations/0073_update_direct_paging_integration_non_default_routes.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
# Generated by Django 4.2.17 on 2025-01-06 15:48 | ||
|
||
import logging | ||
|
||
from django.db import migrations | ||
from django.db.models import Subquery, OuterRef | ||
|
||
logger = logging.getLogger(__name__) | ||
|
||
|
||
def update_direct_paging_integration_non_default_routes(apps, schema_editor): | ||
""" | ||
If any of the original Direct Paging integration default routes had chatops settings or escalation chains | ||
associated with them, simply set the non-default route to have the same settings. This will avoid any functional | ||
differences should users start paging a team using the "important" functionality. | ||
""" | ||
ChannelFilter = apps.get_model("alerts", "ChannelFilter") | ||
|
||
logger.info("Starting update_direct_paging_integration_non_default_routes migration...") | ||
|
||
# 1) Gather all default route data in a dictionary keyed by alert_receive_channel_id | ||
default_direct_paging_routes = ChannelFilter.objects.filter( | ||
alert_receive_channel__integration="direct_paging", | ||
is_default=True | ||
).values( | ||
"alert_receive_channel_id", | ||
"escalation_chain_id", | ||
"telegram_channel_id", | ||
"notify_in_telegram", | ||
"slack_channel_id", | ||
"notify_in_slack", | ||
"notification_backends", | ||
) | ||
|
||
default_direct_paging_route_map = { | ||
route["alert_receive_channel_id"]: route for route in default_direct_paging_routes | ||
} | ||
|
||
# 2) Fetch all non-default direct paging routes we want to update | ||
non_default_direct_paging_routes = list(ChannelFilter.objects.filter( | ||
alert_receive_channel__integration="direct_paging", | ||
is_default=False | ||
)) | ||
|
||
# 3) Update them in Python memory | ||
for non_default_route in non_default_direct_paging_routes: | ||
default_route = default_direct_paging_route_map.get(non_default_route.alert_receive_channel_id) | ||
if default_route: | ||
non_default_route.escalation_chain_id = default_route["escalation_chain_id"] | ||
non_default_route.telegram_channel_id = default_route["telegram_channel_id"] | ||
non_default_route.notify_in_telegram = default_route["notify_in_telegram"] | ||
non_default_route.slack_channel_id = default_route["slack_channel_id"] | ||
non_default_route.notify_in_slack = default_route["notify_in_slack"] | ||
non_default_route.notification_backends = default_route["notification_backends"] | ||
|
||
# 4) Bulk update all at once | ||
ChannelFilter.objects.bulk_update( | ||
non_default_direct_paging_routes, | ||
[ | ||
"escalation_chain_id", | ||
"telegram_channel_id", | ||
"notify_in_telegram", | ||
"slack_channel_id", | ||
"notify_in_slack", | ||
"notification_backends", | ||
], | ||
batch_size=5000, | ||
) | ||
|
||
logger.info(f"Updated {len(non_default_direct_paging_routes)} non-default direct paging integration routes") | ||
logger.info("Finished update_direct_paging_integration_non_default_routes migration.") | ||
|
||
|
||
class Migration(migrations.Migration): | ||
|
||
dependencies = [ | ||
("alerts", "0072_upsert_direct_paging_integration_routes"), | ||
] | ||
|
||
operations = [ | ||
migrations.RunPython(update_direct_paging_integration_non_default_routes, migrations.RunPython.noop), | ||
] |