mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-05-06 21:12:37 +00:00
Limit compatibility to Helm =>v3.0.0,<4.0.0 (#1039)
SUMMARY
Helm v4 is a major version with backward-incompatible changes, including to the flags and output of the Helm CLI and to the SDK. This version is currently not supported in the kubernetes.core. This PR is related to #1038 and is a short-term solution to mark compatibility explicitly
ISSUE TYPE
Bugfix Pull Request
Docs Pull Request
COMPONENT NAME
helm
helm_template
helm_info
helm_repository
helm_pull
helm_registry_auth
helm_plugin
helm_plugin_info
ADDITIONAL INFORMATION
Added `validate_helm_version()`` method to AnsibleHelmModule that enforces version constraint >=3.0.0,<4.0.0.
Fails fast with clear error message: "Helm version must be >=3.0.0,<4.0.0, current version is {version}"
Some modules (i.e. helm_registry_auth) technically is compatible with Helm v4, but validation was added to all helm modules.
Partially coauthored by GitHub Copilot with Claude Sonnet 4 model.
Addresses issue #1038
Reviewed-by: GomathiselviS <gomathiselvi@gmail.com>
Reviewed-by: Yuriy Novostavskiy <yuriy@novostavskiy.kyiv.ua>
Reviewed-by: Mike Graves <mgraves@redhat.com>
Reviewed-by: Alina Buzachis
Reviewed-by: Bianca Henderson <beeankha@gmail.com>
(cherry picked from commit 13791ec7bf)
rh-pre-commit.version: 2.3.2
rh-pre-commit.check-secrets: ENABLED
This commit is contained in:
committed by
GomathiselviS
parent
acc168e61f
commit
0f6b4c873a
@@ -443,3 +443,46 @@ def test_module_get_helm_set_values_args(set_values, expected):
|
||||
|
||||
result = helm_module.get_helm_set_values_args(set_values)
|
||||
assert " ".join(expected) == result
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"helm_version,should_fail",
|
||||
[
|
||||
("3.0.0", False),
|
||||
("3.5.0", False),
|
||||
("3.10.3", False),
|
||||
("3.15.0", False),
|
||||
("3.17.0", False),
|
||||
("2.9.0", True),
|
||||
("2.17.0", True),
|
||||
("4.0.0", True),
|
||||
("4.1.0", True),
|
||||
("5.0.0", True),
|
||||
],
|
||||
)
|
||||
def test_module_validate_helm_version(_ansible_helm_module, helm_version, should_fail):
|
||||
_ansible_helm_module.get_helm_version = MagicMock()
|
||||
_ansible_helm_module.get_helm_version.return_value = helm_version
|
||||
|
||||
if should_fail:
|
||||
with pytest.raises(SystemExit):
|
||||
_ansible_helm_module.validate_helm_version()
|
||||
_ansible_helm_module.fail_json.assert_called_once()
|
||||
call_args = _ansible_helm_module.fail_json.call_args
|
||||
assert "Helm version must be >=3.0.0,<4.0.0" in call_args[1]["msg"]
|
||||
assert helm_version in call_args[1]["msg"]
|
||||
else:
|
||||
_ansible_helm_module.validate_helm_version()
|
||||
_ansible_helm_module.fail_json.assert_not_called()
|
||||
|
||||
|
||||
def test_module_validate_helm_version_none(_ansible_helm_module):
|
||||
_ansible_helm_module.get_helm_version = MagicMock()
|
||||
_ansible_helm_module.get_helm_version.return_value = None
|
||||
|
||||
with pytest.raises(SystemExit):
|
||||
_ansible_helm_module.validate_helm_version()
|
||||
|
||||
_ansible_helm_module.fail_json.assert_called_once_with(
|
||||
msg="Unable to determine Helm version"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user