don't enforce line-length rule for markdownlint for code-blocks or tables (#2145)

# What this PR does

## Which issue(s) this PR fixes

## Checklist

- [ ] Unit, integration, and e2e (if applicable) tests updated
- [ ] Documentation added (or `pr:no public docs` PR label added if not
required)
- [ ] `CHANGELOG.md` updated (or `pr:no changelog` PR label added if not
required)
This commit is contained in:
Joey Orlando 2023-06-09 08:57:19 +02:00 committed by GitHub
parent 0b92210e16
commit 47042decb7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 12 additions and 66 deletions

View file

@ -1,7 +1,9 @@
{ {
"default": true, "default": true,
"MD013": { "MD013": {
"line_length": "120" "line_length": "120",
"code_blocks": false,
"tables": false
}, },
"MD024": { "MD024": {
"siblings_only": true "siblings_only": true

View file

@ -269,26 +269,18 @@ ERROR: Failed building wheel for cryptography
**Solution:** **Solution:**
<!-- markdownlint-disable MD013 -->
```bash ```bash
LDFLAGS="-L$(brew --prefix openssl@1.1)/lib" CFLAGS="-I$(brew --prefix openssl@1.1)/include" pip install `cat engine/requirements.txt | grep cryptography` LDFLAGS="-L$(brew --prefix openssl@1.1)/lib" CFLAGS="-I$(brew --prefix openssl@1.1)/include" pip install `cat engine/requirements.txt | grep cryptography`
``` ```
<!-- markdownlint-enable MD013 -->
### django.db.utils.OperationalError: (1366, "Incorrect string value") ### django.db.utils.OperationalError: (1366, "Incorrect string value")
**Problem:** **Problem:**
<!-- markdownlint-disable MD013 -->
```bash ```bash
django.db.utils.OperationalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x8A\\xF0\\x9F...' for column 'cached_name' at row 1") django.db.utils.OperationalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x8A\\xF0\\x9F...' for column 'cached_name' at row 1")
``` ```
<!-- markdownlint-enable MD013 -->
**Solution:** **Solution:**
Recreate the database with the correct encoding. Recreate the database with the correct encoding.
@ -321,15 +313,11 @@ $ CDPATH="" make init
When running `make init start`: When running `make init start`:
<!-- markdownlint-disable MD013 -->
```bash ```bash
Error response from daemon: open /var/lib/docker/overlay2/ac57b871108ee1b98ff4455e36d2175eae90cbc7d4c9a54608c0b45cfb7c6da5/committed: is a directory Error response from daemon: open /var/lib/docker/overlay2/ac57b871108ee1b98ff4455e36d2175eae90cbc7d4c9a54608c0b45cfb7c6da5/committed: is a directory
make: *** [start] Error 1 make: *** [start] Error 1
``` ```
<!-- markdownlint-enable MD013 -->
**Solution:** **Solution:**
clear everything in docker by resetting or: clear everything in docker by resetting or:
@ -376,8 +364,6 @@ See solution for "Encountered error while trying to install package - grpcio" [h
This problem seems to occur when running the Celery process, outside of `docker-compose` This problem seems to occur when running the Celery process, outside of `docker-compose`
(via `make run-backend-celery`), and using a `conda` virtual environment. (via `make run-backend-celery`), and using a `conda` virtual environment.
<!-- markdownlint-disable MD013 -->
```bash ```bash
conda create --name oncall-dev python=3.9.13 conda create --name oncall-dev python=3.9.13
conda activate oncall-dev conda activate oncall-dev
@ -396,8 +382,6 @@ File "~/oncall/engine/engine/__init__.py", line 5, in <module>
ImportError: dlopen(/opt/homebrew/Caskroom/miniconda/base/envs/oncall-dev/lib/python3.9/site-packages/grpc/_cython/cygrpc.cpython-39-darwin.so, 0x0002): symbol not found in flat namespace '_EVP_DigestSignUpdate' ImportError: dlopen(/opt/homebrew/Caskroom/miniconda/base/envs/oncall-dev/lib/python3.9/site-packages/grpc/_cython/cygrpc.cpython-39-darwin.so, 0x0002): symbol not found in flat namespace '_EVP_DigestSignUpdate'
``` ```
<!-- markdownlint-enable MD013 -->
**Solution:** **Solution:**
[This solution](https://github.com/grpc/grpc/issues/15510#issuecomment-392012594) posted in a GitHub issue thread for [This solution](https://github.com/grpc/grpc/issues/15510#issuecomment-392012594) posted in a GitHub issue thread for

View file

@ -63,14 +63,10 @@ curl "{{API_URL}}/api/v1/alert_groups/I68T24C13IFW1/" \
}' }'
``` ```
<!-- markdownlint-disable MD013 -->
| Parameter | Required | Description | | Parameter | Required | Description |
| --------- | :------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --------- | :------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `mode` | No | Default setting is `wipe`. `wipe` will remove the payload of all Grafana OnCall group alerts. This is useful if you sent sensitive data to OnCall. All metadata will remain. `DELETE` will trigger the removal of alert groups, alerts, and all related metadata. It will also remove alert group notifications in Slack and other destinations. | | `mode` | No | Default setting is `wipe`. `wipe` will remove the payload of all Grafana OnCall group alerts. This is useful if you sent sensitive data to OnCall. All metadata will remain. `DELETE` will trigger the removal of alert groups, alerts, and all related metadata. It will also remove alert group notifications in Slack and other destinations. |
<!-- markdownlint-enable MD013 -->
> **NOTE:** `DELETE` can take a few moments to delete alert groups because Grafana OnCall interacts with 3rd party APIs > **NOTE:** `DELETE` can take a few moments to delete alert groups because Grafana OnCall interacts with 3rd party APIs
> such as Slack. Please check objects using `GET` to be sure the data is removed. > such as Slack. Please check objects using `GET` to be sure the data is removed.

View file

@ -30,8 +30,6 @@ The above command returns JSON structured in the following way:
} }
``` ```
<!-- markdownlint-disable MD013 -->
| Parameter | Required | Description | | Parameter | Required | Description |
| ---------------------------------- | :--------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | ---------------------------------- | :--------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `escalation_chain_id` | Yes | Each escalation policy is assigned to a specific escalation chain. | | `escalation_chain_id` | Yes | Each escalation policy is assigned to a specific escalation chain. |
@ -47,8 +45,6 @@ The above command returns JSON structured in the following way:
| `notify_if_time_from` | If type = `notify_if_time_from_to` | UTC time represents the beginning of the time period, for example `09:00:00Z`. | | `notify_if_time_from` | If type = `notify_if_time_from_to` | UTC time represents the beginning of the time period, for example `09:00:00Z`. |
| `notify_if_time_to` | If type = `notify_if_time_from_to` | UTC time represents the end of the time period, for example `18:00:00Z`. | | `notify_if_time_to` | If type = `notify_if_time_from_to` | UTC time represents the end of the time period, for example `18:00:00Z`. |
<!-- markdownlint-enable MD013 -->
**HTTP request** **HTTP request**
`POST {{API_URL}}/api/v1/escalation_policies/` `POST {{API_URL}}/api/v1/escalation_policies/`

View file

@ -41,8 +41,6 @@ The above command returns JSON structured in the following way:
} }
``` ```
<!-- markdownlint-disable MD013 -->
| Parameter | Unique | Required | Description | | Parameter | Unique | Required | Description |
| -------------------------------- | :----: | :--------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | -------------------------------- | :----: | :--------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name` | Yes | Yes | On-call shift name. | | `name` | Yes | Yes | On-call shift name. |
@ -63,8 +61,6 @@ The above command returns JSON structured in the following way:
| `rolling_users` | No | Optional | List of lists with on-call users (for `rolling_users` event type). Grafana OnCall will iterate over lists of users for every time frame specified in `frequency`. For example: there are two lists of users in `rolling_users` : [[Alex, Bob], [Alice]] and `frequency` = `daily` . This means that the first day Alex and Bob will be notified. The next day: Alice. The day after: Alex and Bob again and so on. | | `rolling_users` | No | Optional | List of lists with on-call users (for `rolling_users` event type). Grafana OnCall will iterate over lists of users for every time frame specified in `frequency`. For example: there are two lists of users in `rolling_users` : [[Alex, Bob], [Alice]] and `frequency` = `daily` . This means that the first day Alex and Bob will be notified. The next day: Alice. The day after: Alex and Bob again and so on. |
| `start_rotation_from_user_index` | No | Optional | Index of the list of users in `rolling_users`, from which on-call rotation starts. By default, the start index is `0` | | `start_rotation_from_user_index` | No | Optional | Index of the list of users in `rolling_users`, from which on-call rotation starts. By default, the start index is `0` |
<!-- markdownlint-enable MD013 -->
Please see [RFC 5545](https://tools.ietf.org/html/rfc5545#section-3.3.10) for more information about recurrence rules. Please see [RFC 5545](https://tools.ietf.org/html/rfc5545#section-3.3.10) for more information about recurrence rules.
**HTTP request** **HTTP request**

View file

@ -29,8 +29,6 @@ The above command returns JSON structured in the following way:
} }
``` ```
<!-- markdownlint-disable MD013 -->
| Parameter | Required | Description | | Parameter | Required | Description |
| ----------- | :------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ----------- | :------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `user_id` | Yes | User ID | | `user_id` | Yes | User ID |
@ -39,8 +37,6 @@ The above command returns JSON structured in the following way:
| `duration` | Optional | A time in secs when type `wait` is chosen for `type`. | | `duration` | Optional | A time in secs when type `wait` is chosen for `type`. |
| `important` | Optional | Boolean value indicates if a rule is "important". Default is `false`. | | `important` | Optional | Boolean value indicates if a rule is "important". Default is `false`. |
<!-- markdownlint-enable MD013 -->
**HTTP request** **HTTP request**
`POST {{API_URL}}/api/v1/personal_notification_rules/` `POST {{API_URL}}/api/v1/personal_notification_rules/`

View file

@ -44,10 +44,8 @@ Routes allow you to direct different alerts to different messenger channels and
- Alerts for different engineering groups - Alerts for different engineering groups
- Snoozing spam & debugging alerts - Snoozing spam & debugging alerts
<!-- markdownlint-disable MD013 -->
| Parameter | Unique | Required | Description | | Parameter | Unique | Required | Description |
|-----------------------| :----: |:--------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | --------------------- | :----: | :------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `integration_id` | No | Yes | Each route is assigned to a specific integration. | | `integration_id` | No | Yes | Each route is assigned to a specific integration. |
| `escalation_chain_id` | No | Yes | Each route is assigned a specific escalation chain. Explicitly pass `null` to create a route without an escalation chain assigned. | | `escalation_chain_id` | No | Yes | Each route is assigned a specific escalation chain. Explicitly pass `null` to create a route without an escalation chain assigned. |
| `routing_type` | Yes | No | Routing type that can be either `jinja2` or `regex`(default value) | | `routing_type` | Yes | No | Routing type that can be either `jinja2` or `regex`(default value) |
@ -55,8 +53,6 @@ Routes allow you to direct different alerts to different messenger channels and
| `position` | Yes | Optional | Route matching is performed one after another starting from position=`0`. Position=`-1` will put the route to the end of the list before `is_the_last_route`. A new route created with a position of an existing route will move the old route (and all following routes) down in the list. | | `position` | Yes | Optional | Route matching is performed one after another starting from position=`0`. Position=`-1` will put the route to the end of the list before `is_the_last_route`. A new route created with a position of an existing route will move the old route (and all following routes) down in the list. |
| `slack` | Yes | Optional | Dictionary with Slack-specific settings for a route. | | `slack` | Yes | Optional | Dictionary with Slack-specific settings for a route. |
<!-- markdownlint-enable MD013 -->
**HTTP request** **HTTP request**
`POST {{API_URL}}/api/v1/routes/` `POST {{API_URL}}/api/v1/routes/`

View file

@ -39,8 +39,6 @@ The above command returns JSON structured in the following way:
} }
``` ```
<!-- markdownlint-disable MD013 -->
| Parameter | Unique | Required | Description | | Parameter | Unique | Required | Description |
| -------------------- | :----: | :--------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | -------------------- | :----: | :--------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name` | Yes | Yes | Schedule name. | | `name` | Yes | Yes | Schedule name. |
@ -52,8 +50,6 @@ The above command returns JSON structured in the following way:
| `slack` | No | Optional | Dictionary with Slack-specific settings for a schedule. Includes `channel_id` and `user_group_id` fields, that take a channel ID and a user group ID from Slack. | | `slack` | No | Optional | Dictionary with Slack-specific settings for a schedule. Includes `channel_id` and `user_group_id` fields, that take a channel ID and a user group ID from Slack. |
| `shifts` | No | Optional | List of shifts. Used for manually added on-call shifts in Schedules with type `calendar`. | | `shifts` | No | Optional | List of shifts. Used for manually added on-call shifts in Schedules with type `calendar`. |
<!-- markdownlint-enable MD013 -->
**HTTP request** **HTTP request**
`POST {{API_URL}}/api/v1/schedules/` `POST {{API_URL}}/api/v1/schedules/`

View file

@ -36,16 +36,12 @@ The above command returns JSON structured in the following way:
} }
``` ```
<!-- markdownlint-disable MD013 -->
| Parameter | Unique | Description | | Parameter | Unique | Description |
| --------- | :----: | :---------------------------------------------------------------------------------------------------- | | --------- | :----: | :---------------------------------------------------------------------------------------------------- |
| `id` | Yes | User Group ID | | `id` | Yes | User Group ID |
| `type` | No | [Slack-defined user groups](https://slack.com/intl/en-ru/help/articles/212906697-Create-a-user-group) | | `type` | No | [Slack-defined user groups](https://slack.com/intl/en-ru/help/articles/212906697-Create-a-user-group) |
| `slack` | No | Metadata retrieved from Slack. | | `slack` | No | Metadata retrieved from Slack. |
<!-- markdownlint-enable MD013 -->
**HTTP request** **HTTP request**
`GET {{API_URL}}/api/v1/user_groups/` `GET {{API_URL}}/api/v1/user_groups/`

View file

@ -29,15 +29,11 @@
5. Get credentials 5. Get credentials
<!-- markdownlint-disable MD013 -->
```bash ```bash
echo "\n\nOpen Grafana on localhost:30002 with credentials - user: admin, password: $(kubectl get secret --namespace default helm-testing-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo)" echo "\n\nOpen Grafana on localhost:30002 with credentials - user: admin, password: $(kubectl get secret --namespace default helm-testing-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo)"
echo "Open Plugins -> Grafana OnCall -> fill form: backend url: http://host.docker.internal:30001" echo "Open Plugins -> Grafana OnCall -> fill form: backend url: http://host.docker.internal:30001"
``` ```
<!-- markdownlint-enable MD013 -->
6. Clean up 6. Clean up
```bash ```bash

View file

@ -45,8 +45,6 @@ helm install \
Follow the `helm install` output to finish setting up Grafana OnCall backend and Grafana OnCall frontend plugin e.g. Follow the `helm install` output to finish setting up Grafana OnCall backend and Grafana OnCall frontend plugin e.g.
<!-- markdownlint-disable MD013 -->
```bash ```bash
👋 Your Grafana OnCall instance has been successfully deployed 👋 Your Grafana OnCall instance has been successfully deployed
@ -74,8 +72,6 @@ Follow the `helm install` output to finish setting up Grafana OnCall backend and
🎉🎉🎉 Done! 🎉🎉🎉 🎉🎉🎉 Done! 🎉🎉🎉
``` ```
<!-- markdownlint-enable MD013 -->
## Configuration ## Configuration
You can edit values.yml to make changes to the helm chart configuration and re-deploy the release with the following command: You can edit values.yml to make changes to the helm chart configuration and re-deploy the release with the following command:

View file

@ -107,11 +107,9 @@ webhook integrations to adjust them for incoming payloads.
Configuration is done via environment variables passed to the docker container. Configuration is done via environment variables passed to the docker container.
<!-- markdownlint-disable MD013 -->
| Name | Description | Type | Default | | Name | Description | Type | Default |
|-----------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------|---------| | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------- | ------- |
| `PAGERDUTY_API_TOKEN` | PagerDuty API **user token**. To create a token, refer to [PagerDuty docs](<https://support.pagerduty.com/docs/api-access-keys#generate-a-user-token-rest-api-key>). | String | N/A | | `PAGERDUTY_API_TOKEN` | PagerDuty API **user token**. To create a token, refer to [PagerDuty docs](https://support.pagerduty.com/docs/api-access-keys#generate-a-user-token-rest-api-key). | String | N/A |
| `ONCALL_API_URL` | Grafana OnCall API URL. This can be found on the "Settings" page of your Grafana OnCall instance. | String | N/A | | `ONCALL_API_URL` | Grafana OnCall API URL. This can be found on the "Settings" page of your Grafana OnCall instance. | String | N/A |
| `ONCALL_API_TOKEN` | Grafana OnCall API Token. To create a token, navigate to the "Settings" page of your Grafana OnCall instance. | String | N/A | | `ONCALL_API_TOKEN` | Grafana OnCall API Token. To create a token, navigate to the "Settings" page of your Grafana OnCall instance. | String | N/A |
| `MODE` | Migration mode (plan vs actual migration). | String (choices: `plan`, `migrate`) | `plan` | | `MODE` | Migration mode (plan vs actual migration). | String (choices: `plan`, `migrate`) | `plan` |
@ -120,8 +118,6 @@ Configuration is done via environment variables passed to the docker container.
| `EXPERIMENTAL_MIGRATE_EVENT_RULES` | Migrate global event rulesets to Grafana OnCall integrations. | Boolean | `false` | | `EXPERIMENTAL_MIGRATE_EVENT_RULES` | Migrate global event rulesets to Grafana OnCall integrations. | Boolean | `false` |
| `EXPERIMENTAL_MIGRATE_EVENT_RULES_LONG_NAMES` | Include service & integrations names from PD in migrated integrations (only effective when `EXPERIMENTAL_MIGRATE_EVENT_RULES` is `true`). | Boolean | `false` | | `EXPERIMENTAL_MIGRATE_EVENT_RULES_LONG_NAMES` | Include service & integrations names from PD in migrated integrations (only effective when `EXPERIMENTAL_MIGRATE_EVENT_RULES` is `true`). | Boolean | `false` |
<!-- markdownlint-enable MD013 -->
## Resources ## Resources
### User notification rules ### User notification rules
@ -144,11 +140,11 @@ The tool is capable of migrating on-call schedules from PagerDuty to Grafana OnC
There are two ways to migrate on-call schedules: There are two ways to migrate on-call schedules:
- Migrate on-call shifts as if they were created in Grafana OnCall web UI. Due to scheduling differences between - Migrate on-call shifts as if they were created in Grafana OnCall web UI. Due to scheduling differences between
PagerDuty and Grafana OnCall, it's sometimes impossible to automatically migrate on-call shifts without manual changes PagerDuty and Grafana OnCall, it's sometimes impossible to automatically migrate on-call shifts without manual changes
in PD. Pass `SCHEDULE_MIGRATION_MODE=web` to the tool to enable this mode. in PD. Pass `SCHEDULE_MIGRATION_MODE=web` to the tool to enable this mode.
- Using ICalendar file URLs from PagerDuty. This way it's always possible to migrate schedules without any manual - Using ICalendar file URLs from PagerDuty. This way it's always possible to migrate schedules without any manual
changes in PD, but resulting schedules in Grafana OnCall will be read-only. Pass `SCHEDULE_MIGRATION_MODE=ical` to the tool changes in PD, but resulting schedules in Grafana OnCall will be read-only. Pass `SCHEDULE_MIGRATION_MODE=ical` to
to enable this mode. the tool to enable this mode.
On-call schedules will be migrated to new Grafana OnCall schedules with the same name as in PD. Any existing schedules On-call schedules will be migrated to new Grafana OnCall schedules with the same name as in PD. Any existing schedules
with the same name will be deleted before migration. Any on-call schedules that reference unmatched users won't be with the same name will be deleted before migration. Any on-call schedules that reference unmatched users won't be
@ -197,4 +193,4 @@ but it can also make the names of integrations too long.
- Connect integrations (press the "How to connect" button on the integration page) - Connect integrations (press the "How to connect" button on the integration page)
- Make sure users connect their phone numbers, Slack accounts, etc. in their user settings - Make sure users connect their phone numbers, Slack accounts, etc. in their user settings
- When using `SCHEDULE_MIGRATION_MODE=ical`, at some point you would probably want to recreate schedules using - When using `SCHEDULE_MIGRATION_MODE=ical`, at some point you would probably want to recreate schedules using
Google Calendar or Terraform to be able to modify migrated on-call schedules in Grafana OnCall Google Calendar or Terraform to be able to modify migrated on-call schedules in Grafana OnCall