From 2a3862b67add3a4e4594312601c8ca57addb737f Mon Sep 17 00:00:00 2001 From: Fors1 Date: Wed, 19 Oct 2022 17:41:37 +0200 Subject: [PATCH] Added possibility to get all values by helm_info module (#531) Added possibility to get all values by helm_info module SUMMARY Parameter get_all_values has been added, which is passed to function get_values. Default is False. Parameter is not required. ISSUE TYPE Feature Pull Request COMPONENT NAME helm_info ADDITIONAL INFORMATION Unfortunately, helm_info module lacks functionality of getting all the values of a helm release, including the default ones. This restricts upgrade and config migration capabilities. Parameter get_all_values has been added. This parameter, if set, adds -a parameter to helm get values call. The parameter is not required and defaults to False, so backwards compability is complied. Reviewed-by: Mike Graves Reviewed-by: Bikouo Aubin --- .../523-helm_info-get-all-values.yaml | 3 +++ plugins/module_utils/helm.py | 5 ++++- plugins/modules/helm_info.py | 18 +++++++++++++++--- 3 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 changelogs/fragments/523-helm_info-get-all-values.yaml diff --git a/changelogs/fragments/523-helm_info-get-all-values.yaml b/changelogs/fragments/523-helm_info-get-all-values.yaml new file mode 100644 index 00000000..e6c7965f --- /dev/null +++ b/changelogs/fragments/523-helm_info-get-all-values.yaml @@ -0,0 +1,3 @@ +--- +minor_changes: + - helm_info - added possibility to get all values by adding get_all_values parameter (https://github.com/ansible-collections/kubernetes.core/pull/531). diff --git a/plugins/module_utils/helm.py b/plugins/module_utils/helm.py index 4e8b9565..6ca44aef 100644 --- a/plugins/module_utils/helm.py +++ b/plugins/module_utils/helm.py @@ -77,7 +77,7 @@ def run_helm(module, command, fails_on_error=True): return rc, out, err -def get_values(module, command, release_name): +def get_values(module, command, release_name, get_all=False): """ Get Values from deployed release """ @@ -86,6 +86,9 @@ def get_values(module, command, release_name): get_command = command + " get values --output=yaml " + release_name + if get_all: + get_command += " -a" + rc, out, err = run_helm(module, get_command) # Helm 3 return "null" string when no values are set if out.rstrip("\n") == "null": diff --git a/plugins/modules/helm_info.py b/plugins/modules/helm_info.py index c0294bc8..dbe650bb 100644 --- a/plugins/modules/helm_info.py +++ b/plugins/modules/helm_info.py @@ -53,6 +53,14 @@ options: type: list elements: str version_added: "2.3.0" + get_all_values: + description: + - Set to C(True) if you want to get all (computed) values of the release. + - When C(False) (default), only user supplied values are returned. + required: false + default: false + type: bool + version_added: "2.4.0" extends_documentation_fragment: - kubernetes.core.helm_common_options """ @@ -145,7 +153,9 @@ def get_release(state, release_name): # Get Release state from deployed release -def get_release_status(module, command, release_name, release_state): +def get_release_status( + module, command, release_name, release_state, get_all_values=False +): list_command = command + " list --output=yaml" valid_release_states = [ @@ -178,7 +188,7 @@ def get_release_status(module, command, release_name, release_state): if release is None: # not install return None - release["values"] = get_values(module, command, release_name) + release["values"] = get_values(module, command, release_name, get_all_values) return release @@ -190,6 +200,7 @@ def argument_spec(): release_name=dict(type="str", required=True, aliases=["name"]), release_namespace=dict(type="str", required=True, aliases=["namespace"]), release_state=dict(type="list", default=[], elements="str"), + get_all_values=dict(type="bool", required=False, default=False), ) ) return arg_spec @@ -209,11 +220,12 @@ def main(): release_name = module.params.get("release_name") release_state = module.params.get("release_state") + get_all_values = module.params.get("get_all_values") helm_cmd_common = get_helm_binary(module) release_status = get_release_status( - module, helm_cmd_common, release_name, release_state + module, helm_cmd_common, release_name, release_state, get_all_values ) if release_status is not None: