Skip to content

Commit 1a1c5e4

Browse files
authored
Merge pull request hashicorp#238 from ausmartway/yulei-dev
Add require-version-constrains-to-all-providers sentinel policy
2 parents cda7d16 + 4149e7a commit 1a1c5e4

File tree

12 files changed

+29831
-2
lines changed

12 files changed

+29831
-2
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# This policy uses the tfconfig/v2 import to require modules to have
2+
# version constraint, this is a good practise.
3+
4+
5+
import "tfconfig-functions" as config
6+
7+
# Get all modules
8+
9+
allModuleCalls = config.find_all_module_calls()
10+
11+
#Get all module calls tht have version_constraint as undefined or empty.
12+
#think it as : (mc.version_constrain else "") is ""
13+
violatingModuleCalls = filter allModuleCalls as address, mc {
14+
mc.version_constraint else "" is ""
15+
}
16+
17+
# Print any violations
18+
19+
for violatingModuleCalls as address, mc {
20+
print("Module", address, "does not have version_constraint set")
21+
}
22+
23+
# Main rule
24+
main = rule {
25+
length(violatingModuleCalls) is 0
26+
}
27+
28+
29+
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# This policy uses the tfconfig/v2 import to require providers to have
2+
# version constraint, this is a good practise.
3+
4+
# Import common-functions/tfconfig-functions/tfconfig-functions.sentinel
5+
# with alias "config"
6+
import "tfconfig-functions" as config
7+
8+
# Get all providers
9+
allProviders = config.find_all_providers()
10+
11+
#Get all providers tht has version_constraint as undefined or empty.
12+
#think it as : (mc.version_constrain else "") is ""
13+
violatingProviders = filter allProviders as address, mc {
14+
mc.version_constraint else "" is ""
15+
}
16+
17+
# Print any violations
18+
for violatingProviders as address, mc {
19+
print("Provider", address, "does not have version_constraint set")
20+
}
21+
22+
# Main rule
23+
main = rule {
24+
length(violatingProviders) is 0
25+
}
26+
27+
28+
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"modules": {
3+
"tfconfig-functions": {
4+
"path": "../../../common-functions/tfconfig-functions/tfconfig-functions.sentinel"
5+
}
6+
},
7+
"mock": {
8+
"tfconfig/v2": "mock-tfconfig-fail.sentinel"
9+
},
10+
"test": {
11+
"main": false
12+
}
13+
}

0 commit comments

Comments
 (0)