diff --git a/changelogs/fragments/280_helm_status.yml b/changelogs/fragments/280_helm_status.yml new file mode 100644 index 00000000..17609eca --- /dev/null +++ b/changelogs/fragments/280_helm_status.yml @@ -0,0 +1,2 @@ +bugfixes: +- helm - return values in check mode when release is not present (https://github.com/ansible-collections/community.kubernetes/issues/280). diff --git a/molecule/default/roles/helm/tasks/tests_chart.yml b/molecule/default/roles/helm/tasks/tests_chart.yml index bb600f9b..a79e2a84 100644 --- a/molecule/default/roles/helm/tasks/tests_chart.yml +++ b/molecule/default/roles/helm/tasks/tests_chart.yml @@ -27,6 +27,24 @@ - install_fail is failed - "'Error: create: failed to create: namespaces \"' + helm_namespace + '\" not found' in install_fail.stderr" +- name: "Install {{ chart_test }} from {{ source }} in check mode" + helm: + binary_path: "{{ helm_binary }}" + name: test + chart_ref: "{{ chart_source }}" + chart_version: "{{ chart_source_version | default(omit) }}" + namespace: "{{ helm_namespace }}" + create_namespace: true + register: install_check_mode + check_mode: true + +- name: "Assert that {{ chart_test }} chart is installed from {{ source }} in check mode" + assert: + that: + - install_check_mode is changed + - install_check_mode.status is defined + - install_check_mode.status.values is defined + - name: "Install {{ chart_test }} from {{ source }}" helm: binary_path: "{{ helm_binary }}" diff --git a/plugins/modules/helm.py b/plugins/modules/helm.py index 9df885c9..16d5d4d5 100644 --- a/plugins/modules/helm.py +++ b/plugins/modules/helm.py @@ -537,10 +537,15 @@ def main(): changed = True if module.check_mode: - check_status = {'values': { - "current": release_status['values'], - "declared": release_values - }} + check_status = { + 'values': { + "current": {}, + "declared": {}, + } + } + if release_status: + check_status['values']['current'] = release_status['values'] + check_status['values']['declared'] = release_status module.exit_json( changed=changed,