Skip to content

Commit 33c1fdd

Browse files
wip
Signed-off-by: ivan katliarchuk <[email protected]>
1 parent 56825db commit 33c1fdd

File tree

2 files changed

+50
-0
lines changed

2 files changed

+50
-0
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package terraform.tag_validation
2+
3+
# Tag checking functions
4+
# Read all tags from a resource
5+
readTags(resource) = tags if {
6+
tags = resource.change.after.tags
7+
}
8+
9+
# Check if tag is present for a given resource
10+
findTag(resource, tagName) if {
11+
readTags(resource)[tagName]
12+
}
13+
14+
# Check if tag has proper value for a given resource
15+
findValue(resource, tagName, tagValue) if {
16+
readTags(resource)[tagName] == tagValue
17+
}
18+
19+
# Check if all tags are present for a given resource
20+
missingTags(resource, tagList) if {
21+
keys := { key | resource.change.after.tags[key] }
22+
missing := tagList - keys
23+
missing == set()
24+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package terraform.plan_functions
2+
3+
# Get resources by type
4+
get_resources_by_type(type, resources) = filtered_resources if {
5+
filtered_resources := [resource | resource := resources[_]; resource.type = type]
6+
}
7+
8+
# Get resources by action
9+
get_resources_by_action(action, resources) = filtered_resources if {
10+
filtered_resources := [resource | resource := resources[_]; resource.change.actions[_] = action]
11+
}
12+
13+
# Get resources by type and action
14+
get_resources_by_type_and_action(type, action, resources) = filtered_resources if {
15+
filtered_resources := [resource | resource := resources[_]; resource.type = type; resource.change.actions[_] = action]
16+
}
17+
18+
# Get resource by name
19+
get_resource_by_name(resource_name, resources) = filtered_resources if {
20+
filtered_resources := [resource | resource := resources[_]; resource.name = resource_name]
21+
}
22+
23+
# Get resource by type and name
24+
get_resource_by_type_and_name(type, resource_name, resources) = filtered_resources if {
25+
filtered_resources := [resource | resource := resources[_]; resource.type = type; resource.name = resource_name]
26+
}

0 commit comments

Comments
 (0)