Skip to content

Commit 355820a

Browse files
committed
fix(node): skip invalid role labels
1 parent b8fa676 commit 355820a

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

kubernetes_monitoring.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -452,11 +452,16 @@ def _node_roles(node: Any) -> str:
452452
labels = _normalize_labels_mapping(
453453
getattr(getattr(node, "metadata", None), "labels", None)
454454
)
455-
roles = [
456-
label.split("/")[-1] or "-"
457-
for label in labels
458-
if isinstance(label, str) and label.startswith("node-role.kubernetes.io/")
459-
]
455+
roles: List[str] = []
456+
for raw_key in labels.keys():
457+
if not isinstance(raw_key, str):
458+
continue
459+
if not raw_key.startswith("node-role.kubernetes.io/"):
460+
continue
461+
suffix = raw_key[len("node-role.kubernetes.io/") :].strip()
462+
if not suffix:
463+
suffix = "-"
464+
roles.append(suffix.rstrip("/"))
460465
if not roles:
461466
return "<none>"
462467
return ",".join(sorted(roles))

tests/test_kubernetes_monitoring.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,13 +216,14 @@ def test_node_roles_handles_non_string_label_keys():
216216
"metadata": {
217217
"labels": {
218218
"node-role.kubernetes.io/control-plane": "",
219+
"node-role.kubernetes.io/": "",
219220
None: "ignored",
220221
10: "other",
221222
}
222223
}
223224
}
224225
node = kubernetes_monitoring._wrap_kubectl_value(node_payload)
225-
assert kubernetes_monitoring._node_roles(node) == "control-plane"
226+
assert kubernetes_monitoring._node_roles(node) == "-,control-plane"
226227

227228

228229
@patch("kubernetes_monitoring._run_kubectl_json")

0 commit comments

Comments
 (0)