65 lines
2.0 KiB
Plaintext
65 lines
2.0 KiB
Plaintext
package after_resolution
|
|
|
|
import rego.v1
|
|
|
|
registry_attribute_names := {attr.name |
|
|
some g in input.groups
|
|
some attr in g.attributes
|
|
not attr.deprecated
|
|
}
|
|
|
|
registry_metric_names := {group.metric_name |
|
|
some group in input.groups
|
|
group.type == "metric"
|
|
not group.deprecated
|
|
}
|
|
|
|
registry_event_names := {group.name |
|
|
some group in input.groups
|
|
group.type == "event"
|
|
not group.deprecated
|
|
}
|
|
|
|
# attribute.deprecated.renamed_to must be another attribute
|
|
deny contains deprecation_violation(description, group.id, "") if {
|
|
group := input.groups[_]
|
|
attr := group.attributes[_]
|
|
attr.deprecated != null
|
|
attr.deprecated.renamed_to != null
|
|
|
|
not attr.deprecated.renamed_to in registry_attribute_names
|
|
description := sprintf("Attribute '%s' was renamed to '%s', but the new attribute does not exist or is deprecated.", [attr.name, attr.deprecated.renamed_to])
|
|
}
|
|
|
|
# metric.deprecated.renamed_to must be another metric
|
|
deny contains deprecation_violation(description, group.id, "") if {
|
|
group := input.groups[_]
|
|
group.type == "metric"
|
|
group.deprecated != null
|
|
group.deprecated.renamed_to != null
|
|
|
|
not group.deprecated.renamed_to in registry_metric_names
|
|
description := sprintf("Metric '%s' was renamed to '%s', but the new metric does not exist or is deprecated.", [group.metric_name, group.deprecated.renamed_to])
|
|
}
|
|
|
|
# event.deprecated.renamed_to must be another event
|
|
deny contains deprecation_violation(description, group.id, "") if {
|
|
group := input.groups[_]
|
|
group.type == "event"
|
|
group.deprecated != null
|
|
group.deprecated.renamed_to != null
|
|
|
|
not group.deprecated.renamed_to in registry_event_names
|
|
description := sprintf("Event '%s' was renamed to '%s', but the new event does not exist or is deprecated.", [group.name, group.deprecated.renamed_to])
|
|
}
|
|
|
|
deprecation_violation(description, group, attr) = violation if {
|
|
violation := {
|
|
"id": description,
|
|
"type": "semconv_attribute",
|
|
"category": "deprecation_violation",
|
|
"attr": attr,
|
|
"group": group,
|
|
}
|
|
}
|