50 lines
1.5 KiB
HCL
50 lines
1.5 KiB
HCL
resource "grafana_rule_group" "this" {
|
|
for_each = { for g in local.groups : g.uid => g }
|
|
|
|
name = each.value.name
|
|
folder_uid = each.value.folder_uid
|
|
|
|
interval_seconds = (
|
|
substr(each.value.interval, length(each.value.interval) - 1, 1) == "m"
|
|
? tonumber(substr(each.value.interval, 0, length(each.value.interval) - 1)) * 60
|
|
: tonumber(trim(each.value.interval, "s"))
|
|
)
|
|
|
|
disable_provenance = var.disable_provenance
|
|
|
|
dynamic "rule" {
|
|
for_each = each.value.rules
|
|
content {
|
|
uid = rule.value.uid
|
|
name = try(rule.value.title, rule.value.name)
|
|
condition = rule.value.condition
|
|
for = try(rule.value.for, null)
|
|
|
|
no_data_state = rule.value.noDataState
|
|
exec_err_state = rule.value.execErrState
|
|
is_paused = try(rule.value.isPaused, false)
|
|
|
|
# Merge team labels with platform-injected receiver
|
|
annotations = try(rule.value.annotations, {})
|
|
labels = try(rule.value.labels, {})
|
|
|
|
dynamic "data" {
|
|
for_each = rule.value.data
|
|
content {
|
|
ref_id = data.value.refId
|
|
datasource_uid = data.value.datasource_uid
|
|
|
|
dynamic "relative_time_range" {
|
|
for_each = [data.value.relative_time_range]
|
|
content {
|
|
from = relative_time_range.value.from
|
|
to = relative_time_range.value.to
|
|
}
|
|
}
|
|
|
|
model = jsonencode(data.value.model)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|