Fix bugs in web title and message templates rendering and visual representation (#1747)
# 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:
parent
071e3c6b1b
commit
14b692674a
8 changed files with 41 additions and 127 deletions
|
|
@ -15,6 +15,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
|
||||
- Add filter descriptions to web ui by @iskhakov ([1845](https://github.com/grafana/oncall/pull/1845))
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix bugs in web title and message templates rendering and visual representation ([1747](https://github.com/grafana/oncall/pull/1747))
|
||||
|
||||
## v1.2.16 (2023-04-27)
|
||||
|
||||
### Added
|
||||
|
|
|
|||
|
|
@ -63,6 +63,10 @@ def test_default_templates(
|
|||
)
|
||||
|
||||
rendered_attr = getattr(rendered_alert, attr)
|
||||
print(f"{alert_receive_channel}'s {notification_channel} {attr} ")
|
||||
print(rendered_attr)
|
||||
print()
|
||||
print("====================================")
|
||||
assert rendered_attr == expected, (
|
||||
f"{alert_receive_channel}'s {notification_channel} {attr} " f"is not equal to expected"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -168,13 +168,14 @@ def convert_md_to_html(text):
|
|||
# This gives us <pre> and <code> tags for ```-fenced blocks
|
||||
"fenced-code-blocks",
|
||||
"pyshell",
|
||||
"nl2br",
|
||||
"target-blank-links",
|
||||
"nofollow",
|
||||
"pymdownx.emoji",
|
||||
"pymdownx.magiclink",
|
||||
"tables",
|
||||
],
|
||||
).strip()
|
||||
# Special handling cases for lists
|
||||
text = text.replace("\n\n<ul>", "<ul>")
|
||||
text = text.replace("\n<li>", "<li>")
|
||||
# Special handling cases for newlines
|
||||
text = text.replace("\n", "<br/>")
|
||||
return text
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -149,21 +149,18 @@ tests = {
|
|||
},
|
||||
"web": {
|
||||
"title": "KubeJobCompletion",
|
||||
"message": (
|
||||
"<p>"
|
||||
"<strong>Status</strong>: firing<br/>"
|
||||
"<strong>Labels:</strong> <br/>"
|
||||
"<em>job</em>: kube-state-metrics<br/>"
|
||||
"<em>instance</em>: 10.143.139.7:8443<br/>"
|
||||
"<em>job_name</em>: email-tracking-perform-initialization-1.0.50<br/>"
|
||||
"<em>severity</em>: warning<br/><em>alertname</em>: KubeJobCompletion<br/>"
|
||||
"<em>namespace</em>: default<br/><em>prometheus</em>: monitoring/k8s<br/>"
|
||||
"<strong>Annotations:</strong><br/>"
|
||||
"<em>message</em>: Job default/email-tracking-perform-initialization-1.0.50 is taking more than one hour to complete. <br/>"
|
||||
"<em>runbook_url</em>: "
|
||||
'<a href="https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubejobcompletion">here</a>'
|
||||
"</p>"
|
||||
),
|
||||
"message": """<p><strong>Status</strong>: firing
|
||||
<strong>Labels:</strong>
|
||||
<em>job</em>: kube-state-metrics
|
||||
<em>instance</em>: 10.143.139.7:8443
|
||||
<em>job_name</em>: email-tracking-perform-initialization-1.0.50
|
||||
<em>severity</em>: warning
|
||||
<em>alertname</em>: KubeJobCompletion
|
||||
<em>namespace</em>: default
|
||||
<em>prometheus</em>: monitoring/k8s
|
||||
<strong>Annotations:</strong>
|
||||
<em>message</em>: Job default/email-tracking-perform-initialization-1.0.50 is taking more than one hour to complete.
|
||||
<em>runbook_url</em>: <a href="https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubejobcompletion" rel="nofollow noopener" target="_blank">here</a></p>""", # noqa
|
||||
"image_url": None,
|
||||
},
|
||||
"sms": {
|
||||
|
|
|
|||
|
|
@ -169,21 +169,19 @@ tests = {
|
|||
},
|
||||
"web": {
|
||||
"title": "KubeJobCompletion",
|
||||
"message": (
|
||||
"<p>"
|
||||
"<strong>Status</strong>: firing<br/>"
|
||||
"<strong>Labels:</strong> <br/>"
|
||||
"<em>job</em>: kube-state-metrics<br/>"
|
||||
"<em>instance</em>: 10.143.139.7:8443<br/>"
|
||||
"<em>job_name</em>: email-tracking-perform-initialization-1.0.50<br/>"
|
||||
"<em>severity</em>: warning<br/><em>alertname</em>: KubeJobCompletion<br/>"
|
||||
"<em>namespace</em>: default<br/><em>prometheus</em>: monitoring/k8s<br/>"
|
||||
"<strong>Annotations:</strong><br/>"
|
||||
"<em>message</em>: Job default/email-tracking-perform-initialization-1.0.50 is taking more than one hour to complete. <br/>"
|
||||
"<em>runbook_url</em>: "
|
||||
'<a href="https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubejobcompletion">here</a>'
|
||||
"</p>"
|
||||
),
|
||||
"message": """\
|
||||
<p><strong>Status</strong>: firing
|
||||
<strong>Labels:</strong>
|
||||
<em>job</em>: kube-state-metrics
|
||||
<em>instance</em>: 10.143.139.7:8443
|
||||
<em>job_name</em>: email-tracking-perform-initialization-1.0.50
|
||||
<em>severity</em>: warning
|
||||
<em>alertname</em>: KubeJobCompletion
|
||||
<em>namespace</em>: default
|
||||
<em>prometheus</em>: monitoring/k8s
|
||||
<strong>Annotations:</strong>
|
||||
<em>message</em>: Job default/email-tracking-perform-initialization-1.0.50 is taking more than one hour to complete.
|
||||
<em>runbook_url</em>: <a href="https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubejobcompletion" rel="nofollow noopener" target="_blank">here</a></p>""", # noqa
|
||||
"image_url": None,
|
||||
},
|
||||
"sms": {
|
||||
|
|
|
|||
|
|
@ -104,97 +104,6 @@ resolve_condition = """\
|
|||
|
||||
acknowledge_condition = None
|
||||
|
||||
tests = {
|
||||
"payload": {
|
||||
"endsAt": "0001-01-01T00:00:00Z",
|
||||
"labels": {
|
||||
"job": "kube-state-metrics",
|
||||
"instance": "10.143.139.7:8443",
|
||||
"job_name": "email-tracking-perform-initialization-1.0.50",
|
||||
"severity": "warning",
|
||||
"alertname": "KubeJobCompletion",
|
||||
"namespace": "default",
|
||||
"prometheus": "monitoring/k8s",
|
||||
},
|
||||
"status": "firing",
|
||||
"startsAt": "2019-12-13T08:57:35.095800493Z",
|
||||
"annotations": {
|
||||
"message": "Job default/email-tracking-perform-initialization-1.0.50 is taking more than one hour to complete.",
|
||||
"runbook_url": "https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubejobcompletion",
|
||||
},
|
||||
"generatorURL": (
|
||||
"https://localhost/prometheus/graph?g0.expr=kube_job_spec_completions%7Bjob%3D%22kube-state-metrics%22%7D+-+"
|
||||
"kube_job_status_succeeded%7Bjob%3D%22kube-state-metrics%22%7D+%3E+0&g0.tab=1"
|
||||
),
|
||||
},
|
||||
"slack": {
|
||||
"title": (
|
||||
"*<{web_link}|#1 KubeJobCompletion>* via {integration_name} (*<"
|
||||
"https://localhost/prometheus/graph?g0.expr=kube_job_spec_completions%7Bjob%3D%22kube-state-metrics%22%7D+-+"
|
||||
"kube_job_status_succeeded%7Bjob%3D%22kube-state-metrics%22%7D+%3E+0&g0.tab=1"
|
||||
"|source>*)"
|
||||
),
|
||||
"message": (
|
||||
"*Status*: firing\n"
|
||||
"*Labels:* \n"
|
||||
"job: kube-state-metrics\n"
|
||||
"instance: 10.143.139.7:8443\n"
|
||||
"job_name: email-tracking-perform-initialization-1.0.50\n"
|
||||
"severity: warning\n"
|
||||
"alertname: KubeJobCompletion\n"
|
||||
"namespace: default\n"
|
||||
"prometheus: monitoring/k8s\n"
|
||||
"*Annotations:*\n"
|
||||
"message: Job default/email-tracking-perform-initialization-1.0.50 is taking more than one hour to complete. \n"
|
||||
"runbook_url: <https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubejobcompletion|here> "
|
||||
),
|
||||
"image_url": None,
|
||||
},
|
||||
"web": {
|
||||
"title": "KubeJobCompletion",
|
||||
"message": (
|
||||
"<p>"
|
||||
"<strong>Status</strong>: firing<br/>"
|
||||
"<strong>Labels:</strong> <br/>"
|
||||
"<em>job</em>: kube-state-metrics<br/>"
|
||||
"<em>instance</em>: 10.143.139.7:8443<br/>"
|
||||
"<em>job_name</em>: email-tracking-perform-initialization-1.0.50<br/>"
|
||||
"<em>severity</em>: warning<br/><em>alertname</em>: KubeJobCompletion<br/>"
|
||||
"<em>namespace</em>: default<br/><em>prometheus</em>: monitoring/k8s<br/>"
|
||||
"<strong>Annotations:</strong><br/>"
|
||||
"<em>message</em>: Job default/email-tracking-perform-initialization-1.0.50 is taking more than one hour to complete. <br/>"
|
||||
"<em>runbook_url</em>: "
|
||||
'<a href="https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubejobcompletion">here</a>'
|
||||
"</p>"
|
||||
),
|
||||
"image_url": None,
|
||||
},
|
||||
"sms": {
|
||||
"title": "KubeJobCompletion",
|
||||
},
|
||||
"phone_call": {
|
||||
"title": "KubeJobCompletion",
|
||||
},
|
||||
"telegram": {
|
||||
"title": "KubeJobCompletion",
|
||||
"message": (
|
||||
"<b>Status</b>: firing\n"
|
||||
"<b>Labels:</b> \n"
|
||||
"job: kube-state-metrics\n"
|
||||
"instance: 10.143.139.7:8443\n"
|
||||
"job_name: email-tracking-perform-initialization-1.0.50\n"
|
||||
"severity: warning\n"
|
||||
"alertname: KubeJobCompletion\n"
|
||||
"namespace: default\n"
|
||||
"prometheus: monitoring/k8s\n"
|
||||
"<b>Annotations:</b>\n"
|
||||
"message: Job default/email-tracking-perform-initialization-1.0.50 is taking more than one hour to complete.\n\n"
|
||||
"runbook_url: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md#alert-name-kubejobcompletion\n"
|
||||
),
|
||||
"image_url": None,
|
||||
},
|
||||
}
|
||||
|
||||
example_payload = {
|
||||
"receiver": "amixr",
|
||||
"status": "firing",
|
||||
|
|
|
|||
|
|
@ -52,3 +52,4 @@ django-dbconn-retry==0.1.7
|
|||
django-ipware==4.0.2
|
||||
django-anymail==8.6
|
||||
django-deprecate-fields==0.1.1
|
||||
pymdown-extensions==9.11
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import dompurify from 'dompurify';
|
|||
export default function sanitize(str: string): string {
|
||||
return dompurify.sanitize(str, {
|
||||
USE_PROFILES: { html: true },
|
||||
FORBID_TAGS: ['form', 'input', 'pre'],
|
||||
FORBID_TAGS: ['form', 'input'],
|
||||
ADD_ATTR: ['target'],
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue