Merge pull request #1069 from grafana/dev

Dev to main
This commit is contained in:
Michael Derynck 2023-01-03 20:55:05 +00:00 committed by GitHub
commit ae0ecf3fcf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 5 deletions

View file

@ -13,6 +13,7 @@ from apps.alerts.constants import TASK_DELAY_SECONDS
from apps.alerts.incident_appearance.templaters import TemplateLoader
from apps.alerts.tasks import distribute_alert, send_alert_group_signal
from common.jinja_templater import apply_jinja_template
from common.jinja_templater.apply_jinja_template import JinjaTemplateError, JinjaTemplateWarning
from common.public_primary_keys import generate_public_primary_key, increase_public_primary_key_length
logger = logging.getLogger(__name__)
@ -189,12 +190,23 @@ class Alert(models.Model):
# set web_title_cache to web title to allow alert group searching based on web_title_cache
web_title_template = template_manager.get_attr_template("title", alert_receive_channel, render_for="web")
if web_title_template:
web_title_cache = apply_jinja_template(web_title_template, raw_request_data)
try:
web_title_cache = apply_jinja_template(web_title_template, raw_request_data)
except (JinjaTemplateError, JinjaTemplateWarning) as e:
web_title_cache = e.fallback_message
logger.warning(
f"web_title_cache error on channel={alert_receive_channel.public_primary_key}: {e.fallback_message}"
)
else:
web_title_cache = None
if grouping_id_template is not None:
group_distinction = apply_jinja_template(grouping_id_template, raw_request_data)
try:
group_distinction = apply_jinja_template(grouping_id_template, raw_request_data)
except (JinjaTemplateError, JinjaTemplateWarning) as e:
logger.warning(
f"grouping_id_template error on channel={alert_receive_channel.public_primary_key}: {e.fallback_message}"
)
# Insert random uuid to prevent grouping of demo alerts or alerts with group_distinction=None
if is_demo or not group_distinction:
@ -204,13 +216,25 @@ class Alert(models.Model):
group_distinction = hashlib.md5(str(group_distinction).encode()).hexdigest()
if resolve_condition_template is not None:
is_resolve_signal = apply_jinja_template(resolve_condition_template, payload=raw_request_data)
try:
is_resolve_signal = apply_jinja_template(resolve_condition_template, payload=raw_request_data)
except (JinjaTemplateError, JinjaTemplateWarning) as e:
logger.warning(
f"resolve_condition_template error on channel={alert_receive_channel.public_primary_key}: {e.fallback_message}"
)
if isinstance(is_resolve_signal, str):
is_resolve_signal = is_resolve_signal.strip().lower() in ["1", "true", "ok"]
else:
is_resolve_signal = False
if acknowledge_condition_template is not None:
is_acknowledge_signal = apply_jinja_template(acknowledge_condition_template, payload=raw_request_data)
try:
is_acknowledge_signal = apply_jinja_template(acknowledge_condition_template, payload=raw_request_data)
except (JinjaTemplateError, JinjaTemplateWarning) as e:
logger.warning(
f"acknowledge_condition_template error on channel={alert_receive_channel.public_primary_key}: {e.fallback_message}"
)
if isinstance(is_acknowledge_signal, str):
is_acknowledge_signal = is_acknowledge_signal.strip().lower() in ["1", "true", "ok"]
else:

View file

@ -467,7 +467,13 @@ def post_or_update_log_report_message_task(alert_group_pk, slack_team_identity_p
)
def post_slack_rate_limit_message(integration_id):
AlertReceiveChannel = apps.get_model("alerts", "AlertReceiveChannel")
integration = AlertReceiveChannel.objects.get(pk=integration_id)
try:
integration = AlertReceiveChannel.objects.get(pk=integration_id)
except AlertReceiveChannel.DoesNotExist:
logger.warning(f"AlertReceiveChannel {integration_id} doesn't exist")
return
if not compare_escalations(post_slack_rate_limit_message.request.id, integration.rate_limit_message_task_id):
logger.info(
f"post_slack_rate_limit_message. integration {integration_id}. ID mismatch. "