Kubeconfig module improvement (#1123)

* Add kubeconfig module for managing Kubernetes config files

* Remove unnecessary requirement & Change version

* Move functions to module_utils

* Add unit tests

* Add kubeconfig module for managing Kubernetes config files

* Remove unnecessary requirement & Change version

* Move functions to module_utils

* Add unit tests

* Avoid linter errors

* Improve documentation clarity

* Redact sensitive kubeconfig information

* Imprvoe verbosity

* Move import statement for to_native to avoid linters check failure

* Fix linting error

* Add remove behavior

* Add tests for remove behavior

* Imporve documentation

* Add changelog

---------

Co-authored-by: Bianca Henderson <bianca@redhat.com>
This commit is contained in:
Youssef Ali
2026-05-19 17:10:19 +03:00
committed by GitHub
parent b58b2ca70e
commit 53c6c0ee80
5 changed files with 175 additions and 23 deletions

View File

@@ -141,6 +141,39 @@ def test_merge_by_name_keep_behavior_preserves_existing():
assert result[0]["cluster"]["server"] == "https://old.com"
def test_merge_by_name_remove_behavior_removes_existing_entry():
existing = [{"name": "cluster-a", "cluster": {"server": "https://a.com"}}]
new = [{"name": "cluster-a", "behavior": "remove"}]
result = merge_by_name(existing, new)
assert result == []
def test_merge_by_name_remove_behavior_only_removes_target_entry():
existing = [
{"name": "cluster-a", "cluster": {"server": "https://a.com"}},
{"name": "cluster-b", "cluster": {"server": "https://b.com"}},
]
new = [{"name": "cluster-a", "behavior": "remove"}]
result = merge_by_name(existing, new)
assert len(result) == 1
assert result[0]["name"] == "cluster-b"
def test_merge_by_name_remove_behavior_silently_skips_nonexistent_entry():
existing = [{"name": "cluster-a", "cluster": {"server": "https://a.com"}}]
new = [{"name": "cluster-nonexistent", "behavior": "remove"}]
result = merge_by_name(existing, new)
assert len(result) == 1
assert result[0]["name"] == "cluster-a"
def test_merge_by_name_remove_behavior_on_empty_existing():
existing = []
new = [{"name": "cluster-a", "behavior": "remove"}]
result = merge_by_name(existing, new)
assert result == []
def test_merge_by_name_behavior_key_not_in_output():
existing = []
new = [