mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-05-06 21:12:37 +00:00
This is a backport of PR #1090 as merged into main (e6076e5).
SUMMARY
Ensure compatibility with Helm v4 for modules helm_plugin and helm_plugin_info
Partially addresses #1038
ISSUE TYPE
Feature Pull Request
COMPONENT NAME
helm_plugin
helm_plugin_info
helm_info
helm_pull
helm_registry_auth
helm
helm_template
Reviewed-by: Bikouo Aubin
Reviewed-by: Matthew Johnson
This commit is contained in:
@@ -40,16 +40,20 @@ def parse_helm_plugin_list(output=None):
|
||||
if not output:
|
||||
return ret
|
||||
|
||||
parsing_grammar = None
|
||||
for line in output:
|
||||
if line.startswith("NAME"):
|
||||
parsing_grammar = [s.strip().lower() for s in line.split("\t")]
|
||||
continue
|
||||
name, version, description = line.split("\t", 3)
|
||||
name = name.strip()
|
||||
version = version.strip()
|
||||
description = description.strip()
|
||||
if name == "":
|
||||
if parsing_grammar is None:
|
||||
continue
|
||||
ret.append((name, version, description))
|
||||
plugin = {
|
||||
parsing_grammar[i]: v.strip()
|
||||
for i, v in enumerate(line.split("\t", len(parsing_grammar)))
|
||||
}
|
||||
if plugin["name"] == "":
|
||||
continue
|
||||
ret.append(plugin)
|
||||
|
||||
return ret
|
||||
|
||||
@@ -202,21 +206,35 @@ class AnsibleHelmModule(object):
|
||||
return m.group(1)
|
||||
return None
|
||||
|
||||
def validate_helm_version(self):
|
||||
def is_helm_v4(self):
|
||||
helm_version = self.get_helm_version()
|
||||
if helm_version is None:
|
||||
return False
|
||||
return LooseVersion(helm_version) >= LooseVersion("4.0.0")
|
||||
|
||||
def is_helm_version_compatible_with_helm_diff(self, helm_diff_version):
|
||||
"""
|
||||
Validate that Helm version is >=3.0.0 and <4.0.0.
|
||||
Helm 4 is not yet supported.
|
||||
Return true if the helm version is compatible with the helm diff version
|
||||
Helm v4 requires helm diff v3.14.0
|
||||
"""
|
||||
if not helm_diff_version:
|
||||
return False
|
||||
if self.is_helm_v4():
|
||||
return LooseVersion(helm_diff_version) >= LooseVersion("3.14.0")
|
||||
return True
|
||||
|
||||
def validate_helm_version(self, version="3.0.0"):
|
||||
"""
|
||||
Validate that Helm version is >= version (default version=3.0.0).
|
||||
"""
|
||||
helm_version = self.get_helm_version()
|
||||
if helm_version is None:
|
||||
self.fail_json(msg="Unable to determine Helm version")
|
||||
|
||||
if (LooseVersion(helm_version) < LooseVersion("3.0.0")) or (
|
||||
LooseVersion(helm_version) >= LooseVersion("4.0.0")
|
||||
):
|
||||
if LooseVersion(helm_version) < LooseVersion(version):
|
||||
self.fail_json(
|
||||
msg="Helm version must be >=3.0.0,<4.0.0, current version is {0}".format(
|
||||
helm_version
|
||||
msg="Helm version must be >= {0}, current version is {1}".format(
|
||||
version, helm_version
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user