From 98e036e55920ca8a4dbfbe1fb06e491ddcfa3c51 Mon Sep 17 00:00:00 2001 From: kamilswiec Date: Fri, 30 Jun 2023 00:34:39 +0300 Subject: [PATCH] fix:no data state value for alertrulev9 Signed-off-by: kamilswiec --- CHANGELOG.rst | 1 + grafanalib/core.py | 26 ++++++++++++++++---------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 7c480404..d99c72e2 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -13,6 +13,7 @@ Changelog * Extended SqlTarget to support parsing queries from files * Fix AlertCondition backwards compatibility (``useNewAlerts`` default to ``False``) * Added RateMetricAgg_ for ElasticSearch +* Fix AlertRuleV9 "unknown NoData state option No Data" .. _`Bar_Chart`: https://grafana.com/docs/grafana/latest/panels-visualizations/visualizations/bar-chart/ .. _`RateMetricAgg`: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-rate-aggregation.html diff --git a/grafanalib/core.py b/grafanalib/core.py index ed109763..28f8117a 100644 --- a/grafanalib/core.py +++ b/grafanalib/core.py @@ -251,6 +251,12 @@ def to_json_data(self): ALERTRULE_STATE_DATA_ALERTING = 'Alerting' ALERTRULE_STATE_DATA_ERROR = 'Error' +# Alert Rule state filter options (Grafana 9.x) +ALERTRULEV9_STATE_DATA_OK = 'OK' +ALERTRULEV9_STATE_DATA_NODATA = 'NoData' +ALERTRULEV9_STATE_DATA_ALERTING = 'Alerting' +ALERTRULEV9_STATE_DATA_ERROR = 'Error' + # Display Sort Order SORT_ASC = 1 SORT_DESC = 2 @@ -1591,10 +1597,10 @@ class AlertRulev9(object): The Interval is set by the alert group :param noDataAlertState: Alert state if no data or all values are null Must be one of the following: - [ALERTRULE_STATE_DATA_OK, ALERTRULE_STATE_DATA_ALERTING, ALERTRULE_STATE_DATA_NODATA ] + [ALERTRULEV9_STATE_DATA_OK, ALERTRULEV9_STATE_DATA_ALERTING, ALERTRULEV9_STATE_DATA_NODATA] :param errorAlertState: Alert state if execution error or timeout Must be one of the following: - [ALERTRULE_STATE_DATA_OK, ALERTRULE_STATE_DATA_ALERTING, ALERTRULE_STATE_DATA_ERROR ] + [ALERTRULEV9_STATE_DATA_OK, ALERTRULEV9_STATE_DATA_ALERTING, ALERTRULEV9_STATE_DATA_ERROR ] :param timeRangeFrom: Time range interpolation data start from :param timeRangeTo: Time range interpolation data finish at @@ -1610,19 +1616,19 @@ class AlertRulev9(object): evaluateFor = attr.ib(default=DEFAULT_ALERT_EVALUATE_FOR, validator=instance_of(str)) noDataAlertState = attr.ib( - default=ALERTRULE_STATE_DATA_ALERTING, + default=ALERTRULEV9_STATE_DATA_ALERTING, validator=in_([ - ALERTRULE_STATE_DATA_OK, - ALERTRULE_STATE_DATA_ALERTING, - ALERTRULE_STATE_DATA_NODATA + ALERTRULEV9_STATE_DATA_OK, + ALERTRULEV9_STATE_DATA_ALERTING, + ALERTRULEV9_STATE_DATA_NODATA ]) ) errorAlertState = attr.ib( - default=ALERTRULE_STATE_DATA_ALERTING, + default=ALERTRULEV9_STATE_DATA_ALERTING, validator=in_([ - ALERTRULE_STATE_DATA_OK, - ALERTRULE_STATE_DATA_ALERTING, - ALERTRULE_STATE_DATA_ERROR + ALERTRULEV9_STATE_DATA_OK, + ALERTRULEV9_STATE_DATA_ALERTING, + ALERTRULEV9_STATE_DATA_ERROR ]) ) condition = attr.ib(default='B')