diff --git a/pkg/regorules/rules/FalseNodeConditionsRule.rego b/pkg/regorules/rules/FalseNodeConditionsRule.rego deleted file mode 100644 index 61dd775a..00000000 --- a/pkg/regorules/rules/FalseNodeConditionsRule.rego +++ /dev/null @@ -1,49 +0,0 @@ -package kubeeye_nodes_rego - -deny[msg] { - resource := input - type := resource.Object.kind - resourcename := resource.Object.metadata.name - type == "Node" - level := "warning" - - resource.Object.status.conditions[i].status == "False" - - contains(resource.Object.status.conditions[i].message, "has") - not contains(resource.Object.status.conditions[i].message, "has no") - Message := replace(resource.Object.status.conditions[i].message,"has", "has no") - contains(resource.Object.status.conditions[i].reason, "Has") - not contains(resource.Object.status.conditions[i].reason, "HasNo") - Reason := replace(resource.Object.status.conditions[i].reason,"Has", "HasNo") - - msg := { - "Name": sprintf("%v", [resourcename]), - "Type": sprintf("%v", [type]), - "Level": sprintf("%v", [level]), - "Message": sprintf("%v", [Reason]), - "Reason": sprintf("%v", [Message]), - } -} - -deny[msg] { - resource := input - type := resource.Object.kind - resourcename := resource.Object.metadata.name - type == "Node" - level := "warning" - - resource.Object.status.conditions[i].status == "False" - - contains(resource.Object.status.conditions[i].message, "has no") - Message := replace(resource.Object.status.conditions[i].message,"has no", "has") - contains(resource.Object.status.conditions[i].reason, "HasNo") - Reason := replace(resource.Object.status.conditions[i].reason,"HasNo", "Has") - - msg := { - "Name": sprintf("%v", [resourcename]), - "Type": sprintf("%v", [type]), - "Level": sprintf("%v", [level]), - "Message": sprintf("%v", [Reason]), - "Reason": sprintf("%v", [Message]), - } -} \ No newline at end of file diff --git a/pkg/regorules/rules/NodeConditionsRule.rego b/pkg/regorules/rules/NodeConditionsRule.rego new file mode 100644 index 00000000..b2476ba0 --- /dev/null +++ b/pkg/regorules/rules/NodeConditionsRule.rego @@ -0,0 +1,59 @@ +package kubeeye_nodes_rego + +deny[msg] { + + resource := input + conditiontypes := ["MemoryPressure","DiskPressure","PIDPressure","NetworkUnavailable"] + + + type := resource.Object.kind + resourcename := resource.Object.metadata.name + type == "Node" + level := "waring" + + resource.Object.status.conditions[i].status == "True" + contains_element(conditiontypes,resource.Object.status.conditions[i].type) + + + Message := resource.Object.status.conditions[i].message + Reason := resource.Object.status.conditions[i].reason + + msg := { + "Name": sprintf("%v", [resourcename]), + "Type": sprintf("%v", [type]), + "Level": sprintf("%v", [level]), + "Message": sprintf("%v", [Reason]), + "Reason": sprintf("%v", [Message]), + } +} + +deny[msg] { + + resource := input + conditiontypes := ["Ready"] + + + type := resource.Object.kind + resourcename := resource.Object.metadata.name + type == "Node" + level := "waring" + + resource.Object.status.conditions[i].status != "True" + contains_element(conditiontypes,resource.Object.status.conditions[i].type) + + + Message := resource.Object.status.conditions[i].message + Reason := resource.Object.status.conditions[i].reason + + msg := { + "Name": sprintf("%v", [resourcename]), + "Type": sprintf("%v", [type]), + "Level": sprintf("%v", [level]), + "Message": sprintf("%v", [Reason]), + "Reason": sprintf("%v", [Message]), + } +} + +contains_element(arr, elem) = true { + arr[_] = elem +} else = false { true } \ No newline at end of file