| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- package node.porter_run_taints
- import future.keywords
- POLICY_ID := sprintf("porter_run_taints_%s", [input.metadata.name])
- POLICY_VERSION := "v0.0.1"
- POLICY_SEVERITY := "high"
- POLICY_TITLE := sprintf("The only taints on node %s should be porter.run/workload-kind=system", [input.metadata.name])
- POLICY_SUCCESS_MESSAGE := sprintf("Success: this node either has no taints, or has a taint with key porter.run/workload-kind", [])
- # if there are no taints, allow the condition
- allow if {
- not input.spec.taints[0]
- }
- # if there is a taint with the key porter.run/workload-kind, allow the condition
- allow if {
- input.spec.taints[0].key == "porter.run/workload-kind"
- input.spec.taints[0].effect == "NoSchedule"
- }
- FAILURE_MESSAGE contains msg1 if {
- not allow
- msg1 := sprintf("Failed: the only permitted taints must contain the key porter.run/workload-kind", [])
- }
- FAILURE_MESSAGE contains msg2 if {
- not allow
- not input.spec.taints[0].key == "porter.run/workload-kind"
- msg2 := sprintf("Taint has key %s", [input.spec.taints[0].key])
- }
- FAILURE_MESSAGE contains msg3 if {
- not allow
- not input.spec.taints[0].effect == "NoSchedule"
- msg3 := sprintf("Taint has effect %s", [input.spec.taints[0].effect])
- }
|