summaryrefslogtreecommitdiffstats
path: root/ansible_collections/kubernetes
diff options
context:
space:
mode:
Diffstat (limited to 'ansible_collections/kubernetes')
-rw-r--r--ansible_collections/kubernetes/core/.ansible-lint3
-rw-r--r--ansible_collections/kubernetes/core/.github/stale.yml1
-rw-r--r--ansible_collections/kubernetes/core/.github/workflows/linters.yaml4
-rw-r--r--ansible_collections/kubernetes/core/.github/workflows/unit-tests.yaml1
-rw-r--r--ansible_collections/kubernetes/core/CHANGELOG.rst63
-rw-r--r--ansible_collections/kubernetes/core/FILES.json986
-rw-r--r--ansible_collections/kubernetes/core/MANIFEST.json4
-rw-r--r--ansible_collections/kubernetes/core/Makefile2
-rw-r--r--ansible_collections/kubernetes/core/README.md8
-rw-r--r--ansible_collections/kubernetes/core/changelogs/changelog.yaml91
-rw-r--r--ansible_collections/kubernetes/core/changelogs/config.yaml32
-rw-r--r--ansible_collections/kubernetes/core/docs/kubernetes.core.helm_info_module.rst112
-rw-r--r--ansible_collections/kubernetes/core/docs/kubernetes.core.helm_module.rst205
-rw-r--r--ansible_collections/kubernetes/core/docs/kubernetes.core.helm_plugin_info_module.rst3
-rw-r--r--ansible_collections/kubernetes/core/docs/kubernetes.core.helm_plugin_module.rst35
-rw-r--r--ansible_collections/kubernetes/core/docs/kubernetes.core.helm_repository_module.rst148
-rw-r--r--ansible_collections/kubernetes/core/docs/kubernetes.core.helm_template_module.rst170
-rw-r--r--ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_cluster_info_module.rst24
-rw-r--r--ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_cp_module.rst26
-rw-r--r--ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_drain_module.rst57
-rw-r--r--ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_exec_module.rst40
-rw-r--r--ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_info_module.rst45
-rw-r--r--ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_inventory.rst53
-rw-r--r--ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_json_patch_module.rst26
-rw-r--r--ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_log_module.rst93
-rw-r--r--ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_lookup.rst98
-rw-r--r--ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_module.rst200
-rw-r--r--ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_rollback_module.rst26
-rw-r--r--ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_scale_module.rst28
-rw-r--r--ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_service_module.rst27
-rw-r--r--ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_taint_module.rst5
-rw-r--r--ansible_collections/kubernetes/core/docs/kubernetes.core.kubectl_connection.rst24
-rw-r--r--ansible_collections/kubernetes/core/docs/kubernetes.core.kustomize_lookup.rst121
-rw-r--r--ansible_collections/kubernetes/core/meta/runtime.yml16
-rw-r--r--ansible_collections/kubernetes/core/plugins/action/helm.py13
-rw-r--r--ansible_collections/kubernetes/core/plugins/action/helm_info.py13
-rw-r--r--ansible_collections/kubernetes/core/plugins/action/helm_plugin.py13
-rw-r--r--ansible_collections/kubernetes/core/plugins/action/helm_plugin_info.py13
-rw-r--r--ansible_collections/kubernetes/core/plugins/action/helm_repository.py13
-rw-r--r--ansible_collections/kubernetes/core/plugins/action/k8s.py13
-rw-r--r--ansible_collections/kubernetes/core/plugins/action/k8s_cluster_info.py13
-rw-r--r--ansible_collections/kubernetes/core/plugins/action/k8s_cp.py13
-rw-r--r--ansible_collections/kubernetes/core/plugins/action/k8s_drain.py13
-rw-r--r--ansible_collections/kubernetes/core/plugins/action/k8s_exec.py13
-rw-r--r--ansible_collections/kubernetes/core/plugins/action/k8s_info.py13
-rw-r--r--ansible_collections/kubernetes/core/plugins/action/k8s_json_patch.py (renamed from ansible_collections/kubernetes/core/plugins/action/ks8_json_patch.py)13
-rw-r--r--ansible_collections/kubernetes/core/plugins/action/k8s_log.py13
-rw-r--r--ansible_collections/kubernetes/core/plugins/action/k8s_rollback.py13
-rw-r--r--ansible_collections/kubernetes/core/plugins/action/k8s_scale.py13
-rw-r--r--ansible_collections/kubernetes/core/plugins/action/k8s_service.py13
-rw-r--r--ansible_collections/kubernetes/core/plugins/connection/kubectl.py43
-rw-r--r--ansible_collections/kubernetes/core/plugins/doc_fragments/helm_common_options.py9
-rw-r--r--ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_auth_options.py1
-rw-r--r--ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_delete_options.py3
-rw-r--r--ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_name_options.py1
-rw-r--r--ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_resource_options.py1
-rw-r--r--ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_scale_options.py1
-rw-r--r--ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_state_options.py1
-rw-r--r--ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_wait_options.py1
-rw-r--r--ansible_collections/kubernetes/core/plugins/filter/k8s.py40
-rw-r--r--ansible_collections/kubernetes/core/plugins/inventory/k8s.py26
-rw-r--r--ansible_collections/kubernetes/core/plugins/lookup/k8s.py6
-rw-r--r--ansible_collections/kubernetes/core/plugins/lookup/kustomize.py35
-rw-r--r--ansible_collections/kubernetes/core/plugins/module_utils/ansiblemodule.py4
-rw-r--r--ansible_collections/kubernetes/core/plugins/module_utils/apply.py3
-rw-r--r--ansible_collections/kubernetes/core/plugins/module_utils/client/discovery.py11
-rw-r--r--ansible_collections/kubernetes/core/plugins/module_utils/common.py47
-rw-r--r--ansible_collections/kubernetes/core/plugins/module_utils/copy.py15
-rw-r--r--ansible_collections/kubernetes/core/plugins/module_utils/hashes.py4
-rw-r--r--ansible_collections/kubernetes/core/plugins/module_utils/helm.py16
-rw-r--r--ansible_collections/kubernetes/core/plugins/module_utils/k8s/client.py3
-rw-r--r--ansible_collections/kubernetes/core/plugins/module_utils/k8s/core.py9
-rw-r--r--ansible_collections/kubernetes/core/plugins/module_utils/k8s/resource.py2
-rw-r--r--ansible_collections/kubernetes/core/plugins/module_utils/k8s/runner.py56
-rw-r--r--ansible_collections/kubernetes/core/plugins/module_utils/k8s/service.py89
-rw-r--r--ansible_collections/kubernetes/core/plugins/module_utils/k8s/waiter.py8
-rw-r--r--ansible_collections/kubernetes/core/plugins/module_utils/k8sdynamicclient.py3
-rw-r--r--ansible_collections/kubernetes/core/plugins/module_utils/selector.py1
-rw-r--r--ansible_collections/kubernetes/core/plugins/modules/helm.py168
-rw-r--r--ansible_collections/kubernetes/core/plugins/modules/helm_info.py14
-rw-r--r--ansible_collections/kubernetes/core/plugins/modules/helm_plugin.py5
-rw-r--r--ansible_collections/kubernetes/core/plugins/modules/helm_plugin_info.py6
-rw-r--r--ansible_collections/kubernetes/core/plugins/modules/helm_pull.py2
-rw-r--r--ansible_collections/kubernetes/core/plugins/modules/helm_repository.py18
-rw-r--r--ansible_collections/kubernetes/core/plugins/modules/helm_template.py4
-rw-r--r--ansible_collections/kubernetes/core/plugins/modules/k8s.py41
-rw-r--r--ansible_collections/kubernetes/core/plugins/modules/k8s_cluster_info.py12
-rw-r--r--ansible_collections/kubernetes/core/plugins/modules/k8s_cp.py25
-rw-r--r--ansible_collections/kubernetes/core/plugins/modules/k8s_drain.py57
-rw-r--r--ansible_collections/kubernetes/core/plugins/modules/k8s_exec.py16
-rw-r--r--ansible_collections/kubernetes/core/plugins/modules/k8s_info.py20
-rw-r--r--ansible_collections/kubernetes/core/plugins/modules/k8s_json_patch.py7
-rw-r--r--ansible_collections/kubernetes/core/plugins/modules/k8s_log.py14
-rw-r--r--ansible_collections/kubernetes/core/plugins/modules/k8s_rollback.py6
-rw-r--r--ansible_collections/kubernetes/core/plugins/modules/k8s_scale.py16
-rw-r--r--ansible_collections/kubernetes/core/plugins/modules/k8s_service.py18
-rw-r--r--ansible_collections/kubernetes/core/plugins/modules/k8s_taint.py7
-rw-r--r--ansible_collections/kubernetes/core/requirements.txt2
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/helm/defaults/main.yml2
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/helm/library/helm_test_pending.py130
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/helm/library/helm_test_version.py4
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/helm/playbook.yaml7
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/helm/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/helm/tasks/run_test.yml6
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/helm/tasks/test_helm_reuse_values.yml75
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/helm/tasks/test_helm_uninstall.yml31
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/helm/tasks/test_helm_with_space_into_chart_name.yml58
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/files/test-chart-reuse-values/Chart.yaml24
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/files/test-chart-reuse-values/templates/configmap.yaml7
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/files/test-chart-reuse-values/values.yaml2
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/playbook.yaml7
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/helm_diff/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/tasks/main.yml45
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/tasks/reuse_values.yml93
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/helm_kubeconfig/meta/main.yml1
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/helm_kubeconfig/playbook.yaml7
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/helm_kubeconfig/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/helm_plugin/playbook.yaml7
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/helm_plugin/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/helm_pull/playbook.yaml7
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/helm_pull/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/helm_repository/playbook.yaml7
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/helm_repository/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/helm_set_values/meta/main.yml1
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/helm_set_values/playbook.yaml7
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/helm_set_values/runme.sh5
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/inventory_k8s/runme.sh1
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_access_review/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_access_review/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_append_hash/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_append_hash/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_apply/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_apply/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_check_mode/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_check_mode/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_cluster_info/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_cluster_info/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_copy/library/k8s_create_file.py93
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_copy/library/kubectl_file_compare.py5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_copy/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_copy/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_copy/tasks/test_copy_large_file.yml15
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_crd/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_crd/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_delete/files/deployments.yaml70
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_delete/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_delete/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_delete/tasks/main.yml71
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_diff/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_diff/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_drain/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_drain/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_drain/tasks/main.yml85
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_exec/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_exec/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_full/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_full/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_gc/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_gc/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_generate_name/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_generate_name/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_hide_fields/aliases3
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_hide_fields/defaults/main.yml12
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_hide_fields/meta/main.yml2
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_hide_fields/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_hide_fields/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_hide_fields/tasks/main.yml108
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_info/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_info/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_info/tasks/wait.yml2
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_json_patch/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_json_patch/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_label_selectors/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_label_selectors/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_lists/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_lists/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_log/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_log/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_manifest_url/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_manifest_url/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_merge_type/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_merge_type/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_patched/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_patched/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_rollback/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_rollback/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_scale/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_scale/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_scale/tasks/main.yml65
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_taint/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_taint/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_template/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_template/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_user_impersonation/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_user_impersonation/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_validate/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_validate/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_validate/tasks/main.yml1
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/k8s_waiter/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/k8s_waiter/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/lookup_k8s/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/lookup_k8s/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/lookup_kustomize/playbook.yaml6
-rwxr-xr-xansible_collections/kubernetes/core/tests/integration/targets/lookup_kustomize/runme.sh5
-rw-r--r--ansible_collections/kubernetes/core/tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentials.py2
-rw-r--r--ansible_collections/kubernetes/core/tests/sanity/ignore-2.10.txt616
-rw-r--r--ansible_collections/kubernetes/core/tests/sanity/ignore-2.11.txt592
-rw-r--r--ansible_collections/kubernetes/core/tests/sanity/ignore-2.13.txt32
-rw-r--r--ansible_collections/kubernetes/core/tests/sanity/ignore-2.14.txt2
-rw-r--r--ansible_collections/kubernetes/core/tests/sanity/ignore-2.15.txt2
-rw-r--r--ansible_collections/kubernetes/core/tests/sanity/ignore-2.16.txt2
-rw-r--r--ansible_collections/kubernetes/core/tests/sanity/ignore-2.17.txt2
-rw-r--r--ansible_collections/kubernetes/core/tests/sanity/ignore-2.18.txt (renamed from ansible_collections/kubernetes/core/tests/sanity/ignore-2.12.txt)19
-rw-r--r--ansible_collections/kubernetes/core/tests/sanity/ignore-2.9.txt613
-rw-r--r--ansible_collections/kubernetes/core/tests/unit/action/test_remove_omit.py1
-rw-r--r--ansible_collections/kubernetes/core/tests/unit/conftest.py5
-rw-r--r--ansible_collections/kubernetes/core/tests/unit/module_utils/test_apply.py2
-rw-r--r--ansible_collections/kubernetes/core/tests/unit/module_utils/test_client.py8
-rw-r--r--ansible_collections/kubernetes/core/tests/unit/module_utils/test_core.py13
-rw-r--r--ansible_collections/kubernetes/core/tests/unit/module_utils/test_discoverer.py12
-rw-r--r--ansible_collections/kubernetes/core/tests/unit/module_utils/test_helm.py95
-rw-r--r--ansible_collections/kubernetes/core/tests/unit/module_utils/test_runner.py5
-rw-r--r--ansible_collections/kubernetes/core/tests/unit/module_utils/test_service.py4
-rw-r--r--ansible_collections/kubernetes/core/tests/unit/module_utils/test_waiter.py9
-rw-r--r--ansible_collections/kubernetes/core/tests/unit/modules/test_helm_template_module.py3
-rw-r--r--ansible_collections/kubernetes/core/tests/unit/modules/test_module_helm.py45
-rw-r--r--ansible_collections/kubernetes/core/tox.ini36
227 files changed, 4402 insertions, 3048 deletions
diff --git a/ansible_collections/kubernetes/core/.ansible-lint b/ansible_collections/kubernetes/core/.ansible-lint
index f139e6a02..021b91886 100644
--- a/ansible_collections/kubernetes/core/.ansible-lint
+++ b/ansible_collections/kubernetes/core/.ansible-lint
@@ -1,7 +1,6 @@
---
profile: production
-skip_list:
- - meta-runtime[unsupported-version]
+
exclude_paths:
- tests/integration
- tests/sanity
diff --git a/ansible_collections/kubernetes/core/.github/stale.yml b/ansible_collections/kubernetes/core/.github/stale.yml
index 4c7afd27e..230cf78a6 100644
--- a/ansible_collections/kubernetes/core/.github/stale.yml
+++ b/ansible_collections/kubernetes/core/.github/stale.yml
@@ -12,6 +12,7 @@ daysUntilClose: 30
# Only issues or pull requests with all of these labels are check if stale.
# Defaults to `[]` (disabled)
onlyLabels: []
+
# Issues or Pull Requests with these labels will never be considered stale. Set
# to `[]` to disable
exemptLabels:
diff --git a/ansible_collections/kubernetes/core/.github/workflows/linters.yaml b/ansible_collections/kubernetes/core/.github/workflows/linters.yaml
index 589bfa786..33c819d59 100644
--- a/ansible_collections/kubernetes/core/.github/workflows/linters.yaml
+++ b/ansible_collections/kubernetes/core/.github/workflows/linters.yaml
@@ -10,7 +10,7 @@ on:
- main
- stable-*
tags:
- - "*"
+ - '*'
jobs:
linters:
@@ -21,4 +21,4 @@ jobs:
- uses: actions/checkout@v4
- name: Run ansible-lint
- uses: ansible/ansible-lint@v6.21.0
+ uses: ansible/ansible-lint@v24.2.3
diff --git a/ansible_collections/kubernetes/core/.github/workflows/unit-tests.yaml b/ansible_collections/kubernetes/core/.github/workflows/unit-tests.yaml
index 3f4ed52cd..19c8519b2 100644
--- a/ansible_collections/kubernetes/core/.github/workflows/unit-tests.yaml
+++ b/ansible_collections/kubernetes/core/.github/workflows/unit-tests.yaml
@@ -1,4 +1,3 @@
----
name: Unit tests
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
diff --git a/ansible_collections/kubernetes/core/CHANGELOG.rst b/ansible_collections/kubernetes/core/CHANGELOG.rst
index 1cad02814..f93c131fc 100644
--- a/ansible_collections/kubernetes/core/CHANGELOG.rst
+++ b/ansible_collections/kubernetes/core/CHANGELOG.rst
@@ -4,26 +4,79 @@ Kubernetes Collection Release Notes
.. contents:: Topics
-v2.4.2
+v3.1.0
======
Release Summary
---------------
-fix resource discovery when complex subresources present
+This release comes with some bugfixes and documentation updates. It also adds new features to the kubectl connection plugin and the kustomize lookup plugin.
+
+Minor Changes
+-------------
+
+- kubectl - added support of local enviroment variable that will be used for kubectl and may be requried for establishing connections ifself (https://github.com/ansible-collections/kubernetes.core/pull/702)
+- kustomize - new parameter added to --enable-helm (https://github.com/ansible-collections/kubernetes.core/issues/568)
+
+Bugfixes
+--------
+
+- helm - expand kubeconfig path with user's home directory for consistency with k8s
+- k8s_json_patch - rename action symlink to ensure k8s action plugin is used (https://github.com/ansible-collections/kubernetes.core/pull/652).
+
+v3.0.1
+======
+
+Release Summary
+---------------
+
+This release fixes issue with resources discovery when complex subresources are present, and fixes issues with `reuse-values` parameter for helm module.
Bugfixes
--------
- Resolve Collections util resource discovery fails when complex subresources present (https://github.com/ansible-collections/kubernetes.core/pull/676).
+- align `helmdiff_check()` function commandline rendering with the `deploy()` function (https://github.com/ansible-collections/kubernetes.core/pull/670).
+- helm - use ``reuse-values`` when running ``helm diff`` command (https://github.com/ansible-collections/kubernetes.core/issues/680).
+- integrations test helm_kubeconfig - set helm version to v3.10.3 to avoid incompatability with new bitnami charts (https://github.com/ansible-collections/kubernetes.core/pull/670).
-v2.4.1
+v3.0.0
======
Release Summary
---------------
-The kubernetes.core 2.4.1 release includes several trivial bug fixes related to code sanity.
+This major release drops support for ansible-core versions lower than 2.14, Python versions lower than 3.9 and updates python kubernetes library to 24.2.0, helm/kind-action to 1.8.0, kubernetes >= 1.24, along with bug fixes and minor changes.
+
+Minor Changes
+-------------
+
+- helm - add ``reuse_values`` and ``reset_values`` support to helm module (https://github.com/ansible-collections/kubernetes.core/issues/394).
+- k8s - add new option ``delete_all`` to support deletion of all resources when state is set to ``absent``. (https://github.com/ansible-collections/kubernetes.core/issues/504)
+- k8s, k8s_info - add a hidden_fields option to allow fields to be hidden in the results of k8s and k8s_info
+- k8s_drain - add ability to filter the list of pods to be drained by a pod label selector (https://github.com/ansible-collections/kubernetes.core/issues/474).
+
+Breaking Changes / Porting Guide
+--------------------------------
+
+- Remove support for ansible-core < 2.14
+- Update python kubernetes library to 24.2.0, helm/kind-action to 1.8.0, kubernetes >= 1.24.
+
+Deprecated Features
+-------------------
+
+- k8s - the ``k8s`` inventory plugin has been deprecated and will be removed in release 4.0.0 (https://github.com/ansible-collections/kubernetes.core/issues/31).
+
+Bugfixes
+--------
+
+- helm - Put the chart_ref into quotes when running ``helm show chart``, ``helm upgrade`` and ``helm dependency update`` commands (https://github.com/ansible-collections/kubernetes.core/issues/653).
+- helm - delete temporary file created when deploying chart with option ``release_values`` set (https://github.com/ansible-collections/kubernetes.core/issues/530).
+- helm - fix issue occurring when uninstalling chart with statues others than ``deployed`` (https://github.com/ansible-collections/kubernetes.core/issues/319).
+- helm - fix post_renderer argument breaking the helm deploy_command (https://github.com/ansible-collections/kubernetes.core/pull/586).
+- helm - use post_renderer when checking ``changed`` status for a helm release (https://github.com/ansible-collections/kubernetes.core/pull/588).
+- k8s_scale - clean handling of ResourceTimeout exception (https://github.com/ansible-collections/kubernetes.core/issues/583).
+- k8s_scale - fix issue when scaling StatefulSets with ``updateStrategy=OnDelete`` (https://github.com/ansible-collections/kubernetes.core/issues/579).
v2.4.0
======
@@ -116,7 +169,7 @@ v2.3.1
Bugfixes
--------
-- Catch exception raised when the process is waiting for resources (https://github.com/ansible-collections/kubernetes.core/issues/407).
+- Catch expectation raised when the process is waiting for resources (https://github.com/ansible-collections/kubernetes.core/issues/407).
- Remove `omit` placeholder when defining resource using template parameter (https://github.com/ansible-collections/kubernetes.core/issues/431).
- k8s - fix the issue when trying to delete resources using label_selectors options (https://github.com/ansible-collections/kubernetes.core/issues/433).
- k8s_cp - fix issue when using parameter local_path with file on managed node. (https://github.com/ansible-collections/kubernetes.core/issues/421).
diff --git a/ansible_collections/kubernetes/core/FILES.json b/ansible_collections/kubernetes/core/FILES.json
index df7a884ae..194bc9a29 100644
--- a/ansible_collections/kubernetes/core/FILES.json
+++ b/ansible_collections/kubernetes/core/FILES.json
@@ -46,7 +46,7 @@
"name": ".github/workflows/linters.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "079c550400fd4af5ae0bb846395300fb193163bcc9269a572bafd3e4bc8b2e06",
+ "chksum_sha256": "3da81e6c1c8702776456e17451f8a72e63311767231f93ae7d785bf56b11f1e7",
"format": 1
},
{
@@ -60,7 +60,7 @@
"name": ".github/workflows/unit-tests.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "75fa5cf2ecf4f35b5b297c33fd1bd4ac17fcfff8061c784dcb4999190b7c1467",
+ "chksum_sha256": "bc13d9a63f26298cf1d165db4b0850e207bc7ac59c46f30cc8eeb0a9b273abf5",
"format": 1
},
{
@@ -74,7 +74,7 @@
"name": ".github/stale.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "aa6e60574b9fcbe36ec409ac30cc81977a2d97f2ee40335144ca5303cca983d3",
+ "chksum_sha256": "923b49f6fb8b325ea890d05a42537b3f9c5aaf26b64a704c0fef4b696aa6a4bb",
"format": 1
},
{
@@ -88,14 +88,14 @@
"name": "changelogs/changelog.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3393f1a989678a4b8583a8dcc30ff7d2c15374ebf48b676539a18ccc6fa5ec00",
+ "chksum_sha256": "a9dceb8816711232f8abe7c4507257d879f61468e572b7010c3f8f1f9f9a8bf2",
"format": 1
},
{
"name": "changelogs/config.yaml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d32a71362725ba6d9cc3d550e9b7f5f338c6692e7840c052c87263d069a1afc4",
+ "chksum_sha256": "2903835efadf1f03f8a05ba8428d1530259e322d039dcd3edbe707bcaea82e3d",
"format": 1
},
{
@@ -179,28 +179,28 @@
"name": "docs/kubernetes.core.helm_info_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "89adae8f40c2da10c350d9cfc1b3844104f9c8d51da2fbf13b9301cad91b5a96",
+ "chksum_sha256": "0e38e2d6b68d639a9975cdc22f2276174c31293921f0b4b607e59b887410c805",
"format": 1
},
{
"name": "docs/kubernetes.core.helm_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a8e5c2ca7aa70bca9641dd290814de18d2ade93939cdbae64a7b7484a5418565",
+ "chksum_sha256": "f72ef09fa5348f0277f6c5ed28d858814855ae75ae926d7b0aaca203727576a0",
"format": 1
},
{
"name": "docs/kubernetes.core.helm_plugin_info_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "51ba9800d8f92207fb2580158d75a05c942882fe237dfdbceb1b16014e13ef5d",
+ "chksum_sha256": "037b18c3a69faced12b6da2d709bb187d425d158bd83096038069450d9587fe8",
"format": 1
},
{
"name": "docs/kubernetes.core.helm_plugin_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b9ed32e51ca564332c6c070793ed4950b9c52394f62f37416658988d5d16efd0",
+ "chksum_sha256": "aa30739edee6b5d56b381675fad5664f907b6552629c898ee7cf63f06e813aa4",
"format": 1
},
{
@@ -214,126 +214,126 @@
"name": "docs/kubernetes.core.helm_repository_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4c7b2efcf6832cf1b53e9fec808449ae5ea973306ae2a3eeeed4ea7405327e06",
+ "chksum_sha256": "a9c1e4bbdbfe5fb137c9e019ae87b62332b0d2190a9686398a317420bed66f7f",
"format": 1
},
{
"name": "docs/kubernetes.core.helm_template_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "70f91cecfcc664c8ac35b58ce351fbf2a8f3051608580b180c830ca617b4f856",
+ "chksum_sha256": "2394fafdd2cf7b174cf373a400b4880009940b25b60a7fa57bbda34a5b7a9f48",
"format": 1
},
{
"name": "docs/kubernetes.core.k8s_cluster_info_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "061da0cf6ce62e3ba49491f11533d76e4dc8073ca8a9dbee2d3c981ad56f3d70",
+ "chksum_sha256": "2c71c7e8d1eddb627e24c25844c90ed7ec4c60d9fd28dfec1b261ec60bc0e172",
"format": 1
},
{
"name": "docs/kubernetes.core.k8s_cp_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3cb1cc05abdeaa923c87b17cff8b7c6d2aab7273b67ef6879f594cfc5ec1489d",
+ "chksum_sha256": "f405574e406eb7bd6961cb99f7173c795a256c13bbe24fa27d57c78fa2e4a012",
"format": 1
},
{
"name": "docs/kubernetes.core.k8s_drain_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b8e412c8036aa76e0ae785941b8bf317ab71296d910da6750b3793271607533c",
+ "chksum_sha256": "b60655b9ffca9e7e95cc339be18c857a8bcdd778c84b03cc936dc9aea6de2a3b",
"format": 1
},
{
"name": "docs/kubernetes.core.k8s_exec_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5b0c29c1755d04f7be9391da36a1803b6040f18fe7efdd72a14051ad758ed9e5",
+ "chksum_sha256": "962734517240c963fe8508901aa9aae5a0daf7353b2a92f1f7378da2f101071e",
"format": 1
},
{
"name": "docs/kubernetes.core.k8s_info_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d26adc890f69739b4744ad88a1757cbf68fca96cf9b1394a7614ffc6760732b8",
+ "chksum_sha256": "eedd93d93fea7fcacae736db7068b5002094d6dbd81714783a2e310e551330e4",
"format": 1
},
{
"name": "docs/kubernetes.core.k8s_inventory.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f0e7072fe1ebf5e12870ba93e0de9bb571f3538322d60ee6925ac025023b4ff4",
+ "chksum_sha256": "6d970818f092674dec18fdbbe88cce8c212ee6764a2d9682ccd16e82e6696023",
"format": 1
},
{
"name": "docs/kubernetes.core.k8s_json_patch_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b628ee67825e39bf7517eae54e7c322968719807cf349ed650674c99c334607a",
+ "chksum_sha256": "b0bf0b27d352e9949d63e6fb51b95571aa88b6e9c462f9e6c0cc220ce0bdb42d",
"format": 1
},
{
"name": "docs/kubernetes.core.k8s_log_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "407fd3cf0c037d5a5226c554f5d318e549b9e9fb862b9835d958612a0f515f27",
+ "chksum_sha256": "1047340361d2224a1db230a9aa2ec5301a0d8b1393477f026ec95c6863b90d79",
"format": 1
},
{
"name": "docs/kubernetes.core.k8s_lookup.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fac344797caf1dcdf99adeec0a0d850d1fd74fbf46f3a226b52931f1fa6bca0d",
+ "chksum_sha256": "32af712f441235a30dda8cb7ca68212173056c3e29a6040a0b2a354c393e7874",
"format": 1
},
{
"name": "docs/kubernetes.core.k8s_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "890765b7b747dc2762b0683c704fec4d18ddac7daccb68e28a75cf9f79a47893",
+ "chksum_sha256": "96a24617bda42364e46c8489ae6e5e602a6707498bc46f3316f3c7ccf11a741a",
"format": 1
},
{
"name": "docs/kubernetes.core.k8s_rollback_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9fd9867dcd6be0868d7fb419b9ce930f6ecbbbf66af9e4ec22ba3c3ce8151d5c",
+ "chksum_sha256": "32007424eb6aefa7bfaee457fa4f7d00938bc104582ee96fa4e8009772403ddb",
"format": 1
},
{
"name": "docs/kubernetes.core.k8s_scale_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "89d2cb58fcea0081652fd6a72f2370900cd9cd54b4444cc6a1cced61d505127e",
+ "chksum_sha256": "7b97791e906be358e9b64d6237920a02401b39e6b6f3bd9ef426c8bd5bc731aa",
"format": 1
},
{
"name": "docs/kubernetes.core.k8s_service_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a766b619b69267f29cab51baf780de200fa7fa2377fcda92585657e1dc849d0f",
+ "chksum_sha256": "d90f729010c2b0dd322a58d64c180ececebbc78fde26c21602d6bdd9b2e02a2f",
"format": 1
},
{
"name": "docs/kubernetes.core.k8s_taint_module.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d64a4250bdca5ac386fa4539fa837c7d89a26e63d24fc01777d1f2125b70f160",
+ "chksum_sha256": "7b8e2d98d5d82128f748096527150aaaf74eaab226c6af9f8d4277265577adfc",
"format": 1
},
{
"name": "docs/kubernetes.core.kubectl_connection.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7cb93572ffd283a453b53bd8d100ce0949a6a6cdce850c5deecd22cafa0eb4e8",
+ "chksum_sha256": "9286d253650a63d78908c1525a78cca5adacdbbddbd41fc713302d3683724a9a",
"format": 1
},
{
"name": "docs/kubernetes.core.kustomize_lookup.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b6006ecdeaec488a59651653d7c48c0f4d156f49fc3a12409f75a187eafb57b7",
+ "chksum_sha256": "2d5d4c59492231f560b574716592e02395e332f9b3c922d09ce1870a22d91f89",
"format": 1
},
{
@@ -347,7 +347,7 @@
"name": "meta/runtime.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "84ea6841db16c04017807462ccb97131474b0a11d75d7b70233f3ae712983121",
+ "chksum_sha256": "7ea3ff6f907ecc449cbc9f2a327838184e129685588d9b9f4636c6448b35a7c8",
"format": 1
},
{
@@ -368,112 +368,112 @@
"name": "plugins/action/helm.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1c8c0b75ee4f8568f7eb0aa93fbf0b1daeb8eb1ffe9d92e8cfc76a4e5d47cc20",
+ "chksum_sha256": "bce106e52469f1425d3119d613db91e18b5c4767dd90e1e22b189e665ccd351a",
"format": 1
},
{
"name": "plugins/action/helm_info.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1c8c0b75ee4f8568f7eb0aa93fbf0b1daeb8eb1ffe9d92e8cfc76a4e5d47cc20",
+ "chksum_sha256": "bce106e52469f1425d3119d613db91e18b5c4767dd90e1e22b189e665ccd351a",
"format": 1
},
{
"name": "plugins/action/helm_plugin.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1c8c0b75ee4f8568f7eb0aa93fbf0b1daeb8eb1ffe9d92e8cfc76a4e5d47cc20",
+ "chksum_sha256": "bce106e52469f1425d3119d613db91e18b5c4767dd90e1e22b189e665ccd351a",
"format": 1
},
{
"name": "plugins/action/helm_plugin_info.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1c8c0b75ee4f8568f7eb0aa93fbf0b1daeb8eb1ffe9d92e8cfc76a4e5d47cc20",
+ "chksum_sha256": "bce106e52469f1425d3119d613db91e18b5c4767dd90e1e22b189e665ccd351a",
"format": 1
},
{
"name": "plugins/action/helm_repository.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1c8c0b75ee4f8568f7eb0aa93fbf0b1daeb8eb1ffe9d92e8cfc76a4e5d47cc20",
+ "chksum_sha256": "bce106e52469f1425d3119d613db91e18b5c4767dd90e1e22b189e665ccd351a",
"format": 1
},
{
"name": "plugins/action/k8s.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1c8c0b75ee4f8568f7eb0aa93fbf0b1daeb8eb1ffe9d92e8cfc76a4e5d47cc20",
+ "chksum_sha256": "bce106e52469f1425d3119d613db91e18b5c4767dd90e1e22b189e665ccd351a",
"format": 1
},
{
"name": "plugins/action/k8s_cluster_info.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1c8c0b75ee4f8568f7eb0aa93fbf0b1daeb8eb1ffe9d92e8cfc76a4e5d47cc20",
+ "chksum_sha256": "bce106e52469f1425d3119d613db91e18b5c4767dd90e1e22b189e665ccd351a",
"format": 1
},
{
"name": "plugins/action/k8s_cp.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1c8c0b75ee4f8568f7eb0aa93fbf0b1daeb8eb1ffe9d92e8cfc76a4e5d47cc20",
+ "chksum_sha256": "bce106e52469f1425d3119d613db91e18b5c4767dd90e1e22b189e665ccd351a",
"format": 1
},
{
"name": "plugins/action/k8s_drain.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1c8c0b75ee4f8568f7eb0aa93fbf0b1daeb8eb1ffe9d92e8cfc76a4e5d47cc20",
+ "chksum_sha256": "bce106e52469f1425d3119d613db91e18b5c4767dd90e1e22b189e665ccd351a",
"format": 1
},
{
"name": "plugins/action/k8s_exec.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1c8c0b75ee4f8568f7eb0aa93fbf0b1daeb8eb1ffe9d92e8cfc76a4e5d47cc20",
+ "chksum_sha256": "bce106e52469f1425d3119d613db91e18b5c4767dd90e1e22b189e665ccd351a",
"format": 1
},
{
- "name": "plugins/action/k8s_log.py",
+ "name": "plugins/action/k8s_json_patch.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1c8c0b75ee4f8568f7eb0aa93fbf0b1daeb8eb1ffe9d92e8cfc76a4e5d47cc20",
+ "chksum_sha256": "bce106e52469f1425d3119d613db91e18b5c4767dd90e1e22b189e665ccd351a",
"format": 1
},
{
- "name": "plugins/action/k8s_rollback.py",
+ "name": "plugins/action/k8s_log.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1c8c0b75ee4f8568f7eb0aa93fbf0b1daeb8eb1ffe9d92e8cfc76a4e5d47cc20",
+ "chksum_sha256": "bce106e52469f1425d3119d613db91e18b5c4767dd90e1e22b189e665ccd351a",
"format": 1
},
{
- "name": "plugins/action/k8s_scale.py",
+ "name": "plugins/action/k8s_rollback.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1c8c0b75ee4f8568f7eb0aa93fbf0b1daeb8eb1ffe9d92e8cfc76a4e5d47cc20",
+ "chksum_sha256": "bce106e52469f1425d3119d613db91e18b5c4767dd90e1e22b189e665ccd351a",
"format": 1
},
{
- "name": "plugins/action/k8s_service.py",
+ "name": "plugins/action/k8s_scale.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1c8c0b75ee4f8568f7eb0aa93fbf0b1daeb8eb1ffe9d92e8cfc76a4e5d47cc20",
+ "chksum_sha256": "bce106e52469f1425d3119d613db91e18b5c4767dd90e1e22b189e665ccd351a",
"format": 1
},
{
- "name": "plugins/action/ks8_json_patch.py",
+ "name": "plugins/action/k8s_service.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1c8c0b75ee4f8568f7eb0aa93fbf0b1daeb8eb1ffe9d92e8cfc76a4e5d47cc20",
+ "chksum_sha256": "bce106e52469f1425d3119d613db91e18b5c4767dd90e1e22b189e665ccd351a",
"format": 1
},
{
"name": "plugins/action/k8s_info.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1c8c0b75ee4f8568f7eb0aa93fbf0b1daeb8eb1ffe9d92e8cfc76a4e5d47cc20",
+ "chksum_sha256": "bce106e52469f1425d3119d613db91e18b5c4767dd90e1e22b189e665ccd351a",
"format": 1
},
{
@@ -487,7 +487,7 @@
"name": "plugins/connection/kubectl.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5895e521f261d2172764464c56e886ce61652bb8f9d0b88b51afb909da5d159f",
+ "chksum_sha256": "08e05362470ad358e2f8336bf2d47bb91e841d4fb070e807b2e675b7a9ffeab2",
"format": 1
},
{
@@ -508,56 +508,56 @@
"name": "plugins/doc_fragments/helm_common_options.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a66b232cb2fa3c8a28498bd30389ca8f4ffd7ae97b70bfe601788d46779f9cb3",
+ "chksum_sha256": "9011bc4019bae2731ccc0c24951b02843d3d5abe41c0c55e463bbe75b2b7a166",
"format": 1
},
{
"name": "plugins/doc_fragments/k8s_auth_options.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8d189a6ab2d0937cd572d2510823ecbe1a9742d5bed23a6406eae926aa1f7f7d",
+ "chksum_sha256": "5d4b12c4a93bffc9dd043c4bf3ed2eb4ec2b0f45aca28efcaaad02658ce11fe6",
"format": 1
},
{
"name": "plugins/doc_fragments/k8s_delete_options.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3e47df1b0ac656ad1b756b0628aeef1bbd47baa2dfbff643fd151467d0d18c97",
+ "chksum_sha256": "cf77963591ffb56b479367b4de340bf2b3b2af4f6aa1eb807e3241129e44f016",
"format": 1
},
{
"name": "plugins/doc_fragments/k8s_name_options.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "293ef90ac4a1ad52677f22c747dda0d9e740c1a8e8c1fc783d110c2bbb35dc76",
+ "chksum_sha256": "47bad02cd0e7eec3382811941252a3668517ec70409ecdacd9ce53f63f5fe8cb",
"format": 1
},
{
"name": "plugins/doc_fragments/k8s_resource_options.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "30875d624f093085908955fb0ff53ab73602e5dffa66cbcba32de0a3e48785b3",
+ "chksum_sha256": "74ea7ea72060387c19772261f7451f20e41953fd9ba4ac7fe23ef49df37094f9",
"format": 1
},
{
"name": "plugins/doc_fragments/k8s_scale_options.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "81ae1fe5c034a916cba915be2a35406d56340ead6a3189963911ebc93796d322",
+ "chksum_sha256": "1b86cf18b42651786e99d125bcc1bb0f0c3c67c954d19b548768389b6ea4ac30",
"format": 1
},
{
"name": "plugins/doc_fragments/k8s_state_options.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "569e138705ec9b5bf2ba429cc0e71e87e4459cd1289470fb71e7436cd949f1c3",
+ "chksum_sha256": "8c3dc917d1da488bb1807a5c6b4e2a2fc50d45324ebbf0052207a4b964ec8bc8",
"format": 1
},
{
"name": "plugins/doc_fragments/k8s_wait_options.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e3c86e0272f62fbfc49c1c5eeeb4d7c61d9726bcec5e8965ae5c77edcab97296",
+ "chksum_sha256": "bc9a393a2fa34fba1b4237a0087f1d0a9b3e0e9512fb5ba8a1c59688e59bdced",
"format": 1
},
{
@@ -571,7 +571,7 @@
"name": "plugins/filter/k8s.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "62fc604b3650ef08387c5127ec9f107d3e0bbd5019a3dcee49fdc77558bb59d1",
+ "chksum_sha256": "1732300a6c48e6e6e678ea2b1dffb4a22779c6c7fe04f9fe64fd397df08af7c1",
"format": 1
},
{
@@ -592,7 +592,7 @@
"name": "plugins/inventory/k8s.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "69faaca6259bbc1850c5efa053b84de457efc8b32e1ee8ce13cb0b815c8e52c8",
+ "chksum_sha256": "27d1adb4227f2c07c9bd79d11909df1a7f577ad698340d5c9e956cf1b9e47293",
"format": 1
},
{
@@ -606,14 +606,14 @@
"name": "plugins/lookup/k8s.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2b24cf87c1463e091f41879aa2117b532dc481b74f7e9999cd049cdb5a8ee1ac",
+ "chksum_sha256": "71dec0a63377e83cd66fe74cf88464ee1c78b498af6f369e8fb3e171a92d2ae7",
"format": 1
},
{
"name": "plugins/lookup/kustomize.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "cf1be05e740300ccb2d9a64f89024f8e645e9a3f33d921abd4c9e7e139645785",
+ "chksum_sha256": "b8b6ca236d007ce4ca03bf1e31ec5e5a10c360a8cdff5933006ab23b21948e8f",
"format": 1
},
{
@@ -634,7 +634,7 @@
"name": "plugins/module_utils/client/discovery.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f9af2ebc4962d187531400fb80e34168c9d35412b7045c8c27ab1330d59852cf",
+ "chksum_sha256": "d30f9c5a9c90972264289b0e5cee95effe9319595e23aeaa4e079afeb716338a",
"format": 1
},
{
@@ -655,14 +655,14 @@
"name": "plugins/module_utils/k8s/client.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f7428c830e53238c9682715651d3a125d172bea223970d851cc823291bb84c17",
+ "chksum_sha256": "0056d2093cab9094eaa5cbeccd9256317f61f5c50d5044b2baf30dc5ba94fd97",
"format": 1
},
{
"name": "plugins/module_utils/k8s/core.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "55a0a8cceda4e9ca604fe724af5d6cf82d9e382d138b110ac5d7ba9b073549d5",
+ "chksum_sha256": "a54455932f24cd7580024e2058e290414fcad3b597332d4b0627b8898b3b95c3",
"format": 1
},
{
@@ -676,28 +676,28 @@
"name": "plugins/module_utils/k8s/resource.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "bf5d3132b51a4b725c11cd9a69bc75274663059234b56a6231271bf8c23bcaef",
+ "chksum_sha256": "78f2e91fa52267f93d7f72191bdddcffaf92c9a9978c5c923f8f5912f3691fb6",
"format": 1
},
{
"name": "plugins/module_utils/k8s/runner.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9d1a9e22e30f2a1faf0d84687d5181517fda5844c97003e0d24e4b024d7412dd",
+ "chksum_sha256": "b2f5e05be622a194b431c8dc0ad28b3dc88e6c6d5a0143d77ed74438c4fc53f1",
"format": 1
},
{
"name": "plugins/module_utils/k8s/service.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "9f3c774651fac14bfd191bff16e5c374049dd434880d63ca9a7a1b4dbde7bd7b",
+ "chksum_sha256": "ecf3dbe6b2e55701a62ac8796d4b1fc5174673d89a0bc892c4472a61c2278c0e",
"format": 1
},
{
"name": "plugins/module_utils/k8s/waiter.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c5c11459d7e02516b111cb64a5e31cf3afa1d9a9ffadfbc87ab477d5684d49d7",
+ "chksum_sha256": "00aaf46f557298aec65db2efefc1f749753136e37d4d58de1ec52d1ef0f960e6",
"format": 1
},
{
@@ -718,14 +718,14 @@
"name": "plugins/module_utils/ansiblemodule.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e6a42da6322ac61fc8c0d86a9b60c4ad4255a2ba19d0c69a139c80ace2773e4f",
+ "chksum_sha256": "cde56b067dc7815d559ff8eb2335ad50ef43fc92fcc50812b44c61fb4b854ba6",
"format": 1
},
{
"name": "plugins/module_utils/apply.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d13b411d95075d9aca971d7c4badd496a981011903d08f93ae0cd62f73968d10",
+ "chksum_sha256": "769c127e1015586d75ccab76ab1e56dcd286de42073074c15c2b0472e0956e4c",
"format": 1
},
{
@@ -739,14 +739,14 @@
"name": "plugins/module_utils/common.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1ba4d32d44ef9366cb5f181a91692f269aac5f4ccc4c971237ac720a1c47cbe3",
+ "chksum_sha256": "b90c5e00a256b1a968b03ae1fc119a11b11a50cffc4cfc19c8609a4c1d6ce9fd",
"format": 1
},
{
"name": "plugins/module_utils/copy.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e225cb19d811f0eb677f624db73f65ff5ead23e3701b7a266a9d5d03a3e99151",
+ "chksum_sha256": "aec7f7effed09d03fe2b8b4218e51d6b3c921a01c05e0c2d26a58e90e35f708a",
"format": 1
},
{
@@ -760,14 +760,14 @@
"name": "plugins/module_utils/hashes.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8495aceb22009f8529c1f5a82f4c338d9a727d23d0a85f7386183609c9e34c5c",
+ "chksum_sha256": "a8ccce48ad134285d61384ea7598c1efdbd9ae4222e0566d154d86ecbfa3a02e",
"format": 1
},
{
"name": "plugins/module_utils/helm.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "03c4cccb138537a8291f32025575c7ccc1a6b903b84a9f492851a1e2d07c2a07",
+ "chksum_sha256": "d38bca9cd97f41fad4d4d41d9f174b9e31c54924ead73b36b81ba273ec45f87f",
"format": 1
},
{
@@ -781,14 +781,14 @@
"name": "plugins/module_utils/k8sdynamicclient.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c58236ebcf4a9d39ccce1fb9f0084c716596fa269557553db1d421f9769c1088",
+ "chksum_sha256": "6b44b539981affc25ede49cc8a7f994fe19b5c60aaa1e400a480e735f7ed1be6",
"format": 1
},
{
"name": "plugins/module_utils/selector.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a912a35f5014bdf2a30625614b05acd2d71fabaea2b980bb4f6b110151e3e345",
+ "chksum_sha256": "d5e15a8ac4f916ee4b578450449a525dbda727b77178941a81c21e9e228e7987",
"format": 1
},
{
@@ -816,133 +816,133 @@
"name": "plugins/modules/helm.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1213cd7c02f4e2f28f4126c74e3145dfbd4b04185fb74c3a3b930f49ffbaaac1",
+ "chksum_sha256": "24809d4f0d94f2acc0d9de7c3858804a6ecfe17d8c2b9a182431ce381ef1a84a",
"format": 1
},
{
"name": "plugins/modules/helm_info.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7f2140cb6d7a692eed5feb96859e0099e23b497cd377a91c51579e5dc361d182",
+ "chksum_sha256": "86cad6e59f97bdcbebbf53eeb0ea9eaf7a031eef477ecd76bf109cb872c7fa1e",
"format": 1
},
{
"name": "plugins/modules/helm_plugin.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0425eaf1efe23f6d9eb6812300d0525eee18c769e80c6c74e193ee376c05901b",
+ "chksum_sha256": "c99d47fc5fcffafc060416fae69f740b6d18700f00843f0de2315eb32432c113",
"format": 1
},
{
"name": "plugins/modules/helm_plugin_info.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "80794a520c59990974d93c32d813ecee8de50b2cb36ababde183ee5db62c8cfa",
+ "chksum_sha256": "42afe7b57c92837736d4df8f9e48fe3b71c2f529970acb65ad6b6fb5cf8e0148",
"format": 1
},
{
"name": "plugins/modules/helm_pull.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "da8a930e40e61287c5da5a1e4c15c29907d8330d060b89ecdc3a238855553c03",
+ "chksum_sha256": "9273b4acaacb7b74943c1cd84b583a11aa605cc24bad1c7d78b2a219f5558303",
"format": 1
},
{
"name": "plugins/modules/helm_repository.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "2d348193a38287251a86a8efb47a52d26fdae877447dc9933a1ee14281e9d3ee",
+ "chksum_sha256": "d248b9c1339b7265266f9d9956eca41edbb47d54ba7459cc5862fc98061bcb89",
"format": 1
},
{
"name": "plugins/modules/helm_template.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fee5bdfcf7a99492b9b5dc4c86e62505b87d79c76450e09bbb323915aab5848f",
+ "chksum_sha256": "ad6faef74432361e5ff03669553cfa7d4ff87e07ec6a0bb69fb65e38cf7de3ac",
"format": 1
},
{
"name": "plugins/modules/k8s.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "61802b08c5cebba766fb8a9f2d950aad7a8eff2489eb5958d6dd1d897884fc90",
+ "chksum_sha256": "8f1e954707d0f04d4f18796a146c9d9b38ab54f83b209b899292711c93fe18af",
"format": 1
},
{
"name": "plugins/modules/k8s_cluster_info.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a04f656c51d094f1acb7b347d39da19ab3c46b35de9f07f23b9910ae601665f7",
+ "chksum_sha256": "0616d8c6ac9c83a572a1afe2d7cc68f5870bfac77a618171f003b9eb25c5877c",
"format": 1
},
{
"name": "plugins/modules/k8s_cp.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f5cd6f3791bfb5856900f4d3c24bb7dc4c2f895e89c619a0e1480b3634c75330",
+ "chksum_sha256": "8f19067c472d4761792fdbf93578c9224714bf241bf0eae4015892589ce3c237",
"format": 1
},
{
"name": "plugins/modules/k8s_drain.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8501728be21a5dea5f91fd97ea5cc1f840a85d8a545899f026d2bc5971b306db",
+ "chksum_sha256": "b08836133883d3d1fe219a8edc0eb97137046f29df8cef5c2ae246bb2b1ac8c0",
"format": 1
},
{
"name": "plugins/modules/k8s_exec.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "3e85e93a987900104d20a7c8ed736df1a720c072dd181d4a092fb5344e08257a",
+ "chksum_sha256": "81f3fa756696852814f241a06dc95c6dad16acf9fe3e43e08696876d8fb6c08d",
"format": 1
},
{
"name": "plugins/modules/k8s_info.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b7b67467c41866e95eac0c74f914ce0f5c073d4fbb1c2ca93cfc310d31384049",
+ "chksum_sha256": "573d7d612c588820f615e0fd3f188a646d74d17636f56c560caf8c3f801296d4",
"format": 1
},
{
"name": "plugins/modules/k8s_json_patch.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "44097a47c792a7899ff04788d0f958a1819194224a5588eb5a5db5f448722be7",
+ "chksum_sha256": "4475cdf40cec8277e690fab7627b9a40bb567e9f53ac728db49742fed18362b6",
"format": 1
},
{
"name": "plugins/modules/k8s_log.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d855aec3ee0be16af005b6371e2eb887f6eca8983af4d520d6a6733246540b53",
+ "chksum_sha256": "fc05e30eb060ff3bce8403eeb5f9748ab82242ef28a34dfe5ae20227e57fcbc5",
"format": 1
},
{
"name": "plugins/modules/k8s_rollback.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e9ff60598e33faa157b6c4c04e95002a162becd56286400cb9aaa7c5432f1cfe",
+ "chksum_sha256": "f8bf4bf26cc8634882fd70e704cef6033642a15a316a4859cc03544fd3c31013",
"format": 1
},
{
"name": "plugins/modules/k8s_scale.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c4a04c19741cd4834c8a1926790fc0d94e7fbea8c3e15daa42ac47da4bd63049",
+ "chksum_sha256": "cf508fa2f02619293fa664cf55531d5dd1b15d8d35f2bfe382fdc9f756a826c3",
"format": 1
},
{
"name": "plugins/modules/k8s_service.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "da88e5c089db282cf1413ff002a6e781c7f05a54689c992494b52b9054689a41",
+ "chksum_sha256": "079bdfa6f65254fc1547b985e4713d25e6c5ff9c28332b9358e7a4456ff57979",
"format": 1
},
{
"name": "plugins/modules/k8s_taint.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ec21f39fd4efd743655d36a8091c24b7bfcd76af239cb5cb068415fad9552517",
+ "chksum_sha256": "85d951125ea30ae907d40e79ef22d6e6be5aa5613cfa561de361be7ad5bb30ec",
"format": 1
},
{
@@ -984,7 +984,7 @@
"name": "tests/integration/targets/helm/defaults/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4f8b1fa71279ad05526d564d79582b3be0ea406397bdde007f7f84cf557fc063",
+ "chksum_sha256": "3e0c593e7f65eb2019aa6a6f94163b8f0fc2f03d31825a4c5cf62e24f89da653",
"format": 1
},
{
@@ -1170,10 +1170,17 @@
"format": 1
},
{
+ "name": "tests/integration/targets/helm/library/helm_test_pending.py",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "6d99fe79d8191d5e488830d12fec57dd24b0273c5fc1fe78e10ec058d86c4132",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/helm/library/helm_test_version.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "fb24cdcfd0d0e43450817fb51e96c4e78cc9ed74a4d65493a5c31e71398e2fee",
+ "chksum_sha256": "8d0a65aa2d47d2222ba3f40a29d8cabce93e7f7bbaef2e302fcb2907d91e326d",
"format": 1
},
{
@@ -1243,7 +1250,7 @@
"name": "tests/integration/targets/helm/tasks/run_test.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "951714c0c82ed7edc2c3217592668cd6d0e89dca1b04347d6bd5261ba5475412",
+ "chksum_sha256": "0e9631dc89e0aead697db7cbf7c968fac4b01501aa54f35bafbc067a18c952cc",
"format": 1
},
{
@@ -1261,10 +1268,24 @@
"format": 1
},
{
+ "name": "tests/integration/targets/helm/tasks/test_helm_reuse_values.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "048db343560977f14b89320b1e2acb80185e91637b69d2588bb44116ae409f33",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/helm/tasks/test_helm_uninstall.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "8b7b2a8d5ec8bda414225cadc593308480165473842b3d6b7eacbbc77bd68d64",
+ "chksum_sha256": "035a1fdd23c55e2ddb2c6d75adec68efef3abe139410abfc6140965d08b04628",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/helm/tasks/test_helm_with_space_into_chart_name.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "6e00ad23adf106e55dd37273edd6797f92011f969d6ad7a826377604ddca0691",
"format": 1
},
{
@@ -1296,6 +1317,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/helm/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "b5301d16a79e8fafbd41f45eed94ab9428023557601dbd9d965a6216a3d5ae17",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/helm/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/helm_diff",
"ftype": "dir",
"chksum_type": null,
@@ -1324,6 +1359,41 @@
"format": 1
},
{
+ "name": "tests/integration/targets/helm_diff/files/test-chart-reuse-values",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/helm_diff/files/test-chart-reuse-values/templates",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/helm_diff/files/test-chart-reuse-values/templates/configmap.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "9925ce72f89a09a39d3d77aae5c40c89eeea7dcc1b6175cc9bbc86be72463539",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/helm_diff/files/test-chart-reuse-values/Chart.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "f0caead20030f65c7f90d5b3a061c310a2ec565290d929349b4707d6f26e28ac",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/helm_diff/files/test-chart-reuse-values/values.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "1b49985939a64d6dcef87ff60f5ee46112c9462f468a686d3ea9ddcd82b4042c",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/helm_diff/files/test-chart",
"ftype": "dir",
"chksum_type": null,
@@ -1376,7 +1446,14 @@
"name": "tests/integration/targets/helm_diff/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e369b170ddb55919f665ffb224c8cbef7df5713b8961a9b016524cc0f8b9b43f",
+ "chksum_sha256": "2f481b9008eef657e61f46b3604d8fa00480f1d988c7bc17e9bad6cc0c370fb9",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/helm_diff/tasks/reuse_values.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "101840c2bc4fcda18ad657055483c43b287a163c942d15a2b14e227875e97215",
"format": 1
},
{
@@ -1387,6 +1464,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/helm_diff/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "5cc7722bb3690e2c2a3ef3259ee5ba795e5096a7fe07df8e65b58d176ff5f82a",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/helm_diff/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/helm_kubeconfig",
"ftype": "dir",
"chksum_type": null,
@@ -1418,7 +1509,7 @@
"name": "tests/integration/targets/helm_kubeconfig/meta/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "706a0802afe247b21d705adcf9438b038b0d27a20202880fd729aaa46ee4e419",
+ "chksum_sha256": "c62410da25d2dbb4bc0c82bd69412598750a7b3f12e1dfdf357e750cd7efb78e",
"format": 1
},
{
@@ -1471,6 +1562,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/helm_kubeconfig/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "3b8efae56c9317b22dd7da982cae9024de2bfd3b2942e6b7ecd3a9ac5f382d10",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/helm_kubeconfig/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/helm_plugin",
"ftype": "dir",
"chksum_type": null,
@@ -1548,6 +1653,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/helm_plugin/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "44d41a91eb0dc703b1c388c388ef381ba8a9f43f8aaf6e5800ec4dd742049cff",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/helm_plugin/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/helm_pull",
"ftype": "dir",
"chksum_type": null,
@@ -1576,6 +1695,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/helm_pull/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "7d34b496a58b4f9ab9e878db3a005420a41990059c01c6d9557b9ce715493960",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/helm_pull/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/helm_repository",
"ftype": "dir",
"chksum_type": null,
@@ -1632,6 +1765,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/helm_repository/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "7e9a1c0bca295a21b11e94e545e91c0f7b06491a7dec984a7343a2d8048ed5b5",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/helm_repository/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/helm_set_values",
"ftype": "dir",
"chksum_type": null,
@@ -1663,7 +1810,7 @@
"name": "tests/integration/targets/helm_set_values/meta/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "706a0802afe247b21d705adcf9438b038b0d27a20202880fd729aaa46ee4e419",
+ "chksum_sha256": "c62410da25d2dbb4bc0c82bd69412598750a7b3f12e1dfdf357e750cd7efb78e",
"format": 1
},
{
@@ -1688,6 +1835,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/helm_set_values/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "4d1bccf02290fec6f13aa79d5e20e2d525d760afbfa6e2dbdc0803a2957e1e36",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/helm_set_values/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/install_helm",
"ftype": "dir",
"chksum_type": null,
@@ -1796,7 +1957,7 @@
"name": "tests/integration/targets/inventory_k8s/runme.sh",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "5415aa52dcafe384fbd790cc1af78830c102d68eb355b5cbf757fa0c86a953e7",
+ "chksum_sha256": "eb45e4409fecf9bd8bd95c1d6f740dc8b0911face5db181ac51190f2f12bff4d",
"format": 1
},
{
@@ -1828,6 +1989,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_access_review/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "676de1495c95f4765a77a30ca28d639903ec4fcfdddbb1a2f8f05202951bf816",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_access_review/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_append_hash",
"ftype": "dir",
"chksum_type": null,
@@ -1884,6 +2059,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_append_hash/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "eabe5d163b726a4e0d09ef22d5f7ab345d99c42e63f63904c783b705ab9f77af",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_append_hash/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_apply",
"ftype": "dir",
"chksum_type": null,
@@ -1947,6 +2136,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_apply/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "c9e8505b682cfd25777f7db45392b56147d42fa547151112d22873f2f19c4ddc",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_apply/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_check_mode",
"ftype": "dir",
"chksum_type": null,
@@ -2010,6 +2213,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_check_mode/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "f8bb62dba8c6f0795d499169d495f30d8e13bc57f3b6a76c38201e1e0543e0d2",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_check_mode/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_cluster_info",
"ftype": "dir",
"chksum_type": null,
@@ -2038,6 +2255,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_cluster_info/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "230c51ed36ca2856bbdb0e96139307712e98eef752d337d7b243d38162dc78e8",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_cluster_info/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_copy",
"ftype": "dir",
"chksum_type": null,
@@ -2143,17 +2374,10 @@
"format": 1
},
{
- "name": "tests/integration/targets/k8s_copy/library/k8s_create_file.py",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "93f30185ab7c1555eedf7d2a1644459e429098a5a6cd29b655f46e5e986b80d4",
- "format": 1
- },
- {
"name": "tests/integration/targets/k8s_copy/library/kubectl_file_compare.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "b0ac3c26cf1fa994d208e31fddd30dc0df0efc4a8d759e6dc4be8065a743b7fc",
+ "chksum_sha256": "2e96dd9e8b2cee2bd4c575a1905377de5e68f1dfa849c1091139779f6c122a3b",
"format": 1
},
{
@@ -2223,7 +2447,7 @@
"name": "tests/integration/targets/k8s_copy/tasks/test_copy_large_file.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "91ac7bdf37253df75fc425266714bacc2a99a3d69d126429851f816b152a26e2",
+ "chksum_sha256": "63e1e76b75b383def9da4da09248d7136c5b6e8ca2936ff4aa58265c5b7ca90e",
"format": 1
},
{
@@ -2255,6 +2479,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_copy/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "1af734f87b0761897551399745d2e4a337a02a54cd08808d2ae62590564a1e3c",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_copy/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_crd",
"ftype": "dir",
"chksum_type": null,
@@ -2332,6 +2570,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_crd/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "7933d29b81246a08c584af68f59844114f07cb501d1f6103c826c03d1aeb7c82",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_crd/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_delete",
"ftype": "dir",
"chksum_type": null,
@@ -2353,6 +2605,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_delete/files",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_delete/files/deployments.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "ed446e5873aea240cdb494e19664ea560f9e8b37081a959f3e3f6ebb861ae2bd",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_delete/meta",
"ftype": "dir",
"chksum_type": null,
@@ -2377,7 +2643,7 @@
"name": "tests/integration/targets/k8s_delete/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1b24137238beb8cc3cbfb0a6bd54bf7edbc47c888d5386955e62f23d5269d593",
+ "chksum_sha256": "764c6509bb41fd1834de668bd095a92e1611976701a02bd67bae3a1897d5ea09",
"format": 1
},
{
@@ -2388,6 +2654,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_delete/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "57f8b9a17861725f061c50803742607ab38e5cc52d568f0770b8f1c801d04d56",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_delete/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_diff",
"ftype": "dir",
"chksum_type": null,
@@ -2458,6 +2738,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_diff/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "cd0cd1ea502aa343fcc37661a7e82dc7e4c1630684b1c9c86a62a8ecc2624d14",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_diff/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_drain",
"ftype": "dir",
"chksum_type": null,
@@ -2503,7 +2797,7 @@
"name": "tests/integration/targets/k8s_drain/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "497fcfe822f26afc3b5f3841848ad69bd0e937c6d820833e956f64961d6e6d2f",
+ "chksum_sha256": "1e3f9c80f5dcb0bd0d519d7f1c44ff4c858fdc6db47267bd20a9c3f05985991d",
"format": 1
},
{
@@ -2514,6 +2808,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_drain/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "0f3b1a904d40487a3aabca3d0cf382fae369bc3a1ec0114c053bc65b1356ea6f",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_drain/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_exec",
"ftype": "dir",
"chksum_type": null,
@@ -2570,6 +2878,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_exec/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "67b65b83642110a67a88b4136141ad0d788c121382da039faf79ca3079686793",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_exec/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_full",
"ftype": "dir",
"chksum_type": null,
@@ -2626,6 +2948,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_full/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "809ffad70bedeb3e91fc07fa8eb94744c054eb4866a1dda465fa93cd3d0e6906",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_full/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_gc",
"ftype": "dir",
"chksum_type": null,
@@ -2682,6 +3018,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_gc/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "422848575978d033202ef6d05bbba54509a5af01cbc62bf694a55a9e606e3b58",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_gc/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_generate_name",
"ftype": "dir",
"chksum_type": null,
@@ -2710,6 +3060,90 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_generate_name/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "3bb24f0cb8e2361932b20de62da1a984bd9c01ce2d456a109925b6e6a97648de",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_generate_name/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_hide_fields",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_hide_fields/defaults",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_hide_fields/defaults/main.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "b02007b67dc813a28f59017eee61cb5596b949c747fd39a68bc48632844828ef",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_hide_fields/meta",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_hide_fields/meta/main.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "a5f181f2a4fac30b6ab1513fe8607539e30b4d95d68d7de29a56905844f28998",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_hide_fields/tasks",
+ "ftype": "dir",
+ "chksum_type": null,
+ "chksum_sha256": null,
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_hide_fields/tasks/main.yml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "3f6774bc7b9dce71ceb6d95d0a0f2aebb0b0f3dba3670d67251a8480fafc6bc8",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_hide_fields/aliases",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "6fa0cf6146c6cf230ad5a94dcd9b8a431ea32ff4949f95305c2fa5f42a322cf2",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_hide_fields/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "4a7d83a4a0c2cfb420c3805ec9eb633c0cdefe90c9b1bdb048ca48ec96db97d8",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_hide_fields/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8d7fd83a50323c8866adf44163eaac5ead0a7bcfe31f26ddc13623beed087814",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_info",
"ftype": "dir",
"chksum_type": null,
@@ -2776,7 +3210,7 @@
"name": "tests/integration/targets/k8s_info/tasks/wait.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "396d2ee6262c763600d91b36df4815a8d7c4981337ddf4fedf0f93c61eaf6c09",
+ "chksum_sha256": "f4252ee1051f1e41126ac7c4cfec78fa1ce2a7eb95c23b4c5bae9bece253af30",
"format": 1
},
{
@@ -2787,6 +3221,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_info/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "ee26ce3444252ae7154fd71a14d174dd980e3ad7f61a196130eb997509ee8c71",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_info/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_json_patch",
"ftype": "dir",
"chksum_type": null,
@@ -2843,6 +3291,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_json_patch/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "2718a2f0fdcb21e56340d5dd44a0bb4a9dc040b9097a54fd0ea9756e470cc14a",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_json_patch/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_label_selectors",
"ftype": "dir",
"chksum_type": null,
@@ -2899,6 +3361,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_label_selectors/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "d7ef4e3d1a1cece989d1c170ce05f5715aa89eb651c6c03c9a87d691c5ecbccb",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_label_selectors/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_lists",
"ftype": "dir",
"chksum_type": null,
@@ -2955,6 +3431,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_lists/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "3491ff3cb985496928a67190ba7de11e5d4d2b53265df6fbcef0ab273cf331c4",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_lists/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_log",
"ftype": "dir",
"chksum_type": null,
@@ -3011,6 +3501,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_log/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "00a6111ce9c52bb1be8f007717f2a7e6272aae2ed97642d8ba774e180a58f32a",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_log/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_manifest_url",
"ftype": "dir",
"chksum_type": null,
@@ -3067,6 +3571,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_manifest_url/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "69d57a0135a4e51dff30b9ad6e27738498c14c8e69f07dd135801218880e25b6",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_manifest_url/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_merge_type",
"ftype": "dir",
"chksum_type": null,
@@ -3123,6 +3641,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_merge_type/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "e2e091f7b393ab19999cd2d5f8632f3ac5d204e8717b2b7f358fe5877790c41e",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_merge_type/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_patched",
"ftype": "dir",
"chksum_type": null,
@@ -3179,6 +3711,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_patched/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "e66f3418971059e8c2a21a77ffaf9f024ffaf3b4deae8d61ff1b25e892fe7cd8",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_patched/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_rollback",
"ftype": "dir",
"chksum_type": null,
@@ -3235,6 +3781,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_rollback/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "b023097c4ff41c5c176f2c7b349be05fbbdc7c0dc92656a231b0d7147666c7b2",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_rollback/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_scale",
"ftype": "dir",
"chksum_type": null,
@@ -3294,7 +3854,7 @@
"name": "tests/integration/targets/k8s_scale/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "af632f359f1507bfc0a8e4eb1b2b36e1222a06ae21859d7c9dfc83da19a37118",
+ "chksum_sha256": "592b114db2bca211b1ee59a9a3cd4678a0192e668a3b1b9b3a7124d559cc3426",
"format": 1
},
{
@@ -3305,6 +3865,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_scale/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "00fe4658a47629714be2ec4336d8ec902e024e7452d2462ef924afb94be0f219",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_scale/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_taint",
"ftype": "dir",
"chksum_type": null,
@@ -3361,6 +3935,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_taint/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "efde8a99b3fe17ef28c0e201265b92bd2cb2c6a8c2ec234c64abcdc6c97fad60",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_taint/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_template",
"ftype": "dir",
"chksum_type": null,
@@ -3459,6 +4047,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_template/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "f8a9a7e394fe029bdd322589d1faffe102a3c031f3fc305e0bec7355992f93cc",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_template/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_user_impersonation",
"ftype": "dir",
"chksum_type": null,
@@ -3515,6 +4117,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_user_impersonation/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "529d8f8451fc84dc8306745e99e31a5b9b9191fe6905a2cf7bfd7282bcbcb610",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_user_impersonation/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_validate",
"ftype": "dir",
"chksum_type": null,
@@ -3560,7 +4176,7 @@
"name": "tests/integration/targets/k8s_validate/tasks/main.yml",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "6cbec7acc2026e44531f73245f00878f03a52bd4cb0c774335c628a421cb9f28",
+ "chksum_sha256": "83626dee78e667bdcb9213bc274aa405a2e5961c93ab6d9f6c16711a23846c58",
"format": 1
},
{
@@ -3571,6 +4187,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_validate/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "04740e0290685e11d704ef68ad14f56d7c6442f8488cde143bb36e6d97fe6b12",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_validate/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/k8s_waiter",
"ftype": "dir",
"chksum_type": null,
@@ -3627,6 +4257,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/k8s_waiter/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "32b9f63e66cd5a96c12ed60ef4504c1777b02fd49f9f59b8ea699009226ee6b6",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/k8s_waiter/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/lookup_k8s",
"ftype": "dir",
"chksum_type": null,
@@ -3683,6 +4327,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/lookup_k8s/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "432e21b1239347693be98c582b735e6f720c7c5b5683c948450c2c5b695ed627",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/lookup_k8s/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/lookup_kustomize",
"ftype": "dir",
"chksum_type": null,
@@ -3739,6 +4397,20 @@
"format": 1
},
{
+ "name": "tests/integration/targets/lookup_kustomize/playbook.yaml",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "4cbbf3c72c7880f2dd213218de6482bae3fecc335e94ddd83bbc04bb0041931b",
+ "format": 1
+ },
+ {
+ "name": "tests/integration/targets/lookup_kustomize/runme.sh",
+ "ftype": "file",
+ "chksum_type": "sha256",
+ "chksum_sha256": "8e864f3c232619b47a58ffcf4947b5d3cf6a5bc34e4673395257f8b23c6fd73f",
+ "format": 1
+ },
+ {
"name": "tests/integration/targets/remove_namespace",
"ftype": "dir",
"chksum_type": null,
@@ -3798,7 +4470,7 @@
"name": "tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentials.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "50fa9ab8aca36af544a370d3c2b5d3b557bd848d0d9ae1f0e751634ea75bbb6b",
+ "chksum_sha256": "c4b3d5a693438becc07ce98c3c2cc50a110f7d886c49bf444cb073c7d733abd9",
"format": 1
},
{
@@ -3879,66 +4551,38 @@
"format": 1
},
{
- "name": "tests/sanity/ignore-2.10.txt",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "df0567067fd935ff36eae1b6952a83b392be1c333519821a3af56437f4a55a2f",
- "format": 1
- },
- {
- "name": "tests/sanity/ignore-2.11.txt",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "70624e6d15f87ec118ba71c135b060431f04aa3746123666e8cb951b9cb1bca1",
- "format": 1
- },
- {
- "name": "tests/sanity/ignore-2.12.txt",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "c108894b090a50da8f307726409f3055b481d5ee255f2932c1d52bae72d50058",
- "format": 1
- },
- {
- "name": "tests/sanity/ignore-2.13.txt",
- "ftype": "file",
- "chksum_type": "sha256",
- "chksum_sha256": "c108894b090a50da8f307726409f3055b481d5ee255f2932c1d52bae72d50058",
- "format": 1
- },
- {
"name": "tests/sanity/ignore-2.14.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "42e419caf846ed0dcc02202e9a4b75591f31dabc45c730e182d4c5a3d915be82",
+ "chksum_sha256": "73f995367c7bb72172998e3a83988cd8eed0731251cb186622f430e841523bb1",
"format": 1
},
{
"name": "tests/sanity/ignore-2.15.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "d3d41bd605b43a4f205532a2b699580a36949428e269d7ab38f0e117a8f6714b",
+ "chksum_sha256": "3663bd06ef274990d5929638a9bd2fa06bd87f45502a5f5565e5a405caf2a476",
"format": 1
},
{
"name": "tests/sanity/ignore-2.16.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "1dccc6da515a13558fab57a5c95645e064f7f2592db56bcb145d758e45991363",
+ "chksum_sha256": "ee479546af5f4e87382278080e90e71b255f74bf387f6f8824878485ec6935b4",
"format": 1
},
{
"name": "tests/sanity/ignore-2.17.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "cabeaf26387322db20141d82f01d2718ea57b23b18fb71e493c837370a087e32",
+ "chksum_sha256": "7cb5f1e5af3b322b33f99c02859a6ae5aab7fbd10fa6bd12e34f35af4524f743",
"format": 1
},
{
- "name": "tests/sanity/ignore-2.9.txt",
+ "name": "tests/sanity/ignore-2.18.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f81ba55b45ea34f4fe65ecaba048fb917867bd7b87b020069ddb83f145179391",
+ "chksum_sha256": "7cb5f1e5af3b322b33f99c02859a6ae5aab7fbd10fa6bd12e34f35af4524f743",
"format": 1
},
{
@@ -3959,7 +4603,7 @@
"name": "tests/unit/action/test_remove_omit.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "30e4e2521f84b3bd3a408ebb75c3adeeb0e99382bd9f34afc461ae6778fa5683",
+ "chksum_sha256": "3f2d0b8fe129fbfe31f72c33d25ceedbe0e05502962d240f47537c9c5f2737dd",
"format": 1
},
{
@@ -4001,14 +4645,14 @@
"name": "tests/unit/module_utils/test_apply.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "28703ed0cab23068fbbd0d99ba1095ca2c2c484f28fa25c05716ed29671c2ac5",
+ "chksum_sha256": "0b8058ce637b4ab02bf946b846e697022427c10b92a4472bf46e5d0c08ba7350",
"format": 1
},
{
"name": "tests/unit/module_utils/test_client.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "84829637b1d0d7210f75b3c33210dde9d1233230563b9fcf0557695787e9f700",
+ "chksum_sha256": "167c9612520a208b6e6a490befc3e2026b4b7c27855cc93da075afaa78efae85",
"format": 1
},
{
@@ -4022,14 +4666,14 @@
"name": "tests/unit/module_utils/test_core.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "25d001234f6af4441e1fd3e75b9a691f0b016662000e898d7603879ec01eb57e",
+ "chksum_sha256": "aa2ef6a20267aaca6bc100411ede12038544603b7f5ba60b46d9d70412a51937",
"format": 1
},
{
"name": "tests/unit/module_utils/test_discoverer.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "0517cb0710d18a3730e675e6206e21fc50ec98c6338eb25547838d4cf107dd87",
+ "chksum_sha256": "5467c15583ddd86b28049b8f3dbfacdb0563d51667bc975b402266aad3a90d64",
"format": 1
},
{
@@ -4043,7 +4687,7 @@
"name": "tests/unit/module_utils/test_helm.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e7b1d5eec28c07a73b0e71b67bf6211496adb11c9ff748f7bb47e7c5bc279ed4",
+ "chksum_sha256": "ee5cb16e95cae3202d2ff171c15c748722211855c2cc615d62f6990f1e975329",
"format": 1
},
{
@@ -4064,7 +4708,7 @@
"name": "tests/unit/module_utils/test_runner.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "bf805b42bed1e709ce7d2b2bb2139d0b9014ba3a712168b0095f78f4143217e4",
+ "chksum_sha256": "c8fa05c5a69a92ae8283c5f0ea54548bb74a1e1c5c9916a11014c5cea5954706",
"format": 1
},
{
@@ -4078,14 +4722,14 @@
"name": "tests/unit/module_utils/test_service.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "22eb9a8b500a62548486b754dacccd40f92e612659705cda953c68e95178a802",
+ "chksum_sha256": "406fb385b62fe21d8f5436e501a79888e57cb0fa635887dd0af79d5f90a3def2",
"format": 1
},
{
"name": "tests/unit/module_utils/test_waiter.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "a83e8cf7a00c1f6f6d9b08fcb01a9b0807f3d59081c4697da0bec1908a1a6eb1",
+ "chksum_sha256": "08f3d8bb12b136adf86d38f90d5944072139dd30f549dd5c9f725b1486030122",
"format": 1
},
{
@@ -4106,14 +4750,14 @@
"name": "tests/unit/modules/test_helm_template_module.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ce4462f8dc0e6f61abd6ed59951d95ed57aac564da92b494d23d31c963ce5df6",
+ "chksum_sha256": "d3ed685e3c3cd3f6eac343edfdaed0358c336358f48a54978d46b5d4542ebe78",
"format": 1
},
{
"name": "tests/unit/modules/test_module_helm.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "65480cc9a747d2f5d7f14e9936f9c53ca4cd781b1e01c9d739304795d0c8d259",
+ "chksum_sha256": "6b210b6df40eb3a137728870443978512f73729ace3206aa1770f57dd707270f",
"format": 1
},
{
@@ -4134,7 +4778,7 @@
"name": "tests/unit/conftest.py",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "e71c6426972ffd4826b7d5fb7f021333ca0760ea442b9e549b0916e837cd54c7",
+ "chksum_sha256": "8ebad32afd8333eb2f5a4ab6aafdc7cf6309fe9b69c7d4932aa327e0aeaa0d55",
"format": 1
},
{
@@ -4155,7 +4799,7 @@
"name": ".ansible-lint",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "c7f042498988069158af67d1654477ba2897c44f7a54120aada6d2c3e5355628",
+ "chksum_sha256": "b90959aefc23655a9f56fe7b5247c8cf82c594f7f4e269cfbcd916ebc5a2367d",
"format": 1
},
{
@@ -4176,7 +4820,7 @@
"name": "CHANGELOG.rst",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "7d39ea37e36b9eef78ec1515b8f4270b36e4847f58d0bee7fdd7bfa08abb0181",
+ "chksum_sha256": "ab78cf4fb4f75175d5ddea647bf1e4a77c5ec5d0f204abb7ff7e06c08dca5c55",
"format": 1
},
{
@@ -4197,7 +4841,7 @@
"name": "Makefile",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "cc231a95d40d0f7a28d49ea378be431e9c0b046bdc70bc79fb34e2623aaf102c",
+ "chksum_sha256": "72fce95837f17ca1375a1f2130a5b695e500f1ac1cb87942d51dd1a3ed99343b",
"format": 1
},
{
@@ -4211,7 +4855,7 @@
"name": "README.md",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "4a5e2a68aa595990f3ca1921ee2a6140f065e71d1bfcc145c56de532e452124f",
+ "chksum_sha256": "690f7280c8733a5b793e7491c6234caaffae167e6a45637c416658fdd84fa0ec",
"format": 1
},
{
@@ -4232,7 +4876,7 @@
"name": "requirements.txt",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "f4d1053cac2a14673a9faf001292589693d10f6126b23255e34beb8223d1de91",
+ "chksum_sha256": "98d0caf1b4904aefece588e6282a226889644491e5cfca7670ec3c9f300cd31e",
"format": 1
},
{
@@ -4253,7 +4897,7 @@
"name": "tox.ini",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "63b3c9e7c1e29e051dde455446312eaededeee7006c4e5e23746049fa7de2255",
+ "chksum_sha256": "953a38288849462a19658d71097da3aa6a6aeb37471f7a6e081b141caf6dbfcd",
"format": 1
}
],
diff --git a/ansible_collections/kubernetes/core/MANIFEST.json b/ansible_collections/kubernetes/core/MANIFEST.json
index a965e0179..e4e7f12e9 100644
--- a/ansible_collections/kubernetes/core/MANIFEST.json
+++ b/ansible_collections/kubernetes/core/MANIFEST.json
@@ -2,7 +2,7 @@
"collection_info": {
"namespace": "kubernetes",
"name": "core",
- "version": "2.4.2",
+ "version": "3.1.0",
"authors": [
"chouseknecht (https://github.com/chouseknecht)",
"geerlingguy (https://www.jeffgeerling.com/)",
@@ -36,7 +36,7 @@
"name": "FILES.json",
"ftype": "file",
"chksum_type": "sha256",
- "chksum_sha256": "ddf0469e4a5072f0670d71f80bac5f570bff4361f4db80f2b517e8ef2b7a7eb1",
+ "chksum_sha256": "497a265e1b9a279b5abb4fcb6acc3ad94db0ee0519969df4bf816c4a90b7b8cb",
"format": 1
},
"format": 1
diff --git a/ansible_collections/kubernetes/core/Makefile b/ansible_collections/kubernetes/core/Makefile
index 77ca0d25f..b76f3af50 100644
--- a/ansible_collections/kubernetes/core/Makefile
+++ b/ansible_collections/kubernetes/core/Makefile
@@ -1,5 +1,5 @@
# Also needs to be updated in galaxy.yml
-VERSION = 2.4.1
+VERSION = 3.0.0
TEST_ARGS ?= ""
PYTHON_VERSION ?= `python -c 'import platform; print(".".join(platform.python_version_tuple()[0:2]))'`
diff --git a/ansible_collections/kubernetes/core/README.md b/ansible_collections/kubernetes/core/README.md
index 95b0d05d3..67993a06e 100644
--- a/ansible_collections/kubernetes/core/README.md
+++ b/ansible_collections/kubernetes/core/README.md
@@ -9,7 +9,7 @@ The collection includes a variety of Ansible content to help automate the manage
<!--start requires_ansible-->
## Ansible version compatibility
-This collection has been tested against following Ansible versions: **>=2.9.17**.
+This collection has been tested against following Ansible versions: **>=2.14.0**.
For collections that support Ansible 2.9, please ensure you update your `network_os` to use the
fully qualified collection name (for example, `cisco.ios.ios`).
@@ -20,13 +20,13 @@ PEP440 is the schema used to describe the versions of Ansible.
## Python Support
-* Collection supports 3.6+
+* Collection supports 3.9+
Note: Python2 is deprecated from [1st January 2020](https://www.python.org/doc/sunset-python-2/). Please switch to Python3.
## Kubernetes Version Support
-This collection supports Kubernetes versions >=1.19.
+This collection supports Kubernetes versions >= 1.24.
## Included content
@@ -93,7 +93,7 @@ You can also include it in a `requirements.yml` file and install it via `ansible
---
collections:
- name: kubernetes.core
- version: 2.4.1
+ version: 3.0.0
```
### Installing the Kubernetes Python Library
diff --git a/ansible_collections/kubernetes/core/changelogs/changelog.yaml b/ansible_collections/kubernetes/core/changelogs/changelog.yaml
index 13f227875..a6a689887 100644
--- a/ansible_collections/kubernetes/core/changelogs/changelog.yaml
+++ b/ansible_collections/kubernetes/core/changelogs/changelog.yaml
@@ -762,20 +762,95 @@ releases:
name: helm_pull
namespace: ''
release_date: '2023-01-24'
- 2.4.1:
+ 3.0.0:
changes:
- release_summary: The kubernetes.core 2.4.1 release includes several trivial
- bug fixes related to sanity.
+ breaking_changes:
+ - Remove support for ansible-core < 2.14
+ - Update python kubernetes library to 24.2.0, helm/kind-action to 1.8.0, kubernetes
+ >= 1.24.
+ bugfixes:
+ - helm - Put the chart_ref into quotes when running ``helm show chart``, ``helm
+ upgrade`` and ``helm dependency update`` commands (https://github.com/ansible-collections/kubernetes.core/issues/653).
+ - helm - delete temporary file created when deploying chart with option ``release_values``
+ set (https://github.com/ansible-collections/kubernetes.core/issues/530).
+ - helm - fix issue occurring when uninstalling chart with statues others than
+ ``deployed`` (https://github.com/ansible-collections/kubernetes.core/issues/319).
+ - helm - fix post_renderer argument breaking the helm deploy_command (https://github.com/ansible-collections/kubernetes.core/pull/586).
+ - helm - use post_renderer when checking ``changed`` status for a helm release
+ (https://github.com/ansible-collections/kubernetes.core/pull/588).
+ - k8s_scale - clean handling of ResourceTimeout exception (https://github.com/ansible-collections/kubernetes.core/issues/583).
+ - k8s_scale - fix issue when scaling StatefulSets with ``updateStrategy=OnDelete``
+ (https://github.com/ansible-collections/kubernetes.core/issues/579).
+ deprecated_features:
+ - k8s - the ``k8s`` inventory plugin has been deprecated and will be removed
+ in release 4.0.0 (https://github.com/ansible-collections/kubernetes.core/issues/31).
+ minor_changes:
+ - helm - add ``reuse_values`` and ``reset_values`` support to helm module (https://github.com/ansible-collections/kubernetes.core/issues/394).
+ - k8s - add new option ``delete_all`` to support deletion of all resources when
+ state is set to ``absent``. (https://github.com/ansible-collections/kubernetes.core/issues/504)
+ - k8s, k8s_info - add a hidden_fields option to allow fields to be hidden in
+ the results of k8s and k8s_info
+ - k8s_drain - add ability to filter the list of pods to be drained by a pod
+ label selector (https://github.com/ansible-collections/kubernetes.core/issues/474).
+ release_summary: This major release drops support for ansible-core versions
+ lower than 2.14, Python versions lower than 3.9 and updates python kubernetes
+ library to 24.2.0, helm/kind-action to 1.8.0, kubernetes >= 1.24, along with
+ bug fixes and minor changes.
fragments:
- - fix_sanity_errors.yml
- release_date: '2024-02-06'
- 2.4.2:
+ - 20230206-deprecate-k8s-inventory.yml
+ - 20231110-helm-quote-ref.yaml
+ - 517-k8s-make-name-optional.yaml
+ - 575-helm-add-support-for-reuse_values-and-reset_values.yml
+ - 579-k8s_scale-fix-issue-with-scaling-statefulsets.yml
+ - 583-k8s_scale-clean-handling-of-ResourceTimeout-exception.yaml
+ - 586-helm-fix-post-renderer-arg.yml
+ - 588-helm-use-post-renderer-for-helmdiff.yml
+ - 589-helm-uninstall-chart-releases-with-statuses-different-than-deployed.yaml
+ - 606-k8s_drain-add-pod_selectors-parameter.yaml
+ - 612-fix-helm-tests.yaml
+ - 629-add-hidden-fields-option.yaml
+ - gha-sanity-fixes.yaml
+ - helm-delete-temporary-file-created-when-using-option-release_values.yaml
+ - remove_ansible_2_13.yaml
+ - update_supported_versions.yaml
+ release_date: '2023-11-17'
+ 3.0.1:
changes:
bugfixes:
- Resolve Collections util resource discovery fails when complex subresources
present (https://github.com/ansible-collections/kubernetes.core/pull/676).
- release_summary: fix resource discovery when complex subresources present
+ - align `helmdiff_check()` function commandline rendering with the `deploy()`
+ function (https://github.com/ansible-collections/kubernetes.core/pull/670).
+ - helm - use ``reuse-values`` when running ``helm diff`` command (https://github.com/ansible-collections/kubernetes.core/issues/680).
+ - integrations test helm_kubeconfig - set helm version to v3.10.3 to avoid incompatability
+ with new bitnami charts (https://github.com/ansible-collections/kubernetes.core/pull/670).
+ release_summary: This release fixes issue with resources discovery when complex
+ subresources are present, and fixes issues with `reuse-values` parameter for
+ helm module.
fragments:
- - 2.4.2.yml
+ - 20240117-fix-helm-diff-cmd-line-rendering.yml
- 20240222-Collections-util-resource-discovery-fails-when-complex-subresources-present.yml
+ - 20240228-fix-helm-diff-with-reuse-values.yml
+ - 3.0.1.yml
release_date: '2024-03-01'
+ 3.1.0:
+ changes:
+ bugfixes:
+ - helm - expand kubeconfig path with user's home directory for consistency with
+ k8s
+ - k8s_json_patch - rename action symlink to ensure k8s action plugin is used
+ (https://github.com/ansible-collections/kubernetes.core/pull/652).
+ minor_changes:
+ - kubectl - added support of local enviroment variable that will be used for
+ kubectl and may be requried for establishing connections ifself (https://github.com/ansible-collections/kubernetes.core/pull/702)
+ - kustomize - new parameter added to --enable-helm (https://github.com/ansible-collections/kubernetes.core/issues/568)
+ release_summary: This release comes with some bugfixes and documentation updates.
+ It also adds new features to the kubectl connection plugin and the kustomize
+ lookup plugin.
+ fragments:
+ - 20240426-add-support-of-kubectl-local-env-vars-for-connection-plugin.yml
+ - 3.1.0.yml
+ - 592-kustomize-helm-support.yml
+ - 652-fix-json-patch-action.yml
+ - 654-helm-expand-user.yml
+ release_date: '2024-05-16'
diff --git a/ansible_collections/kubernetes/core/changelogs/config.yaml b/ansible_collections/kubernetes/core/changelogs/config.yaml
index 138225941..69554b846 100644
--- a/ansible_collections/kubernetes/core/changelogs/config.yaml
+++ b/ansible_collections/kubernetes/core/changelogs/config.yaml
@@ -10,21 +10,21 @@ notesdir: fragments
prelude_section_name: release_summary
prelude_section_title: Release Summary
sections:
- - - major_changes
- - Major Changes
- - - minor_changes
- - Minor Changes
- - - breaking_changes
- - Breaking Changes / Porting Guide
- - - deprecated_features
- - Deprecated Features
- - - removed_features
- - Removed Features (previously deprecated)
- - - security_fixes
- - Security Fixes
- - - bugfixes
- - Bugfixes
- - - known_issues
- - Known Issues
+- - major_changes
+ - Major Changes
+- - minor_changes
+ - Minor Changes
+- - breaking_changes
+ - Breaking Changes / Porting Guide
+- - deprecated_features
+ - Deprecated Features
+- - removed_features
+ - Removed Features (previously deprecated)
+- - security_fixes
+ - Security Fixes
+- - bugfixes
+ - Bugfixes
+- - known_issues
+ - Known Issues
title: Kubernetes Collection
trivial_section_name: trivial
diff --git a/ansible_collections/kubernetes/core/docs/kubernetes.core.helm_info_module.rst b/ansible_collections/kubernetes/core/docs/kubernetes.core.helm_info_module.rst
index f74546b25..4b5ef7c06 100644
--- a/ansible_collections/kubernetes/core/docs/kubernetes.core.helm_info_module.rst
+++ b/ansible_collections/kubernetes/core/docs/kubernetes.core.helm_info_module.rst
@@ -108,6 +108,27 @@ Parameters
<tr>
<td colspan="1">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>get_all_values</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.4.0</div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li><div style="color: blue"><b>no</b>&nbsp;&larr;</div></li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Set to <code>True</code> if you want to get all (computed) values of the release.</div>
+ <div>When <code>False</code> (default), only user supplied values are returned.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>host</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -127,7 +148,7 @@ Parameters
<b>kubeconfig</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
- <span style="color: purple">path</span>
+ <span style="color: purple">raw</span>
</div>
</td>
<td>
@@ -135,6 +156,7 @@ Parameters
<td>
<div>Helm option to specify kubeconfig path to use.</div>
<div>If the value is not specified in the task, the value of environment variable <code>K8S_AUTH_KUBECONFIG</code> will be used instead.</div>
+ <div>The configuration can be provided as dictionary. Added in version 2.4.0.</div>
<div style="font-size: small; color: darkgreen"><br/>aliases: kubeconfig_path</div>
</td>
</tr>
@@ -175,6 +197,32 @@ Parameters
<tr>
<td colspan="1">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>release_state</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.3.0</div>
+ </td>
+ <td>
+ <b>Default:</b><br/><div style="color: blue">[]</div>
+ </td>
+ <td>
+ <div>Show releases as per their states.</div>
+ <div>Default value is <code>deployed</code> and <code>failed</code>.</div>
+ <div>If set to <code>all</code>, show all releases without any filter applied.</div>
+ <div>If set to <code>deployed</code>, show deployed releases.</div>
+ <div>If set to <code>failed</code>, show failed releases.</div>
+ <div>If set to <code>pending</code>, show pending releases.</div>
+ <div>If set to <code>superseded</code>, show superseded releases.</div>
+ <div>If set to <code>uninstalled</code>, show uninstalled releases, if <code>helm uninstall --keep-history</code> was used.</div>
+ <div>If set to <code>uninstalling</code>, show releases that are currently being uninstalled.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>validate_certs</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -204,11 +252,18 @@ Examples
.. code-block:: yaml
- - name: Deploy latest version of Grafana chart inside monitoring namespace
+ - name: Gather information of Grafana chart inside monitoring namespace
kubernetes.core.helm_info:
name: test
release_namespace: monitoring
+ - name: Gather information about test-chart with pending state
+ kubernetes.core.helm_info:
+ name: test-chart
+ release_namespace: testenv
+ release_state:
+ - pending
+
Return Values
@@ -274,6 +329,42 @@ Common return values are documented `here <https://docs.ansible.com/ansible/late
<td class="elbow-placeholder">&nbsp;</td>
<td colspan="1">
<div class="ansibleOptionAnchor" id="return-"></div>
+ <b>hooks</b>
+ <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=dictionary</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.4.0</div>
+ </td>
+ <td>always</td>
+ <td>
+ <div>Hooks of the release</div>
+ <br/>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder">&nbsp;</td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="return-"></div>
+ <b>manifest</b>
+ <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=dictionary</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.4.0</div>
+ </td>
+ <td>always</td>
+ <td>
+ <div>Manifest of the release</div>
+ <br/>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder">&nbsp;</td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="return-"></div>
<b>name</b>
<a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
<div style="font-size: small">
@@ -306,6 +397,23 @@ Common return values are documented `here <https://docs.ansible.com/ansible/late
<td class="elbow-placeholder">&nbsp;</td>
<td colspan="1">
<div class="ansibleOptionAnchor" id="return-"></div>
+ <b>notes</b>
+ <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.4.0</div>
+ </td>
+ <td>always</td>
+ <td>
+ <div>Notes of the release</div>
+ <br/>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder">&nbsp;</td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="return-"></div>
<b>revision</b>
<a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
<div style="font-size: small">
diff --git a/ansible_collections/kubernetes/core/docs/kubernetes.core.helm_module.rst b/ansible_collections/kubernetes/core/docs/kubernetes.core.helm_module.rst
index 77b2c27bf..93da13595 100644
--- a/ansible_collections/kubernetes/core/docs/kubernetes.core.helm_module.rst
+++ b/ansible_collections/kubernetes/core/docs/kubernetes.core.helm_module.rst
@@ -36,12 +36,12 @@ Parameters
<table border=0 cellpadding=0 class="documentation-table">
<tr>
- <th colspan="1">Parameter</th>
+ <th colspan="2">Parameter</th>
<th>Choices/<font color="blue">Defaults</font></th>
<th width="100%">Comments</th>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>api_key</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -57,7 +57,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>atomic</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -76,7 +76,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>binary_path</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -91,7 +91,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>ca_cert</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -108,7 +108,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>chart_ref</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -127,7 +127,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>chart_repo_url</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -142,7 +142,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>chart_version</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -157,7 +157,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>context</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -174,7 +174,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>create_namespace</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -194,13 +194,14 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>dependency_update</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
<span style="color: purple">boolean</span>
</div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.4.0</div>
</td>
<td>
<ul style="margin: 0; padding: 0"><b>Choices:</b>
@@ -209,7 +210,7 @@ Parameters
</ul>
</td>
<td>
- <div>Run standelone <code>helm dependency update CHART</code> before the operation.</div>
+ <div>Run standalone <code>helm dependency update CHART</code> before the operation.</div>
<div>Run inline <code>--dependency-update</code> with <code>helm install</code> command. This feature is not supported yet with the <code>helm upgrade</code> command.</div>
<div>So we should consider to use <em>dependency_update</em> options with <em>replace</em> option enabled when specifying <em>chart_repo_url</em>.</div>
<div>The <em>dependency_update</em> option require the add of <code>dependencies</code> block in <code>Chart.yaml/requirements.yaml</code> file.</div>
@@ -218,7 +219,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>disable_hook</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -237,7 +238,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>force</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -256,7 +257,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>history_max</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -273,7 +274,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>host</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -289,12 +290,12 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>kubeconfig</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
- <span style="color: purple">path</span>
+ <span style="color: purple">raw</span>
</div>
</td>
<td>
@@ -302,11 +303,28 @@ Parameters
<td>
<div>Helm option to specify kubeconfig path to use.</div>
<div>If the value is not specified in the task, the value of environment variable <code>K8S_AUTH_KUBECONFIG</code> will be used instead.</div>
+ <div>The configuration can be provided as dictionary. Added in version 2.4.0.</div>
<div style="font-size: small; color: darkgreen"><br/>aliases: kubeconfig_path</div>
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>post_renderer</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.4.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Path to an executable to be used for post rendering.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>purge</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -325,7 +343,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>release_name</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -342,7 +360,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>release_namespace</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -359,7 +377,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>release_state</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -379,7 +397,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>release_values</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -396,7 +414,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>replace</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -418,8 +436,109 @@ Parameters
</td>
</tr>
<tr>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>reset_values</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.5.0</div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li><div style="color: blue"><b>yes</b>&nbsp;&larr;</div></li>
+ </ul>
+ </td>
+ <td>
+ <div>When upgrading package, reset the values to the ones built into the chart.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>reuse_values</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.5.0</div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>When upgrading package, specifies wether to reuse the last release&#x27;s values and merge in any overrides from parameters <em>release_values</em>, <em>values_files</em> or <em>set_values</em>.</div>
+ <div>If <em>reset_values</em> is set to <code>True</code>, this is ignored.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>set_values</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=dictionary</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.4.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Values to pass to chart configuration</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>value</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ / <span style="color: red">required</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Value to pass to chart configuration (e.g phase=prod).</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
<td colspan="1">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>value_type</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">-</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li><div style="color: blue"><b>raw</b>&nbsp;&larr;</div></li>
+ <li>string</li>
+ <li>json</li>
+ <li>file</li>
+ </ul>
+ </td>
+ <td>
+ <div>Use <code>raw</code> set individual value.</div>
+ <div>Use <code>string</code> to force a string for an individual value.</div>
+ <div>Use <code>file</code> to set individual values from a file when the value itself is too long for the command line or is dynamically generated.</div>
+ <div>Use <code>json</code> to set json values (scalars/objects/arrays). This feature requires helm&gt;=3.10.0.</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>skip_crds</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -438,7 +557,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>timeout</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -456,7 +575,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>update_repo_cache</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -475,7 +594,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>validate_certs</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -496,7 +615,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>values_files</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -517,7 +636,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>wait</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -537,7 +656,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>wait_timeout</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -556,6 +675,12 @@ Parameters
<br/>
+Notes
+-----
+
+.. note::
+ - The default idempotency check can fail to report changes when ``release_state`` is set to ``present`` and ``chart_repo_url`` is defined. Install helm diff >= 3.4.1 for better results.
+
Examples
@@ -612,6 +737,15 @@ Examples
state: absent
update_repo_cache: true
+ - name: Deploy Grafana chart using set values on target
+ kubernetes.core.helm:
+ name: test
+ chart_ref: stable/grafana
+ release_namespace: monitoring
+ set_values:
+ - value: phase=prod
+ value_type: string
+
# From git
- name: Git clone stable repo on HEAD
ansible.builtin.git:
@@ -657,6 +791,17 @@ Examples
logging:
enabled: True
+ # Deploy latest version
+ - name: Deploy latest version of Grafana chart using reuse_values
+ kubernetes.core.helm:
+ name: test
+ chart_ref: stable/grafana
+ release_namespace: monitoring
+ reuse_values: true
+ values:
+ replicas: 2
+ version: 3e8ec0b2dffa40fb97d5342e4af887de95faa8c61a62480dd7f8aa03dffcf533
+
Return Values
diff --git a/ansible_collections/kubernetes/core/docs/kubernetes.core.helm_plugin_info_module.rst b/ansible_collections/kubernetes/core/docs/kubernetes.core.helm_plugin_info_module.rst
index 86c563f91..ec0b7ce77 100644
--- a/ansible_collections/kubernetes/core/docs/kubernetes.core.helm_plugin_info_module.rst
+++ b/ansible_collections/kubernetes/core/docs/kubernetes.core.helm_plugin_info_module.rst
@@ -126,7 +126,7 @@ Parameters
<b>kubeconfig</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
- <span style="color: purple">path</span>
+ <span style="color: purple">raw</span>
</div>
</td>
<td>
@@ -134,6 +134,7 @@ Parameters
<td>
<div>Helm option to specify kubeconfig path to use.</div>
<div>If the value is not specified in the task, the value of environment variable <code>K8S_AUTH_KUBECONFIG</code> will be used instead.</div>
+ <div>The configuration can be provided as dictionary. Added in version 2.4.0.</div>
<div style="font-size: small; color: darkgreen"><br/>aliases: kubeconfig_path</div>
</td>
</tr>
diff --git a/ansible_collections/kubernetes/core/docs/kubernetes.core.helm_plugin_module.rst b/ansible_collections/kubernetes/core/docs/kubernetes.core.helm_plugin_module.rst
index ca1f1d03d..aae718992 100644
--- a/ansible_collections/kubernetes/core/docs/kubernetes.core.helm_plugin_module.rst
+++ b/ansible_collections/kubernetes/core/docs/kubernetes.core.helm_plugin_module.rst
@@ -126,7 +126,7 @@ Parameters
<b>kubeconfig</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
- <span style="color: purple">path</span>
+ <span style="color: purple">raw</span>
</div>
</td>
<td>
@@ -134,6 +134,7 @@ Parameters
<td>
<div>Helm option to specify kubeconfig path to use.</div>
<div>If the value is not specified in the task, the value of environment variable <code>K8S_AUTH_KUBECONFIG</code> will be used instead.</div>
+ <div>The configuration can be provided as dictionary. Added in version 2.4.0.</div>
<div style="font-size: small; color: darkgreen"><br/>aliases: kubeconfig_path</div>
</td>
</tr>
@@ -150,7 +151,7 @@ Parameters
</td>
<td>
<div>Name of Helm plugin.</div>
- <div>Required only if <code>state=absent</code>.</div>
+ <div>Required only if <code>state=absent</code> or <code>state=latest</code>.</div>
</td>
</tr>
<tr>
@@ -173,6 +174,23 @@ Parameters
<tr>
<td colspan="1">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>plugin_version</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.3.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Plugin version to install. If this is not specified, the latest version is installed.</div>
+ <div>Ignored when <code>state=absent</code> or <code>state=latest</code>.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>state</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -183,10 +201,12 @@ Parameters
<ul style="margin: 0; padding: 0"><b>Choices:</b>
<li>absent</li>
<li><div style="color: blue"><b>present</b>&nbsp;&larr;</div></li>
+ <li>latest</li>
</ul>
</td>
<td>
<div>If <code>state=present</code> the Helm plugin will be installed.</div>
+ <div>If <code>state=latest</code> the Helm plugin will be updated. Added in version 2.3.0.</div>
<div>If <code>state=absent</code> the Helm plugin will be removed.</div>
</td>
</tr>
@@ -237,6 +257,17 @@ Examples
plugin_name: env
state: absent
+ - name: Install Helm plugin with a specific version
+ kubernetes.core.helm_plugin:
+ plugin_version: 2.0.1
+ plugin_path: https://domain/path/to/plugin.tar.gz
+ state: present
+
+ - name: Update Helm plugin
+ kubernetes.core.helm_plugin:
+ plugin_name: secrets
+ state: latest
+
Return Values
diff --git a/ansible_collections/kubernetes/core/docs/kubernetes.core.helm_repository_module.rst b/ansible_collections/kubernetes/core/docs/kubernetes.core.helm_repository_module.rst
index aa39ede68..ee4169ee7 100644
--- a/ansible_collections/kubernetes/core/docs/kubernetes.core.helm_repository_module.rst
+++ b/ansible_collections/kubernetes/core/docs/kubernetes.core.helm_repository_module.rst
@@ -43,6 +43,22 @@ Parameters
<tr>
<td colspan="1">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>api_key</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.3.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Token used to authenticate with the API. Can also be specified via <code>K8S_AUTH_API_KEY</code> environment variable.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>binary_path</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -58,6 +74,117 @@ Parameters
<tr>
<td colspan="1">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>ca_cert</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">path</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.3.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Path to a CA certificate used to authenticate with the API. The full certificate chain must be provided to avoid certificate validation errors. Can also be specified via <code>K8S_AUTH_SSL_CA_CERT</code> environment variable.</div>
+ <div style="font-size: small; color: darkgreen"><br/>aliases: ssl_ca_cert</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>context</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.4.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Helm option to specify which kubeconfig context to use.</div>
+ <div>If the value is not specified in the task, the value of environment variable <code>K8S_AUTH_CONTEXT</code> will be used instead.</div>
+ <div style="font-size: small; color: darkgreen"><br/>aliases: kube_context</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>force_update</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.4.0</div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li><div style="color: blue"><b>no</b>&nbsp;&larr;</div></li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Whether or not to replace (overwrite) the repo if it already exists.</div>
+ <div style="font-size: small; color: darkgreen"><br/>aliases: force</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>host</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.3.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Provide a URL for accessing the API. Can also be specified via <code>K8S_AUTH_HOST</code> environment variable.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>kubeconfig</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">raw</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.4.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Helm option to specify kubeconfig path to use.</div>
+ <div>If the value is not specified in the task, the value of environment variable <code>K8S_AUTH_KUBECONFIG</code> will be used instead.</div>
+ <div>The configuration can be provided as dictionary.</div>
+ <div style="font-size: small; color: darkgreen"><br/>aliases: kubeconfig_path</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>pass_credentials</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.3.0</div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li><div style="color: blue"><b>no</b>&nbsp;&larr;</div></li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Pass credentials to all domains.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>repo_name</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -142,6 +269,27 @@ Parameters
<div style="font-size: small; color: darkgreen"><br/>aliases: username</div>
</td>
</tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>validate_certs</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.3.0</div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li><div style="color: blue"><b>yes</b>&nbsp;&larr;</div></li>
+ </ul>
+ </td>
+ <td>
+ <div>Whether or not to verify the API server&#x27;s SSL certificates. Can also be specified via <code>K8S_AUTH_VERIFY_SSL</code> environment variable.</div>
+ <div style="font-size: small; color: darkgreen"><br/>aliases: verify_ssl</div>
+ </td>
+ </tr>
</table>
<br/>
diff --git a/ansible_collections/kubernetes/core/docs/kubernetes.core.helm_template_module.rst b/ansible_collections/kubernetes/core/docs/kubernetes.core.helm_template_module.rst
index 67e53716b..c89d27e21 100644
--- a/ansible_collections/kubernetes/core/docs/kubernetes.core.helm_template_module.rst
+++ b/ansible_collections/kubernetes/core/docs/kubernetes.core.helm_template_module.rst
@@ -28,12 +28,12 @@ Parameters
<table border=0 cellpadding=0 class="documentation-table">
<tr>
- <th colspan="1">Parameter</th>
+ <th colspan="2">Parameter</th>
<th>Choices/<font color="blue">Defaults</font></th>
<th width="100%">Comments</th>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>binary_path</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -48,7 +48,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>chart_ref</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -67,7 +67,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>chart_repo_url</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -82,7 +82,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>chart_version</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -97,13 +97,14 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>dependency_update</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
<span style="color: purple">boolean</span>
</div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.4.0</div>
</td>
<td>
<ul style="margin: 0; padding: 0"><b>Choices:</b>
@@ -119,7 +120,27 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>disable_hook</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.4.0</div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li><div style="color: blue"><b>no</b>&nbsp;&larr;</div></li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>Prevent hooks from running during install.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>include_crds</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -138,7 +159,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>output_dir</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -154,7 +175,40 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>release_name</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.4.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Release name to use in rendered templates.</div>
+ <div style="font-size: small; color: darkgreen"><br/>aliases: name</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>release_namespace</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.4.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>namespace scope for this request.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>release_values</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -171,8 +225,86 @@ Parameters
</td>
</tr>
<tr>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>set_values</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=dictionary</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.4.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Values to pass to chart configuration.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>value</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ / <span style="color: red">required</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Value to pass to chart configuration (e.g phase=prod).</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
<td colspan="1">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>value_type</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">-</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li><div style="color: blue"><b>raw</b>&nbsp;&larr;</div></li>
+ <li>string</li>
+ <li>json</li>
+ <li>file</li>
+ </ul>
+ </td>
+ <td>
+ <div>Use <code>raw</code> set individual value.</div>
+ <div>Use <code>string</code> to force a string for an individual value.</div>
+ <div>Use <code>file</code> to set individual values from a file when the value itself is too long for the command line or is dynamically generated.</div>
+ <div>Use <code>json</code> to set json values (scalars/objects/arrays). This feature requires helm&gt;=3.10.0.</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>show_only</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.4.0</div>
+ </td>
+ <td>
+ <b>Default:</b><br/><div style="color: blue">[]</div>
+ </td>
+ <td>
+ <div>Only show manifests rendered from the given templates.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>update_repo_cache</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -190,7 +322,7 @@ Parameters
</td>
</tr>
<tr>
- <td colspan="1">
+ <td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
<b>values_files</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
@@ -235,6 +367,24 @@ Examples
dest: myfile.yaml
content: "{{ result.stdout }}"
+ - name: Render MutatingWebhooksConfiguration for revision tag "canary", rev "1-13-0"
+ kubernetes.core.helm_template:
+ chart_ref: istio/istiod
+ chart_version: "1.13.0"
+ release_namespace: "istio-system"
+ show_only:
+ - "templates/revision-tags.yaml"
+ release_values:
+ revision: "1-13-0"
+ revisionTags:
+ - "canary"
+ register: result
+
+ - name: Write templates to file
+ copy:
+ dest: myfile.yaml
+ content: "{{ result.stdout }}"
+
Return Values
diff --git a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_cluster_info_module.rst b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_cluster_info_module.rst
index 5e42983c5..a0b621d66 100644
--- a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_cluster_info_module.rst
+++ b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_cluster_info_module.rst
@@ -27,8 +27,8 @@ Requirements
------------
The below requirements are needed on the host that executes this module.
-- python >= 3.6
-- kubernetes >= 12.0.0
+- python >= 3.9
+- kubernetes >= 24.2.0
- PyYAML >= 3.11
@@ -203,12 +203,32 @@ Parameters
</td>
<td>
<div>Path to an existing Kubernetes config file. If not provided, and no other connection options are provided, the Kubernetes client will attempt to load the default configuration file from <em>~/.kube/config</em>. Can also be specified via K8S_AUTH_KUBECONFIG environment variable.</div>
+ <div>Multiple Kubernetes config file can be provided using separator &#x27;;&#x27; for Windows platform or &#x27;:&#x27; for others platforms.</div>
<div>The kubernetes configuration can be provided as dictionary. This feature requires a python kubernetes client version &gt;= 17.17.0. Added in version 2.2.0.</div>
</td>
</tr>
<tr>
<td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>no_proxy</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.3.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>The comma separated list of hosts/domains/IP/CIDR that shouldn&#x27;t go through proxy. Can also be specified via K8S_AUTH_NO_PROXY environment variable.</div>
+ <div>Please note that this module does not pick up typical proxy settings from the environment (e.g. NO_PROXY).</div>
+ <div>This feature requires kubernetes&gt;=19.15.0. When kubernetes library is less than 19.15.0, it fails even no_proxy set in correct.</div>
+ <div>example value is &quot;localhost,.local,.example.com,127.0.0.1,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16&quot;</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>password</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
diff --git a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_cp_module.rst b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_cp_module.rst
index c61e1c121..21badc81f 100644
--- a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_cp_module.rst
+++ b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_cp_module.rst
@@ -25,8 +25,8 @@ Requirements
------------
The below requirements are needed on the host that executes this module.
-- python >= 3.6
-- kubernetes >= 12.0.0
+- python >= 3.9
+- kubernetes >= 24.2.0
Parameters
@@ -215,6 +215,7 @@ Parameters
</td>
<td>
<div>Path to an existing Kubernetes config file. If not provided, and no other connection options are provided, the Kubernetes client will attempt to load the default configuration file from <em>~/.kube/config</em>. Can also be specified via K8S_AUTH_KUBECONFIG environment variable.</div>
+ <div>Multiple Kubernetes config file can be provided using separator &#x27;;&#x27; for Windows platform or &#x27;:&#x27; for others platforms.</div>
<div>The kubernetes configuration can be provided as dictionary. This feature requires a python kubernetes client version &gt;= 17.17.0. Added in version 2.2.0.</div>
</td>
</tr>
@@ -274,6 +275,25 @@ Parameters
<tr>
<td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>no_proxy</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.3.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>The comma separated list of hosts/domains/IP/CIDR that shouldn&#x27;t go through proxy. Can also be specified via K8S_AUTH_NO_PROXY environment variable.</div>
+ <div>Please note that this module does not pick up typical proxy settings from the environment (e.g. NO_PROXY).</div>
+ <div>This feature requires kubernetes&gt;=19.15.0. When kubernetes library is less than 19.15.0, it fails even no_proxy set in correct.</div>
+ <div>example value is &quot;localhost,.local,.example.com,127.0.0.1,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16&quot;</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>password</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -538,7 +558,7 @@ Examples
state: from_pod
# copy content into a file in the remote pod
- - name: Copy /tmp/foo from a remote pod to /tmp/bar locally
+ - name: Copy content into a file in the remote pod
kubernetes.core.k8s_cp:
state: to_pod
namespace: some-namespace
diff --git a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_drain_module.rst b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_drain_module.rst
index fa6e5ffbd..70c2badad 100644
--- a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_drain_module.rst
+++ b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_drain_module.rst
@@ -29,8 +29,8 @@ Requirements
------------
The below requirements are needed on the host that executes this module.
-- python >= 3.6
-- kubernetes >= 12.0.0
+- python >= 3.9
+- kubernetes >= 24.2.0
Parameters
@@ -132,6 +132,7 @@ Parameters
</div>
</td>
<td>
+ <b>Default:</b><br/><div style="color: blue">{}</div>
</td>
<td>
<div>Specify options to delete pods.</div>
@@ -147,6 +148,7 @@ Parameters
<div style="font-size: small">
<span style="color: purple">boolean</span>
</div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.3.0</div>
</td>
<td>
<ul style="margin: 0; padding: 0"><b>Choices:</b>
@@ -155,7 +157,7 @@ Parameters
</ul>
</td>
<td>
- <div>Continue even if there are pods using emptyDir (local data that will be deleted when the node is drained)</div>
+ <div>Continue even if there are pods using emptyDir (local data that will be deleted when the node is drained).</div>
</td>
</tr>
<tr>
@@ -334,6 +336,7 @@ Parameters
</td>
<td>
<div>Path to an existing Kubernetes config file. If not provided, and no other connection options are provided, the Kubernetes client will attempt to load the default configuration file from <em>~/.kube/config</em>. Can also be specified via K8S_AUTH_KUBECONFIG environment variable.</div>
+ <div>Multiple Kubernetes config file can be provided using separator &#x27;;&#x27; for Windows platform or &#x27;:&#x27; for others platforms.</div>
<div>The kubernetes configuration can be provided as dictionary. This feature requires a python kubernetes client version &gt;= 17.17.0. Added in version 2.2.0.</div>
</td>
</tr>
@@ -356,6 +359,25 @@ Parameters
<tr>
<td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>no_proxy</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.3.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>The comma separated list of hosts/domains/IP/CIDR that shouldn&#x27;t go through proxy. Can also be specified via K8S_AUTH_NO_PROXY environment variable.</div>
+ <div>Please note that this module does not pick up typical proxy settings from the environment (e.g. NO_PROXY).</div>
+ <div>This feature requires kubernetes&gt;=19.15.0. When kubernetes library is less than 19.15.0, it fails even no_proxy set in correct.</div>
+ <div>example value is &quot;localhost,.local,.example.com,127.0.0.1,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16&quot;</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>password</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -395,6 +417,25 @@ Parameters
<tr>
<td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>pod_selectors</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.5.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Label selector to filter pods on the node.</div>
+ <div>This option has effect only when <code>state</code> is set to <em>drain</em>.</div>
+ <div style="font-size: small; color: darkgreen"><br/>aliases: label_selectors</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>proxy</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -561,7 +602,7 @@ Examples
state: drain
name: foo
delete_options:
- terminate_grace_period: 900
+ terminate_grace_period: 900
- name: Mark node "foo" as schedulable.
kubernetes.core.k8s_drain:
@@ -573,6 +614,14 @@ Examples
state: cordon
name: foo
+ - name: Drain node "foo" using label selector to filter the list of pods to be drained.
+ kubernetes.core.k8s_drain:
+ state: drain
+ name: foo
+ pod_selectors:
+ - 'app!=csi-attacher'
+ - 'app!=csi-provisioner'
+
Return Values
diff --git a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_exec_module.rst b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_exec_module.rst
index a928352ee..49be34212 100644
--- a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_exec_module.rst
+++ b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_exec_module.rst
@@ -25,8 +25,8 @@ Requirements
------------
The below requirements are needed on the host that executes this module.
-- python >= 3.6
-- kubernetes >= 12.0.0
+- python >= 3.9
+- kubernetes >= 24.2.0
- PyYAML >= 3.11
@@ -117,7 +117,7 @@ Parameters
<td>
</td>
<td>
- <div>The command to execute</div>
+ <div>The command to execute.</div>
</td>
</tr>
<tr>
@@ -134,6 +134,7 @@ Parameters
<td>
<div>The name of the container in the pod to connect to.</div>
<div>Defaults to only container if there is only one container in the pod.</div>
+ <div>If not specified, will choose the first container from the given pod as kubectl cmdline does.</div>
</td>
</tr>
<tr>
@@ -214,6 +215,7 @@ Parameters
</td>
<td>
<div>Path to an existing Kubernetes config file. If not provided, and no other connection options are provided, the Kubernetes client will attempt to load the default configuration file from <em>~/.kube/config</em>. Can also be specified via K8S_AUTH_KUBECONFIG environment variable.</div>
+ <div>Multiple Kubernetes config file can be provided using separator &#x27;;&#x27; for Windows platform or &#x27;:&#x27; for others platforms.</div>
<div>The kubernetes configuration can be provided as dictionary. This feature requires a python kubernetes client version &gt;= 17.17.0. Added in version 2.2.0.</div>
</td>
</tr>
@@ -230,7 +232,26 @@ Parameters
<td>
</td>
<td>
- <div>The pod namespace name</div>
+ <div>The pod namespace name.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>no_proxy</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.3.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>The comma separated list of hosts/domains/IP/CIDR that shouldn&#x27;t go through proxy. Can also be specified via K8S_AUTH_NO_PROXY environment variable.</div>
+ <div>Please note that this module does not pick up typical proxy settings from the environment (e.g. NO_PROXY).</div>
+ <div>This feature requires kubernetes&gt;=19.15.0. When kubernetes library is less than 19.15.0, it fails even no_proxy set in correct.</div>
+ <div>example value is &quot;localhost,.local,.example.com,127.0.0.1,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16&quot;</div>
</td>
</tr>
<tr>
@@ -285,7 +306,7 @@ Parameters
<td>
</td>
<td>
- <div>The pod name</div>
+ <div>The pod name.</div>
</td>
</tr>
<tr>
@@ -302,7 +323,7 @@ Parameters
<td>
<div>The URL of an HTTP proxy to use for the connection.</div>
<div>Can also be specified via <em>K8S_AUTH_PROXY</em> environment variable.</div>
- <div>Please note that this module does not pick up typical proxy settings from the environment (e.g. HTTP_PROXY).</div>
+ <div>Please note that this module does not pick up typical proxy settings from the environment (for example, HTTP_PROXY).</div>
</td>
</tr>
<tr>
@@ -449,6 +470,13 @@ Examples
msg: "cmd failed"
when: command_status.rc != 0
+ - name: Specify a container name to execute the command on
+ kubernetes.core.k8s_exec:
+ namespace: myproject
+ pod: busybox-test
+ container: manager
+ command: echo "hello"
+
Return Values
diff --git a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_info_module.rst b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_info_module.rst
index e4d248af9..af5f4656d 100644
--- a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_info_module.rst
+++ b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_info_module.rst
@@ -28,8 +28,8 @@ Requirements
------------
The below requirements are needed on the host that executes this module.
-- python >= 3.6
-- kubernetes >= 12.0.0
+- python >= 3.9
+- kubernetes >= 24.2.0
- PyYAML >= 3.11
@@ -153,6 +153,7 @@ Parameters
</div>
</td>
<td>
+ <b>Default:</b><br/><div style="color: blue">[]</div>
</td>
<td>
<div>List of field selectors to use to filter results</div>
@@ -161,6 +162,25 @@ Parameters
<tr>
<td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>hidden_fields</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.5.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Hide fields matching any of the field definitions in the result</div>
+ <div>An example might be <code>hidden_fields=[metadata.managedFields]</code></div>
+ <div>Only field definitions that don&#x27;t reference list items are supported (so V(spec.containers[0]) would not work)</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>host</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -240,6 +260,7 @@ Parameters
</td>
<td>
<div>Path to an existing Kubernetes config file. If not provided, and no other connection options are provided, the Kubernetes client will attempt to load the default configuration file from <em>~/.kube/config</em>. Can also be specified via K8S_AUTH_KUBECONFIG environment variable.</div>
+ <div>Multiple Kubernetes config file can be provided using separator &#x27;;&#x27; for Windows platform or &#x27;:&#x27; for others platforms.</div>
<div>The kubernetes configuration can be provided as dictionary. This feature requires a python kubernetes client version &gt;= 17.17.0. Added in version 2.2.0.</div>
</td>
</tr>
@@ -254,6 +275,7 @@ Parameters
</div>
</td>
<td>
+ <b>Default:</b><br/><div style="color: blue">[]</div>
</td>
<td>
<div>List of label selectors to use to filter results</div>
@@ -298,6 +320,25 @@ Parameters
<tr>
<td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>no_proxy</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.3.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>The comma separated list of hosts/domains/IP/CIDR that shouldn&#x27;t go through proxy. Can also be specified via K8S_AUTH_NO_PROXY environment variable.</div>
+ <div>Please note that this module does not pick up typical proxy settings from the environment (e.g. NO_PROXY).</div>
+ <div>This feature requires kubernetes&gt;=19.15.0. When kubernetes library is less than 19.15.0, it fails even no_proxy set in correct.</div>
+ <div>example value is &quot;localhost,.local,.example.com,127.0.0.1,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16&quot;</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>password</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
diff --git a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_inventory.rst b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_inventory.rst
index 79769c1b4..7a8cfd62a 100644
--- a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_inventory.rst
+++ b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_inventory.rst
@@ -13,6 +13,15 @@ kubernetes.core.k8s
:local:
:depth: 1
+DEPRECATED
+----------
+:Removed in collection release after
+:Why: As discussed in https://github.com/ansible-collections/kubernetes.core/issues/31, we decided to
+remove the k8s inventory plugin in release 4.0.0.
+
+:Alternative: Use :ref:`kubernetes.core.k8s_info <kubernetes.core.k8s_info_module>` and :ref:`ansible.builtin.add_host <ansible.builtin.add_host_module>` instead.
+
+
Synopsis
--------
@@ -27,8 +36,8 @@ Requirements
------------
The below requirements are needed on the local Ansible controller node that executes this inventory.
-- python >= 3.6
-- kubernetes >= 12.0.0
+- python >= 3.9
+- kubernetes >= 24.2.0
- PyYAML >= 3.11
@@ -322,24 +331,24 @@ Examples
# File must be named k8s.yaml or k8s.yml
- # Authenticate with token, and return all pods and services for all namespaces
- plugin: kubernetes.core.k8s
- connections:
- - host: https://192.168.64.4:8443
- api_key: xxxxxxxxxxxxxxxx
- validate_certs: false
+ - name: Authenticate with token, and return all pods and services for all namespaces
+ plugin: kubernetes.core.k8s
+ connections:
+ - host: https://192.168.64.4:8443
+ api_key: xxxxxxxxxxxxxxxx
+ validate_certs: false
- # Use default config (~/.kube/config) file and active context, and return objects for a specific namespace
- plugin: kubernetes.core.k8s
- connections:
- - namespaces:
- - testing
+ - name: Use default config (~/.kube/config) file and active context, and return objects for a specific namespace
+ plugin: kubernetes.core.k8s
+ connections:
+ - namespaces:
+ - testing
- # Use a custom config file, and a specific context.
- plugin: kubernetes.core.k8s
- connections:
- - kubeconfig: /path/to/config
- context: 'awx/192-168-64-4:8443/developer'
+ - name: Use a custom config file, and a specific context.
+ plugin: kubernetes.core.k8s
+ connections:
+ - kubeconfig: /path/to/config
+ context: 'awx/192-168-64-4:8443/developer'
@@ -348,11 +357,15 @@ Status
------
+- This inventory will be removed in version 4.0.0. *[deprecated]*
+- For more information see `DEPRECATED`_.
+
+
Authors
~~~~~~~
-- Chris Houseknecht <@chouseknecht>
-- Fabian von Feilitzsch <@fabianvf>
+- Chris Houseknecht (@chouseknecht)
+- Fabian von Feilitzsch (@fabianvf)
.. hint::
diff --git a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_json_patch_module.rst b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_json_patch_module.rst
index 926c84104..3ab82a1b2 100644
--- a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_json_patch_module.rst
+++ b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_json_patch_module.rst
@@ -27,8 +27,8 @@ Requirements
------------
The below requirements are needed on the host that executes this module.
-- python >= 3.6
-- kubernetes >= 12.0.0
+- python >= 3.9
+- kubernetes >= 24.2.0
- PyYAML >= 3.11
- jsonpatch
@@ -220,6 +220,7 @@ Parameters
</td>
<td>
<div>Path to an existing Kubernetes config file. If not provided, and no other connection options are provided, the Kubernetes client will attempt to load the default configuration file from <em>~/.kube/config</em>. Can also be specified via K8S_AUTH_KUBECONFIG environment variable.</div>
+ <div>Multiple Kubernetes config file can be provided using separator &#x27;;&#x27; for Windows platform or &#x27;:&#x27; for others platforms.</div>
<div>The kubernetes configuration can be provided as dictionary. This feature requires a python kubernetes client version &gt;= 17.17.0. Added in version 2.2.0.</div>
</td>
</tr>
@@ -259,6 +260,25 @@ Parameters
<tr>
<td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>no_proxy</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.3.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>The comma separated list of hosts/domains/IP/CIDR that shouldn&#x27;t go through proxy. Can also be specified via K8S_AUTH_NO_PROXY environment variable.</div>
+ <div>Please note that this module does not pick up typical proxy settings from the environment (e.g. NO_PROXY).</div>
+ <div>This feature requires kubernetes&gt;=19.15.0. When kubernetes library is less than 19.15.0, it fails even no_proxy set in correct.</div>
+ <div>example value is &quot;localhost,.local,.example.com,127.0.0.1,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16&quot;</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>password</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -594,7 +614,7 @@ Examples
path: /metadata/labels/app
value: myapp
- op: replace
- patch: /spec/containers/0/image
+ path: /spec/containers/0/image
value: nginx
diff --git a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_log_module.rst b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_log_module.rst
index a639fb7d2..f2cbe671b 100644
--- a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_log_module.rst
+++ b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_log_module.rst
@@ -28,8 +28,8 @@ Requirements
------------
The below requirements are needed on the host that executes this module.
-- python >= 3.6
-- kubernetes >= 12.0.0
+- python >= 3.9
+- kubernetes >= 24.2.0
- PyYAML >= 3.11
@@ -47,6 +47,27 @@ Parameters
<tr>
<td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>all_containers</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.4.0</div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li>no</li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>If set to <code>true</code>, retrieve all containers&#x27; logs in the pod(s).</div>
+ <div>mutually exclusive with <code>container</code>.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>api_key</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -141,7 +162,8 @@ Parameters
<td>
<div>Use to specify the container within a pod to grab the log from.</div>
<div>If there is only one container, this will default to that container.</div>
- <div>If there is more than one container, this option is required.</div>
+ <div>If there is more than one container, this option is required or set <em>all_containers</em> to <code>true</code>.</div>
+ <div>mutually exclusive with <code>all_containers</code>.</div>
</td>
</tr>
<tr>
@@ -240,6 +262,7 @@ Parameters
</td>
<td>
<div>Path to an existing Kubernetes config file. If not provided, and no other connection options are provided, the Kubernetes client will attempt to load the default configuration file from <em>~/.kube/config</em>. Can also be specified via K8S_AUTH_KUBECONFIG environment variable.</div>
+ <div>Multiple Kubernetes config file can be provided using separator &#x27;;&#x27; for Windows platform or &#x27;:&#x27; for others platforms.</div>
<div>The kubernetes configuration can be provided as dictionary. This feature requires a python kubernetes client version &gt;= 17.17.0. Added in version 2.2.0.</div>
</td>
</tr>
@@ -254,6 +277,7 @@ Parameters
</div>
</td>
<td>
+ <b>Default:</b><br/><div style="color: blue">[]</div>
</td>
<td>
<div>List of label selectors to use to filter results</div>
@@ -298,6 +322,25 @@ Parameters
<tr>
<td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>no_proxy</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.3.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>The comma separated list of hosts/domains/IP/CIDR that shouldn&#x27;t go through proxy. Can also be specified via K8S_AUTH_NO_PROXY environment variable.</div>
+ <div>Please note that this module does not pick up typical proxy settings from the environment (e.g. NO_PROXY).</div>
+ <div>This feature requires kubernetes&gt;=19.15.0. When kubernetes library is less than 19.15.0, it fails even no_proxy set in correct.</div>
+ <div>example value is &quot;localhost,.local,.example.com,127.0.0.1,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16&quot;</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>password</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -337,6 +380,26 @@ Parameters
<tr>
<td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>previous</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.4.0</div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li><div style="color: blue"><b>no</b>&nbsp;&larr;</div></li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>If <code>true</code>, print the logs for the previous instance of the container in a pod if it exists.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>proxy</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -438,6 +501,22 @@ Parameters
<tr>
<td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>tail_lines</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">integer</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.4.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>A number of lines from the end of the logs to retrieve.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>username</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -519,8 +598,16 @@ Examples
kind: DeploymentConfig
namespace: testing
name: example
+ tail_lines: 100
register: log
+ # This will get the logs from all containers in Pod
+ - name: Get the logs from all containers in pod
+ kubernetes.core.k8s_log:
+ namespace: testing
+ name: some-pod
+ all_containers: true
+
Return Values
diff --git a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_lookup.rst b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_lookup.rst
index 9e428c8be..347a8c055 100644
--- a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_lookup.rst
+++ b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_lookup.rst
@@ -26,8 +26,8 @@ Requirements
------------
The below requirements are needed on the local Ansible controller node that executes this lookup.
-- python >= 3.6
-- kubernetes >= 12.0.0
+- python >= 3.9
+- kubernetes >= 24.2.0
- PyYAML >= 3.11
@@ -438,106 +438,28 @@ Common return values are documented `here <https://docs.ansible.com/ansible/late
<table border=0 cellpadding=0 class="documentation-table">
<tr>
- <th colspan="2">Key</th>
+ <th colspan="1">Key</th>
<th>Returned</th>
<th width="100%">Description</th>
</tr>
<tr>
- <td colspan="2">
+ <td colspan="1">
<div class="ansibleOptionAnchor" id="return-"></div>
<b>_list</b>
<a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
<div style="font-size: small">
- <span style="color: purple">complex</span>
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=dictionary</span>
</div>
</td>
<td></td>
<td>
<div>One ore more object definitions returned from the API.</div>
<br/>
+ <div style="font-size: smaller"><b>Sample:</b></div>
+ <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">[{&#x27;kind&#x27;: &#x27;ConfigMap&#x27;, &#x27;apiVersion&#x27;: &#x27;v1&#x27;, &#x27;metadata&#x27;: {&#x27;creationTimestamp&#x27;: &#x27;2022-03-04T13:59:49Z&#x27;, &#x27;name&#x27;: &#x27;my-config-map&#x27;, &#x27;namespace&#x27;: &#x27;default&#x27;, &#x27;resourceVersion&#x27;: &#x27;418&#x27;, &#x27;uid&#x27;: &#x27;5714b011-d090-4eac-8272-a0ea82ec0abd&#x27;}, &#x27;data&#x27;: {&#x27;key1&#x27;: &#x27;val1&#x27;}}]</div>
</td>
</tr>
- <tr>
- <td class="elbow-placeholder">&nbsp;</td>
- <td colspan="1">
- <div class="ansibleOptionAnchor" id="return-"></div>
- <b>api_version</b>
- <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
- <div style="font-size: small">
- <span style="color: purple">string</span>
- </div>
- </td>
- <td>success</td>
- <td>
- <div>The versioned schema of this representation of an object.</div>
- <br/>
- </td>
- </tr>
- <tr>
- <td class="elbow-placeholder">&nbsp;</td>
- <td colspan="1">
- <div class="ansibleOptionAnchor" id="return-"></div>
- <b>kind</b>
- <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
- <div style="font-size: small">
- <span style="color: purple">string</span>
- </div>
- </td>
- <td>success</td>
- <td>
- <div>Represents the REST resource this object represents.</div>
- <br/>
- </td>
- </tr>
- <tr>
- <td class="elbow-placeholder">&nbsp;</td>
- <td colspan="1">
- <div class="ansibleOptionAnchor" id="return-"></div>
- <b>metadata</b>
- <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
- <div style="font-size: small">
- <span style="color: purple">complex</span>
- </div>
- </td>
- <td>success</td>
- <td>
- <div>Standard object metadata. Includes name, namespace, annotations, labels, etc.</div>
- <br/>
- </td>
- </tr>
- <tr>
- <td class="elbow-placeholder">&nbsp;</td>
- <td colspan="1">
- <div class="ansibleOptionAnchor" id="return-"></div>
- <b>spec</b>
- <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
- <div style="font-size: small">
- <span style="color: purple">complex</span>
- </div>
- </td>
- <td>success</td>
- <td>
- <div>Specific attributes of the object. Will vary based on the <em>api_version</em> and <em>kind</em>.</div>
- <br/>
- </td>
- </tr>
- <tr>
- <td class="elbow-placeholder">&nbsp;</td>
- <td colspan="1">
- <div class="ansibleOptionAnchor" id="return-"></div>
- <b>status</b>
- <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
- <div style="font-size: small">
- <span style="color: purple">complex</span>
- </div>
- </td>
- <td>success</td>
- <td>
- <div>Current status details for the object.</div>
- <br/>
- </td>
- </tr>
-
</table>
<br/><br/>
@@ -549,8 +471,8 @@ Status
Authors
~~~~~~~
-- Chris Houseknecht <@chouseknecht>
-- Fabian von Feilitzsch <@fabianvf>
+- Chris Houseknecht (@chouseknecht)
+- Fabian von Feilitzsch (@fabianvf)
.. hint::
diff --git a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_module.rst b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_module.rst
index 9db23e054..d4f9d23c0 100644
--- a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_module.rst
+++ b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_module.rst
@@ -29,8 +29,8 @@ Requirements
------------
The below requirements are needed on the host that executes this module.
-- python >= 3.6
-- kubernetes >= 12.0.0
+- python >= 3.9
+- kubernetes >= 24.2.0
- PyYAML >= 3.11
- jsonpatch
@@ -211,6 +211,30 @@ Parameters
<tr>
<td colspan="3">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>delete_all</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.5.0</div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li><div style="color: blue"><b>no</b>&nbsp;&larr;</div></li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>When this option is set to <em>true</em> and <em>state=absent</em>, module will delete all resources of the specified resource type in the requested namespace.</div>
+ <div>Ignored when <code>state</code> is not set to <em>absent</em> or when one of (src), <code>name</code> or <code>resource_definition</code> is provided.</div>
+ <div>Parameter <code>kind</code> is required to use this option.</div>
+ <div>This parameter can be used with <code>label_selectors</code> to restrict the resources to be deleted.</div>
+ <div style="font-size: small; color: darkgreen"><br/>aliases: all</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>delete_options</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -339,6 +363,45 @@ Parameters
<tr>
<td colspan="3">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>generate_name</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.3.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Use to specify the basis of an object name and random characters will be added automatically on server to generate a unique name.</div>
+ <div>This option is ignored when <em>state</em> is not set to <code>present</code> or when <em>apply</em> is set to <code>yes</code>.</div>
+ <div>If <em>resource definition</em> is provided, the <em>metadata.generateName</em> value from the <em>resource_definition</em> will override this option.</div>
+ <div>If <em>resource definition</em> is provided, and contains <em>metadata.name</em>, this option is ignored.</div>
+ <div>mutually exclusive with <code>name</code>.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>hidden_fields</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">list</span>
+ / <span style="color: purple">elements=string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.5.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Hide fields matching this option in the result</div>
+ <div>An example might be <code>hidden_fields=[metadata.managedFields]</code></div>
+ <div>Only field definitions that don&#x27;t reference list items are supported (so V(spec.containers[0]) would not work)</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>host</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -417,6 +480,7 @@ Parameters
</td>
<td>
<div>Path to an existing Kubernetes config file. If not provided, and no other connection options are provided, the Kubernetes client will attempt to load the default configuration file from <em>~/.kube/config</em>. Can also be specified via K8S_AUTH_KUBECONFIG environment variable.</div>
+ <div>Multiple Kubernetes config file can be provided using separator &#x27;;&#x27; for Windows platform or &#x27;:&#x27; for others platforms.</div>
<div>The kubernetes configuration can be provided as dictionary. This feature requires a python kubernetes client version &gt;= 17.17.0. Added in version 2.2.0.</div>
</td>
</tr>
@@ -460,7 +524,7 @@ Parameters
<div>See <a href='https://kubernetes.io/docs/tasks/run-application/update-api-object-kubectl-patch/#use-a-json-merge-patch-to-update-a-deployment'>https://kubernetes.io/docs/tasks/run-application/update-api-object-kubectl-patch/#use-a-json-merge-patch-to-update-a-deployment</a></div>
<div>If more than one <code>merge_type</code> is given, the merge_types will be tried in order. This defaults to <code>[&#x27;strategic-merge&#x27;, &#x27;merge&#x27;]</code>, which is ideal for using the same parameters on resource kinds that combine Custom Resources and built-in resources.</div>
<div>mutually exclusive with <code>apply</code></div>
- <div><em>merge_type=json</em> is deprecated and will be removed in version 3.0.0. Please use <span class='module'>kubernetes.core.k8s_json_patch</span> instead.</div>
+ <div><em>merge_type=json</em> is deprecated and will be removed in version 4.0.0. Please use <span class='module'>kubernetes.core.k8s_json_patch</span> instead.</div>
</td>
</tr>
<tr>
@@ -502,6 +566,25 @@ Parameters
<tr>
<td colspan="3">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>no_proxy</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.3.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>The comma separated list of hosts/domains/IP/CIDR that shouldn&#x27;t go through proxy. Can also be specified via K8S_AUTH_NO_PROXY environment variable.</div>
+ <div>Please note that this module does not pick up typical proxy settings from the environment (e.g. NO_PROXY).</div>
+ <div>This feature requires kubernetes&gt;=19.15.0. When kubernetes library is less than 19.15.0, it fails even no_proxy set in correct.</div>
+ <div>example value is &quot;localhost,.local,.example.com,127.0.0.1,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16&quot;</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>password</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -643,6 +726,63 @@ Parameters
<tr>
<td colspan="3">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>server_side_apply</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.3.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>When this option is set, apply runs in the server instead of the client.</div>
+ <div>Ignored if <code>apply</code> is not set or is set to False.</div>
+ <div>This option requires &quot;kubernetes &gt;= 19.15.0&quot;.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>field_manager</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ / <span style="color: red">required</span>
+ </div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Name of the manager used to track field ownership.</div>
+ </td>
+ </tr>
+ <tr>
+ <td class="elbow-placeholder"></td>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>force_conflicts</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">boolean</span>
+ </div>
+ </td>
+ <td>
+ <ul style="margin: 0; padding: 0"><b>Choices:</b>
+ <li><div style="color: blue"><b>no</b>&nbsp;&larr;</div></li>
+ <li>yes</li>
+ </ul>
+ </td>
+ <td>
+ <div>A conflict is a special status error that occurs when an Server Side Apply operation tries to change a field, which another user also claims to manage.</div>
+ <div>When set to True, server-side apply will force the changes against conflicts.</div>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="3">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>src</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -654,7 +794,8 @@ Parameters
<td>
<div>Provide a path to a file containing a valid YAML definition of an object or objects to be created or updated. Mutually exclusive with <em>resource_definition</em>. NOTE: <em>kind</em>, <em>api_version</em>, <em>name</em>, and <em>namespace</em> will be overwritten by corresponding values found in the configuration read in from the <em>src</em> file.</div>
<div>Reads from the local file system. To read from the Ansible controller&#x27;s file system, including vaulted files, use the file lookup plugin or template lookup plugin, combined with the from_yaml filter, and pass the result to <em>resource_definition</em>. See Examples below.</div>
- <div>Mutually exclusive with <em>template</em> in case of <span class='module'>k8s</span> module.</div>
+ <div>The URL to manifest files that can be used to create the resource. Added in version 2.4.0.</div>
+ <div>Mutually exclusive with <em>template</em> in case of <span class='module'>kubernetes.core.k8s</span> module.</div>
</td>
</tr>
<tr>
@@ -1016,6 +1157,14 @@ Examples
state: present
definition: "{{ lookup('file', '/testing/deployment.yml') | from_yaml }}"
+ - name: >-
+ (Alternative) Read definition file from the Ansible controller file system.
+ In this case, the definition file contains multiple YAML documents, separated by ---.
+ If the definition file has been encrypted with Ansible Vault it will automatically be decrypted.
+ kubernetes.core.k8s:
+ state: present
+ definition: "{{ lookup('file', '/testing/deployment.yml') | from_yaml_all }}"
+
- name: Read definition template file from the Ansible controller file system
kubernetes.core.k8s:
state: present
@@ -1033,10 +1182,10 @@ Examples
kubernetes.core.k8s:
state: present
template:
- - path: '/testing/deployment_one.j2'
- - path: '/testing/deployment_two.j2'
- variable_start_string: '[['
- variable_end_string: ']]'
+ - path: '/testing/deployment_one.j2'
+ - path: '/testing/deployment_two.j2'
+ variable_start_string: '[['
+ variable_end_string: ']]'
- name: fail on validation errors
kubernetes.core.k8s:
@@ -1093,6 +1242,41 @@ Examples
labels:
support: patch
+ # Create object using generateName
+ - name: create resource using name generated by the server
+ kubernetes.core.k8s:
+ state: present
+ generate_name: pod-
+ definition:
+ apiVersion: v1
+ kind: Pod
+ spec:
+ containers:
+ - name: py
+ image: python:3.7-alpine
+ imagePullPolicy: IfNotPresent
+
+ # Server side apply
+ - name: Create configmap using server side apply
+ kubernetes.core.k8s:
+ namespace: testing
+ definition:
+ apiVersion: v1
+ kind: ConfigMap
+ metadata:
+ name: my-configmap
+ apply: yes
+ server_side_apply:
+ field_manager: ansible
+
+ # Delete all Deployment from specified namespace
+ - name: Delete all Deployment from specified namespace
+ kubernetes.core.k8s:
+ api_version: apps/v1
+ namespace: testing
+ kind: Deployment
+ delete_all: true
+
Return Values
diff --git a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_rollback_module.rst b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_rollback_module.rst
index 99ff84b97..f5f29aa50 100644
--- a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_rollback_module.rst
+++ b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_rollback_module.rst
@@ -27,8 +27,8 @@ Requirements
------------
The below requirements are needed on the host that executes this module.
-- python >= 3.6
-- kubernetes >= 12.0.0
+- python >= 3.9
+- kubernetes >= 24.2.0
- PyYAML >= 3.11
@@ -152,6 +152,7 @@ Parameters
</div>
</td>
<td>
+ <b>Default:</b><br/><div style="color: blue">[]</div>
</td>
<td>
<div>List of field selectors to use to filter results.</div>
@@ -238,6 +239,7 @@ Parameters
</td>
<td>
<div>Path to an existing Kubernetes config file. If not provided, and no other connection options are provided, the Kubernetes client will attempt to load the default configuration file from <em>~/.kube/config</em>. Can also be specified via K8S_AUTH_KUBECONFIG environment variable.</div>
+ <div>Multiple Kubernetes config file can be provided using separator &#x27;;&#x27; for Windows platform or &#x27;:&#x27; for others platforms.</div>
<div>The kubernetes configuration can be provided as dictionary. This feature requires a python kubernetes client version &gt;= 17.17.0. Added in version 2.2.0.</div>
</td>
</tr>
@@ -252,6 +254,7 @@ Parameters
</div>
</td>
<td>
+ <b>Default:</b><br/><div style="color: blue">[]</div>
</td>
<td>
<div>List of label selectors to use to filter results.</div>
@@ -296,6 +299,25 @@ Parameters
<tr>
<td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>no_proxy</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.3.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>The comma separated list of hosts/domains/IP/CIDR that shouldn&#x27;t go through proxy. Can also be specified via K8S_AUTH_NO_PROXY environment variable.</div>
+ <div>Please note that this module does not pick up typical proxy settings from the environment (e.g. NO_PROXY).</div>
+ <div>This feature requires kubernetes&gt;=19.15.0. When kubernetes library is less than 19.15.0, it fails even no_proxy set in correct.</div>
+ <div>example value is &quot;localhost,.local,.example.com,127.0.0.1,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16&quot;</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>password</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
diff --git a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_scale_module.rst b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_scale_module.rst
index c1f56a089..101eee816 100644
--- a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_scale_module.rst
+++ b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_scale_module.rst
@@ -25,8 +25,8 @@ Requirements
------------
The below requirements are needed on the host that executes this module.
-- python >= 3.6
-- kubernetes >= 12.0.0
+- python >= 3.9
+- kubernetes >= 24.2.0
- PyYAML >= 3.11
@@ -255,6 +255,7 @@ Parameters
</td>
<td>
<div>Path to an existing Kubernetes config file. If not provided, and no other connection options are provided, the Kubernetes client will attempt to load the default configuration file from <em>~/.kube/config</em>. Can also be specified via K8S_AUTH_KUBECONFIG environment variable.</div>
+ <div>Multiple Kubernetes config file can be provided using separator &#x27;;&#x27; for Windows platform or &#x27;:&#x27; for others platforms.</div>
<div>The kubernetes configuration can be provided as dictionary. This feature requires a python kubernetes client version &gt;= 17.17.0. Added in version 2.2.0.</div>
</td>
</tr>
@@ -270,6 +271,7 @@ Parameters
<div style="font-style: italic; font-size: small; color: darkgreen">added in 2.0.0</div>
</td>
<td>
+ <b>Default:</b><br/><div style="color: blue">[]</div>
</td>
<td>
<div>List of label selectors to use to filter results.</div>
@@ -314,6 +316,25 @@ Parameters
<tr>
<td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>no_proxy</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.3.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>The comma separated list of hosts/domains/IP/CIDR that shouldn&#x27;t go through proxy. Can also be specified via K8S_AUTH_NO_PROXY environment variable.</div>
+ <div>Please note that this module does not pick up typical proxy settings from the environment (e.g. NO_PROXY).</div>
+ <div>This feature requires kubernetes&gt;=19.15.0. When kubernetes library is less than 19.15.0, it fails even no_proxy set in correct.</div>
+ <div>example value is &quot;localhost,.local,.example.com,127.0.0.1,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16&quot;</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>password</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -497,7 +518,8 @@ Parameters
<td>
<div>Provide a path to a file containing a valid YAML definition of an object or objects to be created or updated. Mutually exclusive with <em>resource_definition</em>. NOTE: <em>kind</em>, <em>api_version</em>, <em>name</em>, and <em>namespace</em> will be overwritten by corresponding values found in the configuration read in from the <em>src</em> file.</div>
<div>Reads from the local file system. To read from the Ansible controller&#x27;s file system, including vaulted files, use the file lookup plugin or template lookup plugin, combined with the from_yaml filter, and pass the result to <em>resource_definition</em>. See Examples below.</div>
- <div>Mutually exclusive with <em>template</em> in case of <span class='module'>k8s</span> module.</div>
+ <div>The URL to manifest files that can be used to create the resource. Added in version 2.4.0.</div>
+ <div>Mutually exclusive with <em>template</em> in case of <span class='module'>kubernetes.core.k8s</span> module.</div>
</td>
</tr>
<tr>
diff --git a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_service_module.rst b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_service_module.rst
index 2941b9171..57ebe6d12 100644
--- a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_service_module.rst
+++ b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_service_module.rst
@@ -24,8 +24,8 @@ Requirements
------------
The below requirements are needed on the host that executes this module.
-- python >= 3.6
-- kubernetes >= 12.0.0
+- python >= 3.9
+- kubernetes >= 24.2.0
Parameters
@@ -220,6 +220,7 @@ Parameters
</td>
<td>
<div>Path to an existing Kubernetes config file. If not provided, and no other connection options are provided, the Kubernetes client will attempt to load the default configuration file from <em>~/.kube/config</em>. Can also be specified via K8S_AUTH_KUBECONFIG environment variable.</div>
+ <div>Multiple Kubernetes config file can be provided using separator &#x27;;&#x27; for Windows platform or &#x27;:&#x27; for others platforms.</div>
<div>The kubernetes configuration can be provided as dictionary. This feature requires a python kubernetes client version &gt;= 17.17.0. Added in version 2.2.0.</div>
</td>
</tr>
@@ -283,6 +284,25 @@ Parameters
<tr>
<td colspan="2">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>no_proxy</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">string</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 2.3.0</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>The comma separated list of hosts/domains/IP/CIDR that shouldn&#x27;t go through proxy. Can also be specified via K8S_AUTH_NO_PROXY environment variable.</div>
+ <div>Please note that this module does not pick up typical proxy settings from the environment (e.g. NO_PROXY).</div>
+ <div>This feature requires kubernetes&gt;=19.15.0. When kubernetes library is less than 19.15.0, it fails even no_proxy set in correct.</div>
+ <div>example value is &quot;localhost,.local,.example.com,127.0.0.1,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16&quot;</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>password</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -468,7 +488,8 @@ Parameters
<td>
<div>Provide a path to a file containing a valid YAML definition of an object or objects to be created or updated. Mutually exclusive with <em>resource_definition</em>. NOTE: <em>kind</em>, <em>api_version</em>, <em>name</em>, and <em>namespace</em> will be overwritten by corresponding values found in the configuration read in from the <em>src</em> file.</div>
<div>Reads from the local file system. To read from the Ansible controller&#x27;s file system, including vaulted files, use the file lookup plugin or template lookup plugin, combined with the from_yaml filter, and pass the result to <em>resource_definition</em>. See Examples below.</div>
- <div>Mutually exclusive with <em>template</em> in case of <span class='module'>k8s</span> module.</div>
+ <div>The URL to manifest files that can be used to create the resource. Added in version 2.4.0.</div>
+ <div>Mutually exclusive with <em>template</em> in case of <span class='module'>kubernetes.core.k8s</span> module.</div>
</td>
</tr>
<tr>
diff --git a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_taint_module.rst b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_taint_module.rst
index 4c342a207..b3a089740 100644
--- a/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_taint_module.rst
+++ b/ansible_collections/kubernetes/core/docs/kubernetes.core.k8s_taint_module.rst
@@ -26,8 +26,8 @@ Requirements
------------
The below requirements are needed on the host that executes this module.
-- python >= 3.6
-- kubernetes >= 12.0.0
+- python >= 3.9
+- kubernetes >= 24.2.0
Parameters
@@ -182,6 +182,7 @@ Parameters
</td>
<td>
<div>Path to an existing Kubernetes config file. If not provided, and no other connection options are provided, the Kubernetes client will attempt to load the default configuration file from <em>~/.kube/config</em>. Can also be specified via K8S_AUTH_KUBECONFIG environment variable.</div>
+ <div>Multiple Kubernetes config file can be provided using separator &#x27;;&#x27; for Windows platform or &#x27;:&#x27; for others platforms.</div>
<div>The kubernetes configuration can be provided as dictionary. This feature requires a python kubernetes client version &gt;= 17.17.0. Added in version 2.2.0.</div>
</td>
</tr>
diff --git a/ansible_collections/kubernetes/core/docs/kubernetes.core.kubectl_connection.rst b/ansible_collections/kubernetes/core/docs/kubernetes.core.kubectl_connection.rst
index 595ee4059..48db35992 100644
--- a/ansible_collections/kubernetes/core/docs/kubernetes.core.kubectl_connection.rst
+++ b/ansible_collections/kubernetes/core/docs/kubernetes.core.kubectl_connection.rst
@@ -208,6 +208,28 @@ Parameters
</td>
<td>
<div>Path to a kubectl config file. Defaults to <em>~/.kube/config</em></div>
+ <div>The configuration can be provided as dictionary. Added in version 2.4.0.</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>kubectl_local_env_vars</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">dictionary</span>
+ </div>
+ <div style="font-style: italic; font-size: small; color: darkgreen">added in 3.1.0</div>
+ </td>
+ <td>
+ <b>Default:</b><br/><div style="color: blue">{}</div>
+ </td>
+ <td>
+ <div>var: ansible_kubectl_local_env_vars</div>
+ </td>
+ <td>
+ <div>Local enviromantal variable to be passed locally to the kubectl command line.</div>
+ <div>Please be aware that this passes information directly on the command line and it could expose sensitive data.</div>
</td>
</tr>
<tr>
@@ -354,7 +376,7 @@ Status
Authors
~~~~~~~
-- xuxinkun
+- xuxinkun (@xuxinkun)
.. hint::
diff --git a/ansible_collections/kubernetes/core/docs/kubernetes.core.kustomize_lookup.rst b/ansible_collections/kubernetes/core/docs/kubernetes.core.kustomize_lookup.rst
index 38d328ed7..423e8aaff 100644
--- a/ansible_collections/kubernetes/core/docs/kubernetes.core.kustomize_lookup.rst
+++ b/ansible_collections/kubernetes/core/docs/kubernetes.core.kustomize_lookup.rst
@@ -80,6 +80,24 @@ Parameters
<tr>
<td colspan="1">
<div class="ansibleOptionAnchor" id="parameter-"></div>
+ <b>enable_helm</b>
+ <a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
+ <div style="font-size: small">
+ <span style="color: purple">-</span>
+ </div>
+ </td>
+ <td>
+ <b>Default:</b><br/><div style="color: blue">"False"</div>
+ </td>
+ <td>
+ </td>
+ <td>
+ <div>Enable the helm chart inflation generator</div>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="1">
+ <div class="ansibleOptionAnchor" id="parameter-"></div>
<b>opt_dirs</b>
<a class="ansibleOptionLink" href="#parameter-" title="Permalink to this option"></a>
<div style="font-size: small">
@@ -112,17 +130,21 @@ Examples
.. code-block:: yaml
- name: Run lookup using kustomize
- set_fact:
+ ansible.builtin.set_fact:
resources: "{{ lookup('kubernetes.core.kustomize', binary_path='/path/to/kustomize') }}"
- name: Run lookup using kubectl kustomize
- set_fact:
+ ansible.builtin.set_fact:
resources: "{{ lookup('kubernetes.core.kustomize', binary_path='/path/to/kubectl') }}"
- name: Create kubernetes resources for lookup output
- k8s:
+ kubernetes.core.k8s:
definition: "{{ lookup('kubernetes.core.kustomize', dir='/path/to/kustomization') }}"
+ - name: Create kubernetes resources for lookup output with `--enable-helm` set
+ kubernetes.core.k8s:
+ definition: "{{ lookup('kubernetes.core.kustomize', dir='/path/to/kustomization', enable_helm=True) }}"
+
Return Values
@@ -133,106 +155,27 @@ Common return values are documented `here <https://docs.ansible.com/ansible/late
<table border=0 cellpadding=0 class="documentation-table">
<tr>
- <th colspan="2">Key</th>
+ <th colspan="1">Key</th>
<th>Returned</th>
<th width="100%">Description</th>
</tr>
<tr>
- <td colspan="2">
- <div class="ansibleOptionAnchor" id="return-"></div>
- <b>_list</b>
- <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
- <div style="font-size: small">
- <span style="color: purple">complex</span>
- </div>
- </td>
- <td></td>
- <td>
- <div>One ore more object definitions returned from the tool execution.</div>
- <br/>
- </td>
- </tr>
- <tr>
- <td class="elbow-placeholder">&nbsp;</td>
<td colspan="1">
<div class="ansibleOptionAnchor" id="return-"></div>
- <b>api_version</b>
- <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
- <div style="font-size: small">
- <span style="color: purple">string</span>
- </div>
- </td>
- <td>success</td>
- <td>
- <div>The versioned schema of this representation of an object.</div>
- <br/>
- </td>
- </tr>
- <tr>
- <td class="elbow-placeholder">&nbsp;</td>
- <td colspan="1">
- <div class="ansibleOptionAnchor" id="return-"></div>
- <b>kind</b>
+ <b>_list</b>
<a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
<div style="font-size: small">
<span style="color: purple">string</span>
</div>
</td>
- <td>success</td>
- <td>
- <div>Represents the REST resource this object represents.</div>
- <br/>
- </td>
- </tr>
- <tr>
- <td class="elbow-placeholder">&nbsp;</td>
- <td colspan="1">
- <div class="ansibleOptionAnchor" id="return-"></div>
- <b>metadata</b>
- <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
- <div style="font-size: small">
- <span style="color: purple">complex</span>
- </div>
- </td>
- <td>success</td>
- <td>
- <div>Standard object metadata. Includes name, namespace, annotations, labels, etc.</div>
- <br/>
- </td>
- </tr>
- <tr>
- <td class="elbow-placeholder">&nbsp;</td>
- <td colspan="1">
- <div class="ansibleOptionAnchor" id="return-"></div>
- <b>spec</b>
- <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
- <div style="font-size: small">
- <span style="color: purple">complex</span>
- </div>
- </td>
- <td>success</td>
- <td>
- <div>Specific attributes of the object. Will vary based on the <em>api_version</em> and <em>kind</em>.</div>
- <br/>
- </td>
- </tr>
- <tr>
- <td class="elbow-placeholder">&nbsp;</td>
- <td colspan="1">
- <div class="ansibleOptionAnchor" id="return-"></div>
- <b>status</b>
- <a class="ansibleOptionLink" href="#return-" title="Permalink to this return value"></a>
- <div style="font-size: small">
- <span style="color: purple">complex</span>
- </div>
- </td>
- <td>success</td>
+ <td></td>
<td>
- <div>Current status details for the object.</div>
+ <div>YAML string for the object definitions returned from the tool execution.</div>
<br/>
+ <div style="font-size: smaller"><b>Sample:</b></div>
+ <div style="font-size: smaller; color: blue; word-wrap: break-word; word-break: break-all;">{&#x27;kind&#x27;: &#x27;ConfigMap&#x27;, &#x27;apiVersion&#x27;: &#x27;v1&#x27;, &#x27;metadata&#x27;: {&#x27;name&#x27;: &#x27;my-config-map&#x27;, &#x27;namespace&#x27;: &#x27;default&#x27;}, &#x27;data&#x27;: {&#x27;key1&#x27;: &#x27;val1&#x27;}}</div>
</td>
</tr>
-
</table>
<br/><br/>
@@ -244,7 +187,7 @@ Status
Authors
~~~~~~~
-- Aubin Bikouo <@abikouo>
+- Aubin Bikouo (@abikouo)
.. hint::
diff --git a/ansible_collections/kubernetes/core/meta/runtime.yml b/ansible_collections/kubernetes/core/meta/runtime.yml
index b9a963766..99134a2c3 100644
--- a/ansible_collections/kubernetes/core/meta/runtime.yml
+++ b/ansible_collections/kubernetes/core/meta/runtime.yml
@@ -1,5 +1,5 @@
---
-requires_ansible: ">=2.9.17"
+requires_ansible: '>=2.14.0'
action_groups:
helm:
@@ -20,6 +20,12 @@ plugin_routing:
inventory:
openshift:
redirect: community.okd.openshift
+ k8s:
+ deprecation:
+ removal_version: 4.0.0
+ warning_text: >-
+ The k8s inventory plugin has been deprecated and
+ will be removed in release 4.0.0.
modules:
k8s_auth:
redirect: community.okd.k8s_auth
@@ -29,18 +35,18 @@ plugin_routing:
warning_text: Use kubernetes.core.k8s_info instead.
k8s_raw:
tombstone:
- removal_version: "0.1.0"
+ removal_version: 0.1.0
warning_text: The k8s_raw module was slated for deprecation in Ansible 2.10 and has been removed. Use kubernetes.core.k8s instead.
openshift_raw:
tombstone:
- removal_version: "0.1.0"
+ removal_version: 0.1.0
warning_text: The openshift_raw module was slated for deprecation in Ansible 2.10 and has been removed. Use kubernetes.core.k8s instead.
openshift_scale:
tombstone:
- removal_version: "0.1.0"
+ removal_version: 0.1.0
warning_text: The openshift_scale module was slated for deprecation in Ansible 2.10 and has been removed. Use kubernetes.core.k8s_scale instead.
lookup:
openshift:
tombstone:
- removal_version: "0.1.0"
+ removal_version: 0.1.0
warning_text: The openshift lookup plugin was slated for deprecation in Ansible 2.10 and has been removed. Use kubernetes.core.k8s instead.
diff --git a/ansible_collections/kubernetes/core/plugins/action/helm.py b/ansible_collections/kubernetes/core/plugins/action/helm.py
index 181daca4e..650e0beaf 100644
--- a/ansible_collections/kubernetes/core/plugins/action/helm.py
+++ b/ansible_collections/kubernetes/core/plugins/action/helm.py
@@ -8,21 +8,21 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
import copy
-import traceback
import os
-from contextlib import contextmanager
import platform
+import traceback
+from contextlib import contextmanager
from ansible.config.manager import ensure_type
from ansible.errors import (
- AnsibleError,
- AnsibleFileNotFound,
AnsibleAction,
AnsibleActionFail,
+ AnsibleError,
+ AnsibleFileNotFound,
)
+from ansible.module_utils._text import to_bytes, to_native, to_text
from ansible.module_utils.parsing.convert_bool import boolean
-from ansible.module_utils.six import string_types, iteritems
-from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six import iteritems, string_types
from ansible.plugins.action import ActionBase
@@ -55,7 +55,6 @@ ENV_KUBECONFIG_PATH_SEPARATOR = ";" if platform.system() == "Windows" else ":"
class ActionModule(ActionBase):
-
TRANSFERS_FILES = True
DEFAULT_NEWLINE_SEQUENCE = "\n"
diff --git a/ansible_collections/kubernetes/core/plugins/action/helm_info.py b/ansible_collections/kubernetes/core/plugins/action/helm_info.py
index 181daca4e..650e0beaf 100644
--- a/ansible_collections/kubernetes/core/plugins/action/helm_info.py
+++ b/ansible_collections/kubernetes/core/plugins/action/helm_info.py
@@ -8,21 +8,21 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
import copy
-import traceback
import os
-from contextlib import contextmanager
import platform
+import traceback
+from contextlib import contextmanager
from ansible.config.manager import ensure_type
from ansible.errors import (
- AnsibleError,
- AnsibleFileNotFound,
AnsibleAction,
AnsibleActionFail,
+ AnsibleError,
+ AnsibleFileNotFound,
)
+from ansible.module_utils._text import to_bytes, to_native, to_text
from ansible.module_utils.parsing.convert_bool import boolean
-from ansible.module_utils.six import string_types, iteritems
-from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six import iteritems, string_types
from ansible.plugins.action import ActionBase
@@ -55,7 +55,6 @@ ENV_KUBECONFIG_PATH_SEPARATOR = ";" if platform.system() == "Windows" else ":"
class ActionModule(ActionBase):
-
TRANSFERS_FILES = True
DEFAULT_NEWLINE_SEQUENCE = "\n"
diff --git a/ansible_collections/kubernetes/core/plugins/action/helm_plugin.py b/ansible_collections/kubernetes/core/plugins/action/helm_plugin.py
index 181daca4e..650e0beaf 100644
--- a/ansible_collections/kubernetes/core/plugins/action/helm_plugin.py
+++ b/ansible_collections/kubernetes/core/plugins/action/helm_plugin.py
@@ -8,21 +8,21 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
import copy
-import traceback
import os
-from contextlib import contextmanager
import platform
+import traceback
+from contextlib import contextmanager
from ansible.config.manager import ensure_type
from ansible.errors import (
- AnsibleError,
- AnsibleFileNotFound,
AnsibleAction,
AnsibleActionFail,
+ AnsibleError,
+ AnsibleFileNotFound,
)
+from ansible.module_utils._text import to_bytes, to_native, to_text
from ansible.module_utils.parsing.convert_bool import boolean
-from ansible.module_utils.six import string_types, iteritems
-from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six import iteritems, string_types
from ansible.plugins.action import ActionBase
@@ -55,7 +55,6 @@ ENV_KUBECONFIG_PATH_SEPARATOR = ";" if platform.system() == "Windows" else ":"
class ActionModule(ActionBase):
-
TRANSFERS_FILES = True
DEFAULT_NEWLINE_SEQUENCE = "\n"
diff --git a/ansible_collections/kubernetes/core/plugins/action/helm_plugin_info.py b/ansible_collections/kubernetes/core/plugins/action/helm_plugin_info.py
index 181daca4e..650e0beaf 100644
--- a/ansible_collections/kubernetes/core/plugins/action/helm_plugin_info.py
+++ b/ansible_collections/kubernetes/core/plugins/action/helm_plugin_info.py
@@ -8,21 +8,21 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
import copy
-import traceback
import os
-from contextlib import contextmanager
import platform
+import traceback
+from contextlib import contextmanager
from ansible.config.manager import ensure_type
from ansible.errors import (
- AnsibleError,
- AnsibleFileNotFound,
AnsibleAction,
AnsibleActionFail,
+ AnsibleError,
+ AnsibleFileNotFound,
)
+from ansible.module_utils._text import to_bytes, to_native, to_text
from ansible.module_utils.parsing.convert_bool import boolean
-from ansible.module_utils.six import string_types, iteritems
-from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six import iteritems, string_types
from ansible.plugins.action import ActionBase
@@ -55,7 +55,6 @@ ENV_KUBECONFIG_PATH_SEPARATOR = ";" if platform.system() == "Windows" else ":"
class ActionModule(ActionBase):
-
TRANSFERS_FILES = True
DEFAULT_NEWLINE_SEQUENCE = "\n"
diff --git a/ansible_collections/kubernetes/core/plugins/action/helm_repository.py b/ansible_collections/kubernetes/core/plugins/action/helm_repository.py
index 181daca4e..650e0beaf 100644
--- a/ansible_collections/kubernetes/core/plugins/action/helm_repository.py
+++ b/ansible_collections/kubernetes/core/plugins/action/helm_repository.py
@@ -8,21 +8,21 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
import copy
-import traceback
import os
-from contextlib import contextmanager
import platform
+import traceback
+from contextlib import contextmanager
from ansible.config.manager import ensure_type
from ansible.errors import (
- AnsibleError,
- AnsibleFileNotFound,
AnsibleAction,
AnsibleActionFail,
+ AnsibleError,
+ AnsibleFileNotFound,
)
+from ansible.module_utils._text import to_bytes, to_native, to_text
from ansible.module_utils.parsing.convert_bool import boolean
-from ansible.module_utils.six import string_types, iteritems
-from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six import iteritems, string_types
from ansible.plugins.action import ActionBase
@@ -55,7 +55,6 @@ ENV_KUBECONFIG_PATH_SEPARATOR = ";" if platform.system() == "Windows" else ":"
class ActionModule(ActionBase):
-
TRANSFERS_FILES = True
DEFAULT_NEWLINE_SEQUENCE = "\n"
diff --git a/ansible_collections/kubernetes/core/plugins/action/k8s.py b/ansible_collections/kubernetes/core/plugins/action/k8s.py
index 181daca4e..650e0beaf 100644
--- a/ansible_collections/kubernetes/core/plugins/action/k8s.py
+++ b/ansible_collections/kubernetes/core/plugins/action/k8s.py
@@ -8,21 +8,21 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
import copy
-import traceback
import os
-from contextlib import contextmanager
import platform
+import traceback
+from contextlib import contextmanager
from ansible.config.manager import ensure_type
from ansible.errors import (
- AnsibleError,
- AnsibleFileNotFound,
AnsibleAction,
AnsibleActionFail,
+ AnsibleError,
+ AnsibleFileNotFound,
)
+from ansible.module_utils._text import to_bytes, to_native, to_text
from ansible.module_utils.parsing.convert_bool import boolean
-from ansible.module_utils.six import string_types, iteritems
-from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six import iteritems, string_types
from ansible.plugins.action import ActionBase
@@ -55,7 +55,6 @@ ENV_KUBECONFIG_PATH_SEPARATOR = ";" if platform.system() == "Windows" else ":"
class ActionModule(ActionBase):
-
TRANSFERS_FILES = True
DEFAULT_NEWLINE_SEQUENCE = "\n"
diff --git a/ansible_collections/kubernetes/core/plugins/action/k8s_cluster_info.py b/ansible_collections/kubernetes/core/plugins/action/k8s_cluster_info.py
index 181daca4e..650e0beaf 100644
--- a/ansible_collections/kubernetes/core/plugins/action/k8s_cluster_info.py
+++ b/ansible_collections/kubernetes/core/plugins/action/k8s_cluster_info.py
@@ -8,21 +8,21 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
import copy
-import traceback
import os
-from contextlib import contextmanager
import platform
+import traceback
+from contextlib import contextmanager
from ansible.config.manager import ensure_type
from ansible.errors import (
- AnsibleError,
- AnsibleFileNotFound,
AnsibleAction,
AnsibleActionFail,
+ AnsibleError,
+ AnsibleFileNotFound,
)
+from ansible.module_utils._text import to_bytes, to_native, to_text
from ansible.module_utils.parsing.convert_bool import boolean
-from ansible.module_utils.six import string_types, iteritems
-from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six import iteritems, string_types
from ansible.plugins.action import ActionBase
@@ -55,7 +55,6 @@ ENV_KUBECONFIG_PATH_SEPARATOR = ";" if platform.system() == "Windows" else ":"
class ActionModule(ActionBase):
-
TRANSFERS_FILES = True
DEFAULT_NEWLINE_SEQUENCE = "\n"
diff --git a/ansible_collections/kubernetes/core/plugins/action/k8s_cp.py b/ansible_collections/kubernetes/core/plugins/action/k8s_cp.py
index 181daca4e..650e0beaf 100644
--- a/ansible_collections/kubernetes/core/plugins/action/k8s_cp.py
+++ b/ansible_collections/kubernetes/core/plugins/action/k8s_cp.py
@@ -8,21 +8,21 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
import copy
-import traceback
import os
-from contextlib import contextmanager
import platform
+import traceback
+from contextlib import contextmanager
from ansible.config.manager import ensure_type
from ansible.errors import (
- AnsibleError,
- AnsibleFileNotFound,
AnsibleAction,
AnsibleActionFail,
+ AnsibleError,
+ AnsibleFileNotFound,
)
+from ansible.module_utils._text import to_bytes, to_native, to_text
from ansible.module_utils.parsing.convert_bool import boolean
-from ansible.module_utils.six import string_types, iteritems
-from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six import iteritems, string_types
from ansible.plugins.action import ActionBase
@@ -55,7 +55,6 @@ ENV_KUBECONFIG_PATH_SEPARATOR = ";" if platform.system() == "Windows" else ":"
class ActionModule(ActionBase):
-
TRANSFERS_FILES = True
DEFAULT_NEWLINE_SEQUENCE = "\n"
diff --git a/ansible_collections/kubernetes/core/plugins/action/k8s_drain.py b/ansible_collections/kubernetes/core/plugins/action/k8s_drain.py
index 181daca4e..650e0beaf 100644
--- a/ansible_collections/kubernetes/core/plugins/action/k8s_drain.py
+++ b/ansible_collections/kubernetes/core/plugins/action/k8s_drain.py
@@ -8,21 +8,21 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
import copy
-import traceback
import os
-from contextlib import contextmanager
import platform
+import traceback
+from contextlib import contextmanager
from ansible.config.manager import ensure_type
from ansible.errors import (
- AnsibleError,
- AnsibleFileNotFound,
AnsibleAction,
AnsibleActionFail,
+ AnsibleError,
+ AnsibleFileNotFound,
)
+from ansible.module_utils._text import to_bytes, to_native, to_text
from ansible.module_utils.parsing.convert_bool import boolean
-from ansible.module_utils.six import string_types, iteritems
-from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six import iteritems, string_types
from ansible.plugins.action import ActionBase
@@ -55,7 +55,6 @@ ENV_KUBECONFIG_PATH_SEPARATOR = ";" if platform.system() == "Windows" else ":"
class ActionModule(ActionBase):
-
TRANSFERS_FILES = True
DEFAULT_NEWLINE_SEQUENCE = "\n"
diff --git a/ansible_collections/kubernetes/core/plugins/action/k8s_exec.py b/ansible_collections/kubernetes/core/plugins/action/k8s_exec.py
index 181daca4e..650e0beaf 100644
--- a/ansible_collections/kubernetes/core/plugins/action/k8s_exec.py
+++ b/ansible_collections/kubernetes/core/plugins/action/k8s_exec.py
@@ -8,21 +8,21 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
import copy
-import traceback
import os
-from contextlib import contextmanager
import platform
+import traceback
+from contextlib import contextmanager
from ansible.config.manager import ensure_type
from ansible.errors import (
- AnsibleError,
- AnsibleFileNotFound,
AnsibleAction,
AnsibleActionFail,
+ AnsibleError,
+ AnsibleFileNotFound,
)
+from ansible.module_utils._text import to_bytes, to_native, to_text
from ansible.module_utils.parsing.convert_bool import boolean
-from ansible.module_utils.six import string_types, iteritems
-from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six import iteritems, string_types
from ansible.plugins.action import ActionBase
@@ -55,7 +55,6 @@ ENV_KUBECONFIG_PATH_SEPARATOR = ";" if platform.system() == "Windows" else ":"
class ActionModule(ActionBase):
-
TRANSFERS_FILES = True
DEFAULT_NEWLINE_SEQUENCE = "\n"
diff --git a/ansible_collections/kubernetes/core/plugins/action/k8s_info.py b/ansible_collections/kubernetes/core/plugins/action/k8s_info.py
index 181daca4e..650e0beaf 100644
--- a/ansible_collections/kubernetes/core/plugins/action/k8s_info.py
+++ b/ansible_collections/kubernetes/core/plugins/action/k8s_info.py
@@ -8,21 +8,21 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
import copy
-import traceback
import os
-from contextlib import contextmanager
import platform
+import traceback
+from contextlib import contextmanager
from ansible.config.manager import ensure_type
from ansible.errors import (
- AnsibleError,
- AnsibleFileNotFound,
AnsibleAction,
AnsibleActionFail,
+ AnsibleError,
+ AnsibleFileNotFound,
)
+from ansible.module_utils._text import to_bytes, to_native, to_text
from ansible.module_utils.parsing.convert_bool import boolean
-from ansible.module_utils.six import string_types, iteritems
-from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six import iteritems, string_types
from ansible.plugins.action import ActionBase
@@ -55,7 +55,6 @@ ENV_KUBECONFIG_PATH_SEPARATOR = ";" if platform.system() == "Windows" else ":"
class ActionModule(ActionBase):
-
TRANSFERS_FILES = True
DEFAULT_NEWLINE_SEQUENCE = "\n"
diff --git a/ansible_collections/kubernetes/core/plugins/action/ks8_json_patch.py b/ansible_collections/kubernetes/core/plugins/action/k8s_json_patch.py
index 181daca4e..650e0beaf 100644
--- a/ansible_collections/kubernetes/core/plugins/action/ks8_json_patch.py
+++ b/ansible_collections/kubernetes/core/plugins/action/k8s_json_patch.py
@@ -8,21 +8,21 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
import copy
-import traceback
import os
-from contextlib import contextmanager
import platform
+import traceback
+from contextlib import contextmanager
from ansible.config.manager import ensure_type
from ansible.errors import (
- AnsibleError,
- AnsibleFileNotFound,
AnsibleAction,
AnsibleActionFail,
+ AnsibleError,
+ AnsibleFileNotFound,
)
+from ansible.module_utils._text import to_bytes, to_native, to_text
from ansible.module_utils.parsing.convert_bool import boolean
-from ansible.module_utils.six import string_types, iteritems
-from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six import iteritems, string_types
from ansible.plugins.action import ActionBase
@@ -55,7 +55,6 @@ ENV_KUBECONFIG_PATH_SEPARATOR = ";" if platform.system() == "Windows" else ":"
class ActionModule(ActionBase):
-
TRANSFERS_FILES = True
DEFAULT_NEWLINE_SEQUENCE = "\n"
diff --git a/ansible_collections/kubernetes/core/plugins/action/k8s_log.py b/ansible_collections/kubernetes/core/plugins/action/k8s_log.py
index 181daca4e..650e0beaf 100644
--- a/ansible_collections/kubernetes/core/plugins/action/k8s_log.py
+++ b/ansible_collections/kubernetes/core/plugins/action/k8s_log.py
@@ -8,21 +8,21 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
import copy
-import traceback
import os
-from contextlib import contextmanager
import platform
+import traceback
+from contextlib import contextmanager
from ansible.config.manager import ensure_type
from ansible.errors import (
- AnsibleError,
- AnsibleFileNotFound,
AnsibleAction,
AnsibleActionFail,
+ AnsibleError,
+ AnsibleFileNotFound,
)
+from ansible.module_utils._text import to_bytes, to_native, to_text
from ansible.module_utils.parsing.convert_bool import boolean
-from ansible.module_utils.six import string_types, iteritems
-from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six import iteritems, string_types
from ansible.plugins.action import ActionBase
@@ -55,7 +55,6 @@ ENV_KUBECONFIG_PATH_SEPARATOR = ";" if platform.system() == "Windows" else ":"
class ActionModule(ActionBase):
-
TRANSFERS_FILES = True
DEFAULT_NEWLINE_SEQUENCE = "\n"
diff --git a/ansible_collections/kubernetes/core/plugins/action/k8s_rollback.py b/ansible_collections/kubernetes/core/plugins/action/k8s_rollback.py
index 181daca4e..650e0beaf 100644
--- a/ansible_collections/kubernetes/core/plugins/action/k8s_rollback.py
+++ b/ansible_collections/kubernetes/core/plugins/action/k8s_rollback.py
@@ -8,21 +8,21 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
import copy
-import traceback
import os
-from contextlib import contextmanager
import platform
+import traceback
+from contextlib import contextmanager
from ansible.config.manager import ensure_type
from ansible.errors import (
- AnsibleError,
- AnsibleFileNotFound,
AnsibleAction,
AnsibleActionFail,
+ AnsibleError,
+ AnsibleFileNotFound,
)
+from ansible.module_utils._text import to_bytes, to_native, to_text
from ansible.module_utils.parsing.convert_bool import boolean
-from ansible.module_utils.six import string_types, iteritems
-from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six import iteritems, string_types
from ansible.plugins.action import ActionBase
@@ -55,7 +55,6 @@ ENV_KUBECONFIG_PATH_SEPARATOR = ";" if platform.system() == "Windows" else ":"
class ActionModule(ActionBase):
-
TRANSFERS_FILES = True
DEFAULT_NEWLINE_SEQUENCE = "\n"
diff --git a/ansible_collections/kubernetes/core/plugins/action/k8s_scale.py b/ansible_collections/kubernetes/core/plugins/action/k8s_scale.py
index 181daca4e..650e0beaf 100644
--- a/ansible_collections/kubernetes/core/plugins/action/k8s_scale.py
+++ b/ansible_collections/kubernetes/core/plugins/action/k8s_scale.py
@@ -8,21 +8,21 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
import copy
-import traceback
import os
-from contextlib import contextmanager
import platform
+import traceback
+from contextlib import contextmanager
from ansible.config.manager import ensure_type
from ansible.errors import (
- AnsibleError,
- AnsibleFileNotFound,
AnsibleAction,
AnsibleActionFail,
+ AnsibleError,
+ AnsibleFileNotFound,
)
+from ansible.module_utils._text import to_bytes, to_native, to_text
from ansible.module_utils.parsing.convert_bool import boolean
-from ansible.module_utils.six import string_types, iteritems
-from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six import iteritems, string_types
from ansible.plugins.action import ActionBase
@@ -55,7 +55,6 @@ ENV_KUBECONFIG_PATH_SEPARATOR = ";" if platform.system() == "Windows" else ":"
class ActionModule(ActionBase):
-
TRANSFERS_FILES = True
DEFAULT_NEWLINE_SEQUENCE = "\n"
diff --git a/ansible_collections/kubernetes/core/plugins/action/k8s_service.py b/ansible_collections/kubernetes/core/plugins/action/k8s_service.py
index 181daca4e..650e0beaf 100644
--- a/ansible_collections/kubernetes/core/plugins/action/k8s_service.py
+++ b/ansible_collections/kubernetes/core/plugins/action/k8s_service.py
@@ -8,21 +8,21 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
import copy
-import traceback
import os
-from contextlib import contextmanager
import platform
+import traceback
+from contextlib import contextmanager
from ansible.config.manager import ensure_type
from ansible.errors import (
- AnsibleError,
- AnsibleFileNotFound,
AnsibleAction,
AnsibleActionFail,
+ AnsibleError,
+ AnsibleFileNotFound,
)
+from ansible.module_utils._text import to_bytes, to_native, to_text
from ansible.module_utils.parsing.convert_bool import boolean
-from ansible.module_utils.six import string_types, iteritems
-from ansible.module_utils._text import to_text, to_bytes, to_native
+from ansible.module_utils.six import iteritems, string_types
from ansible.plugins.action import ActionBase
@@ -55,7 +55,6 @@ ENV_KUBECONFIG_PATH_SEPARATOR = ";" if platform.system() == "Windows" else ":"
class ActionModule(ActionBase):
-
TRANSFERS_FILES = True
DEFAULT_NEWLINE_SEQUENCE = "\n"
diff --git a/ansible_collections/kubernetes/core/plugins/connection/kubectl.py b/ansible_collections/kubernetes/core/plugins/connection/kubectl.py
index d0c3baa8b..2a5e1b988 100644
--- a/ansible_collections/kubernetes/core/plugins/connection/kubectl.py
+++ b/ansible_collections/kubernetes/core/plugins/connection/kubectl.py
@@ -72,6 +72,15 @@ DOCUMENTATION = r"""
- name: ansible_kubectl_extra_args
env:
- name: K8S_AUTH_EXTRA_ARGS
+ kubectl_local_env_vars:
+ description:
+ - Local enviromantal variable to be passed locally to the kubectl command line.
+ - Please be aware that this passes information directly on the command line and it could expose sensitive data.
+ default: {}
+ type: dict
+ version_added: 3.1.0
+ vars:
+ - name: ansible_kubectl_local_env_vars
kubectl_kubeconfig:
description:
- Path to a kubectl config file. Defaults to I(~/.kube/config)
@@ -172,18 +181,18 @@ DOCUMENTATION = r"""
aliases: [ kubectl_verify_ssl ]
"""
+import json
import os
import os.path
import shutil
import subprocess
import tempfile
-import json
-from ansible.parsing.yaml.loader import AnsibleLoader
from ansible.errors import AnsibleError, AnsibleFileNotFound
-from ansible.module_utils.six.moves import shlex_quote
from ansible.module_utils._text import to_bytes
-from ansible.plugins.connection import ConnectionBase, BUFSIZE
+from ansible.module_utils.six.moves import shlex_quote
+from ansible.parsing.yaml.loader import AnsibleLoader
+from ansible.plugins.connection import BUFSIZE, ConnectionBase
from ansible.utils.display import Display
display = Display()
@@ -301,6 +310,19 @@ class Connection(ConnectionBase):
return local_cmd, censored_local_cmd
+ def _local_env(self):
+ """Return a dict of local environment variables to pass to the kubectl command"""
+ local_env = {}
+ local_local_env_vars_name = "{0}_local_env_vars".format(self.transport)
+ local_env_vars = self.get_option(local_local_env_vars_name)
+ if local_env_vars:
+ if isinstance(local_env_vars, dict):
+ local_env_vars = json.dumps(local_env_vars)
+ local_env = os.environ.copy()
+ local_env.update(json.loads(local_env_vars))
+ return local_env
+ return None
+
def _connect(self, port=None):
"""Connect to the container. Nothing to do"""
super(Connection, self)._connect()
@@ -329,6 +351,7 @@ class Connection(ConnectionBase):
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
+ env=self._local_env(),
)
stdout, stderr = p.communicate(in_data)
@@ -378,7 +401,11 @@ class Connection(ConnectionBase):
args = [to_bytes(i, errors="surrogate_or_strict") for i in args]
try:
p = subprocess.Popen(
- args, stdin=in_file, stdout=subprocess.PIPE, stderr=subprocess.PIPE
+ args,
+ stdin=in_file,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ env=self._local_env(),
)
except OSError:
raise AnsibleError(
@@ -415,7 +442,11 @@ class Connection(ConnectionBase):
) as out_file:
try:
p = subprocess.Popen(
- args, stdin=subprocess.PIPE, stdout=out_file, stderr=subprocess.PIPE
+ args,
+ stdin=subprocess.PIPE,
+ stdout=out_file,
+ stderr=subprocess.PIPE,
+ env=self._local_env(),
)
except OSError:
raise AnsibleError(
diff --git a/ansible_collections/kubernetes/core/plugins/doc_fragments/helm_common_options.py b/ansible_collections/kubernetes/core/plugins/doc_fragments/helm_common_options.py
index dde91db12..cc5d28bdd 100644
--- a/ansible_collections/kubernetes/core/plugins/doc_fragments/helm_common_options.py
+++ b/ansible_collections/kubernetes/core/plugins/doc_fragments/helm_common_options.py
@@ -12,7 +12,6 @@ __metaclass__ = type
class ModuleDocFragment(object):
-
DOCUMENTATION = r"""
options:
binary_path:
@@ -37,12 +36,12 @@ options:
description:
- Provide a URL for accessing the API. Can also be specified via C(K8S_AUTH_HOST) environment variable.
type: str
- version_added: "1.2.0"
+ version_added: 1.2.0
api_key:
description:
- Token used to authenticate with the API. Can also be specified via C(K8S_AUTH_API_KEY) environment variable.
type: str
- version_added: "1.2.0"
+ version_added: 1.2.0
validate_certs:
description:
- Whether or not to verify the API server's SSL certificates. Can also be specified via C(K8S_AUTH_VERIFY_SSL)
@@ -50,12 +49,12 @@ options:
type: bool
aliases: [ verify_ssl ]
default: True
- version_added: "1.2.0"
+ version_added: 1.2.0
ca_cert:
description:
- Path to a CA certificate used to authenticate with the API. The full certificate chain must be provided to
avoid certificate validation errors. Can also be specified via C(K8S_AUTH_SSL_CA_CERT) environment variable.
type: path
aliases: [ ssl_ca_cert ]
- version_added: "1.2.0"
+ version_added: 1.2.0
"""
diff --git a/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_auth_options.py b/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_auth_options.py
index 516ef64fd..c2ef9a065 100644
--- a/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_auth_options.py
+++ b/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_auth_options.py
@@ -11,7 +11,6 @@ __metaclass__ = type
class ModuleDocFragment(object):
-
DOCUMENTATION = r"""
options:
host:
diff --git a/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_delete_options.py b/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_delete_options.py
index a8f20cf9c..305e933d1 100644
--- a/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_delete_options.py
+++ b/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_delete_options.py
@@ -11,12 +11,11 @@ __metaclass__ = type
class ModuleDocFragment(object):
-
DOCUMENTATION = r"""
options:
delete_options:
type: dict
- version_added: '1.2.0'
+ version_added: 1.2.0
description:
- Configure behavior when deleting an object.
- Only used when I(state=absent).
diff --git a/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_name_options.py b/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_name_options.py
index e14658b03..07f7c2935 100644
--- a/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_name_options.py
+++ b/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_name_options.py
@@ -11,7 +11,6 @@ __metaclass__ = type
class ModuleDocFragment(object):
-
DOCUMENTATION = r"""
options:
api_version:
diff --git a/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_resource_options.py b/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_resource_options.py
index 6920efa45..0aa275af9 100644
--- a/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_resource_options.py
+++ b/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_resource_options.py
@@ -11,7 +11,6 @@ __metaclass__ = type
class ModuleDocFragment(object):
-
DOCUMENTATION = r"""
options:
resource_definition:
diff --git a/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_scale_options.py b/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_scale_options.py
index ca0605fdf..87fa17d31 100644
--- a/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_scale_options.py
+++ b/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_scale_options.py
@@ -11,7 +11,6 @@ __metaclass__ = type
class ModuleDocFragment(object):
-
DOCUMENTATION = r"""
options:
replicas:
diff --git a/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_state_options.py b/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_state_options.py
index 033318667..e01a9aaff 100644
--- a/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_state_options.py
+++ b/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_state_options.py
@@ -11,7 +11,6 @@ __metaclass__ = type
class ModuleDocFragment(object):
-
DOCUMENTATION = r"""
options:
state:
diff --git a/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_wait_options.py b/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_wait_options.py
index e498e3ac6..acf8f8aea 100644
--- a/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_wait_options.py
+++ b/ansible_collections/kubernetes/core/plugins/doc_fragments/k8s_wait_options.py
@@ -11,7 +11,6 @@ __metaclass__ = type
class ModuleDocFragment(object):
-
DOCUMENTATION = r"""
options:
wait:
diff --git a/ansible_collections/kubernetes/core/plugins/filter/k8s.py b/ansible_collections/kubernetes/core/plugins/filter/k8s.py
index a8ec560b3..f5e0170e5 100644
--- a/ansible_collections/kubernetes/core/plugins/filter/k8s.py
+++ b/ansible_collections/kubernetes/core/plugins/filter/k8s.py
@@ -1,50 +1,12 @@
# Copyright (c) 2017 Ansible Project
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-# SPDX-License-Identifier: GPL-3.0-or-later
+
from __future__ import absolute_import, division, print_function
__metaclass__ = type
-DOCUMENTATION = r"""
-
-name: k8s_config_resource_name
-short_description: Generate resource name for the given resource of type ConfigMap, Secret
-description:
- - Generate resource name for the given resource of type ConfigMap, Secret.
- - Resource must have a C(metadata.name) key to generate a resource name
-options:
- _input:
- description:
- - A valid YAML definition for a ConfigMap or a Secret.
- type: dict
- required: true
-author:
- - ansible cloud team
-
-"""
-
-EXAMPLES = r"""
-# Dump generated name for a configmap into a variable
-- set_fact:
- generated_name: '{{ definition | kubernetes.core.k8s_config_resource_name }}'
- vars:
- definition:
- apiVersion: v1
- kind: ConfigMap
- metadata:
- name: myconfigmap
- namespace: mynamespace
-"""
-
-RETURN = r"""
- _value:
- description: Generated resource name.
- type: str
-"""
-
-
from ansible.errors import AnsibleFilterError
from ansible_collections.kubernetes.core.plugins.module_utils.hashes import (
generate_hash,
diff --git a/ansible_collections/kubernetes/core/plugins/inventory/k8s.py b/ansible_collections/kubernetes/core/plugins/inventory/k8s.py
index 462856bb6..1a6c5bfce 100644
--- a/ansible_collections/kubernetes/core/plugins/inventory/k8s.py
+++ b/ansible_collections/kubernetes/core/plugins/inventory/k8s.py
@@ -19,6 +19,13 @@ DOCUMENTATION = """
- Uses the kubectl connection plugin to access the Kubernetes cluster.
- Uses k8s.(yml|yaml) YAML configuration file to set parameter values.
+ deprecated:
+ removed_in: 4.0.0
+ why: |
+ As discussed in U(https://github.com/ansible-collections/kubernetes.core/issues/31), we decided to
+ remove the k8s inventory plugin in release 4.0.0.
+ alternative: "Use M(kubernetes.core.k8s_info) and M(ansible.builtin.add_host) instead."
+
options:
plugin:
description: token that ensures this is a source file for the 'k8s' plugin.
@@ -27,7 +34,7 @@ DOCUMENTATION = """
connections:
description:
- Optional list of cluster connection settings. If no connections are provided, the default
- '~/.kube/config' and active context will be used, and objects will be returned for all namespaces
+ I(~/.kube/config) and active context will be used, and objects will be returned for all namespaces
the active user is authorized to access.
suboptions:
name:
@@ -38,7 +45,7 @@ DOCUMENTATION = """
description:
- Path to an existing Kubernetes config file. If not provided, and no other connection
options are provided, the Kubernetes client will attempt to load the default
- configuration file from '~/.kube/config'. Can also be specified via K8S_AUTH_KUBECONFIG
+ configuration file from I(~/.kube/config). Can also be specified via K8S_AUTH_KUBECONFIG
environment variable.
context:
description:
@@ -86,12 +93,12 @@ DOCUMENTATION = """
to access.
requirements:
- - "python >= 3.6"
- - "kubernetes >= 12.0.0"
+ - "python >= 3.9"
+ - "kubernetes >= 24.2.0"
- "PyYAML >= 3.11"
"""
-EXAMPLES = """
+EXAMPLES = r"""
# File must be named k8s.yaml or k8s.yml
- name: Authenticate with token, and return all pods and services for all namespaces
@@ -117,6 +124,7 @@ EXAMPLES = """
import json
from ansible.errors import AnsibleError
+from ansible.plugins.inventory import BaseInventoryPlugin, Cacheable, Constructable
from ansible_collections.kubernetes.core.plugins.module_utils.common import (
HAS_K8S_MODULE_HELPER,
k8s_import_exception,
@@ -124,7 +132,6 @@ from ansible_collections.kubernetes.core.plugins.module_utils.common import (
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.client import (
get_api_client,
)
-from ansible.plugins.inventory import BaseInventoryPlugin, Constructable, Cacheable
try:
from kubernetes.dynamic.exceptions import DynamicApiError
@@ -155,6 +162,12 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
def parse(self, inventory, loader, path, cache=True):
super(InventoryModule, self).parse(inventory, loader, path)
+
+ self.display.deprecated(
+ "The 'k8s' inventory plugin has been deprecated and will be removed in release 4.0.0",
+ version="4.0.0",
+ collection_name="kubernetes.core",
+ )
cache_key = self._get_cache_prefix(path)
config_data = self._read_config_data(path)
self.setup(config_data, cache, cache_key)
@@ -180,7 +193,6 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
self.fetch_objects(connections)
def fetch_objects(self, connections):
-
if connections:
if not isinstance(connections, list):
raise K8sInventoryException("Expecting connections to be a list.")
diff --git a/ansible_collections/kubernetes/core/plugins/lookup/k8s.py b/ansible_collections/kubernetes/core/plugins/lookup/k8s.py
index bd69a9923..a8d2c79c8 100644
--- a/ansible_collections/kubernetes/core/plugins/lookup/k8s.py
+++ b/ansible_collections/kubernetes/core/plugins/lookup/k8s.py
@@ -114,8 +114,8 @@ DOCUMENTATION = """
aliases: [ verify_ssl ]
requirements:
- - "python >= 3.6"
- - "kubernetes >= 12.0.0"
+ - "python >= 3.9"
+ - "kubernetes >= 24.2.0"
- "PyYAML >= 3.11"
"""
@@ -179,7 +179,6 @@ import os
from ansible.errors import AnsibleError
from ansible.module_utils.common._collections_compat import KeysView
from ansible.module_utils.common.validation import check_type_bool
-
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.client import (
get_api_client,
)
@@ -214,7 +213,6 @@ except ImportError as e:
class KubernetesLookup(object):
def __init__(self):
-
if not HAS_K8S_MODULE_HELPER:
raise Exception(
"Requires the Kubernetes Python client. Try `pip install kubernetes`. Detail: {0}".format(
diff --git a/ansible_collections/kubernetes/core/plugins/lookup/kustomize.py b/ansible_collections/kubernetes/core/plugins/lookup/kustomize.py
index ef7e50f06..88a039e67 100644
--- a/ansible_collections/kubernetes/core/plugins/lookup/kustomize.py
+++ b/ansible_collections/kubernetes/core/plugins/lookup/kustomize.py
@@ -8,7 +8,7 @@ DOCUMENTATION = """
short_description: Build a set of kubernetes resources using a 'kustomization.yaml' file.
- version_added: "2.2.0"
+ version_added: 2.2.0
author:
- Aubin Bikouo (@abikouo)
@@ -30,6 +30,10 @@ DOCUMENTATION = """
opt_dirs:
description:
- An optional list of directories to search for the executable in addition to PATH.
+ enable_helm:
+ description:
+ - Enable the helm chart inflation generator
+ default: "False"
requirements:
- "python >= 3.6"
@@ -37,16 +41,20 @@ DOCUMENTATION = """
EXAMPLES = """
- name: Run lookup using kustomize
- set_fact:
+ ansible.builtin.set_fact:
resources: "{{ lookup('kubernetes.core.kustomize', binary_path='/path/to/kustomize') }}"
- name: Run lookup using kubectl kustomize
- set_fact:
+ ansible.builtin.set_fact:
resources: "{{ lookup('kubernetes.core.kustomize', binary_path='/path/to/kubectl') }}"
- name: Create kubernetes resources for lookup output
- k8s:
+ kubernetes.core.k8s:
definition: "{{ lookup('kubernetes.core.kustomize', dir='/path/to/kustomization') }}"
+
+- name: Create kubernetes resources for lookup output with `--enable-helm` set
+ kubernetes.core.k8s:
+ definition: "{{ lookup('kubernetes.core.kustomize', dir='/path/to/kustomization', enable_helm=True) }}"
"""
RETURN = """
@@ -64,12 +72,11 @@ RETURN = """
key1: val1
"""
+import subprocess
+
from ansible.errors import AnsibleLookupError
-from ansible.plugins.lookup import LookupBase
from ansible.module_utils.common.process import get_bin_path
-
-
-import subprocess
+from ansible.plugins.lookup import LookupBase
def get_binary_from_path(name, opt_dirs=None):
@@ -92,7 +99,14 @@ def run_command(command):
class LookupModule(LookupBase):
def run(
- self, terms, variables=None, dir=".", binary_path=None, opt_dirs=None, **kwargs
+ self,
+ terms,
+ variables=None,
+ dir=".",
+ binary_path=None,
+ opt_dirs=None,
+ enable_helm=False,
+ **kwargs
):
executable_path = binary_path
if executable_path is None:
@@ -123,6 +137,9 @@ class LookupModule(LookupBase):
)
)
+ if enable_helm:
+ command += ["--enable-helm"]
+
(out, err) = run_command(command)
if err:
raise AnsibleLookupError(
diff --git a/ansible_collections/kubernetes/core/plugins/module_utils/ansiblemodule.py b/ansible_collections/kubernetes/core/plugins/module_utils/ansiblemodule.py
index 8b17866dc..d3eba8df7 100644
--- a/ansible_collections/kubernetes/core/plugins/module_utils/ansiblemodule.py
+++ b/ansible_collections/kubernetes/core/plugins/module_utils/ansiblemodule.py
@@ -14,9 +14,9 @@ except TypeError:
if enable_turbo_mode:
try:
- from ansible_collections.cloud.common.plugins.module_utils.turbo.module import (
+ from ansible_collections.cloud.common.plugins.module_utils.turbo.module import ( # noqa: F401
AnsibleTurboModule as AnsibleModule,
- ) # noqa: F401
+ )
AnsibleModule.collection_name = "kubernetes.core"
except ImportError:
diff --git a/ansible_collections/kubernetes/core/plugins/module_utils/apply.py b/ansible_collections/kubernetes/core/plugins/module_utils/apply.py
index dea185ef3..18b153a3b 100644
--- a/ansible_collections/kubernetes/core/plugins/module_utils/apply.py
+++ b/ansible_collections/kubernetes/core/plugins/module_utils/apply.py
@@ -17,8 +17,8 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
-from collections import OrderedDict
import json
+from collections import OrderedDict
from ansible.module_utils.common.dict_transformations import dict_merge
from ansible_collections.kubernetes.core.plugins.module_utils.exceptions import (
@@ -31,7 +31,6 @@ from ansible_collections.kubernetes.core.plugins.module_utils.version import (
LooseVersion,
)
-
try:
from kubernetes.dynamic.exceptions import NotFoundError
except ImportError:
diff --git a/ansible_collections/kubernetes/core/plugins/module_utils/client/discovery.py b/ansible_collections/kubernetes/core/plugins/module_utils/client/discovery.py
index f0d94e19f..44cdb1f69 100644
--- a/ansible_collections/kubernetes/core/plugins/module_utils/client/discovery.py
+++ b/ansible_collections/kubernetes/core/plugins/module_utils/client/discovery.py
@@ -13,15 +13,18 @@
# limitations under the License.
+import hashlib
import json
import os
-from collections import defaultdict
-import hashlib
import tempfile
+from collections import defaultdict
from functools import partial
import kubernetes.dynamic
import kubernetes.dynamic.discovery
+from ansible_collections.kubernetes.core.plugins.module_utils.client.resource import (
+ ResourceList,
+)
from kubernetes import __version__
from kubernetes.dynamic.exceptions import (
ResourceNotFoundError,
@@ -29,10 +32,6 @@ from kubernetes.dynamic.exceptions import (
ServiceUnavailableError,
)
-from ansible_collections.kubernetes.core.plugins.module_utils.client.resource import (
- ResourceList,
-)
-
class Discoverer(kubernetes.dynamic.discovery.Discoverer):
def __init__(self, client, cache_file):
diff --git a/ansible_collections/kubernetes/core/plugins/module_utils/common.py b/ansible_collections/kubernetes/core/plugins/module_utils/common.py
index a46c813fe..f92c8fade 100644
--- a/ansible_collections/kubernetes/core/plugins/module_utils/common.py
+++ b/ansible_collections/kubernetes/core/plugins/module_utils/common.py
@@ -20,17 +20,20 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
import base64
-import time
+import hashlib
import os
-import traceback
import sys
-import hashlib
+import time
+import traceback
from datetime import datetime
from tempfile import NamedTemporaryFile
-from ansible_collections.kubernetes.core.plugins.module_utils.version import (
- LooseVersion,
-)
+from ansible.module_utils._text import to_bytes, to_native, to_text
+from ansible.module_utils.basic import missing_required_lib
+from ansible.module_utils.common.dict_transformations import dict_merge
+from ansible.module_utils.parsing.convert_bool import boolean
+from ansible.module_utils.six import iteritems, string_types
+from ansible.module_utils.urls import Request
from ansible_collections.kubernetes.core.plugins.module_utils.args_common import (
AUTH_ARG_MAP,
AUTH_ARG_SPEC,
@@ -42,27 +45,23 @@ from ansible_collections.kubernetes.core.plugins.module_utils.hashes import (
from ansible_collections.kubernetes.core.plugins.module_utils.selector import (
LabelSelectorFilter,
)
-
-from ansible.module_utils.basic import missing_required_lib
-from ansible.module_utils.six import iteritems, string_types
-from ansible.module_utils._text import to_native, to_bytes, to_text
-from ansible.module_utils.common.dict_transformations import dict_merge
-from ansible.module_utils.parsing.convert_bool import boolean
-from ansible.module_utils.urls import Request
+from ansible_collections.kubernetes.core.plugins.module_utils.version import (
+ LooseVersion,
+)
K8S_IMP_ERR = None
try:
import kubernetes
from kubernetes.dynamic.exceptions import (
- NotFoundError,
- ResourceNotFoundError,
- ResourceNotUniqueError,
- DynamicApiError,
+ BadRequestError,
ConflictError,
+ DynamicApiError,
ForbiddenError,
- MethodNotAllowedError,
- BadRequestError,
KubernetesValidateMissing,
+ MethodNotAllowedError,
+ NotFoundError,
+ ResourceNotFoundError,
+ ResourceNotUniqueError,
)
HAS_K8S_MODULE_HELPER = True
@@ -797,8 +796,8 @@ class K8sAnsibleMixin(object):
self.resource_definitions = [implicit_definition]
def check_library_version(self):
- if LooseVersion(self.kubernetes_version) < LooseVersion("12.0.0"):
- self.fail_json(msg="kubernetes >= 12.0.0 is required")
+ if LooseVersion(self.kubernetes_version) < LooseVersion("24.2.0"):
+ self.fail_json(msg="kubernetes >= 24.2.0 is required")
def flatten_list_kind(self, list_resource, definitions):
flattened = []
@@ -819,7 +818,7 @@ class K8sAnsibleMixin(object):
try:
self.client = get_api_client(self.module)
# Hopefully the kubernetes client will provide its own exception class one day
- except (urllib3.exceptions.RequestError) as e:
+ except urllib3.exceptions.RequestError as e:
self.fail_json(msg="Couldn't connect to Kubernetes: %s" % str(e))
flattened_definitions = []
@@ -837,7 +836,7 @@ class K8sAnsibleMixin(object):
resource = self.find_resource(kind, api_version, fail=True)
flattened_definitions.append((resource, definition))
- for (resource, definition) in flattened_definitions:
+ for resource, definition in flattened_definitions:
kind = definition.get("kind", self.kind)
api_version = definition.get("apiVersion", self.api_version)
definition = self.set_defaults(resource, definition)
@@ -1436,7 +1435,7 @@ class K8sAnsibleMixin(object):
if merge_type == "json":
self.module.deprecate(
msg="json as a merge_type value is deprecated. Please use the k8s_json_patch module instead.",
- version="3.0.0",
+ version="4.0.0",
collection_name="kubernetes.core",
)
try:
diff --git a/ansible_collections/kubernetes/core/plugins/module_utils/copy.py b/ansible_collections/kubernetes/core/plugins/module_utils/copy.py
index c7e1b4e21..c70eed1a4 100644
--- a/ansible_collections/kubernetes/core/plugins/module_utils/copy.py
+++ b/ansible_collections/kubernetes/core/plugins/module_utils/copy.py
@@ -18,25 +18,26 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
import os
-from tempfile import TemporaryFile, NamedTemporaryFile
-from select import select
-from abc import ABCMeta, abstractmethod
import tarfile
+from abc import ABCMeta, abstractmethod
+from select import select
+from tempfile import NamedTemporaryFile, TemporaryFile
+
+from ansible.module_utils._text import to_native
# from ansible_collections.kubernetes.core.plugins.module_utils.ansiblemodule import AnsibleModule
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.exceptions import (
CoreException,
)
-from ansible.module_utils._text import to_native
try:
from kubernetes.client.api import core_v1_api
from kubernetes.stream import stream
from kubernetes.stream.ws_client import (
- STDOUT_CHANNEL,
- STDERR_CHANNEL,
- ERROR_CHANNEL,
ABNF,
+ ERROR_CHANNEL,
+ STDERR_CHANNEL,
+ STDOUT_CHANNEL,
)
except ImportError:
pass
diff --git a/ansible_collections/kubernetes/core/plugins/module_utils/hashes.py b/ansible_collections/kubernetes/core/plugins/module_utils/hashes.py
index 3d44a7d90..5e0e70559 100644
--- a/ansible_collections/kubernetes/core/plugins/module_utils/hashes.py
+++ b/ansible_collections/kubernetes/core/plugins/module_utils/hashes.py
@@ -19,8 +19,8 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
-import json
import hashlib
+import json
try:
import string
@@ -37,7 +37,7 @@ except ImportError:
def sorted_dict(unsorted_dict):
result = OrderedDict()
- for (k, v) in sorted(unsorted_dict.items()):
+ for k, v in sorted(unsorted_dict.items()):
if isinstance(v, dict):
v = sorted_dict(v)
result[k] = v
diff --git a/ansible_collections/kubernetes/core/plugins/module_utils/helm.py b/ansible_collections/kubernetes/core/plugins/module_utils/helm.py
index a7a2fa7c0..faa12c03a 100644
--- a/ansible_collections/kubernetes/core/plugins/module_utils/helm.py
+++ b/ansible_collections/kubernetes/core/plugins/module_utils/helm.py
@@ -7,19 +7,18 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
+import copy
+import json
import os
+import re
import tempfile
import traceback
-import re
-import json
-import copy
-from ansible.module_utils.basic import missing_required_lib
+from ansible.module_utils.basic import AnsibleModule, missing_required_lib
from ansible.module_utils.six import string_types
from ansible_collections.kubernetes.core.plugins.module_utils.version import (
LooseVersion,
)
-from ansible.module_utils.basic import AnsibleModule
try:
import yaml
@@ -84,7 +83,6 @@ class AnsibleHelmModule(object):
"""
def __init__(self, **kwargs):
-
self._module = None
if "module" in kwargs:
self._module = kwargs.get("module")
@@ -117,7 +115,7 @@ class AnsibleHelmModule(object):
kubeconfig = self.params.get("kubeconfig")
if kubeconfig:
if isinstance(kubeconfig, string_types):
- with open(kubeconfig) as fd:
+ with open(os.path.expanduser(kubeconfig)) as fd:
kubeconfig_content = yaml.safe_load(fd)
elif isinstance(kubeconfig, dict):
kubeconfig_content = kubeconfig
@@ -184,7 +182,6 @@ class AnsibleHelmModule(object):
)
def get_helm_version(self):
-
command = self.get_helm_binary() + " version"
rc, out, err = self.run_command(command)
m = re.match(r'version.BuildInfo{Version:"v([0-9\.]*)",', out)
@@ -216,7 +213,6 @@ class AnsibleHelmModule(object):
return yaml.safe_load(out)
def parse_yaml_content(self, content):
-
if not HAS_YAML:
self.fail_json(msg=missing_required_lib("yaml"), exception=HAS_YAML)
@@ -228,7 +224,6 @@ class AnsibleHelmModule(object):
)
def get_manifest(self, release_name):
-
command = [
self.get_helm_binary(),
"get",
@@ -241,7 +236,6 @@ class AnsibleHelmModule(object):
return self.parse_yaml_content(out)
def get_notes(self, release_name):
-
command = [
self.get_helm_binary(),
"get",
diff --git a/ansible_collections/kubernetes/core/plugins/module_utils/k8s/client.py b/ansible_collections/kubernetes/core/plugins/module_utils/k8s/client.py
index 2589e5607..a0d8dcfa6 100644
--- a/ansible_collections/kubernetes/core/plugins/module_utils/k8s/client.py
+++ b/ansible_collections/kubernetes/core/plugins/module_utils/k8s/client.py
@@ -1,12 +1,11 @@
# Copyright: (c) 2021, Red Hat | Ansible
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-import os
import hashlib
+import os
from typing import Any, Dict, List, Optional
from ansible.module_utils.six import iteritems, string_types
-
from ansible_collections.kubernetes.core.plugins.module_utils.args_common import (
AUTH_ARG_MAP,
AUTH_ARG_SPEC,
diff --git a/ansible_collections/kubernetes/core/plugins/module_utils/k8s/core.py b/ansible_collections/kubernetes/core/plugins/module_utils/k8s/core.py
index 131e80e29..7d8c31671 100644
--- a/ansible_collections/kubernetes/core/plugins/module_utils/k8s/core.py
+++ b/ansible_collections/kubernetes/core/plugins/module_utils/k8s/core.py
@@ -1,15 +1,12 @@
import traceback
-
from typing import Optional
+from ansible.module_utils.basic import AnsibleModule, missing_required_lib
+from ansible.module_utils.common.text.converters import to_text
from ansible_collections.kubernetes.core.plugins.module_utils.version import (
LooseVersion,
)
-from ansible.module_utils.basic import AnsibleModule
-from ansible.module_utils.basic import missing_required_lib
-from ansible.module_utils.common.text.converters import to_text
-
class AnsibleK8SModule:
"""A base module class for K8S modules.
@@ -38,7 +35,7 @@ class AnsibleK8SModule:
if self.settings["check_k8s"]:
self.requires("kubernetes")
- self.has_at_least("kubernetes", "12.0.0", warn=True)
+ self.has_at_least("kubernetes", "24.2.0", warn=True)
if self.settings["check_pyyaml"]:
self.requires("pyyaml")
diff --git a/ansible_collections/kubernetes/core/plugins/module_utils/k8s/resource.py b/ansible_collections/kubernetes/core/plugins/module_utils/k8s/resource.py
index 4c9d3e1d1..314f7a38a 100644
--- a/ansible_collections/kubernetes/core/plugins/module_utils/k8s/resource.py
+++ b/ansible_collections/kubernetes/core/plugins/module_utils/k8s/resource.py
@@ -2,7 +2,7 @@
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
import os
-from typing import cast, Dict, Iterable, List, Optional, Union
+from typing import Dict, Iterable, List, Optional, Union, cast
from ansible.module_utils.six import string_types
from ansible.module_utils.urls import Request
diff --git a/ansible_collections/kubernetes/core/plugins/module_utils/k8s/runner.py b/ansible_collections/kubernetes/core/plugins/module_utils/k8s/runner.py
index 438b32116..61ad1fb6a 100644
--- a/ansible_collections/kubernetes/core/plugins/module_utils/k8s/runner.py
+++ b/ansible_collections/kubernetes/core/plugins/module_utils/k8s/runner.py
@@ -4,12 +4,12 @@
from typing import Dict
from ansible.module_utils._text import to_native
-
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.client import (
get_api_client,
)
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.exceptions import (
CoreException,
+ ResourceTimeout,
)
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.resource import (
create_definitions,
@@ -17,9 +17,7 @@ from ansible_collections.kubernetes.core.plugins.module_utils.k8s.resource impor
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.service import (
K8sService,
diff_objects,
-)
-from ansible_collections.kubernetes.core.plugins.module_utils.k8s.exceptions import (
- ResourceTimeout,
+ hide_fields,
)
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.waiter import exists
from ansible_collections.kubernetes.core.plugins.module_utils.selector import (
@@ -46,16 +44,51 @@ def validate(client, module, resource):
return [_prepend_resource_info(resource, msg) for msg in warnings + errors]
+def get_definitions(svc, params):
+ try:
+ definitions = create_definitions(params)
+ except Exception as e:
+ msg = "Failed to load resource definition: {0}".format(e)
+ raise CoreException(msg) from e
+
+ delete_all = params.get("delete_all")
+ src = params.get("src")
+ resource_definition = params.get("resource_definition")
+ name = params.get("name")
+ state = params.get("state")
+
+ if (
+ delete_all
+ and state == "absent"
+ and name is None
+ and resource_definition is None
+ and src is None
+ ):
+ # Delete all resources in the namespace for the specified resource type
+ if params.get("kind") is None:
+ raise CoreException(
+ "'kind' option is required to specify the resource type."
+ )
+
+ resource = svc.find_resource(
+ params.get("kind"), params.get("api_version"), fail=True
+ )
+ definitions = svc.retrieve_all(
+ resource,
+ params.get("namespace"),
+ params.get("label_selectors"),
+ )
+
+ return definitions
+
+
def run_module(module) -> None:
results = []
changed = False
client = get_api_client(module)
svc = K8sService(client, module)
- try:
- definitions = create_definitions(module.params)
- except Exception as e:
- msg = "Failed to load resource definition: {0}".format(e)
- raise CoreException(msg) from e
+
+ definitions = get_definitions(svc, module.params)
for definition in definitions:
result = {"changed": False, "result": {}}
@@ -102,6 +135,7 @@ def perform_action(svc, definition: Dict, params: Dict) -> Dict:
state = params.get("state", None)
kind = definition.get("kind")
api_version = definition.get("apiVersion")
+ hidden_fields = params.get("hidden_fields")
result = {"changed": False, "result": {}}
instance = {}
@@ -177,7 +211,7 @@ def perform_action(svc, definition: Dict, params: Dict) -> Dict:
existing = existing.to_dict()
else:
existing = {}
- match, diffs = diff_objects(existing, instance)
+ match, diffs = diff_objects(existing, instance, hidden_fields)
if match and diffs:
result.setdefault("warnings", []).append(
"No meaningful diff was generated, but the API may not be idempotent "
@@ -187,7 +221,7 @@ def perform_action(svc, definition: Dict, params: Dict) -> Dict:
if svc.module._diff:
result["diff"] = diffs
- result["result"] = instance
+ result["result"] = hide_fields(instance, hidden_fields)
if not success:
raise ResourceTimeout(
'"{0}" "{1}": Timed out waiting on resource'.format(
diff --git a/ansible_collections/kubernetes/core/plugins/module_utils/k8s/service.py b/ansible_collections/kubernetes/core/plugins/module_utils/k8s/service.py
index 6a32f9a84..a1d3f7bfe 100644
--- a/ansible_collections/kubernetes/core/plugins/module_utils/k8s/service.py
+++ b/ansible_collections/kubernetes/core/plugins/module_utils/k8s/service.py
@@ -1,38 +1,33 @@
# Copyright: (c) 2021, Red Hat | Ansible
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+import copy
from typing import Any, Dict, List, Optional, Tuple
+from ansible.module_utils.common.dict_transformations import dict_merge
from ansible_collections.kubernetes.core.plugins.module_utils.hashes import (
generate_hash,
)
-
+from ansible_collections.kubernetes.core.plugins.module_utils.k8s.core import requires
+from ansible_collections.kubernetes.core.plugins.module_utils.k8s.exceptions import (
+ CoreException,
+)
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.waiter import (
Waiter,
exists,
- resource_absent,
get_waiter,
+ resource_absent,
)
-from ansible_collections.kubernetes.core.plugins.module_utils.k8s.core import (
- requires,
-)
-
-from ansible_collections.kubernetes.core.plugins.module_utils.k8s.exceptions import (
- CoreException,
-)
-
-from ansible.module_utils.common.dict_transformations import dict_merge
-
try:
from kubernetes.dynamic.exceptions import (
- NotFoundError,
- ResourceNotFoundError,
- ResourceNotUniqueError,
+ BadRequestError,
ConflictError,
ForbiddenError,
MethodNotAllowedError,
- BadRequestError,
+ NotFoundError,
+ ResourceNotFoundError,
+ ResourceNotUniqueError,
)
except ImportError:
# Handled in module setup
@@ -151,7 +146,7 @@ class K8sService:
if merge_type == "json":
self.module.deprecate(
msg="json as a merge_type value is deprecated. Please use the k8s_json_patch module instead.",
- version="3.0.0",
+ version="4.0.0",
collection_name="kubernetes.core",
)
try:
@@ -211,6 +206,30 @@ class K8sService:
return existing
+ def retrieve_all(
+ self, resource: Resource, namespace: str, label_selectors: List[str] = None
+ ) -> List[Dict]:
+ definitions: List[ResourceInstance] = []
+
+ try:
+ params = dict(namespace=namespace)
+ if label_selectors:
+ params["label_selector"] = ",".join(label_selectors)
+ resource_list = self.client.get(resource, **params)
+ for item in resource_list.items:
+ existing = self.client.get(
+ resource, name=item.metadata.name, namespace=namespace
+ )
+ definitions.append(existing.to_dict())
+ except (NotFoundError, MethodNotAllowedError):
+ pass
+ except Exception as e:
+ reason = e.body if hasattr(e, "body") else e
+ msg = "Failed to retrieve requested object: {0}".format(reason)
+ raise CoreException(msg) from e
+
+ return definitions
+
def find(
self,
kind: str,
@@ -224,6 +243,7 @@ class K8sService:
wait_timeout: Optional[int] = 120,
state: Optional[str] = "present",
condition: Optional[Dict] = None,
+ hidden_fields: Optional[List] = None,
) -> Dict:
resource = self.find_resource(kind, api_version)
api_found = bool(resource)
@@ -286,7 +306,9 @@ class K8sService:
instances = resources.get("items") or [resources]
if not wait:
- result["resources"] = instances
+ result["resources"] = [
+ hide_fields(instance, hidden_fields) for instance in instances
+ ]
return result
# Now wait for the specified state of any resource instances we have found.
@@ -305,7 +327,7 @@ class K8sService:
"Failed to gather information about %s(s) even"
" after waiting for %s seconds" % (res.get("kind"), duration)
)
- result["resources"].append(res)
+ result["resources"].append(hide_fields(res, hidden_fields))
return result
def create(self, resource: Resource, definition: Dict) -> Dict:
@@ -471,7 +493,9 @@ class K8sService:
return k8s_obj
-def diff_objects(existing: Dict, new: Dict) -> Tuple[bool, Dict]:
+def diff_objects(
+ existing: Dict, new: Dict, hidden_fields: Optional[list] = None
+) -> Tuple[bool, Dict]:
result = {}
diff = recursive_diff(existing, new)
if not diff:
@@ -493,4 +517,29 @@ def diff_objects(existing: Dict, new: Dict) -> Tuple[bool, Dict]:
if not set(result["before"]["metadata"].keys()).issubset(ignored_keys):
return False, result
+ result["before"] = hide_fields(result["before"], hidden_fields)
+ result["after"] = hide_fields(result["after"], hidden_fields)
+
return True, result
+
+
+def hide_fields(definition: dict, hidden_fields: Optional[list]) -> dict:
+ if not hidden_fields:
+ return definition
+ result = copy.deepcopy(definition)
+ for hidden_field in hidden_fields:
+ result = hide_field(result, hidden_field)
+ return result
+
+
+# hide_field is not hugely sophisticated and designed to cope
+# with e.g. status or metadata.managedFields rather than e.g.
+# spec.template.spec.containers[0].env[3].value
+def hide_field(definition: dict, hidden_field: str) -> dict:
+ split = hidden_field.split(".", 1)
+ if split[0] in definition:
+ if len(split) == 2:
+ definition[split[0]] = hide_field(definition[split[0]], split[1])
+ else:
+ del definition[split[0]]
+ return definition
diff --git a/ansible_collections/kubernetes/core/plugins/module_utils/k8s/waiter.py b/ansible_collections/kubernetes/core/plugins/module_utils/k8s/waiter.py
index 653e17084..5328d6318 100644
--- a/ansible_collections/kubernetes/core/plugins/module_utils/k8s/waiter.py
+++ b/ansible_collections/kubernetes/core/plugins/module_utils/k8s/waiter.py
@@ -3,7 +3,6 @@ from functools import partial
from typing import Any, Callable, Dict, Iterator, List, Optional, Tuple, Union
from ansible.module_utils.parsing.convert_bool import boolean
-
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.exceptions import (
CoreException,
)
@@ -61,6 +60,13 @@ def daemonset_ready(daemonset: ResourceInstance) -> bool:
def statefulset_ready(statefulset: ResourceInstance) -> bool:
+ if statefulset.spec.updateStrategy.type == "OnDelete":
+ return bool(
+ statefulset.status
+ and statefulset.status.observedGeneration
+ == (statefulset.metadata.generation or 0)
+ and statefulset.status.replicas == statefulset.spec.replicas
+ )
# These may be None
updated_replicas = statefulset.status.updatedReplicas or 0
ready_replicas = statefulset.status.readyReplicas or 0
diff --git a/ansible_collections/kubernetes/core/plugins/module_utils/k8sdynamicclient.py b/ansible_collections/kubernetes/core/plugins/module_utils/k8sdynamicclient.py
index b1beca4cd..7a6e8e66a 100644
--- a/ansible_collections/kubernetes/core/plugins/module_utils/k8sdynamicclient.py
+++ b/ansible_collections/kubernetes/core/plugins/module_utils/k8sdynamicclient.py
@@ -18,12 +18,11 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
-from kubernetes.dynamic import DynamicClient
-
from ansible_collections.kubernetes.core.plugins.module_utils.apply import k8s_apply
from ansible_collections.kubernetes.core.plugins.module_utils.exceptions import (
ApplyException,
)
+from kubernetes.dynamic import DynamicClient
class K8SDynamicClient(DynamicClient):
diff --git a/ansible_collections/kubernetes/core/plugins/module_utils/selector.py b/ansible_collections/kubernetes/core/plugins/module_utils/selector.py
index 2a85d0bfd..08178602a 100644
--- a/ansible_collections/kubernetes/core/plugins/module_utils/selector.py
+++ b/ansible_collections/kubernetes/core/plugins/module_utils/selector.py
@@ -16,7 +16,6 @@ import re
class Selector(object):
-
equality_based_operators = ("==", "!=", "=")
def __init__(self, data):
diff --git a/ansible_collections/kubernetes/core/plugins/modules/helm.py b/ansible_collections/kubernetes/core/plugins/modules/helm.py
index 9b2ed3866..079285d7b 100644
--- a/ansible_collections/kubernetes/core/plugins/modules/helm.py
+++ b/ansible_collections/kubernetes/core/plugins/modules/helm.py
@@ -14,7 +14,7 @@ module: helm
short_description: Manages Kubernetes packages with the Helm package manager
-version_added: "0.11.0"
+version_added: 0.11.0
author:
- Lucas Boisserie (@LucasBoisserie)
@@ -61,7 +61,7 @@ options:
default: false
type: bool
aliases: [ dep_up ]
- version_added: "2.4.0"
+ version_added: 2.4.0
release_name:
description:
- Release name to manage.
@@ -99,7 +99,7 @@ options:
default: []
type: list
elements: str
- version_added: '1.1.0'
+ version_added: 1.1.0
update_repo_cache:
description:
- Run C(helm repo update) before the operation. Can be run as part of the package installation or as a separate step (see Examples).
@@ -129,7 +129,22 @@ options:
- string
- json
- file
- version_added: '2.4.0'
+ version_added: 2.4.0
+ reuse_values:
+ description:
+ - When upgrading package, specifies wether to reuse the last release's values and merge in any overrides from parameters I(release_values),
+ I(values_files) or I(set_values).
+ - If I(reset_values) is set to C(True), this is ignored.
+ type: bool
+ required: false
+ version_added: 2.5.0
+ reset_values:
+ description:
+ - When upgrading package, reset the values to the ones built into the chart.
+ type: bool
+ required: false
+ default: True
+ version_added: 2.5.0
#Helm options
disable_hook:
@@ -166,7 +181,7 @@ options:
- similar to C(wait_timeout) but does not required C(wait) to be activated.
- Mutually exclusive with C(wait_timeout).
type: str
- version_added: "2.3.0"
+ version_added: 2.3.0
atomic:
description:
- If set, the installation process deletes the installation on failure.
@@ -177,12 +192,12 @@ options:
- Create the release namespace if not present.
type: bool
default: False
- version_added: "0.11.1"
+ version_added: 0.11.1
post_renderer:
description:
- Path to an executable to be used for post rendering.
type: str
- version_added: "2.4.0"
+ version_added: 2.4.0
replace:
description:
- Reuse the given name, only if that name is a deleted release which remains in the history.
@@ -190,19 +205,19 @@ options:
- mutually exclusive with with C(history_max).
type: bool
default: False
- version_added: "1.11.0"
+ version_added: 1.11.0
skip_crds:
description:
- Skip custom resource definitions when installing or upgrading.
type: bool
default: False
- version_added: "1.2.0"
+ version_added: 1.2.0
history_max:
description:
- Limit the maximum number of revisions saved per release.
- mutually exclusive with with C(replace).
type: int
- version_added: "2.2.0"
+ version_added: 2.2.0
extends_documentation_fragment:
- kubernetes.core.helm_common_options
"""
@@ -310,6 +325,17 @@ EXAMPLES = r"""
enabled: True
logging:
enabled: True
+
+# Deploy latest version
+- name: Deploy latest version of Grafana chart using reuse_values
+ kubernetes.core.helm:
+ name: test
+ chart_ref: stable/grafana
+ release_namespace: monitoring
+ reuse_values: true
+ values:
+ replicas: 2
+ version: 3e8ec0b2dffa40fb97d5342e4af887de95faa8c61a62480dd7f8aa03dffcf533
"""
RETURN = r"""
@@ -367,10 +393,11 @@ command:
sample: helm upgrade ...
"""
+import copy
import re
import tempfile
import traceback
-import copy
+
from ansible_collections.kubernetes.core.plugins.module_utils.version import (
LooseVersion,
)
@@ -406,14 +433,20 @@ def get_release(state, release_name):
return None
-def get_release_status(module, release_name):
+def get_release_status(module, release_name, all_status=False):
"""
- Get Release state from deployed release
+ Get Release state from all release status (deployed, failed, pending-install, etc)
"""
- list_command = (
- module.get_helm_binary() + " list --output=yaml --filter " + release_name
- )
+ list_command = [
+ module.get_helm_binary(),
+ "list",
+ "--output=yaml",
+ "--filter",
+ release_name,
+ ]
+ if all_status:
+ list_command.append("--all")
rc, out, err = module.run_helm_command(list_command)
@@ -439,7 +472,7 @@ def run_dep_update(module, chart_ref):
"""
Run dependency update
"""
- dep_update = module.get_helm_binary() + " dependency update " + chart_ref
+ dep_update = module.get_helm_binary() + f" dependency update '{chart_ref}'"
rc, out, err = module.run_helm_command(dep_update)
@@ -447,7 +480,7 @@ def fetch_chart_info(module, command, chart_ref):
"""
Get chart info
"""
- inspect_command = command + " show chart " + chart_ref
+ inspect_command = command + f" show chart '{chart_ref}'"
rc, out, err = module.run_helm_command(inspect_command)
@@ -455,6 +488,7 @@ def fetch_chart_info(module, command, chart_ref):
def deploy(
+ module,
command,
release_name,
release_values,
@@ -473,6 +507,8 @@ def deploy(
timeout=None,
dependency_update=None,
set_value_args=None,
+ reuse_values=None,
+ reset_values=True,
):
"""
Install/upgrade/rollback release chart
@@ -484,9 +520,11 @@ def deploy(
deploy_command += " --dependency-update"
else:
deploy_command = command + " upgrade -i" # install/upgrade
+ if reset_values:
+ deploy_command += " --reset-values"
- # Always reset values to keep release_values equal to values released
- deploy_command += " --reset-values"
+ if reuse_values is not None:
+ deploy_command += " --reuse-values=" + str(reuse_values)
if wait:
deploy_command += " --wait"
@@ -520,9 +558,10 @@ def deploy(
with open(path, "w") as yaml_file:
yaml.dump(release_values, yaml_file, default_flow_style=False)
deploy_command += " -f=" + path
+ module.add_cleanup_file(path)
if post_renderer:
- deploy_command = " --post-renderer=" + post_renderer
+ deploy_command += " --post-renderer=" + post_renderer
if skip_crds:
deploy_command += " --skip-crds"
@@ -533,7 +572,7 @@ def deploy(
if set_value_args:
deploy_command += " " + set_value_args
- deploy_command += " " + release_name + " " + chart_name
+ deploy_command += " " + release_name + f" '{chart_name}'"
return deploy_command
@@ -599,6 +638,10 @@ def helmdiff_check(
chart_version=None,
replace=False,
chart_repo_url=None,
+ post_renderer=False,
+ set_value_args=None,
+ reuse_values=None,
+ reset_values=True,
):
"""
Use helm diff to determine if a release would change by upgrading a chart.
@@ -612,7 +655,13 @@ def helmdiff_check(
if chart_version is not None:
cmd += " " + "--version=" + chart_version
if not replace:
- cmd += " " + "--reset-values"
+ cmd += " " + "--reset-values=" + str(reset_values)
+ if post_renderer:
+ cmd += " --post-renderer=" + post_renderer
+
+ if values_files:
+ for value_file in values_files:
+ cmd += " --values=" + value_file
if release_values != {}:
fd, path = tempfile.mkstemp(suffix=".yml")
@@ -621,9 +670,11 @@ def helmdiff_check(
cmd += " -f=" + path
module.add_cleanup_file(path)
- if values_files:
- for values_file in values_files:
- cmd += " -f=" + values_file
+ if set_value_args:
+ cmd += " " + set_value_args
+
+ if reuse_values:
+ cmd += " --reuse-values"
rc, out, err = module.run_helm_command(cmd)
return (len(out.strip()) > 0, out.strip())
@@ -682,6 +733,8 @@ def argument_spec():
skip_crds=dict(type="bool", default=False),
history_max=dict(type="int"),
set_values=dict(type="list", elements="dict"),
+ reuse_values=dict(type="bool"),
+ reset_values=dict(type="bool", default=True),
)
)
return arg_spec
@@ -732,34 +785,38 @@ def main():
history_max = module.params.get("history_max")
timeout = module.params.get("timeout")
set_values = module.params.get("set_values")
+ reuse_values = module.params.get("reuse_values")
+ reset_values = module.params.get("reset_values")
if update_repo_cache:
run_repo_update(module)
# Get real/deployed release status
- release_status = get_release_status(module, release_name)
+ all_status = release_state == "absent"
+ release_status = get_release_status(module, release_name, all_status=all_status)
helm_cmd = module.get_helm_binary()
opt_result = {}
if release_state == "absent" and release_status is not None:
- if replace:
- module.fail_json(msg="replace is not applicable when state is absent")
-
- if wait:
- helm_version = module.get_helm_version()
- if LooseVersion(helm_version) < LooseVersion("3.7.0"):
- opt_result["warnings"] = []
- opt_result["warnings"].append(
- "helm uninstall support option --wait for helm release >= 3.7.0"
- )
- wait = False
+ # skip release statuses 'uninstalled' and 'uninstalling'
+ if not release_status["status"].startswith("uninstall"):
+ if replace:
+ module.fail_json(msg="replace is not applicable when state is absent")
+
+ if wait:
+ helm_version = module.get_helm_version()
+ if LooseVersion(helm_version) < LooseVersion("3.7.0"):
+ opt_result["warnings"] = []
+ opt_result["warnings"].append(
+ "helm uninstall support option --wait for helm release >= 3.7.0"
+ )
+ wait = False
- helm_cmd = delete(
- helm_cmd, release_name, purge, disable_hook, wait, wait_timeout
- )
- changed = True
+ helm_cmd = delete(
+ helm_cmd, release_name, purge, disable_hook, wait, wait_timeout
+ )
+ changed = True
elif release_state == "present":
-
if chart_version is not None:
helm_cmd += " --version=" + chart_version
@@ -799,12 +856,13 @@ def main():
"Please consider add dependencies block or disable dependency_update to remove this warning."
)
- if release_status is None: # Not installed
- set_value_args = None
- if set_values:
- set_value_args = module.get_helm_set_values_args(set_values)
+ set_value_args = None
+ if set_values:
+ set_value_args = module.get_helm_set_values_args(set_values)
+ if release_status is None: # Not installed
helm_cmd = deploy(
+ module,
helm_cmd,
release_name,
release_values,
@@ -823,11 +881,12 @@ def main():
history_max=history_max,
timeout=timeout,
set_value_args=set_value_args,
+ reuse_values=reuse_values,
+ reset_values=reset_values,
)
changed = True
else:
-
helm_diff_version = get_plugin_version("diff")
if helm_diff_version and (
not chart_repo_url
@@ -845,6 +904,10 @@ def main():
chart_version,
replace,
chart_repo_url,
+ post_renderer,
+ set_value_args,
+ reuse_values=reuse_values,
+ reset_values=reset_values,
)
if would_change and module._diff:
opt_result["diff"] = {"prepared": prepared}
@@ -858,11 +921,8 @@ def main():
)
if force or would_change:
- set_value_args = None
- if set_values:
- set_value_args = module.get_helm_set_values_args(set_values)
-
helm_cmd = deploy(
+ module,
helm_cmd,
release_name,
release_values,
@@ -881,6 +941,8 @@ def main():
timeout=timeout,
dependency_update=dependency_update,
set_value_args=set_value_args,
+ reuse_values=reuse_values,
+ reset_values=reset_values,
)
changed = True
@@ -914,7 +976,7 @@ def main():
changed=changed,
stdout=out,
stderr=err,
- status=get_release_status(module, release_name),
+ status=get_release_status(module, release_name, all_status=True),
command=helm_cmd,
**opt_result,
)
diff --git a/ansible_collections/kubernetes/core/plugins/modules/helm_info.py b/ansible_collections/kubernetes/core/plugins/modules/helm_info.py
index 5a7a56166..2e3fe6e9c 100644
--- a/ansible_collections/kubernetes/core/plugins/modules/helm_info.py
+++ b/ansible_collections/kubernetes/core/plugins/modules/helm_info.py
@@ -14,7 +14,7 @@ module: helm_info
short_description: Get information from Helm package deployed inside the cluster
-version_added: "0.11.0"
+version_added: 0.11.0
author:
- Lucas Boisserie (@LucasBoisserie)
@@ -53,7 +53,7 @@ options:
type: list
elements: str
default: []
- version_added: "2.3.0"
+ version_added: 2.3.0
get_all_values:
description:
- Set to C(True) if you want to get all (computed) values of the release.
@@ -61,7 +61,7 @@ options:
required: false
default: false
type: bool
- version_added: "2.4.0"
+ version_added: 2.4.0
extends_documentation_fragment:
- kubernetes.core.helm_common_options
"""
@@ -123,22 +123,22 @@ status:
elements: dict
description: Hooks of the release
returned: always
- version_added: "2.4.0"
+ version_added: 2.4.0
notes:
type: str
description: Notes of the release
returned: always
- version_added: "2.4.0"
+ version_added: 2.4.0
manifest:
type: list
elements: dict
description: Manifest of the release
returned: always
- version_added: "2.4.0"
+ version_added: 2.4.0
"""
-import traceback
import copy
+import traceback
try:
import yaml
diff --git a/ansible_collections/kubernetes/core/plugins/modules/helm_plugin.py b/ansible_collections/kubernetes/core/plugins/modules/helm_plugin.py
index 795dbf29e..69323e890 100644
--- a/ansible_collections/kubernetes/core/plugins/modules/helm_plugin.py
+++ b/ansible_collections/kubernetes/core/plugins/modules/helm_plugin.py
@@ -12,7 +12,7 @@ DOCUMENTATION = r"""
---
module: helm_plugin
short_description: Manage Helm plugins
-version_added: "1.0.0"
+version_added: 1.0.0
author:
- Abhijeet Kasurde (@Akasurde)
requirements:
@@ -47,7 +47,7 @@ options:
- Ignored when C(state=absent) or C(state=latest).
required: false
type: str
- version_added: "2.3.0"
+ version_added: 2.3.0
extends_documentation_fragment:
- kubernetes.core.helm_common_options
"""
@@ -109,6 +109,7 @@ rc:
"""
import copy
+
from ansible_collections.kubernetes.core.plugins.module_utils.helm import (
AnsibleHelmModule,
parse_helm_plugin_list,
diff --git a/ansible_collections/kubernetes/core/plugins/modules/helm_plugin_info.py b/ansible_collections/kubernetes/core/plugins/modules/helm_plugin_info.py
index 3b9fcd189..2d92e995a 100644
--- a/ansible_collections/kubernetes/core/plugins/modules/helm_plugin_info.py
+++ b/ansible_collections/kubernetes/core/plugins/modules/helm_plugin_info.py
@@ -12,7 +12,7 @@ DOCUMENTATION = r"""
---
module: helm_plugin_info
short_description: Gather information about Helm plugins
-version_added: "1.0.0"
+version_added: 1.0.0
author:
- Abhijeet Kasurde (@Akasurde)
requirements:
@@ -71,9 +71,10 @@ rc:
"""
import copy
+
from ansible_collections.kubernetes.core.plugins.module_utils.helm import (
- parse_helm_plugin_list,
AnsibleHelmModule,
+ parse_helm_plugin_list,
)
from ansible_collections.kubernetes.core.plugins.module_utils.helm_args_common import (
HELM_AUTH_ARG_SPEC,
@@ -82,7 +83,6 @@ from ansible_collections.kubernetes.core.plugins.module_utils.helm_args_common i
def main():
-
argument_spec = copy.deepcopy(HELM_AUTH_ARG_SPEC)
argument_spec.update(
dict(
diff --git a/ansible_collections/kubernetes/core/plugins/modules/helm_pull.py b/ansible_collections/kubernetes/core/plugins/modules/helm_pull.py
index 03edb97e6..1eeb188d9 100644
--- a/ansible_collections/kubernetes/core/plugins/modules/helm_pull.py
+++ b/ansible_collections/kubernetes/core/plugins/modules/helm_pull.py
@@ -12,7 +12,7 @@ DOCUMENTATION = r"""
---
module: helm_pull
short_description: download a chart from a repository and (optionally) unpack it in local directory.
-version_added: "2.4.0"
+version_added: 2.4.0
author:
- Aubin Bikouo (@abikouo)
description:
diff --git a/ansible_collections/kubernetes/core/plugins/modules/helm_repository.py b/ansible_collections/kubernetes/core/plugins/modules/helm_repository.py
index 34213addc..2165e0888 100644
--- a/ansible_collections/kubernetes/core/plugins/modules/helm_repository.py
+++ b/ansible_collections/kubernetes/core/plugins/modules/helm_repository.py
@@ -14,7 +14,7 @@ module: helm_repository
short_description: Manage Helm repositories.
-version_added: "0.11.0"
+version_added: 0.11.0
author:
- Lucas Boisserie (@LucasBoisserie)
@@ -76,12 +76,12 @@ options:
description:
- Provide a URL for accessing the API. Can also be specified via C(K8S_AUTH_HOST) environment variable.
type: str
- version_added: "2.3.0"
+ version_added: 2.3.0
api_key:
description:
- Token used to authenticate with the API. Can also be specified via C(K8S_AUTH_API_KEY) environment variable.
type: str
- version_added: "2.3.0"
+ version_added: 2.3.0
validate_certs:
description:
- Whether or not to verify the API server's SSL certificates. Can also be specified via C(K8S_AUTH_VERIFY_SSL)
@@ -89,21 +89,21 @@ options:
type: bool
aliases: [ verify_ssl ]
default: True
- version_added: "2.3.0"
+ version_added: 2.3.0
ca_cert:
description:
- Path to a CA certificate used to authenticate with the API. The full certificate chain must be provided to
avoid certificate validation errors. Can also be specified via C(K8S_AUTH_SSL_CA_CERT) environment variable.
type: path
aliases: [ ssl_ca_cert ]
- version_added: "2.3.0"
+ version_added: 2.3.0
context:
description:
- Helm option to specify which kubeconfig context to use.
- If the value is not specified in the task, the value of environment variable C(K8S_AUTH_CONTEXT) will be used instead.
type: str
aliases: [ kube_context ]
- version_added: "2.4.0"
+ version_added: 2.4.0
kubeconfig:
description:
- Helm option to specify kubeconfig path to use.
@@ -111,14 +111,14 @@ options:
- The configuration can be provided as dictionary.
type: raw
aliases: [ kubeconfig_path ]
- version_added: "2.4.0"
+ version_added: 2.4.0
force_update:
description:
- Whether or not to replace (overwrite) the repo if it already exists.
type: bool
aliases: [ force ]
default: False
- version_added: "2.4.0"
+ version_added: 2.4.0
"""
EXAMPLES = r"""
@@ -166,8 +166,8 @@ msg:
sample: 'Repository already have a repository named bitnami'
"""
-import traceback
import copy
+import traceback
try:
import yaml
diff --git a/ansible_collections/kubernetes/core/plugins/modules/helm_template.py b/ansible_collections/kubernetes/core/plugins/modules/helm_template.py
index 2a1872573..b748b1554 100644
--- a/ansible_collections/kubernetes/core/plugins/modules/helm_template.py
+++ b/ansible_collections/kubernetes/core/plugins/modules/helm_template.py
@@ -53,7 +53,7 @@ options:
default: false
type: bool
aliases: [ dep_up ]
- version_added: "2.4.0"
+ version_added: 2.4.0
disable_hook:
description:
- Prevent hooks from running during install.
@@ -139,7 +139,7 @@ options:
- string
- json
- file
- version_added: '2.4.0'
+ version_added: 2.4.0
"""
EXAMPLES = r"""
diff --git a/ansible_collections/kubernetes/core/plugins/modules/k8s.py b/ansible_collections/kubernetes/core/plugins/modules/k8s.py
index a14dfc77b..f90d465d3 100644
--- a/ansible_collections/kubernetes/core/plugins/modules/k8s.py
+++ b/ansible_collections/kubernetes/core/plugins/modules/k8s.py
@@ -63,7 +63,7 @@ options:
C(['strategic-merge', 'merge']), which is ideal for using the same parameters on resource kinds that
combine Custom Resources and built-in resources.
- mutually exclusive with C(apply)
- - I(merge_type=json) is deprecated and will be removed in version 3.0.0. Please use M(kubernetes.core.k8s_json_patch) instead.
+ - I(merge_type=json) is deprecated and will be removed in version 4.0.0. Please use M(kubernetes.core.k8s_json_patch) instead.
choices:
- json
- merge
@@ -172,10 +172,31 @@ options:
- When set to True, server-side apply will force the changes against conflicts.
type: bool
default: False
+ delete_all:
+ description:
+ - When this option is set to I(true) and I(state=absent),
+ module will delete all resources of the specified resource type in the requested namespace.
+ - Ignored when C(state) is not set to I(absent) or when one of (src),
+ C(name) or C(resource_definition) is provided.
+ - Parameter C(kind) is required to use this option.
+ - This parameter can be used with C(label_selectors) to restrict the resources to be deleted.
+ type: bool
+ default: false
+ version_added: 2.5.0
+ aliases:
+ - all
+ hidden_fields:
+ description:
+ - Hide fields matching this option in the result
+ - An example might be C(hidden_fields=[metadata.managedFields])
+ - Only field definitions that don't reference list items are supported (so V(spec.containers[0]) would not work)
+ type: list
+ elements: str
+ version_added: 2.5.0
requirements:
- - "python >= 3.6"
- - "kubernetes >= 12.0.0"
+ - "python >= 3.9"
+ - "kubernetes >= 24.2.0"
- "PyYAML >= 3.11"
- "jsonpatch"
"""
@@ -343,6 +364,14 @@ EXAMPLES = r"""
apply: yes
server_side_apply:
field_manager: ansible
+
+# Delete all Deployment from specified namespace
+- name: Delete all Deployment from specified namespace
+ kubernetes.core.k8s:
+ api_version: apps/v1
+ namespace: testing
+ kind: Deployment
+ delete_all: true
"""
RETURN = r"""
@@ -394,10 +423,10 @@ from ansible_collections.kubernetes.core.plugins.module_utils.ansiblemodule impo
)
from ansible_collections.kubernetes.core.plugins.module_utils.args_common import (
AUTH_ARG_SPEC,
- WAIT_ARG_SPEC,
+ DELETE_OPTS_ARG_SPEC,
NAME_ARG_SPEC,
RESOURCE_ARG_SPEC,
- DELETE_OPTS_ARG_SPEC,
+ WAIT_ARG_SPEC,
)
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.core import (
AnsibleK8SModule,
@@ -450,6 +479,8 @@ def argspec():
argument_spec["server_side_apply"] = dict(
type="dict", default=None, options=server_apply_spec()
)
+ argument_spec["delete_all"] = dict(type="bool", default=False, aliases=["all"])
+ argument_spec["hidden_fields"] = dict(type="list", elements="str")
return argument_spec
diff --git a/ansible_collections/kubernetes/core/plugins/modules/k8s_cluster_info.py b/ansible_collections/kubernetes/core/plugins/modules/k8s_cluster_info.py
index 9cd2ac17b..227d5ba25 100644
--- a/ansible_collections/kubernetes/core/plugins/modules/k8s_cluster_info.py
+++ b/ansible_collections/kubernetes/core/plugins/modules/k8s_cluster_info.py
@@ -11,7 +11,7 @@ __metaclass__ = type
DOCUMENTATION = r"""
module: k8s_cluster_info
-version_added: "0.11.1"
+version_added: 0.11.1
short_description: Describe Kubernetes (K8s) cluster, APIs available and their respective versions
@@ -34,8 +34,8 @@ extends_documentation_fragment:
- kubernetes.core.k8s_auth_options
requirements:
- - "python >= 3.6"
- - "kubernetes >= 12.0.0"
+ - "python >= 3.9"
+ - "kubernetes >= 24.2.0"
- "PyYAML >= 3.11"
"""
@@ -154,15 +154,15 @@ except ImportError:
from ansible_collections.kubernetes.core.plugins.module_utils.ansiblemodule import (
AnsibleModule,
)
+from ansible_collections.kubernetes.core.plugins.module_utils.args_common import (
+ AUTH_ARG_SPEC,
+)
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.core import (
AnsibleK8SModule,
)
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.exceptions import (
CoreException,
)
-from ansible_collections.kubernetes.core.plugins.module_utils.args_common import (
- AUTH_ARG_SPEC,
-)
def execute_module(module, client):
diff --git a/ansible_collections/kubernetes/core/plugins/modules/k8s_cp.py b/ansible_collections/kubernetes/core/plugins/modules/k8s_cp.py
index e8f1dea72..16f0f8cbc 100644
--- a/ansible_collections/kubernetes/core/plugins/modules/k8s_cp.py
+++ b/ansible_collections/kubernetes/core/plugins/modules/k8s_cp.py
@@ -14,7 +14,7 @@ module: k8s_cp
short_description: Copy files and directories to and from pod.
-version_added: "2.2.0"
+version_added: 2.2.0
author:
- Aubin Bikouo (@abikouo)
@@ -26,8 +26,8 @@ extends_documentation_fragment:
- kubernetes.core.k8s_auth_options
requirements:
- - "python >= 3.6"
- - "kubernetes >= 12.0.0"
+ - "python >= 3.9"
+ - "kubernetes >= 24.2.0"
options:
namespace:
@@ -139,9 +139,18 @@ result:
import copy
+from ansible.module_utils._text import to_native
from ansible_collections.kubernetes.core.plugins.module_utils.ansiblemodule import (
AnsibleModule,
)
+from ansible_collections.kubernetes.core.plugins.module_utils.args_common import (
+ AUTH_ARG_SPEC,
+)
+from ansible_collections.kubernetes.core.plugins.module_utils.copy import (
+ K8SCopyFromPod,
+ K8SCopyToPod,
+ check_pod,
+)
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.client import (
get_api_client,
)
@@ -155,16 +164,6 @@ from ansible_collections.kubernetes.core.plugins.module_utils.k8s.service import
K8sService,
)
-from ansible_collections.kubernetes.core.plugins.module_utils.args_common import (
- AUTH_ARG_SPEC,
-)
-from ansible_collections.kubernetes.core.plugins.module_utils.copy import (
- K8SCopyFromPod,
- K8SCopyToPod,
- check_pod,
-)
-from ansible.module_utils._text import to_native
-
def argspec():
argument_spec = copy.deepcopy(AUTH_ARG_SPEC)
diff --git a/ansible_collections/kubernetes/core/plugins/modules/k8s_drain.py b/ansible_collections/kubernetes/core/plugins/modules/k8s_drain.py
index fef2ced78..87cb26824 100644
--- a/ansible_collections/kubernetes/core/plugins/modules/k8s_drain.py
+++ b/ansible_collections/kubernetes/core/plugins/modules/k8s_drain.py
@@ -15,7 +15,7 @@ module: k8s_drain
short_description: Drain, Cordon, or Uncordon node in k8s cluster
-version_added: "2.2.0"
+version_added: 2.2.0
author: Aubin Bikouo (@abikouo)
@@ -41,12 +41,21 @@ options:
- The name of the node.
required: true
type: str
+ pod_selectors:
+ description:
+ - Label selector to filter pods on the node.
+ - This option has effect only when C(state) is set to I(drain).
+ type: list
+ elements: str
+ version_added: 2.5.0
+ aliases:
+ - label_selectors
delete_options:
type: dict
+ default: {}
description:
- Specify options to delete pods.
- This option has effect only when C(state) is set to I(drain).
- default: {}
suboptions:
terminate_grace_period:
description:
@@ -88,8 +97,8 @@ options:
type: int
requirements:
- - python >= 3.6
- - kubernetes >= 12.0.0
+ - python >= 3.9
+ - kubernetes >= 24.2.0
"""
EXAMPLES = r"""
@@ -115,6 +124,14 @@ EXAMPLES = r"""
kubernetes.core.k8s_drain:
state: cordon
name: foo
+
+- name: Drain node "foo" using label selector to filter the list of pods to be drained.
+ kubernetes.core.k8s_drain:
+ state: drain
+ name: foo
+ pod_selectors:
+ - 'app!=csi-attacher'
+ - 'app!=csi-provisioner'
"""
RETURN = r"""
@@ -128,8 +145,9 @@ result:
import copy
import time
import traceback
-
from datetime import datetime
+
+from ansible.module_utils._text import to_native
from ansible_collections.kubernetes.core.plugins.module_utils.ansiblemodule import (
AnsibleModule,
)
@@ -146,12 +164,10 @@ from ansible_collections.kubernetes.core.plugins.module_utils.k8s.exceptions imp
CoreException,
)
-from ansible.module_utils._text import to_native
-
try:
from kubernetes.client.api import core_v1_api
- from kubernetes.client.models import V1DeleteOptions, V1ObjectMeta
from kubernetes.client.exceptions import ApiException
+ from kubernetes.client.models import V1DeleteOptions, V1ObjectMeta
except ImportError:
# ImportError are managed by the common module already.
pass
@@ -328,6 +344,17 @@ class K8sDrainAnsible(object):
)
)
+ def list_pods(self):
+ params = {
+ "field_selector": "spec.nodeName={name}".format(
+ name=self._module.params.get("name")
+ )
+ }
+ pod_selectors = self._module.params.get("pod_selectors")
+ if pod_selectors:
+ params["label_selector"] = ",".join(pod_selectors)
+ return self._api_instance.list_pod_for_all_namespaces(**params)
+
def delete_or_evict_pods(self, node_unschedulable):
# Mark node as unschedulable
result = []
@@ -350,12 +377,7 @@ class K8sDrainAnsible(object):
self.patch_node(unschedulable=False)
try:
- field_selector = "spec.nodeName={name}".format(
- name=self._module.params.get("name")
- )
- pod_list = self._api_instance.list_pod_for_all_namespaces(
- field_selector=field_selector
- )
+ pod_list = self.list_pods()
# Filter pods
force = self._drain_options.get("force", False)
ignore_daemonset = self._drain_options.get("ignore_daemonsets", False)
@@ -406,7 +428,6 @@ class K8sDrainAnsible(object):
return dict(result=" ".join(result))
def patch_node(self, unschedulable):
-
body = {"spec": {"unschedulable": unschedulable}}
try:
self._api_instance.patch_node(
@@ -418,7 +439,6 @@ class K8sDrainAnsible(object):
)
def execute_module(self):
-
state = self._module.params.get("state")
name = self._module.params.get("name")
try:
@@ -486,6 +506,11 @@ def argspec():
wait_sleep=dict(type="int", default=5),
),
),
+ pod_selectors=dict(
+ type="list",
+ elements="str",
+ aliases=["label_selectors"],
+ ),
)
)
return argument_spec
diff --git a/ansible_collections/kubernetes/core/plugins/modules/k8s_exec.py b/ansible_collections/kubernetes/core/plugins/modules/k8s_exec.py
index c54c23c06..9e0670fdb 100644
--- a/ansible_collections/kubernetes/core/plugins/modules/k8s_exec.py
+++ b/ansible_collections/kubernetes/core/plugins/modules/k8s_exec.py
@@ -15,7 +15,7 @@ module: k8s_exec
short_description: Execute command in Pod
-version_added: "0.10.0"
+version_added: 0.10.0
author: "Tristan de Cacqueray (@tristanC)"
@@ -26,8 +26,8 @@ extends_documentation_fragment:
- kubernetes.core.k8s_auth_options
requirements:
- - "python >= 3.6"
- - "kubernetes >= 12.0.0"
+ - "python >= 3.9"
+ - "kubernetes >= 24.2.0"
- "PyYAML >= 3.11"
notes:
@@ -131,27 +131,27 @@ except ImportError:
# ImportError are managed by the common module already.
pass
+from ansible.module_utils._text import to_native
from ansible_collections.kubernetes.core.plugins.module_utils.ansiblemodule import (
AnsibleModule,
)
-from ansible.module_utils._text import to_native
from ansible_collections.kubernetes.core.plugins.module_utils.common import (
AUTH_ARG_SPEC,
)
-from ansible_collections.kubernetes.core.plugins.module_utils.k8s.core import (
- AnsibleK8SModule,
-)
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.client import (
get_api_client,
)
+from ansible_collections.kubernetes.core.plugins.module_utils.k8s.core import (
+ AnsibleK8SModule,
+)
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.exceptions import (
CoreException,
)
try:
from kubernetes.client.apis import core_v1_api
- from kubernetes.stream import stream
from kubernetes.client.exceptions import ApiException
+ from kubernetes.stream import stream
except ImportError:
# ImportError are managed by the common module already.
pass
diff --git a/ansible_collections/kubernetes/core/plugins/modules/k8s_info.py b/ansible_collections/kubernetes/core/plugins/modules/k8s_info.py
index fdd5093ac..db85d6250 100644
--- a/ansible_collections/kubernetes/core/plugins/modules/k8s_info.py
+++ b/ansible_collections/kubernetes/core/plugins/modules/k8s_info.py
@@ -44,6 +44,14 @@ options:
type: list
elements: str
default: []
+ hidden_fields:
+ description:
+ - Hide fields matching any of the field definitions in the result
+ - An example might be C(hidden_fields=[metadata.managedFields])
+ - Only field definitions that don't reference list items are supported (so V(spec.containers[0]) would not work)
+ type: list
+ elements: str
+ version_added: 2.5.0
extends_documentation_fragment:
- kubernetes.core.k8s_auth_options
@@ -51,8 +59,8 @@ extends_documentation_fragment:
- kubernetes.core.k8s_wait_options
requirements:
- - "python >= 3.6"
- - "kubernetes >= 12.0.0"
+ - "python >= 3.9"
+ - "kubernetes >= 24.2.0"
- "PyYAML >= 3.11"
"""
@@ -157,12 +165,12 @@ from ansible_collections.kubernetes.core.plugins.module_utils.args_common import
AUTH_ARG_SPEC,
WAIT_ARG_SPEC,
)
-from ansible_collections.kubernetes.core.plugins.module_utils.k8s.core import (
- AnsibleK8SModule,
-)
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.client import (
get_api_client,
)
+from ansible_collections.kubernetes.core.plugins.module_utils.k8s.core import (
+ AnsibleK8SModule,
+)
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.exceptions import (
CoreException,
)
@@ -183,6 +191,7 @@ def execute_module(module, svc):
wait_sleep=module.params["wait_sleep"],
wait_timeout=module.params["wait_timeout"],
condition=module.params["wait_condition"],
+ hidden_fields=module.params["hidden_fields"],
)
module.exit_json(changed=False, **facts)
@@ -198,6 +207,7 @@ def argspec():
namespace=dict(),
label_selectors=dict(type="list", elements="str", default=[]),
field_selectors=dict(type="list", elements="str", default=[]),
+ hidden_fields=dict(type="list", elements="str"),
)
)
return args
diff --git a/ansible_collections/kubernetes/core/plugins/modules/k8s_json_patch.py b/ansible_collections/kubernetes/core/plugins/modules/k8s_json_patch.py
index 5ea8dbc95..92b652ca2 100644
--- a/ansible_collections/kubernetes/core/plugins/modules/k8s_json_patch.py
+++ b/ansible_collections/kubernetes/core/plugins/modules/k8s_json_patch.py
@@ -62,8 +62,8 @@ extends_documentation_fragment:
- kubernetes.core.k8s_wait_options
requirements:
- - "python >= 3.6"
- - "kubernetes >= 12.0.0"
+ - "python >= 3.9"
+ - "kubernetes >= 24.2.0"
- "PyYAML >= 3.11"
- "jsonpatch"
"""
@@ -127,8 +127,8 @@ error:
import copy
import traceback
-from ansible.module_utils.basic import missing_required_lib
from ansible.module_utils._text import to_native
+from ansible.module_utils.basic import missing_required_lib
from ansible_collections.kubernetes.core.plugins.module_utils.ansiblemodule import (
AnsibleModule,
)
@@ -152,7 +152,6 @@ from ansible_collections.kubernetes.core.plugins.module_utils.k8s.waiter import
get_waiter,
)
-
try:
from kubernetes.dynamic.exceptions import DynamicApiError
except ImportError:
diff --git a/ansible_collections/kubernetes/core/plugins/modules/k8s_log.py b/ansible_collections/kubernetes/core/plugins/modules/k8s_log.py
index 48537e4ac..c8cadbe2d 100644
--- a/ansible_collections/kubernetes/core/plugins/modules/k8s_log.py
+++ b/ansible_collections/kubernetes/core/plugins/modules/k8s_log.py
@@ -14,7 +14,7 @@ module: k8s_log
short_description: Fetch logs from Kubernetes resources
-version_added: "0.10.0"
+version_added: 0.10.0
author:
- "Fabian von Feilitzsch (@fabianvf)"
@@ -61,30 +61,30 @@ options:
- A relative time in seconds before the current time from which to show logs.
required: no
type: str
- version_added: '2.2.0'
+ version_added: 2.2.0
previous:
description:
- If C(true), print the logs for the previous instance of the container in a pod if it exists.
required: no
type: bool
default: False
- version_added: '2.4.0'
+ version_added: 2.4.0
tail_lines:
description:
- A number of lines from the end of the logs to retrieve.
required: no
type: int
- version_added: '2.4.0'
+ version_added: 2.4.0
all_containers:
description:
- If set to C(true), retrieve all containers' logs in the pod(s).
- mutually exclusive with C(container).
type: bool
- version_added: '2.4.0'
+ version_added: 2.4.0
requirements:
- - "python >= 3.6"
- - "kubernetes >= 12.0.0"
+ - "python >= 3.9"
+ - "kubernetes >= 24.2.0"
- "PyYAML >= 3.11"
"""
diff --git a/ansible_collections/kubernetes/core/plugins/modules/k8s_rollback.py b/ansible_collections/kubernetes/core/plugins/modules/k8s_rollback.py
index 8dd686294..4fbf61049 100644
--- a/ansible_collections/kubernetes/core/plugins/modules/k8s_rollback.py
+++ b/ansible_collections/kubernetes/core/plugins/modules/k8s_rollback.py
@@ -12,7 +12,7 @@ __metaclass__ = type
DOCUMENTATION = r"""
module: k8s_rollback
short_description: Rollback Kubernetes (K8S) Deployments and DaemonSets
-version_added: "1.0.0"
+version_added: 1.0.0
author:
- "Julien Huon (@julienhuon)"
description:
@@ -34,8 +34,8 @@ extends_documentation_fragment:
- kubernetes.core.k8s_auth_options
- kubernetes.core.k8s_name_options
requirements:
- - "python >= 3.6"
- - "kubernetes >= 12.0.0"
+ - "python >= 3.9"
+ - "kubernetes >= 24.2.0"
- "PyYAML >= 3.11"
"""
diff --git a/ansible_collections/kubernetes/core/plugins/modules/k8s_scale.py b/ansible_collections/kubernetes/core/plugins/modules/k8s_scale.py
index c3e5f8425..6e7d8c44a 100644
--- a/ansible_collections/kubernetes/core/plugins/modules/k8s_scale.py
+++ b/ansible_collections/kubernetes/core/plugins/modules/k8s_scale.py
@@ -6,7 +6,6 @@
from __future__ import absolute_import, division, print_function
-
__metaclass__ = type
@@ -46,8 +45,8 @@ options:
version_added: 2.0.0
requirements:
- - "python >= 3.6"
- - "kubernetes >= 12.0.0"
+ - "python >= 3.9"
+ - "kubernetes >= 24.2.0"
- "PyYAML >= 3.11"
"""
@@ -151,14 +150,13 @@ except ImportError:
pass
from ansible.module_utils._text import to_native
-
from ansible_collections.kubernetes.core.plugins.module_utils.ansiblemodule import (
AnsibleModule,
)
from ansible_collections.kubernetes.core.plugins.module_utils.args_common import (
AUTH_ARG_SPEC,
- RESOURCE_ARG_SPEC,
NAME_ARG_SPEC,
+ RESOURCE_ARG_SPEC,
)
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.client import (
get_api_client,
@@ -170,15 +168,15 @@ from ansible_collections.kubernetes.core.plugins.module_utils.k8s.exceptions imp
CoreException,
ResourceTimeout,
)
+from ansible_collections.kubernetes.core.plugins.module_utils.k8s.resource import (
+ create_definitions,
+)
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.service import (
diff_objects,
)
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.waiter import (
get_waiter,
)
-from ansible_collections.kubernetes.core.plugins.module_utils.k8s.resource import (
- create_definitions,
-)
SCALE_ARG_SPEC = {
"replicas": {"type": "int", "required": True},
@@ -391,7 +389,7 @@ def scale(
namespace=namespace,
)
if not success:
- raise ResourceTimeout("Resource scaling timed out", **result)
+ raise ResourceTimeout("Resource scaling timed out", result)
match, diffs = diff_objects(existing.to_dict(), result["result"])
result["changed"] = not match
diff --git a/ansible_collections/kubernetes/core/plugins/modules/k8s_service.py b/ansible_collections/kubernetes/core/plugins/modules/k8s_service.py
index 1eed29bd3..b3cb74444 100644
--- a/ansible_collections/kubernetes/core/plugins/modules/k8s_service.py
+++ b/ansible_collections/kubernetes/core/plugins/modules/k8s_service.py
@@ -83,8 +83,8 @@ options:
type: bool
requirements:
- - python >= 3.6
- - kubernetes >= 12.0.0
+ - python >= 3.9
+ - kubernetes >= 24.2.0
"""
EXAMPLES = r"""
@@ -143,7 +143,6 @@ result:
"""
import copy
-
from collections import defaultdict
from ansible_collections.kubernetes.core.plugins.module_utils.ansiblemodule import (
@@ -154,25 +153,24 @@ from ansible_collections.kubernetes.core.plugins.module_utils.args_common import
COMMON_ARG_SPEC,
RESOURCE_ARG_SPEC,
)
-from ansible_collections.kubernetes.core.plugins.module_utils.k8s.core import (
- AnsibleK8SModule,
-)
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.client import (
get_api_client,
)
+from ansible_collections.kubernetes.core.plugins.module_utils.k8s.core import (
+ AnsibleK8SModule,
+)
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.exceptions import (
CoreException,
)
-from ansible_collections.kubernetes.core.plugins.module_utils.k8s.service import (
- K8sService,
-)
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.resource import (
create_definitions,
)
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.runner import (
perform_action,
)
-
+from ansible_collections.kubernetes.core.plugins.module_utils.k8s.service import (
+ K8sService,
+)
SERVICE_ARG_SPEC = {
"apply": {"type": "bool", "default": False},
diff --git a/ansible_collections/kubernetes/core/plugins/modules/k8s_taint.py b/ansible_collections/kubernetes/core/plugins/modules/k8s_taint.py
index bfa80db5e..a7c0ae27d 100644
--- a/ansible_collections/kubernetes/core/plugins/modules/k8s_taint.py
+++ b/ansible_collections/kubernetes/core/plugins/modules/k8s_taint.py
@@ -13,7 +13,7 @@ __metaclass__ = type
DOCUMENTATION = r"""
module: k8s_taint
short_description: Taint a node in a Kubernetes/OpenShift cluster
-version_added: "2.3.0"
+version_added: 2.3.0
author: Alina Buzachis (@alinabuzachis)
description:
- Taint allows a node to refuse Pod to be scheduled unless that Pod has a matching toleration.
@@ -60,8 +60,8 @@ options:
default: false
type: bool
requirements:
- - python >= 3.6
- - kubernetes >= 12.0.0
+ - python >= 3.9
+ - kubernetes >= 24.2.0
"""
EXAMPLES = r"""
@@ -127,7 +127,6 @@ result:
import copy
from ansible.module_utils._text import to_native
-
from ansible_collections.kubernetes.core.plugins.module_utils.ansiblemodule import (
AnsibleModule,
)
diff --git a/ansible_collections/kubernetes/core/requirements.txt b/ansible_collections/kubernetes/core/requirements.txt
index cea805958..320e4eb7f 100644
--- a/ansible_collections/kubernetes/core/requirements.txt
+++ b/ansible_collections/kubernetes/core/requirements.txt
@@ -1,3 +1,3 @@
-kubernetes>=12.0.0
+kubernetes>=24.2.0
requests-oauthlib
jsonpatch
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm/defaults/main.yml b/ansible_collections/kubernetes/core/tests/integration/targets/helm/defaults/main.yml
index ae860ce85..39841cce6 100644
--- a/ansible_collections/kubernetes/core/tests/integration/targets/helm/defaults/main.yml
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm/defaults/main.yml
@@ -24,3 +24,5 @@ test_namespace:
- "helm-local-path-003"
- "helm-from-repository"
- "helm-from-url"
+ - "helm-reuse-values"
+ - "helm-chart-with-space-into-name"
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm/library/helm_test_pending.py b/ansible_collections/kubernetes/core/tests/integration/targets/helm/library/helm_test_pending.py
new file mode 100644
index 000000000..cc8bde7f9
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm/library/helm_test_pending.py
@@ -0,0 +1,130 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+# Copyright: (c) 2023, Ansible Project
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+from __future__ import absolute_import, division, print_function
+
+__metaclass__ = type
+
+
+DOCUMENTATION = r"""
+---
+module: helm_test_pending
+short_description: created pending-install release
+author:
+ - Aubin Bikouo (@abikouo)
+requirements:
+ - "helm (https://github.com/helm/helm/releases)"
+description:
+ - This module is used to create a pending install release for integration testing
+ - The scope of this module is the integration testing of the kubernetes.core collection only.
+options:
+ binary_path:
+ description:
+ - The path of a helm binary to use.
+ required: true
+ type: path
+ chart_ref:
+ description:
+ - chart reference on chart repository (e.g. my-repo/my-chart-ref)
+ required: true
+ type: str
+ chart_release:
+ description:
+ - Release name to manage.
+ required: true
+ type: str
+ chart_release_namespace:
+ description:
+ - Kubernetes namespace where the chart should be installed.
+ required: true
+ type: str
+"""
+
+EXAMPLES = r"""
+"""
+
+RETURN = r"""
+"""
+
+import json
+import subprocess
+import time
+
+from ansible.module_utils.basic import AnsibleModule
+
+
+class HelmReleaseNotFoundError(Exception):
+ def __init__(self, message):
+ super().__init__(message)
+
+
+def create_pending_install_release(helm_binary, chart_ref, chart_release, namespace):
+ # create pending-install release
+ command = [
+ helm_binary,
+ "install",
+ chart_release,
+ chart_ref,
+ "--namespace",
+ namespace,
+ "--wait",
+ ]
+ proc = subprocess.Popen(command)
+ time.sleep(2)
+ proc.kill()
+ # ensure release status is pending-install
+ command = [
+ helm_binary,
+ "list",
+ "--all",
+ "--output=json",
+ "--namespace",
+ namespace,
+ "--filter",
+ chart_release,
+ ]
+ cmd = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ out, err = cmd.communicate()
+
+ data = json.loads(out)
+ if not data:
+ error = "Release %s not found." % chart_release
+ raise HelmReleaseNotFoundError(message=error)
+ return data[0]["status"] == "pending-install", data[0]["status"]
+
+
+def main():
+ module = AnsibleModule(
+ argument_spec=dict(
+ binary_path=dict(type="path", required=True),
+ chart_ref=dict(type="str", required=True),
+ chart_release=dict(type="str", required=True),
+ chart_release_namespace=dict(type="str", required=True),
+ ),
+ )
+
+ params = dict(
+ helm_binary=module.params.get("binary_path"),
+ chart_release=module.params.get("chart_release"),
+ chart_ref=module.params.get("chart_ref"),
+ namespace=module.params.get("chart_release_namespace"),
+ )
+
+ try:
+ result, status = create_pending_install_release(**params)
+ if not result:
+ module.fail_json(
+ msg="unable to create pending-install release, current status is %s"
+ % status
+ )
+ module.exit_json(changed=True, msg="Release created with status '%s'" % status)
+ except HelmReleaseNotFoundError as err:
+ module.fail_json(
+ msg="Error while trying to create pending-install release due to '%s'" % err
+ )
+
+
+if __name__ == "__main__":
+ main()
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm/library/helm_test_version.py b/ansible_collections/kubernetes/core/tests/integration/targets/helm/library/helm_test_version.py
index dfd9a0860..1ac12e0f6 100644
--- a/ansible_collections/kubernetes/core/tests/integration/targets/helm/library/helm_test_version.py
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm/library/helm_test_version.py
@@ -52,12 +52,12 @@ result:
"""
import re
+
+from ansible.module_utils.basic import AnsibleModule
from ansible_collections.kubernetes.core.plugins.module_utils.version import (
LooseVersion,
)
-from ansible.module_utils.basic import AnsibleModule
-
def main():
module = AnsibleModule(
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/helm/playbook.yaml
new file mode 100644
index 000000000..92e2e48b1
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm/playbook.yaml
@@ -0,0 +1,7 @@
+---
+- connection: local
+ gather_facts: true
+ hosts: localhost
+
+ roles:
+ - helm
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/helm/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm/tasks/run_test.yml b/ansible_collections/kubernetes/core/tests/integration/targets/helm/tasks/run_test.yml
index 545b25c8e..76d55b22c 100644
--- a/ansible_collections/kubernetes/core/tests/integration/targets/helm/tasks/run_test.yml
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm/tasks/run_test.yml
@@ -25,12 +25,18 @@
- from_repository
- from_url
+- name: test helm upgrade with reuse_values
+ include_tasks: test_helm_reuse_values.yml
+
- name: test helm dependency update
include_tasks: test_up_dep.yml
- name: Test helm uninstall
include_tasks: test_helm_uninstall.yml
+- name: Test helm install with chart name containing space
+ include_tasks: test_helm_with_space_into_chart_name.yml
+
# https://github.com/ansible-collections/community.kubernetes/issues/296
- name: Test Skip CRDS feature in helm chart install
include_tasks: test_crds.yml
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm/tasks/test_helm_reuse_values.yml b/ansible_collections/kubernetes/core/tests/integration/targets/helm/tasks/test_helm_reuse_values.yml
new file mode 100644
index 000000000..9384fd4f4
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm/tasks/test_helm_reuse_values.yml
@@ -0,0 +1,75 @@
+---
+- name: Test helm reuse_values
+ vars:
+ helm_namespace: "{{ test_namespace[9] }}"
+ chart_release_values:
+ replica:
+ replicaCount: 3
+ master:
+ count: 1
+ kind: Deployment
+ chart_reuse_values:
+ replica:
+ replicaCount: 1
+ master:
+ count: 3
+ block:
+ - name: Initial chart installation
+ helm:
+ binary_path: "{{ helm_binary }}"
+ chart_ref: redis
+ chart_repo_url: https://charts.bitnami.com/bitnami
+ release_name: test-redis
+ release_namespace: "{{ helm_namespace }}"
+ create_namespace: true
+ release_values: "{{ chart_release_values }}"
+ register: install
+
+ - name: Get value set as string
+ helm_info:
+ binary_path: "{{ helm_binary }}"
+ release_name: test-redis
+ release_namespace: "{{ helm_namespace }}"
+ register: release_value
+
+ - name: Validate that chart values are as expected
+ assert:
+ that:
+ - install is changed
+ - '"--reuse-values=True" not in install.command'
+ - release_value["status"]["values"] == chart_release_values
+
+ - name: Upgrade chart using reuse_values=true
+ helm:
+ binary_path: "{{ helm_binary }}"
+ chart_ref: redis
+ chart_repo_url: https://charts.bitnami.com/bitnami
+ release_name: test-redis
+ release_namespace: "{{ helm_namespace }}"
+ reuse_values: true
+ reset_values: false
+ release_values: "{{ chart_reuse_values }}"
+ register: upgrade
+
+ - name: Get value set as string
+ helm_info:
+ binary_path: "{{ helm_binary }}"
+ release_name: test-redis
+ release_namespace: "{{ helm_namespace }}"
+ register: release_value
+
+ - name: Validate that chart values are as expected
+ assert:
+ that:
+ - upgrade is changed
+ - '"--reuse-values=True" in upgrade.command'
+ - '"--reset-values" not in upgrade.command'
+ - release_value["status"]["values"] == chart_release_values | combine(chart_reuse_values, recursive=true)
+
+ always:
+ - name: Remove helm namespace
+ k8s:
+ api_version: v1
+ kind: Namespace
+ name: "{{ helm_namespace }}"
+ state: absent
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm/tasks/test_helm_uninstall.yml b/ansible_collections/kubernetes/core/tests/integration/targets/helm/tasks/test_helm_uninstall.yml
index e82891e4d..23e36fb0e 100644
--- a/ansible_collections/kubernetes/core/tests/integration/targets/helm/tasks/test_helm_uninstall.yml
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm/tasks/test_helm_uninstall.yml
@@ -7,6 +7,7 @@
- vars:
chart_source: "https://github.com/kubernetes/kube-state-metrics/releases/download/kube-state-metrics-helm-chart-2.13.3/kube-state-metrics-2.13.3.tgz"
chart_name: "test-wait-uninstall"
+ chart_name_pending: "test-uninstall-pending-release"
helm_namespace: "{{ test_namespace[1] }}"
block:
@@ -64,6 +65,36 @@
wait: yes
register: uninstall
+ # Test uninstall chart release with 'pending-install' status
+ - name: Create chart release with 'pending-install' status
+ helm_test_pending:
+ binary_path: "{{ helm_binary }}"
+ chart_ref: "{{ chart_source }}"
+ chart_release: "{{ chart_name_pending }}"
+ chart_release_namespace: "{{ helm_namespace }}"
+
+ - name: Uninstall chart release with 'pending-install' status
+ helm:
+ binary_path: "{{ helm_binary }}"
+ release_name: "{{ chart_name_pending }}"
+ namespace: "{{ helm_namespace }}"
+ release_state: absent
+ register: _uninstall
+
+ - name: Get Helm release details
+ helm_info:
+ binary_path: "{{ helm_binary }}"
+ release_namespace: "{{ helm_namespace }}"
+ release_state: pending
+ release_name: "{{ chart_name_pending }}"
+ register: _info
+
+ - name: assert release does not exist anymore
+ assert:
+ that:
+ - _uninstall is changed
+ - _info.status is undefined
+
always:
- name: Delete temp directory
file:
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm/tasks/test_helm_with_space_into_chart_name.yml b/ansible_collections/kubernetes/core/tests/integration/targets/helm/tasks/test_helm_with_space_into_chart_name.yml
new file mode 100644
index 000000000..fcf867665
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm/tasks/test_helm_with_space_into_chart_name.yml
@@ -0,0 +1,58 @@
+---
+- name: Create test directory
+ ansible.builtin.tempfile:
+ state: directory
+ suffix: .helm
+ register: test_dir
+
+- name: Test helm using directory with space
+ vars:
+ helm_dir: "{{ test_dir.path }}/Deploy Chart"
+ helm_namespace: "{{ test_namespace[10] }}"
+ chart_release_name: "deploy-chart-with-space-into-name"
+ helm_local_src: "test-chart"
+ block:
+ - name: Copy helm file into destination
+ ansible.builtin.copy:
+ src: "{{ helm_local_src }}"
+ dest: "{{ helm_dir }}"
+
+ - name: Install chart from local source with Space into name
+ helm:
+ binary_path: "{{ helm_binary }}"
+ name: "{{ chart_release_name }}"
+ chart_ref: "{{ helm_dir }}/{{ helm_local_src | basename }}"
+ namespace: "{{ helm_namespace }}"
+ create_namespace: true
+ register: install_chart
+
+ - name: Assert that chart is installed
+ assert:
+ that:
+ - install_chart is changed
+ - install_chart.status.status | lower == 'deployed'
+
+ - name: Check helm_info content
+ helm_info:
+ binary_path: "{{ helm_binary }}"
+ name: "{{ chart_release_name }}"
+ namespace: "{{ helm_namespace }}"
+ register: chart_info
+
+ - name: Assert that Chart is installed (using helm_info)
+ assert:
+ that:
+ - chart_info.status.status | lower == 'deployed'
+
+ always:
+ - name: Delete temporary directory
+ ansible.builtin.file:
+ state: absent
+ name: "{{ test_dir.path }}"
+
+ - name: Remove helm namespace
+ k8s:
+ api_version: v1
+ kind: Namespace
+ name: "{{ helm_namespace }}"
+ state: absent
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/files/test-chart-reuse-values/Chart.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/files/test-chart-reuse-values/Chart.yaml
new file mode 100644
index 000000000..c3681dba0
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/files/test-chart-reuse-values/Chart.yaml
@@ -0,0 +1,24 @@
+apiVersion: v2
+name: chart-reuse-values
+description: A Helm chart for Kubernetes
+
+# A chart can be either an 'application' or a 'library' chart.
+#
+# Application charts are a collection of templates that can be packaged into versioned archives
+# to be deployed.
+#
+# Library charts provide useful utilities or functions for the chart developer. They're included as
+# a dependency of application charts to inject those utilities and functions into the rendering
+# pipeline. Library charts do not define any templates and therefore cannot be deployed.
+type: application
+
+# This is the chart version. This version number should be incremented each time you make changes
+# to the chart and its templates, including the app version.
+# Versions are expected to follow Semantic Versioning (https://semver.org/)
+version: 0.1.0
+
+# This is the version number of the application being deployed. This version number should be
+# incremented each time you make changes to the application. Versions are not expected to
+# follow Semantic Versioning. They should reflect the version the application is using.
+# It is recommended to use it with quotes.
+appVersion: "1.16.0"
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/files/test-chart-reuse-values/templates/configmap.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/files/test-chart-reuse-values/templates/configmap.yaml
new file mode 100644
index 000000000..4bbad8d69
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/files/test-chart-reuse-values/templates/configmap.yaml
@@ -0,0 +1,7 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: cmap
+data:
+ ansible_version: {{ .Values.ansible_version }}
+ phase: {{ .Values.phase }}
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/files/test-chart-reuse-values/values.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/files/test-chart-reuse-values/values.yaml
new file mode 100644
index 000000000..f2cd9d72b
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/files/test-chart-reuse-values/values.yaml
@@ -0,0 +1,2 @@
+ansible_version: milestone
+phase: uat
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/playbook.yaml
new file mode 100644
index 000000000..cb953721a
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/playbook.yaml
@@ -0,0 +1,7 @@
+---
+- connection: local
+ gather_facts: true
+ hosts: localhost
+
+ roles:
+ - helm_diff
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/tasks/main.yml b/ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/tasks/main.yml
index d54d0ba72..c37d947f5 100644
--- a/ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/tasks/main.yml
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/tasks/main.yml
@@ -143,6 +143,8 @@
chart_ref: "{{ test_chart_ref }}"
values:
foo: gaz
+ values_files:
+ - "{{ test_chart_ref }}/values.yml"
register: install
- assert:
@@ -157,6 +159,46 @@
chart_ref: "{{ test_chart_ref }}"
values:
foo: gaz
+ values_files:
+ - "{{ test_chart_ref }}/values.yml"
+ register: install
+
+ - assert:
+ that:
+ - install is not changed
+
+ - name: Upgrade with set_values
+ helm:
+ binary_path: "{{ helm_binary }}"
+ name: test-chart
+ namespace: "{{ helm_namespace }}"
+ chart_ref: "{{ test_chart_ref }}"
+ values:
+ foo: gaz
+ values_files:
+ - "{{ test_chart_ref }}/values.yml"
+ set_values:
+ - value: foo=qux
+ value_type: string
+ register: install
+
+ - assert:
+ that:
+ - install is changed
+
+ - name: Upgrade with set_values idempotency check
+ helm:
+ binary_path: "{{ helm_binary }}"
+ name: test-chart
+ namespace: "{{ helm_namespace }}"
+ chart_ref: "{{ test_chart_ref }}"
+ values:
+ foo: gaz
+ values_files:
+ - "{{ test_chart_ref }}/values.yml"
+ set_values:
+ - value: foo=qux
+ value_type: string
register: install
- assert:
@@ -256,4 +298,7 @@
kind: Namespace
name: "{{ helm_namespace }}"
state: absent
+ wait: true
ignore_errors: yes
+
+- include_tasks: reuse_values.yml
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/tasks/reuse_values.yml b/ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/tasks/reuse_values.yml
new file mode 100644
index 000000000..f2d80a8f4
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm_diff/tasks/reuse_values.yml
@@ -0,0 +1,93 @@
+---
+- name: Create temporary directory for helm chart
+ tempfile:
+ suffix: .helm
+ state: directory
+ register: helm_dir
+
+- name: Test helm diff functionality
+ vars:
+ test_chart_path: "{{ helm_dir.path }}/test-chart-reuse-values"
+ test_release_name: "myrelease"
+
+ block:
+
+ - name: Install helm diff
+ kubernetes.core.helm_plugin:
+ binary_path: "{{ helm_binary }}"
+ state: present
+ plugin_path: https://github.com/databus23/helm-diff
+ plugin_version: 3.9.4
+
+ - name: Copy test chart
+ ansible.builtin.copy:
+ src: "test-chart-reuse-values"
+ dest: "{{ helm_dir.path }}"
+
+ - name: Create helm release
+ kubernetes.core.helm:
+ state: present
+ binary_path: "{{ helm_binary }}"
+ chart_ref: "{{ test_chart_path }}"
+ release_name: "{{ test_release_name }}"
+ release_namespace: "{{ helm_namespace }}"
+ create_namespace: true
+ release_values:
+ ansible_version: devel
+ phase: ci
+ wait: true
+
+ - name: Upgrade helm release (reset_values=false and reuse_values=true)
+ kubernetes.core.helm:
+ binary_path: "{{ helm_binary }}"
+ chart_ref: "{{ test_chart_path }}"
+ reset_values: false
+ reuse_values: true
+ release_name: "{{ test_release_name }}"
+ release_namespace: "{{ helm_namespace }}"
+ values:
+ ansible_version: devel
+ register: helm_upgrade
+
+ - name: Ensure task did not reported change
+ assert:
+ that:
+ - helm_upgrade is not changed
+
+ - name: Upgrade helm release (reuse_values=true with default value for reset_values)
+ kubernetes.core.helm:
+ binary_path: "{{ helm_binary }}"
+ chart_ref: "{{ test_chart_path }}"
+ reuse_values: true
+ release_name: "{{ test_release_name }}"
+ release_namespace: "{{ helm_namespace }}"
+ values:
+ ansible_version: devel
+ register: helm_upgrade
+
+ - name: Ensure task reported change
+ assert:
+ that:
+ - helm_upgrade is changed
+
+ always:
+ - name: Remove temporary directory
+ file:
+ path: "{{ helm_dir.path }}"
+ state: absent
+ ignore_errors: true
+
+ - name: Uninstall helm diff
+ kubernetes.core.helm_plugin:
+ binary_path: "{{ helm_binary }}"
+ state: absent
+ plugin_name: diff
+ ignore_errors: true
+
+ - name: Remove helm namespace
+ kubernetes.core.k8s:
+ api_version: v1
+ kind: Namespace
+ name: "{{ helm_namespace }}"
+ state: absent
+ ignore_errors: true
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm_kubeconfig/meta/main.yml b/ansible_collections/kubernetes/core/tests/integration/targets/helm_kubeconfig/meta/main.yml
index 2e3ba2fa3..10d989e78 100644
--- a/ansible_collections/kubernetes/core/tests/integration/targets/helm_kubeconfig/meta/main.yml
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm_kubeconfig/meta/main.yml
@@ -1,3 +1,4 @@
---
dependencies:
- remove_namespace
+ - install_helm
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm_kubeconfig/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/helm_kubeconfig/playbook.yaml
new file mode 100644
index 000000000..8c6c252a7
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm_kubeconfig/playbook.yaml
@@ -0,0 +1,7 @@
+---
+- connection: local
+ gather_facts: true
+ hosts: localhost
+
+ roles:
+ - helm_kubeconfig
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm_kubeconfig/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/helm_kubeconfig/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm_kubeconfig/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm_plugin/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/helm_plugin/playbook.yaml
new file mode 100644
index 000000000..2b50d19c6
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm_plugin/playbook.yaml
@@ -0,0 +1,7 @@
+---
+- connection: local
+ gather_facts: true
+ hosts: localhost
+
+ roles:
+ - helm_plugin
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm_plugin/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/helm_plugin/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm_plugin/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm_pull/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/helm_pull/playbook.yaml
new file mode 100644
index 000000000..43c5e6d43
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm_pull/playbook.yaml
@@ -0,0 +1,7 @@
+---
+- connection: local
+ gather_facts: true
+ hosts: localhost
+
+ roles:
+ - helm_pull
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm_pull/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/helm_pull/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm_pull/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm_repository/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/helm_repository/playbook.yaml
new file mode 100644
index 000000000..f2a56a7bb
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm_repository/playbook.yaml
@@ -0,0 +1,7 @@
+---
+- connection: local
+ gather_facts: true
+ hosts: localhost
+
+ roles:
+ - helm_repository
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm_repository/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/helm_repository/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm_repository/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm_set_values/meta/main.yml b/ansible_collections/kubernetes/core/tests/integration/targets/helm_set_values/meta/main.yml
index 2e3ba2fa3..10d989e78 100644
--- a/ansible_collections/kubernetes/core/tests/integration/targets/helm_set_values/meta/main.yml
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm_set_values/meta/main.yml
@@ -1,3 +1,4 @@
---
dependencies:
- remove_namespace
+ - install_helm
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm_set_values/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/helm_set_values/playbook.yaml
new file mode 100644
index 000000000..5d3109d24
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm_set_values/playbook.yaml
@@ -0,0 +1,7 @@
+---
+- connection: local
+ gather_facts: true
+ hosts: localhost
+
+ roles:
+ - helm_set_values
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/helm_set_values/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/helm_set_values/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/helm_set_values/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/inventory_k8s/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/inventory_k8s/runme.sh
index 4548f4bb9..0691d8d5d 100755
--- a/ansible_collections/kubernetes/core/tests/integration/targets/inventory_k8s/runme.sh
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/inventory_k8s/runme.sh
@@ -8,6 +8,7 @@ USER_CREDENTIALS_DIR=$(pwd)
ansible-playbook playbooks/delete_resources.yml -e "user_credentials_dir=${USER_CREDENTIALS_DIR}" "$@"
{
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
export ANSIBLE_INVENTORY_ENABLED=kubernetes.core.k8s,yaml
export ANSIBLE_PYTHON_INTERPRETER=auto_silent
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_access_review/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_access_review/playbook.yaml
new file mode 100644
index 000000000..a97d2ee20
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_access_review/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_access_review
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_access_review/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_access_review/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_access_review/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_append_hash/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_append_hash/playbook.yaml
new file mode 100644
index 000000000..1ef60c4aa
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_append_hash/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_append_hash
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_append_hash/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_append_hash/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_append_hash/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_apply/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_apply/playbook.yaml
new file mode 100644
index 000000000..a1ec85526
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_apply/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_apply
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_apply/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_apply/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_apply/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_check_mode/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_check_mode/playbook.yaml
new file mode 100644
index 000000000..ee9f14f57
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_check_mode/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_check_mode
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_check_mode/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_check_mode/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_check_mode/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_cluster_info/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_cluster_info/playbook.yaml
new file mode 100644
index 000000000..3f26f1dd1
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_cluster_info/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_cluster_info
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_cluster_info/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_cluster_info/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_cluster_info/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_copy/library/k8s_create_file.py b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_copy/library/k8s_create_file.py
deleted file mode 100644
index 6898c36a5..000000000
--- a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_copy/library/k8s_create_file.py
+++ /dev/null
@@ -1,93 +0,0 @@
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-# Copyright: (c) 2021, Aubin Bikouo <@abikouo>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import absolute_import, division, print_function
-
-__metaclass__ = type
-
-
-DOCUMENTATION = r"""
-
-module: k8s_create_file
-
-short_description: Create large file with a defined size.
-
-author:
- - Aubin Bikouo (@abikouo)
-
-description:
- - This module is used to validate k8s_cp module.
-
-options:
- path:
- description:
- - The destination path for the file to create.
- type: path
- required: yes
- size:
- description:
- - The size of the output file in MB.
- type: int
- default: 400
- binary:
- description:
- - If this flag is set to yes, the generated file content binary data.
- type: bool
- default: False
-"""
-
-EXAMPLES = r"""
-- name: create 150MB file
- k8s_diff:
- path: large_file.txt
- size: 150
-"""
-
-
-RETURN = r"""
-"""
-
-import os
-
-from ansible.module_utils.basic import AnsibleModule
-from ansible.module_utils._text import to_native
-
-
-def execute_module(module):
- try:
- size = module.params.get("size") * 1024 * 1024
- path = module.params.get("path")
- write_mode = "w"
- if module.params.get("binary"):
- content = os.urandom(size)
- write_mode = "wb"
- else:
- content = ""
- count = 0
- while len(content) < size:
- content += "This file has been generated using ansible: {0}\n".format(
- count
- )
- count += 1
-
- with open(path, write_mode) as f:
- f.write(content)
- module.exit_json(changed=True, size=len(content))
- except Exception as e:
- module.fail_json(msg="failed to create file due to: {0}".format(to_native(e)))
-
-
-def main():
- argument_spec = {}
- argument_spec["size"] = {"type": "int", "default": 400}
- argument_spec["path"] = {"type": "path", "required": True}
- argument_spec["binary"] = {"type": "bool", "default": False}
- module = AnsibleModule(argument_spec=argument_spec)
-
- execute_module(module)
-
-
-if __name__ == "__main__":
- main()
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_copy/library/kubectl_file_compare.py b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_copy/library/kubectl_file_compare.py
index bcf097839..e84bbffd8 100644
--- a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_copy/library/kubectl_file_compare.py
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_copy/library/kubectl_file_compare.py
@@ -89,10 +89,10 @@ EXAMPLES = r"""
RETURN = r"""
"""
-import os
import filecmp
-
+import os
from tempfile import NamedTemporaryFile, TemporaryDirectory
+
from ansible.module_utils.basic import AnsibleModule
@@ -157,7 +157,6 @@ def compare_directories(dir1, dir2):
def execute_module(module):
-
args = module.params.get("args")
local_path = module.params.get("local_path")
namespace = module.params.get("namespace")
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_copy/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_copy/playbook.yaml
new file mode 100644
index 000000000..a0fec9444
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_copy/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_copy
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_copy/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_copy/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_copy/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_copy/tasks/test_copy_large_file.yml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_copy/tasks/test_copy_large_file.yml
index 6758202eb..27d4050ac 100644
--- a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_copy/tasks/test_copy_large_file.yml
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_copy/tasks/test_copy_large_file.yml
@@ -10,16 +10,13 @@
path: "{{ test_directory }}"
state: directory
- - name: create large text file
- k8s_create_file:
- path: "{{ test_directory }}/large_text_file.txt"
- size: 150
+ - name: Create a large text file
+ ansible.builtin.shell:
+ cmd: base64 /dev/random | head -c 150M > {{ test_directory }}/large_text_file.txt
- - name: create large binary file
- k8s_create_file:
- path: "{{ test_directory }}/large_bin_file.bin"
- size: 200
- binary: true
+ - name: Create a large binary file
+ ansible.builtin.command:
+ cmd: dd if=/dev/random of={{ test_directory }}/large_bin_file.bin bs=1M count=200
# Copy large text file from/to local filesystem to Pod
- name: copy large file into remote Pod
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_crd/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_crd/playbook.yaml
new file mode 100644
index 000000000..303acd539
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_crd/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_crd
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_crd/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_crd/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_crd/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_delete/files/deployments.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_delete/files/deployments.yaml
new file mode 100644
index 000000000..594d4522a
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_delete/files/deployments.yaml
@@ -0,0 +1,70 @@
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: nginx-d
+ labels:
+ context: ansible
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ context: ansible
+ template:
+ metadata:
+ labels:
+ context: ansible
+ spec:
+ containers:
+ - name: nginx
+ image: nginx
+ ports:
+ - containerPort: 80
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: openjdk-d
+ labels:
+ context: ansible
+spec:
+ replicas: 2
+ selector:
+ matchLabels:
+ context: ansible
+ template:
+ metadata:
+ labels:
+ context: ansible
+ spec:
+ containers:
+ - name: openjdk
+ image: openjdk:17
+ command:
+ - /bin/sh
+ - -c
+ - while true;do date;sleep 5; done
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: alpine-d
+ labels:
+ context: ansible
+spec:
+ replicas: 3
+ selector:
+ matchLabels:
+ context: ansible
+ template:
+ metadata:
+ labels:
+ context: ansible
+ spec:
+ containers:
+ - name: alpine
+ image: alpine
+ command:
+ - /bin/sh
+ - -c
+ - while true;do date;sleep 5; done
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_delete/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_delete/playbook.yaml
new file mode 100644
index 000000000..ab89107b0
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_delete/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_delete
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_delete/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_delete/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_delete/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_delete/tasks/main.yml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_delete/tasks/main.yml
index 88edf59bd..d7b144cb4 100644
--- a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_delete/tasks/main.yml
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_delete/tasks/main.yml
@@ -121,6 +121,77 @@
that:
- _result.resources | length == 0
+ # test deletion using delete_all=true
+ - name: Create deployments
+ k8s:
+ namespace: "{{ test_namespace }}"
+ src: files/deployments.yaml
+ wait: true
+ register: result
+
+ - name: Trying to delete deployments without name and label_selectors and select_all=false
+ k8s:
+ kind: Deployment
+ api_version: apps/v1
+ namespace: "{{ test_namespace }}"
+ state: absent
+ register: _delete
+
+ - name: Ensure Deployment were not deleted
+ assert:
+ that:
+ - _delete is not changed
+
+ - name: Validate that Deployment still exist
+ k8s_info:
+ kind: Deployment
+ api_version: apps/v1
+ namespace: "{{ test_namespace }}"
+ label_selectors:
+ - context=ansible
+ register: _deployment
+ failed_when: _deployment.resources | length == 0
+
+ - name: Trying to delete using delete_all=true but missing kind option
+ k8s:
+ api_version: apps/v1
+ namespace: "{{ test_namespace }}"
+ delete_all: true
+ state: absent
+ register: _delete
+ ignore_errors: true
+
+ - name: assert task failed with proper message
+ assert:
+ that:
+ - _delete is failed
+ - _delete.msg == "'kind' option is required to specify the resource type."
+
+ - name: Trying to delete deployments without name and label_selectors and delete_all=true
+ k8s:
+ kind: Deployment
+ api_version: apps/v1
+ namespace: "{{ test_namespace }}"
+ delete_all: true
+ wait: true
+ state: absent
+ register: _delete
+
+ - name: Ensure Deployment were deleted
+ assert:
+ that:
+ - _delete is changed
+
+ - name: Validate that Deployment do not exist anymore
+ k8s_info:
+ kind: Deployment
+ api_version: apps/v1
+ namespace: "{{ test_namespace }}"
+ label_selectors:
+ - context=ansible
+ register: _deployment
+ failed_when: _deployment.resources | length > 0
+
always:
- name: Remove namespace
k8s:
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_diff/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_diff/playbook.yaml
new file mode 100644
index 000000000..bd6fe9645
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_diff/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_diff
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_diff/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_diff/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_diff/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_drain/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_drain/playbook.yaml
new file mode 100644
index 000000000..f31993483
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_drain/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_drain
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_drain/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_drain/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_drain/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_drain/tasks/main.yml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_drain/tasks/main.yml
index f16f8affc..5891011f9 100644
--- a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_drain/tasks/main.yml
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_drain/tasks/main.yml
@@ -281,6 +281,7 @@
that:
- dset_result.resources | list | length > 0
+ # test: drain using disable_eviction=true
- name: Uncordon node
k8s_drain:
state: uncordon
@@ -347,6 +348,90 @@
register: _result
failed_when: _result.resources
+ # test: drain using pod_selectors
+ - name: Uncordon node
+ k8s_drain:
+ state: uncordon
+ name: '{{ node_to_drain }}'
+
+ - name: create a Pod for test
+ k8s:
+ namespace: '{{ test_namespace }}'
+ wait: true
+ wait_timeout: "{{ k8s_wait_timeout | default(omit) }}"
+ definition:
+ apiVersion: v1
+ kind: Pod
+ metadata:
+ name: 'ansible-drain-pod'
+ labels:
+ app: ansible-drain
+ spec:
+ affinity:
+ nodeAffinity:
+ requiredDuringSchedulingIgnoredDuringExecution:
+ nodeSelectorTerms:
+ - matchFields:
+ - key: metadata.name
+ operator: In
+ values:
+ - '{{ node_to_drain }}'
+ containers:
+ - name: ansible-container
+ image: busybox
+ command:
+ - '/bin/sh'
+ - '-c'
+ - 'while true; do echo $(date); sleep 10; done'
+
+ - name: Drain node using pod_selectors 'app!=ansible-drain'
+ k8s_drain:
+ state: drain
+ name: '{{ node_to_drain }}'
+ pod_selectors:
+ - app!=ansible-drain
+ delete_options:
+ terminate_grace_period: 0
+ delete_emptydir_data: true
+ force: true
+ ignore_daemonsets: true
+ register: drain_pod_selector
+
+ - name: assert that node has been drained
+ assert:
+ that:
+ - drain_pod_selector is changed
+ - '"node {{ node_to_drain }} marked unschedulable." in drain_pod_selector.result'
+
+ - name: assert that pod created before is still running
+ k8s_info:
+ namespace: '{{ test_namespace }}'
+ kind: Pod
+ label_selectors:
+ - app=ansible-drain
+ field_selectors:
+ - status.phase=Running
+ register: pods
+ failed_when: pods.resources == []
+
+ - name: Drain node using pod_selectors 'app=ansible-drain'
+ k8s_drain:
+ state: drain
+ name: '{{ node_to_drain }}'
+ pod_selectors:
+ - app=ansible-drain
+ delete_options:
+ terminate_grace_period: 0
+ force: true
+ register: drain_pod_selector_equal
+
+ - name: assert that node was not drained
+ assert:
+ that:
+ - drain_pod_selector_equal is changed
+ - '"node {{ node_to_drain }} already marked unschedulable." in drain_pod_selector_equal.result'
+ - '"Deleting Pods not managed by ReplicationController, ReplicaSet, Job, DaemonSet or StatefulSet: {{ test_namespace }}/ansible-drain-pod." in drain_pod_selector_equal.warnings'
+
- name: Uncordon node
k8s_drain:
state: uncordon
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_exec/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_exec/playbook.yaml
new file mode 100644
index 000000000..f2c6a67cd
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_exec/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_exec
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_exec/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_exec/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_exec/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_full/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_full/playbook.yaml
new file mode 100644
index 000000000..f0f4f3745
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_full/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_full
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_full/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_full/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_full/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_gc/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_gc/playbook.yaml
new file mode 100644
index 000000000..d1c5b4ff9
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_gc/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_gc
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_gc/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_gc/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_gc/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_generate_name/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_generate_name/playbook.yaml
new file mode 100644
index 000000000..fa5db406b
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_generate_name/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_generate_name
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_generate_name/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_generate_name/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_generate_name/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_hide_fields/aliases b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_hide_fields/aliases
new file mode 100644
index 000000000..64f66d0a5
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_hide_fields/aliases
@@ -0,0 +1,3 @@
+time=59
+k8s
+k8s_info
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_hide_fields/defaults/main.yml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_hide_fields/defaults/main.yml
new file mode 100644
index 000000000..1858b94ea
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_hide_fields/defaults/main.yml
@@ -0,0 +1,12 @@
+---
+test_namespace: "hide-fields"
+hide_fields_namespace: "hide-fields"
+hide_fields_base_configmap:
+ apiVersion: v1
+ kind: ConfigMap
+ metadata:
+ name: hide-fields-cm
+ namespace: hide-fields
+ data:
+ hello: world
+ another: value
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_hide_fields/meta/main.yml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_hide_fields/meta/main.yml
new file mode 100644
index 000000000..08362c780
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_hide_fields/meta/main.yml
@@ -0,0 +1,2 @@
+dependencies:
+- setup_namespace
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_hide_fields/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_hide_fields/playbook.yaml
new file mode 100644
index 000000000..349b62951
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_hide_fields/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_hide_fields
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_hide_fields/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_hide_fields/runme.sh
new file mode 100755
index 000000000..29fda1c9a
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_hide_fields/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@"
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_hide_fields/tasks/main.yml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_hide_fields/tasks/main.yml
new file mode 100644
index 000000000..4b361fb96
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_hide_fields/tasks/main.yml
@@ -0,0 +1,108 @@
+- block:
+ - name: Creation with hidden fields should work
+ k8s:
+ definition: "{{ hide_fields_base_configmap}}"
+ hidden_fields:
+ - metadata.managedFields
+ register: hf1
+
+ - name: Ensure hidden fields are not present
+ assert:
+ that:
+ - "'managedFields' not in hf1.result['metadata']"
+
+ - name: Running without hidden fields should work
+ k8s:
+ definition: "{{ hide_fields_base_configmap}}"
+
+ - name: Running with missing hidden fields should have no effect
+ k8s:
+ definition: "{{ hide_fields_base_configmap}}"
+ hidden_fields:
+ - does.not.exist
+ register: hf2
+
+ - name: Ensure no change with missing hidden fields
+ assert:
+ that:
+ - not hf2.changed
+
+ - name: Hide status and managed fields
+ k8s:
+ definition: "{{ hide_fields_base_configmap}}"
+ hidden_fields:
+ - status
+ - metadata.managedFields
+ register: hf3
+ diff: true
+
+ - name: Ensure hidden fields are not present
+ assert:
+ that:
+ - "'status' not in hf3.result"
+ - "'managedFields' not in hf3.result['metadata']"
+
+ - name: k8s_info works with hidden fields
+ k8s_info:
+ name: "{{ hide_fields_base_configmap.metadata.name }}"
+ namespace: "{{ hide_fields_base_configmap.metadata.namespace }}"
+ kind: ConfigMap
+ hidden_fields:
+ - metadata.managedFields
+ register: hf4
+
+ - name: Ensure hidden fields are not present
+ assert:
+ that:
+ - hf4.resources | length == 1
+ - "'managedFields' not in hf4.resources[0]['metadata']"
+
+
+ - name: Hiding a changed field should still result in a change
+ k8s:
+ definition: "{{ hide_fields_base_configmap | combine({'data':{'hello':'different'}}) }}"
+ hidden_fields:
+ - data
+ - metadata.managedFields
+ register: hf5
+ diff: true
+
+ - name: Ensure that hidden changed field changed
+ assert:
+ that:
+ - hf5.changed
+
+ - name: Apply works with hidden fields
+ k8s:
+ definition: "{{ hide_fields_base_configmap | combine({'data':{'anew':'value'}}) }}"
+ hidden_fields:
+ - data
+ apply: true
+ register: hf6
+ diff: true
+
+ - name: Ensure that hidden changed field changed
+ assert:
+ that:
+ - hf6.changed
+
+ - name: Hidden field should not show up in deletion
+ k8s:
+ definition: "{{ hide_fields_base_configmap}}"
+ hidden_fields:
+ - status
+ state: absent
+ register: hf7
+
+ - name: Ensure hidden fields are not present
+ assert:
+ that:
+ - "'status' not in hf7.result"
+
+ always:
+ - name: Remove namespace
+ k8s:
+ kind: Namespace
+ name: "{{ hide_fields_namespace }}"
+ state: absent
+ ignore_errors: true
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_info/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_info/playbook.yaml
new file mode 100644
index 000000000..0070d8910
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_info/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_info
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_info/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_info/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_info/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_info/tasks/wait.yml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_info/tasks/wait.yml
index 2608f8208..03fc72695 100644
--- a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_info/tasks/wait.yml
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_info/tasks/wait.yml
@@ -192,7 +192,7 @@
- name: Check that module waited
assert:
that:
- - "{{ lookup('pipe', 'date +%s') }} - {{ start }} > 30"
+ - ( lookup('pipe', 'date +%s')|int - start|int ) > 30
- name: Create simple pod
k8s:
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_json_patch/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_json_patch/playbook.yaml
new file mode 100644
index 000000000..7206db569
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_json_patch/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_json_patch
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_json_patch/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_json_patch/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_json_patch/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_label_selectors/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_label_selectors/playbook.yaml
new file mode 100644
index 000000000..bff2875ba
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_label_selectors/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_label_selectors
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_label_selectors/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_label_selectors/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_label_selectors/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_lists/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_lists/playbook.yaml
new file mode 100644
index 000000000..0b7156d5b
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_lists/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_lists
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_lists/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_lists/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_lists/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_log/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_log/playbook.yaml
new file mode 100644
index 000000000..1855427a4
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_log/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_log
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_log/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_log/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_log/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_manifest_url/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_manifest_url/playbook.yaml
new file mode 100644
index 000000000..9196cafad
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_manifest_url/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_manifest_url
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_manifest_url/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_manifest_url/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_manifest_url/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_merge_type/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_merge_type/playbook.yaml
new file mode 100644
index 000000000..5aec041fc
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_merge_type/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_merge_type
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_merge_type/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_merge_type/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_merge_type/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_patched/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_patched/playbook.yaml
new file mode 100644
index 000000000..e3b890d1f
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_patched/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_patched
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_patched/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_patched/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_patched/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_rollback/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_rollback/playbook.yaml
new file mode 100644
index 000000000..f91f78ea7
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_rollback/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_rollback
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_rollback/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_rollback/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_rollback/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_scale/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_scale/playbook.yaml
new file mode 100644
index 000000000..2c48db5ab
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_scale/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_scale
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_scale/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_scale/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_scale/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_scale/tasks/main.yml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_scale/tasks/main.yml
index eb2107d30..f5c79df55 100644
--- a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_scale/tasks/main.yml
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_scale/tasks/main.yml
@@ -389,6 +389,71 @@
that:
- output.result.status.replicas == 0
+ - name: Create a StatefulSet with updateStrategy=OnDelete
+ kubernetes.core.k8s:
+ wait: yes
+ wait_timeout: "{{ k8s_wait_timeout | default(omit) }}"
+ definition:
+ apiVersion: apps/v1
+ kind: StatefulSet
+ metadata:
+ namespace: "{{ scale_namespace }}"
+ name: scale-set-ondelete
+ spec:
+ replicas: 2
+ updateStrategy:
+ type: OnDelete
+ selector:
+ matchLabels:
+ app: foo
+ template:
+ metadata:
+ labels:
+ app: foo
+ spec:
+ terminationGracePeriodSeconds: 10
+ containers:
+ - image: busybox
+ name: busybox
+ command:
+ - sleep
+ - "600"
+ register: output
+
+ - assert:
+ that:
+ - output.result.status.replicas == 2
+
+ - name: Wait for StatefulSet to scale down to 0
+ kubernetes.core.k8s_scale:
+ kind: StatefulSet
+ api_version: apps/v1
+ name: scale-set-ondelete
+ namespace: "{{ scale_namespace }}"
+ replicas: 0
+ wait: yes
+ wait_timeout: "{{ k8s_wait_timeout | default(omit) }}"
+ register: output
+
+ - assert:
+ that:
+ - output.result.status.replicas == 0
+
+ - name: Wait for StatefulSet to scale up to 2
+ kubernetes.core.k8s_scale:
+ kind: StatefulSet
+ api_version: apps/v1
+ name: scale-set-ondelete
+ namespace: "{{ scale_namespace }}"
+ replicas: 2
+ wait: yes
+ wait_timeout: "{{ k8s_wait_timeout | default(omit) }}"
+ register: output
+
+ - assert:
+ that:
+ - output.result.status.replicas == 2
+
always:
- name: Remove namespace
k8s:
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_taint/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_taint/playbook.yaml
new file mode 100644
index 000000000..805c34760
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_taint/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_taint
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_taint/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_taint/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_taint/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_template/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_template/playbook.yaml
new file mode 100644
index 000000000..1a4e61122
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_template/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_template
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_template/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_template/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_template/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_user_impersonation/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_user_impersonation/playbook.yaml
new file mode 100644
index 000000000..e09f40e90
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_user_impersonation/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_user_impersonation
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_user_impersonation/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_user_impersonation/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_user_impersonation/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_validate/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_validate/playbook.yaml
new file mode 100644
index 000000000..510c8e6cd
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_validate/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_validate
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_validate/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_validate/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_validate/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_validate/tasks/main.yml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_validate/tasks/main.yml
index 900e6f70b..b7b99c18a 100644
--- a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_validate/tasks/main.yml
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_validate/tasks/main.yml
@@ -52,6 +52,7 @@
name:
- kubernetes
- kubernetes-validate
+ - setuptools
virtualenv: "{{ virtualenv }}"
virtualenv_command: "{{ virtualenv_command }}"
virtualenv_site_packages: false
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_waiter/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_waiter/playbook.yaml
new file mode 100644
index 000000000..4e5171ee3
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_waiter/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - k8s_waiter
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/k8s_waiter/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_waiter/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/k8s_waiter/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/lookup_k8s/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/lookup_k8s/playbook.yaml
new file mode 100644
index 000000000..47a0c7ff6
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/lookup_k8s/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - lookup_k8s
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/lookup_k8s/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/lookup_k8s/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/lookup_k8s/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/lookup_kustomize/playbook.yaml b/ansible_collections/kubernetes/core/tests/integration/targets/lookup_kustomize/playbook.yaml
new file mode 100644
index 000000000..1a5ed844a
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/lookup_kustomize/playbook.yaml
@@ -0,0 +1,6 @@
+---
+- connection: local
+ gather_facts: false
+ hosts: localhost
+ roles:
+ - lookup_kustomize
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/lookup_kustomize/runme.sh b/ansible_collections/kubernetes/core/tests/integration/targets/lookup_kustomize/runme.sh
new file mode 100755
index 000000000..02ef14603
--- /dev/null
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/lookup_kustomize/runme.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+set -eux
+export ANSIBLE_CALLBACKS_ENABLED=profile_tasks
+export ANSIBLE_ROLES_PATH=../
+ansible-playbook playbook.yaml "$@" \ No newline at end of file
diff --git a/ansible_collections/kubernetes/core/tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentials.py b/ansible_collections/kubernetes/core/tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentials.py
index 9c9e87966..1e0d45ec3 100644
--- a/ansible_collections/kubernetes/core/tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentials.py
+++ b/ansible_collections/kubernetes/core/tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentials.py
@@ -78,7 +78,6 @@ from ansible_collections.kubernetes.core.plugins.module_utils.k8s.client import
class K8SInventoryTestModule(AnsibleModule):
def __init__(self):
-
argument_spec = dict(
kube_config=dict(required=True, type="path"),
dest_dir=dict(required=True, type="path"),
@@ -88,7 +87,6 @@ class K8SInventoryTestModule(AnsibleModule):
self.execute_module()
def execute_module(self):
-
dest_dir = os.path.abspath(self.params.get("dest_dir"))
kubeconfig_path = self.params.get("kube_config")
if not os.path.isdir(dest_dir):
diff --git a/ansible_collections/kubernetes/core/tests/sanity/ignore-2.10.txt b/ansible_collections/kubernetes/core/tests/sanity/ignore-2.10.txt
deleted file mode 100644
index b617363d1..000000000
--- a/ansible_collections/kubernetes/core/tests/sanity/ignore-2.10.txt
+++ /dev/null
@@ -1,616 +0,0 @@
-plugins/module_utils/client/discovery.py import-3.6!skip
-plugins/module_utils/client/discovery.py import-3.7!skip
-plugins/module_utils/client/discovery.py import-3.8!skip
-plugins/module_utils/client/discovery.py import-3.9!skip
-plugins/module_utils/client/resource.py import-3.6!skip
-plugins/module_utils/client/resource.py import-3.7!skip
-plugins/module_utils/client/resource.py import-3.8!skip
-plugins/module_utils/client/resource.py import-3.9!skip
-plugins/module_utils/k8sdynamicclient.py import-3.6!skip
-plugins/module_utils/k8sdynamicclient.py import-3.7!skip
-plugins/module_utils/k8sdynamicclient.py import-3.8!skip
-plugins/module_utils/k8sdynamicclient.py import-3.9!skip
-tests/unit/module_utils/fixtures/definitions.yml yamllint!skip
-tests/unit/module_utils/fixtures/deployments.yml yamllint!skip
-tests/unit/module_utils/fixtures/pods.yml yamllint!skip
-tests/integration/targets/helm/files/appversionless-chart-v2/templates/configmap.yaml yamllint!skip
-tests/integration/targets/helm/files/appversionless-chart/templates/configmap.yaml yamllint!skip
-tests/integration/targets/helm/files/test-chart-v2/templates/configmap.yaml yamllint!skip
-tests/integration/targets/helm/files/test-chart/templates/configmap.yaml yamllint!skip
-tests/integration/targets/helm_diff/files/test-chart/templates/configmap.yaml yamllint!skip
-tests/integration/targets/k8s_scale/files/deployment.yaml yamllint!skip
-tests/sanity/refresh_ignore_files shebang!skip
-plugins/doc_fragments/k8s_name_options.py future-import-boilerplate!skip
-plugins/doc_fragments/k8s_auth_options.py future-import-boilerplate!skip
-plugins/doc_fragments/helm_common_options.py future-import-boilerplate!skip
-plugins/doc_fragments/k8s_state_options.py future-import-boilerplate!skip
-plugins/doc_fragments/k8s_wait_options.py future-import-boilerplate!skip
-plugins/doc_fragments/k8s_scale_options.py future-import-boilerplate!skip
-plugins/doc_fragments/k8s_delete_options.py future-import-boilerplate!skip
-plugins/doc_fragments/__init__.py future-import-boilerplate!skip
-plugins/doc_fragments/k8s_resource_options.py future-import-boilerplate!skip
-plugins/module_utils/helm.py future-import-boilerplate!skip
-plugins/module_utils/apply.py future-import-boilerplate!skip
-plugins/module_utils/hashes.py future-import-boilerplate!skip
-plugins/module_utils/helm_args_common.py future-import-boilerplate!skip
-plugins/module_utils/version.py future-import-boilerplate!skip
-plugins/module_utils/_version.py future-import-boilerplate!skip
-plugins/module_utils/copy.py future-import-boilerplate!skip
-plugins/module_utils/args_common.py future-import-boilerplate!skip
-plugins/module_utils/__init__.py future-import-boilerplate!skip
-plugins/module_utils/selector.py future-import-boilerplate!skip
-plugins/module_utils/k8sdynamicclient.py future-import-boilerplate!skip
-plugins/module_utils/common.py future-import-boilerplate!skip
-plugins/module_utils/ansiblemodule.py future-import-boilerplate!skip
-plugins/module_utils/exceptions.py future-import-boilerplate!skip
-plugins/module_utils/client/resource.py future-import-boilerplate!skip
-plugins/module_utils/client/discovery.py future-import-boilerplate!skip
-plugins/module_utils/k8s/resource.py future-import-boilerplate!skip
-plugins/module_utils/k8s/core.py future-import-boilerplate!skip
-plugins/module_utils/k8s/waiter.py future-import-boilerplate!skip
-plugins/module_utils/k8s/client.py future-import-boilerplate!skip
-plugins/module_utils/k8s/runner.py future-import-boilerplate!skip
-plugins/module_utils/k8s/service.py future-import-boilerplate!skip
-plugins/module_utils/k8s/exceptions.py future-import-boilerplate!skip
-plugins/connection/kubectl.py future-import-boilerplate!skip
-plugins/inventory/k8s.py future-import-boilerplate!skip
-plugins/lookup/k8s.py future-import-boilerplate!skip
-plugins/lookup/kustomize.py future-import-boilerplate!skip
-plugins/modules/k8s_scale.py future-import-boilerplate!skip
-plugins/modules/helm_template.py future-import-boilerplate!skip
-plugins/modules/k8s_exec.py future-import-boilerplate!skip
-plugins/modules/helm.py future-import-boilerplate!skip
-plugins/modules/helm_plugin_info.py future-import-boilerplate!skip
-plugins/modules/helm_info.py future-import-boilerplate!skip
-plugins/modules/helm_repository.py future-import-boilerplate!skip
-plugins/modules/k8s_rollback.py future-import-boilerplate!skip
-plugins/modules/k8s_log.py future-import-boilerplate!skip
-plugins/modules/k8s_drain.py future-import-boilerplate!skip
-plugins/modules/helm_plugin.py future-import-boilerplate!skip
-plugins/modules/k8s_taint.py future-import-boilerplate!skip
-plugins/modules/k8s.py future-import-boilerplate!skip
-plugins/modules/k8s_service.py future-import-boilerplate!skip
-plugins/modules/k8s_cluster_info.py future-import-boilerplate!skip
-plugins/modules/k8s_info.py future-import-boilerplate!skip
-plugins/modules/k8s_cp.py future-import-boilerplate!skip
-plugins/modules/__init__.py future-import-boilerplate!skip
-plugins/modules/k8s_json_patch.py future-import-boilerplate!skip
-plugins/action/k8s_info.py future-import-boilerplate!skip
-plugins/filter/k8s.py future-import-boilerplate!skip
-tests/unit/conftest.py future-import-boilerplate!skip
-tests/unit/utils/ansible_module_mock.py future-import-boilerplate!skip
-tests/unit/module_utils/test_helm.py future-import-boilerplate!skip
-tests/unit/module_utils/test_marshal.py future-import-boilerplate!skip
-tests/unit/module_utils/test_discoverer.py future-import-boilerplate!skip
-tests/unit/module_utils/test_hashes.py future-import-boilerplate!skip
-tests/unit/module_utils/test_resource.py future-import-boilerplate!skip
-tests/unit/module_utils/test_service.py future-import-boilerplate!skip
-tests/unit/module_utils/test_waiter.py future-import-boilerplate!skip
-tests/unit/module_utils/test_common.py future-import-boilerplate!skip
-tests/unit/module_utils/test_selector.py future-import-boilerplate!skip
-tests/unit/module_utils/test_apply.py future-import-boilerplate!skip
-tests/unit/module_utils/test_runner.py future-import-boilerplate!skip
-tests/unit/module_utils/test_client.py future-import-boilerplate!skip
-tests/unit/module_utils/test_core.py future-import-boilerplate!skip
-tests/unit/modules/test_helm_template_module.py future-import-boilerplate!skip
-tests/unit/modules/test_helm_template.py future-import-boilerplate!skip
-tests/unit/modules/test_module_helm.py future-import-boilerplate!skip
-tests/unit/action/test_remove_omit.py future-import-boilerplate!skip
-plugins/doc_fragments/k8s_name_options.py metaclass-boilerplate!skip
-plugins/doc_fragments/k8s_auth_options.py metaclass-boilerplate!skip
-plugins/doc_fragments/helm_common_options.py metaclass-boilerplate!skip
-plugins/doc_fragments/k8s_state_options.py metaclass-boilerplate!skip
-plugins/doc_fragments/k8s_wait_options.py metaclass-boilerplate!skip
-plugins/doc_fragments/k8s_scale_options.py metaclass-boilerplate!skip
-plugins/doc_fragments/k8s_delete_options.py metaclass-boilerplate!skip
-plugins/doc_fragments/__init__.py metaclass-boilerplate!skip
-plugins/doc_fragments/k8s_resource_options.py metaclass-boilerplate!skip
-plugins/module_utils/helm.py metaclass-boilerplate!skip
-plugins/module_utils/apply.py metaclass-boilerplate!skip
-plugins/module_utils/hashes.py metaclass-boilerplate!skip
-plugins/module_utils/helm_args_common.py metaclass-boilerplate!skip
-plugins/module_utils/version.py metaclass-boilerplate!skip
-plugins/module_utils/_version.py metaclass-boilerplate!skip
-plugins/module_utils/copy.py metaclass-boilerplate!skip
-plugins/module_utils/args_common.py metaclass-boilerplate!skip
-plugins/module_utils/__init__.py metaclass-boilerplate!skip
-plugins/module_utils/selector.py metaclass-boilerplate!skip
-plugins/module_utils/k8sdynamicclient.py metaclass-boilerplate!skip
-plugins/module_utils/common.py metaclass-boilerplate!skip
-plugins/module_utils/ansiblemodule.py metaclass-boilerplate!skip
-plugins/module_utils/exceptions.py metaclass-boilerplate!skip
-plugins/module_utils/client/resource.py metaclass-boilerplate!skip
-plugins/module_utils/client/discovery.py metaclass-boilerplate!skip
-plugins/module_utils/k8s/resource.py metaclass-boilerplate!skip
-plugins/module_utils/k8s/core.py metaclass-boilerplate!skip
-plugins/module_utils/k8s/waiter.py metaclass-boilerplate!skip
-plugins/module_utils/k8s/client.py metaclass-boilerplate!skip
-plugins/module_utils/k8s/runner.py metaclass-boilerplate!skip
-plugins/module_utils/k8s/service.py metaclass-boilerplate!skip
-plugins/module_utils/k8s/exceptions.py metaclass-boilerplate!skip
-plugins/connection/kubectl.py metaclass-boilerplate!skip
-plugins/inventory/k8s.py metaclass-boilerplate!skip
-plugins/lookup/k8s.py metaclass-boilerplate!skip
-plugins/lookup/kustomize.py metaclass-boilerplate!skip
-plugins/modules/k8s_scale.py metaclass-boilerplate!skip
-plugins/modules/helm_template.py metaclass-boilerplate!skip
-plugins/modules/k8s_exec.py metaclass-boilerplate!skip
-plugins/modules/helm.py metaclass-boilerplate!skip
-plugins/modules/helm_plugin_info.py metaclass-boilerplate!skip
-plugins/modules/helm_info.py metaclass-boilerplate!skip
-plugins/modules/helm_repository.py metaclass-boilerplate!skip
-plugins/modules/k8s_rollback.py metaclass-boilerplate!skip
-plugins/modules/k8s_log.py metaclass-boilerplate!skip
-plugins/modules/k8s_drain.py metaclass-boilerplate!skip
-plugins/modules/helm_plugin.py metaclass-boilerplate!skip
-plugins/modules/k8s_taint.py metaclass-boilerplate!skip
-plugins/modules/k8s.py metaclass-boilerplate!skip
-plugins/modules/k8s_service.py metaclass-boilerplate!skip
-plugins/modules/k8s_cluster_info.py metaclass-boilerplate!skip
-plugins/modules/k8s_info.py metaclass-boilerplate!skip
-plugins/modules/k8s_cp.py metaclass-boilerplate!skip
-plugins/modules/__init__.py metaclass-boilerplate!skip
-plugins/modules/k8s_json_patch.py metaclass-boilerplate!skip
-plugins/action/k8s_info.py metaclass-boilerplate!skip
-plugins/filter/k8s.py metaclass-boilerplate!skip
-tests/unit/conftest.py metaclass-boilerplate!skip
-tests/unit/utils/ansible_module_mock.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_helm.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_marshal.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_discoverer.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_hashes.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_resource.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_service.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_waiter.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_common.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_selector.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_apply.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_runner.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_client.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_core.py metaclass-boilerplate!skip
-tests/unit/modules/test_helm_template_module.py metaclass-boilerplate!skip
-tests/unit/modules/test_helm_template.py metaclass-boilerplate!skip
-tests/unit/modules/test_module_helm.py metaclass-boilerplate!skip
-tests/unit/action/test_remove_omit.py metaclass-boilerplate!skip
-plugins/modules/k8s_scale.py import-2.6!skip
-plugins/modules/k8s_scale.py import-2.7!skip
-plugins/modules/k8s_scale.py import-3.5!skip
-plugins/modules/helm_template.py import-2.6!skip
-plugins/modules/helm_template.py import-2.7!skip
-plugins/modules/helm_template.py import-3.5!skip
-plugins/modules/k8s_exec.py import-2.6!skip
-plugins/modules/k8s_exec.py import-2.7!skip
-plugins/modules/k8s_exec.py import-3.5!skip
-plugins/modules/helm.py import-2.6!skip
-plugins/modules/helm.py import-2.7!skip
-plugins/modules/helm.py import-3.5!skip
-plugins/modules/helm_plugin_info.py import-2.6!skip
-plugins/modules/helm_plugin_info.py import-2.7!skip
-plugins/modules/helm_plugin_info.py import-3.5!skip
-plugins/modules/helm_info.py import-2.6!skip
-plugins/modules/helm_info.py import-2.7!skip
-plugins/modules/helm_info.py import-3.5!skip
-plugins/modules/helm_repository.py import-2.6!skip
-plugins/modules/helm_repository.py import-2.7!skip
-plugins/modules/helm_repository.py import-3.5!skip
-plugins/modules/k8s_rollback.py import-2.6!skip
-plugins/modules/k8s_rollback.py import-2.7!skip
-plugins/modules/k8s_rollback.py import-3.5!skip
-plugins/modules/k8s_log.py import-2.6!skip
-plugins/modules/k8s_log.py import-2.7!skip
-plugins/modules/k8s_log.py import-3.5!skip
-plugins/modules/k8s_drain.py import-2.6!skip
-plugins/modules/k8s_drain.py import-2.7!skip
-plugins/modules/k8s_drain.py import-3.5!skip
-plugins/modules/helm_plugin.py import-2.6!skip
-plugins/modules/helm_plugin.py import-2.7!skip
-plugins/modules/helm_plugin.py import-3.5!skip
-plugins/modules/k8s_taint.py import-2.6!skip
-plugins/modules/k8s_taint.py import-2.7!skip
-plugins/modules/k8s_taint.py import-3.5!skip
-plugins/modules/k8s.py import-2.6!skip
-plugins/modules/k8s.py import-2.7!skip
-plugins/modules/k8s.py import-3.5!skip
-plugins/modules/k8s_service.py import-2.6!skip
-plugins/modules/k8s_service.py import-2.7!skip
-plugins/modules/k8s_service.py import-3.5!skip
-plugins/modules/k8s_cluster_info.py import-2.6!skip
-plugins/modules/k8s_cluster_info.py import-2.7!skip
-plugins/modules/k8s_cluster_info.py import-3.5!skip
-plugins/modules/k8s_info.py import-2.6!skip
-plugins/modules/k8s_info.py import-2.7!skip
-plugins/modules/k8s_info.py import-3.5!skip
-plugins/modules/k8s_cp.py import-2.6!skip
-plugins/modules/k8s_cp.py import-2.7!skip
-plugins/modules/k8s_cp.py import-3.5!skip
-plugins/modules/__init__.py import-2.6!skip
-plugins/modules/__init__.py import-2.7!skip
-plugins/modules/__init__.py import-3.5!skip
-plugins/modules/k8s_json_patch.py import-2.6!skip
-plugins/modules/k8s_json_patch.py import-2.7!skip
-plugins/modules/k8s_json_patch.py import-3.5!skip
-plugins/module_utils/helm.py import-2.6!skip
-plugins/module_utils/helm.py import-2.7!skip
-plugins/module_utils/helm.py import-3.5!skip
-plugins/module_utils/apply.py import-2.6!skip
-plugins/module_utils/apply.py import-2.7!skip
-plugins/module_utils/apply.py import-3.5!skip
-plugins/module_utils/hashes.py import-2.6!skip
-plugins/module_utils/hashes.py import-2.7!skip
-plugins/module_utils/hashes.py import-3.5!skip
-plugins/module_utils/helm_args_common.py import-2.6!skip
-plugins/module_utils/helm_args_common.py import-2.7!skip
-plugins/module_utils/helm_args_common.py import-3.5!skip
-plugins/module_utils/version.py import-2.6!skip
-plugins/module_utils/version.py import-2.7!skip
-plugins/module_utils/version.py import-3.5!skip
-plugins/module_utils/_version.py import-2.6!skip
-plugins/module_utils/_version.py import-2.7!skip
-plugins/module_utils/_version.py import-3.5!skip
-plugins/module_utils/copy.py import-2.6!skip
-plugins/module_utils/copy.py import-2.7!skip
-plugins/module_utils/copy.py import-3.5!skip
-plugins/module_utils/args_common.py import-2.6!skip
-plugins/module_utils/args_common.py import-2.7!skip
-plugins/module_utils/args_common.py import-3.5!skip
-plugins/module_utils/__init__.py import-2.6!skip
-plugins/module_utils/__init__.py import-2.7!skip
-plugins/module_utils/__init__.py import-3.5!skip
-plugins/module_utils/selector.py import-2.6!skip
-plugins/module_utils/selector.py import-2.7!skip
-plugins/module_utils/selector.py import-3.5!skip
-plugins/module_utils/k8sdynamicclient.py import-2.6!skip
-plugins/module_utils/k8sdynamicclient.py import-2.7!skip
-plugins/module_utils/k8sdynamicclient.py import-3.5!skip
-plugins/module_utils/common.py import-2.6!skip
-plugins/module_utils/common.py import-2.7!skip
-plugins/module_utils/common.py import-3.5!skip
-plugins/module_utils/ansiblemodule.py import-2.6!skip
-plugins/module_utils/ansiblemodule.py import-2.7!skip
-plugins/module_utils/ansiblemodule.py import-3.5!skip
-plugins/module_utils/exceptions.py import-2.6!skip
-plugins/module_utils/exceptions.py import-2.7!skip
-plugins/module_utils/exceptions.py import-3.5!skip
-plugins/module_utils/client/resource.py import-2.6!skip
-plugins/module_utils/client/resource.py import-2.7!skip
-plugins/module_utils/client/resource.py import-3.5!skip
-plugins/module_utils/client/discovery.py import-2.6!skip
-plugins/module_utils/client/discovery.py import-2.7!skip
-plugins/module_utils/client/discovery.py import-3.5!skip
-plugins/module_utils/k8s/resource.py import-2.6!skip
-plugins/module_utils/k8s/resource.py import-2.7!skip
-plugins/module_utils/k8s/resource.py import-3.5!skip
-plugins/module_utils/k8s/core.py import-2.6!skip
-plugins/module_utils/k8s/core.py import-2.7!skip
-plugins/module_utils/k8s/core.py import-3.5!skip
-plugins/module_utils/k8s/waiter.py import-2.6!skip
-plugins/module_utils/k8s/waiter.py import-2.7!skip
-plugins/module_utils/k8s/waiter.py import-3.5!skip
-plugins/module_utils/k8s/client.py import-2.6!skip
-plugins/module_utils/k8s/client.py import-2.7!skip
-plugins/module_utils/k8s/client.py import-3.5!skip
-plugins/module_utils/k8s/runner.py import-2.6!skip
-plugins/module_utils/k8s/runner.py import-2.7!skip
-plugins/module_utils/k8s/runner.py import-3.5!skip
-plugins/module_utils/k8s/service.py import-2.6!skip
-plugins/module_utils/k8s/service.py import-2.7!skip
-plugins/module_utils/k8s/service.py import-3.5!skip
-plugins/module_utils/k8s/exceptions.py import-2.6!skip
-plugins/module_utils/k8s/exceptions.py import-2.7!skip
-plugins/module_utils/k8s/exceptions.py import-3.5!skip
-plugins/doc_fragments/k8s_name_options.py compile-2.6!skip
-plugins/doc_fragments/k8s_name_options.py compile-2.7!skip
-plugins/doc_fragments/k8s_name_options.py compile-3.5!skip
-plugins/doc_fragments/k8s_auth_options.py compile-2.6!skip
-plugins/doc_fragments/k8s_auth_options.py compile-2.7!skip
-plugins/doc_fragments/k8s_auth_options.py compile-3.5!skip
-plugins/doc_fragments/helm_common_options.py compile-2.6!skip
-plugins/doc_fragments/helm_common_options.py compile-2.7!skip
-plugins/doc_fragments/helm_common_options.py compile-3.5!skip
-plugins/doc_fragments/k8s_state_options.py compile-2.6!skip
-plugins/doc_fragments/k8s_state_options.py compile-2.7!skip
-plugins/doc_fragments/k8s_state_options.py compile-3.5!skip
-plugins/doc_fragments/k8s_wait_options.py compile-2.6!skip
-plugins/doc_fragments/k8s_wait_options.py compile-2.7!skip
-plugins/doc_fragments/k8s_wait_options.py compile-3.5!skip
-plugins/doc_fragments/k8s_scale_options.py compile-2.6!skip
-plugins/doc_fragments/k8s_scale_options.py compile-2.7!skip
-plugins/doc_fragments/k8s_scale_options.py compile-3.5!skip
-plugins/doc_fragments/k8s_delete_options.py compile-2.6!skip
-plugins/doc_fragments/k8s_delete_options.py compile-2.7!skip
-plugins/doc_fragments/k8s_delete_options.py compile-3.5!skip
-plugins/doc_fragments/__init__.py compile-2.6!skip
-plugins/doc_fragments/__init__.py compile-2.7!skip
-plugins/doc_fragments/__init__.py compile-3.5!skip
-plugins/doc_fragments/k8s_resource_options.py compile-2.6!skip
-plugins/doc_fragments/k8s_resource_options.py compile-2.7!skip
-plugins/doc_fragments/k8s_resource_options.py compile-3.5!skip
-plugins/module_utils/helm.py compile-2.6!skip
-plugins/module_utils/helm.py compile-2.7!skip
-plugins/module_utils/helm.py compile-3.5!skip
-plugins/module_utils/apply.py compile-2.6!skip
-plugins/module_utils/apply.py compile-2.7!skip
-plugins/module_utils/apply.py compile-3.5!skip
-plugins/module_utils/hashes.py compile-2.6!skip
-plugins/module_utils/hashes.py compile-2.7!skip
-plugins/module_utils/hashes.py compile-3.5!skip
-plugins/module_utils/helm_args_common.py compile-2.6!skip
-plugins/module_utils/helm_args_common.py compile-2.7!skip
-plugins/module_utils/helm_args_common.py compile-3.5!skip
-plugins/module_utils/version.py compile-2.6!skip
-plugins/module_utils/version.py compile-2.7!skip
-plugins/module_utils/version.py compile-3.5!skip
-plugins/module_utils/_version.py compile-2.6!skip
-plugins/module_utils/_version.py compile-2.7!skip
-plugins/module_utils/_version.py compile-3.5!skip
-plugins/module_utils/copy.py compile-2.6!skip
-plugins/module_utils/copy.py compile-2.7!skip
-plugins/module_utils/copy.py compile-3.5!skip
-plugins/module_utils/args_common.py compile-2.6!skip
-plugins/module_utils/args_common.py compile-2.7!skip
-plugins/module_utils/args_common.py compile-3.5!skip
-plugins/module_utils/__init__.py compile-2.6!skip
-plugins/module_utils/__init__.py compile-2.7!skip
-plugins/module_utils/__init__.py compile-3.5!skip
-plugins/module_utils/selector.py compile-2.6!skip
-plugins/module_utils/selector.py compile-2.7!skip
-plugins/module_utils/selector.py compile-3.5!skip
-plugins/module_utils/k8sdynamicclient.py compile-2.6!skip
-plugins/module_utils/k8sdynamicclient.py compile-2.7!skip
-plugins/module_utils/k8sdynamicclient.py compile-3.5!skip
-plugins/module_utils/common.py compile-2.6!skip
-plugins/module_utils/common.py compile-2.7!skip
-plugins/module_utils/common.py compile-3.5!skip
-plugins/module_utils/ansiblemodule.py compile-2.6!skip
-plugins/module_utils/ansiblemodule.py compile-2.7!skip
-plugins/module_utils/ansiblemodule.py compile-3.5!skip
-plugins/module_utils/exceptions.py compile-2.6!skip
-plugins/module_utils/exceptions.py compile-2.7!skip
-plugins/module_utils/exceptions.py compile-3.5!skip
-plugins/module_utils/client/resource.py compile-2.6!skip
-plugins/module_utils/client/resource.py compile-2.7!skip
-plugins/module_utils/client/resource.py compile-3.5!skip
-plugins/module_utils/client/discovery.py compile-2.6!skip
-plugins/module_utils/client/discovery.py compile-2.7!skip
-plugins/module_utils/client/discovery.py compile-3.5!skip
-plugins/module_utils/k8s/resource.py compile-2.6!skip
-plugins/module_utils/k8s/resource.py compile-2.7!skip
-plugins/module_utils/k8s/resource.py compile-3.5!skip
-plugins/module_utils/k8s/core.py compile-2.6!skip
-plugins/module_utils/k8s/core.py compile-2.7!skip
-plugins/module_utils/k8s/core.py compile-3.5!skip
-plugins/module_utils/k8s/waiter.py compile-2.6!skip
-plugins/module_utils/k8s/waiter.py compile-2.7!skip
-plugins/module_utils/k8s/waiter.py compile-3.5!skip
-plugins/module_utils/k8s/client.py compile-2.6!skip
-plugins/module_utils/k8s/client.py compile-2.7!skip
-plugins/module_utils/k8s/client.py compile-3.5!skip
-plugins/module_utils/k8s/runner.py compile-2.6!skip
-plugins/module_utils/k8s/runner.py compile-2.7!skip
-plugins/module_utils/k8s/runner.py compile-3.5!skip
-plugins/module_utils/k8s/service.py compile-2.6!skip
-plugins/module_utils/k8s/service.py compile-2.7!skip
-plugins/module_utils/k8s/service.py compile-3.5!skip
-plugins/module_utils/k8s/exceptions.py compile-2.6!skip
-plugins/module_utils/k8s/exceptions.py compile-2.7!skip
-plugins/module_utils/k8s/exceptions.py compile-3.5!skip
-plugins/connection/kubectl.py compile-2.6!skip
-plugins/connection/kubectl.py compile-2.7!skip
-plugins/connection/kubectl.py compile-3.5!skip
-plugins/inventory/k8s.py compile-2.6!skip
-plugins/inventory/k8s.py compile-2.7!skip
-plugins/inventory/k8s.py compile-3.5!skip
-plugins/lookup/k8s.py compile-2.6!skip
-plugins/lookup/k8s.py compile-2.7!skip
-plugins/lookup/k8s.py compile-3.5!skip
-plugins/lookup/kustomize.py compile-2.6!skip
-plugins/lookup/kustomize.py compile-2.7!skip
-plugins/lookup/kustomize.py compile-3.5!skip
-plugins/modules/k8s_scale.py compile-2.6!skip
-plugins/modules/k8s_scale.py compile-2.7!skip
-plugins/modules/k8s_scale.py compile-3.5!skip
-plugins/modules/helm_template.py compile-2.6!skip
-plugins/modules/helm_template.py compile-2.7!skip
-plugins/modules/helm_template.py compile-3.5!skip
-plugins/modules/k8s_exec.py compile-2.6!skip
-plugins/modules/k8s_exec.py compile-2.7!skip
-plugins/modules/k8s_exec.py compile-3.5!skip
-plugins/modules/helm.py compile-2.6!skip
-plugins/modules/helm.py compile-2.7!skip
-plugins/modules/helm.py compile-3.5!skip
-plugins/modules/helm_plugin_info.py compile-2.6!skip
-plugins/modules/helm_plugin_info.py compile-2.7!skip
-plugins/modules/helm_plugin_info.py compile-3.5!skip
-plugins/modules/helm_info.py compile-2.6!skip
-plugins/modules/helm_info.py compile-2.7!skip
-plugins/modules/helm_info.py compile-3.5!skip
-plugins/modules/helm_repository.py compile-2.6!skip
-plugins/modules/helm_repository.py compile-2.7!skip
-plugins/modules/helm_repository.py compile-3.5!skip
-plugins/modules/k8s_rollback.py compile-2.6!skip
-plugins/modules/k8s_rollback.py compile-2.7!skip
-plugins/modules/k8s_rollback.py compile-3.5!skip
-plugins/modules/k8s_log.py compile-2.6!skip
-plugins/modules/k8s_log.py compile-2.7!skip
-plugins/modules/k8s_log.py compile-3.5!skip
-plugins/modules/k8s_drain.py compile-2.6!skip
-plugins/modules/k8s_drain.py compile-2.7!skip
-plugins/modules/k8s_drain.py compile-3.5!skip
-plugins/modules/helm_plugin.py compile-2.6!skip
-plugins/modules/helm_plugin.py compile-2.7!skip
-plugins/modules/helm_plugin.py compile-3.5!skip
-plugins/modules/k8s_taint.py compile-2.6!skip
-plugins/modules/k8s_taint.py compile-2.7!skip
-plugins/modules/k8s_taint.py compile-3.5!skip
-plugins/modules/k8s.py compile-2.6!skip
-plugins/modules/k8s.py compile-2.7!skip
-plugins/modules/k8s.py compile-3.5!skip
-plugins/modules/k8s_service.py compile-2.6!skip
-plugins/modules/k8s_service.py compile-2.7!skip
-plugins/modules/k8s_service.py compile-3.5!skip
-plugins/modules/k8s_cluster_info.py compile-2.6!skip
-plugins/modules/k8s_cluster_info.py compile-2.7!skip
-plugins/modules/k8s_cluster_info.py compile-3.5!skip
-plugins/modules/k8s_info.py compile-2.6!skip
-plugins/modules/k8s_info.py compile-2.7!skip
-plugins/modules/k8s_info.py compile-3.5!skip
-plugins/modules/k8s_cp.py compile-2.6!skip
-plugins/modules/k8s_cp.py compile-2.7!skip
-plugins/modules/k8s_cp.py compile-3.5!skip
-plugins/modules/__init__.py compile-2.6!skip
-plugins/modules/__init__.py compile-2.7!skip
-plugins/modules/__init__.py compile-3.5!skip
-plugins/modules/k8s_json_patch.py compile-2.6!skip
-plugins/modules/k8s_json_patch.py compile-2.7!skip
-plugins/modules/k8s_json_patch.py compile-3.5!skip
-plugins/action/k8s_info.py compile-2.6!skip
-plugins/action/k8s_info.py compile-2.7!skip
-plugins/action/k8s_info.py compile-3.5!skip
-plugins/filter/k8s.py compile-2.6!skip
-plugins/filter/k8s.py compile-2.7!skip
-plugins/filter/k8s.py compile-3.5!skip
-tests/unit/conftest.py compile-2.6!skip
-tests/unit/conftest.py compile-2.7!skip
-tests/unit/conftest.py compile-3.5!skip
-tests/unit/utils/ansible_module_mock.py compile-2.6!skip
-tests/unit/utils/ansible_module_mock.py compile-2.7!skip
-tests/unit/utils/ansible_module_mock.py compile-3.5!skip
-tests/unit/module_utils/test_helm.py compile-2.6!skip
-tests/unit/module_utils/test_helm.py compile-2.7!skip
-tests/unit/module_utils/test_helm.py compile-3.5!skip
-tests/unit/module_utils/test_marshal.py compile-2.6!skip
-tests/unit/module_utils/test_marshal.py compile-2.7!skip
-tests/unit/module_utils/test_marshal.py compile-3.5!skip
-tests/unit/module_utils/test_discoverer.py compile-2.6!skip
-tests/unit/module_utils/test_discoverer.py compile-2.7!skip
-tests/unit/module_utils/test_discoverer.py compile-3.5!skip
-tests/unit/module_utils/test_hashes.py compile-2.6!skip
-tests/unit/module_utils/test_hashes.py compile-2.7!skip
-tests/unit/module_utils/test_hashes.py compile-3.5!skip
-tests/unit/module_utils/test_resource.py compile-2.6!skip
-tests/unit/module_utils/test_resource.py compile-2.7!skip
-tests/unit/module_utils/test_resource.py compile-3.5!skip
-tests/unit/module_utils/test_service.py compile-2.6!skip
-tests/unit/module_utils/test_service.py compile-2.7!skip
-tests/unit/module_utils/test_service.py compile-3.5!skip
-tests/unit/module_utils/test_waiter.py compile-2.6!skip
-tests/unit/module_utils/test_waiter.py compile-2.7!skip
-tests/unit/module_utils/test_waiter.py compile-3.5!skip
-tests/unit/module_utils/test_common.py compile-2.6!skip
-tests/unit/module_utils/test_common.py compile-2.7!skip
-tests/unit/module_utils/test_common.py compile-3.5!skip
-tests/unit/module_utils/test_selector.py compile-2.6!skip
-tests/unit/module_utils/test_selector.py compile-2.7!skip
-tests/unit/module_utils/test_selector.py compile-3.5!skip
-tests/unit/module_utils/test_apply.py compile-2.6!skip
-tests/unit/module_utils/test_apply.py compile-2.7!skip
-tests/unit/module_utils/test_apply.py compile-3.5!skip
-tests/unit/module_utils/test_runner.py compile-2.6!skip
-tests/unit/module_utils/test_runner.py compile-2.7!skip
-tests/unit/module_utils/test_runner.py compile-3.5!skip
-tests/unit/module_utils/test_client.py compile-2.6!skip
-tests/unit/module_utils/test_client.py compile-2.7!skip
-tests/unit/module_utils/test_client.py compile-3.5!skip
-tests/unit/module_utils/test_core.py compile-2.6!skip
-tests/unit/module_utils/test_core.py compile-2.7!skip
-tests/unit/module_utils/test_core.py compile-3.5!skip
-tests/unit/modules/test_helm_template_module.py compile-2.6!skip
-tests/unit/modules/test_helm_template_module.py compile-2.7!skip
-tests/unit/modules/test_helm_template_module.py compile-3.5!skip
-tests/unit/modules/test_helm_template.py compile-2.6!skip
-tests/unit/modules/test_helm_template.py compile-2.7!skip
-tests/unit/modules/test_helm_template.py compile-3.5!skip
-tests/unit/modules/test_module_helm.py compile-2.6!skip
-tests/unit/modules/test_module_helm.py compile-2.7!skip
-tests/unit/modules/test_module_helm.py compile-3.5!skip
-tests/unit/action/test_remove_omit.py compile-2.6!skip
-tests/unit/action/test_remove_omit.py compile-2.7!skip
-tests/unit/action/test_remove_omit.py compile-3.5!skip
-tests/integration/targets/k8s_copy/library/k8s_create_file.py compile-2.6!skip
-tests/integration/targets/k8s_copy/library/k8s_create_file.py compile-2.7!skip
-tests/integration/targets/k8s_copy/library/k8s_create_file.py compile-3.5!skip
-tests/integration/targets/k8s_copy/library/kubectl_file_compare.py compile-2.6!skip
-tests/integration/targets/k8s_copy/library/kubectl_file_compare.py compile-2.7!skip
-tests/integration/targets/k8s_copy/library/kubectl_file_compare.py compile-3.5!skip
-tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentials.py compile-2.6!skip
-tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentials.py compile-2.7!skip
-tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentials.py compile-3.5!skip
-tests/integration/targets/helm/library/helm_test_version.py compile-2.6!skip
-tests/integration/targets/helm/library/helm_test_version.py compile-2.7!skip
-tests/integration/targets/helm/library/helm_test_version.py compile-3.5!skip
-plugins/modules/k8s_scale.py pylint!skip
-plugins/modules/helm_template.py pylint!skip
-plugins/modules/k8s_exec.py pylint!skip
-plugins/modules/helm.py pylint!skip
-plugins/modules/helm_plugin_info.py pylint!skip
-plugins/modules/helm_info.py pylint!skip
-plugins/modules/helm_repository.py pylint!skip
-plugins/modules/k8s_rollback.py pylint!skip
-plugins/modules/k8s_log.py pylint!skip
-plugins/modules/k8s_drain.py pylint!skip
-plugins/modules/helm_plugin.py pylint!skip
-plugins/modules/k8s_taint.py pylint!skip
-plugins/modules/k8s.py pylint!skip
-plugins/modules/k8s_service.py pylint!skip
-plugins/modules/k8s_cluster_info.py pylint!skip
-plugins/modules/k8s_info.py pylint!skip
-plugins/modules/k8s_cp.py pylint!skip
-plugins/modules/__init__.py pylint!skip
-plugins/modules/k8s_json_patch.py pylint!skip
-plugins/module_utils/helm.py pylint!skip
-plugins/module_utils/apply.py pylint!skip
-plugins/module_utils/hashes.py pylint!skip
-plugins/module_utils/helm_args_common.py pylint!skip
-plugins/module_utils/version.py pylint!skip
-plugins/module_utils/_version.py pylint!skip
-plugins/module_utils/copy.py pylint!skip
-plugins/module_utils/args_common.py pylint!skip
-plugins/module_utils/__init__.py pylint!skip
-plugins/module_utils/selector.py pylint!skip
-plugins/module_utils/k8sdynamicclient.py pylint!skip
-plugins/module_utils/common.py pylint!skip
-plugins/module_utils/ansiblemodule.py pylint!skip
-plugins/module_utils/exceptions.py pylint!skip
-plugins/module_utils/client/resource.py pylint!skip
-plugins/module_utils/client/discovery.py pylint!skip
-plugins/module_utils/k8s/resource.py pylint!skip
-plugins/module_utils/k8s/core.py pylint!skip
-plugins/module_utils/k8s/waiter.py pylint!skip
-plugins/module_utils/k8s/client.py pylint!skip
-plugins/module_utils/k8s/runner.py pylint!skip
-plugins/module_utils/k8s/service.py pylint!skip
-plugins/module_utils/k8s/exceptions.py pylint!skip
-tests/integration/targets/k8s_copy/library/k8s_create_file.py pylint!skip
-tests/integration/targets/k8s_copy/library/kubectl_file_compare.py pylint!skip
-tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentials.py pylint!skip
-tests/integration/targets/helm/library/helm_test_version.py pylint!skip
-tests/unit/conftest.py pylint!skip
-tests/unit/utils/ansible_module_mock.py pylint!skip
-tests/unit/module_utils/test_helm.py pylint!skip
-tests/unit/module_utils/test_marshal.py pylint!skip
-tests/unit/module_utils/test_discoverer.py pylint!skip
-tests/unit/module_utils/test_hashes.py pylint!skip
-tests/unit/module_utils/test_resource.py pylint!skip
-tests/unit/module_utils/test_service.py pylint!skip
-tests/unit/module_utils/test_waiter.py pylint!skip
-tests/unit/module_utils/test_common.py pylint!skip
-tests/unit/module_utils/test_selector.py pylint!skip
-tests/unit/module_utils/test_apply.py pylint!skip
-tests/unit/module_utils/test_runner.py pylint!skip
-tests/unit/module_utils/test_client.py pylint!skip
-tests/unit/module_utils/test_core.py pylint!skip
-tests/unit/modules/test_helm_template_module.py pylint!skip
-tests/unit/modules/test_helm_template.py pylint!skip
-tests/unit/modules/test_module_helm.py pylint!skip
-tests/unit/action/test_remove_omit.py pylint!skip
-plugins/modules/k8s.py validate-modules!skip
-plugins/modules/k8s_cp.py validate-modules!skip
-plugins/modules/k8s_drain.py validate-modules!skip
-plugins/modules/k8s_exec.py validate-modules!skip
-plugins/modules/k8s_info.py validate-modules!skip
-plugins/modules/k8s_json_patch.py validate-modules!skip
-plugins/modules/k8s_log.py validate-modules!skip
-plugins/modules/k8s_rollback.py validate-modules!skip
-plugins/modules/k8s_scale.py validate-modules!skip
-plugins/modules/k8s_service.py validate-modules!skip
-plugins/modules/k8s_taint.py validate-modules!skip
diff --git a/ansible_collections/kubernetes/core/tests/sanity/ignore-2.11.txt b/ansible_collections/kubernetes/core/tests/sanity/ignore-2.11.txt
deleted file mode 100644
index 80122d803..000000000
--- a/ansible_collections/kubernetes/core/tests/sanity/ignore-2.11.txt
+++ /dev/null
@@ -1,592 +0,0 @@
-plugins/module_utils/client/discovery.py import-3.6!skip
-plugins/module_utils/client/discovery.py import-3.7!skip
-plugins/module_utils/client/discovery.py import-3.8!skip
-plugins/module_utils/client/discovery.py import-3.9!skip
-plugins/module_utils/client/resource.py import-3.6!skip
-plugins/module_utils/client/resource.py import-3.7!skip
-plugins/module_utils/client/resource.py import-3.8!skip
-plugins/module_utils/client/resource.py import-3.9!skip
-plugins/module_utils/k8sdynamicclient.py import-3.6!skip
-plugins/module_utils/k8sdynamicclient.py import-3.7!skip
-plugins/module_utils/k8sdynamicclient.py import-3.8!skip
-plugins/module_utils/k8sdynamicclient.py import-3.9!skip
-plugins/modules/k8s.py validate-modules:parameter-type-not-in-doc
-plugins/modules/k8s_scale.py validate-modules:parameter-type-not-in-doc
-plugins/modules/k8s_service.py validate-modules:parameter-type-not-in-doc
-tests/unit/module_utils/fixtures/definitions.yml yamllint!skip
-tests/unit/module_utils/fixtures/deployments.yml yamllint!skip
-tests/unit/module_utils/fixtures/pods.yml yamllint!skip
-tests/integration/targets/helm/files/appversionless-chart-v2/templates/configmap.yaml yamllint!skip
-tests/integration/targets/helm/files/appversionless-chart/templates/configmap.yaml yamllint!skip
-tests/integration/targets/helm/files/test-chart-v2/templates/configmap.yaml yamllint!skip
-tests/integration/targets/helm/files/test-chart/templates/configmap.yaml yamllint!skip
-tests/integration/targets/helm_diff/files/test-chart/templates/configmap.yaml yamllint!skip
-tests/integration/targets/k8s_scale/files/deployment.yaml yamllint!skip
-tests/sanity/refresh_ignore_files shebang!skip
-plugins/modules/k8s.py validate-modules:return-syntax-error
-plugins/modules/k8s_scale.py validate-modules:return-syntax-error
-plugins/modules/k8s_service.py validate-modules:return-syntax-error
-plugins/modules/k8s_taint.py validate-modules:return-syntax-error
-plugins/doc_fragments/k8s_name_options.py future-import-boilerplate!skip
-plugins/doc_fragments/k8s_auth_options.py future-import-boilerplate!skip
-plugins/doc_fragments/helm_common_options.py future-import-boilerplate!skip
-plugins/doc_fragments/k8s_state_options.py future-import-boilerplate!skip
-plugins/doc_fragments/k8s_wait_options.py future-import-boilerplate!skip
-plugins/doc_fragments/k8s_scale_options.py future-import-boilerplate!skip
-plugins/doc_fragments/k8s_delete_options.py future-import-boilerplate!skip
-plugins/doc_fragments/__init__.py future-import-boilerplate!skip
-plugins/doc_fragments/k8s_resource_options.py future-import-boilerplate!skip
-plugins/module_utils/helm.py future-import-boilerplate!skip
-plugins/module_utils/apply.py future-import-boilerplate!skip
-plugins/module_utils/hashes.py future-import-boilerplate!skip
-plugins/module_utils/helm_args_common.py future-import-boilerplate!skip
-plugins/module_utils/version.py future-import-boilerplate!skip
-plugins/module_utils/_version.py future-import-boilerplate!skip
-plugins/module_utils/copy.py future-import-boilerplate!skip
-plugins/module_utils/args_common.py future-import-boilerplate!skip
-plugins/module_utils/__init__.py future-import-boilerplate!skip
-plugins/module_utils/selector.py future-import-boilerplate!skip
-plugins/module_utils/k8sdynamicclient.py future-import-boilerplate!skip
-plugins/module_utils/common.py future-import-boilerplate!skip
-plugins/module_utils/ansiblemodule.py future-import-boilerplate!skip
-plugins/module_utils/exceptions.py future-import-boilerplate!skip
-plugins/module_utils/client/resource.py future-import-boilerplate!skip
-plugins/module_utils/client/discovery.py future-import-boilerplate!skip
-plugins/module_utils/k8s/resource.py future-import-boilerplate!skip
-plugins/module_utils/k8s/core.py future-import-boilerplate!skip
-plugins/module_utils/k8s/waiter.py future-import-boilerplate!skip
-plugins/module_utils/k8s/client.py future-import-boilerplate!skip
-plugins/module_utils/k8s/runner.py future-import-boilerplate!skip
-plugins/module_utils/k8s/service.py future-import-boilerplate!skip
-plugins/module_utils/k8s/exceptions.py future-import-boilerplate!skip
-plugins/connection/kubectl.py future-import-boilerplate!skip
-plugins/inventory/k8s.py future-import-boilerplate!skip
-plugins/lookup/k8s.py future-import-boilerplate!skip
-plugins/lookup/kustomize.py future-import-boilerplate!skip
-plugins/modules/k8s_scale.py future-import-boilerplate!skip
-plugins/modules/helm_template.py future-import-boilerplate!skip
-plugins/modules/k8s_exec.py future-import-boilerplate!skip
-plugins/modules/helm.py future-import-boilerplate!skip
-plugins/modules/helm_plugin_info.py future-import-boilerplate!skip
-plugins/modules/helm_info.py future-import-boilerplate!skip
-plugins/modules/helm_repository.py future-import-boilerplate!skip
-plugins/modules/k8s_rollback.py future-import-boilerplate!skip
-plugins/modules/k8s_log.py future-import-boilerplate!skip
-plugins/modules/k8s_drain.py future-import-boilerplate!skip
-plugins/modules/helm_plugin.py future-import-boilerplate!skip
-plugins/modules/k8s_taint.py future-import-boilerplate!skip
-plugins/modules/k8s.py future-import-boilerplate!skip
-plugins/modules/k8s_service.py future-import-boilerplate!skip
-plugins/modules/k8s_cluster_info.py future-import-boilerplate!skip
-plugins/modules/k8s_info.py future-import-boilerplate!skip
-plugins/modules/k8s_cp.py future-import-boilerplate!skip
-plugins/modules/__init__.py future-import-boilerplate!skip
-plugins/modules/k8s_json_patch.py future-import-boilerplate!skip
-plugins/action/k8s_info.py future-import-boilerplate!skip
-plugins/filter/k8s.py future-import-boilerplate!skip
-tests/unit/conftest.py future-import-boilerplate!skip
-tests/unit/utils/ansible_module_mock.py future-import-boilerplate!skip
-tests/unit/module_utils/test_helm.py future-import-boilerplate!skip
-tests/unit/module_utils/test_marshal.py future-import-boilerplate!skip
-tests/unit/module_utils/test_discoverer.py future-import-boilerplate!skip
-tests/unit/module_utils/test_hashes.py future-import-boilerplate!skip
-tests/unit/module_utils/test_resource.py future-import-boilerplate!skip
-tests/unit/module_utils/test_service.py future-import-boilerplate!skip
-tests/unit/module_utils/test_waiter.py future-import-boilerplate!skip
-tests/unit/module_utils/test_common.py future-import-boilerplate!skip
-tests/unit/module_utils/test_selector.py future-import-boilerplate!skip
-tests/unit/module_utils/test_apply.py future-import-boilerplate!skip
-tests/unit/module_utils/test_runner.py future-import-boilerplate!skip
-tests/unit/module_utils/test_client.py future-import-boilerplate!skip
-tests/unit/module_utils/test_core.py future-import-boilerplate!skip
-tests/unit/modules/test_helm_template_module.py future-import-boilerplate!skip
-tests/unit/modules/test_helm_template.py future-import-boilerplate!skip
-tests/unit/modules/test_module_helm.py future-import-boilerplate!skip
-tests/unit/action/test_remove_omit.py future-import-boilerplate!skip
-plugins/doc_fragments/k8s_name_options.py metaclass-boilerplate!skip
-plugins/doc_fragments/k8s_auth_options.py metaclass-boilerplate!skip
-plugins/doc_fragments/helm_common_options.py metaclass-boilerplate!skip
-plugins/doc_fragments/k8s_state_options.py metaclass-boilerplate!skip
-plugins/doc_fragments/k8s_wait_options.py metaclass-boilerplate!skip
-plugins/doc_fragments/k8s_scale_options.py metaclass-boilerplate!skip
-plugins/doc_fragments/k8s_delete_options.py metaclass-boilerplate!skip
-plugins/doc_fragments/__init__.py metaclass-boilerplate!skip
-plugins/doc_fragments/k8s_resource_options.py metaclass-boilerplate!skip
-plugins/module_utils/helm.py metaclass-boilerplate!skip
-plugins/module_utils/apply.py metaclass-boilerplate!skip
-plugins/module_utils/hashes.py metaclass-boilerplate!skip
-plugins/module_utils/helm_args_common.py metaclass-boilerplate!skip
-plugins/module_utils/version.py metaclass-boilerplate!skip
-plugins/module_utils/_version.py metaclass-boilerplate!skip
-plugins/module_utils/copy.py metaclass-boilerplate!skip
-plugins/module_utils/args_common.py metaclass-boilerplate!skip
-plugins/module_utils/__init__.py metaclass-boilerplate!skip
-plugins/module_utils/selector.py metaclass-boilerplate!skip
-plugins/module_utils/k8sdynamicclient.py metaclass-boilerplate!skip
-plugins/module_utils/common.py metaclass-boilerplate!skip
-plugins/module_utils/ansiblemodule.py metaclass-boilerplate!skip
-plugins/module_utils/exceptions.py metaclass-boilerplate!skip
-plugins/module_utils/client/resource.py metaclass-boilerplate!skip
-plugins/module_utils/client/discovery.py metaclass-boilerplate!skip
-plugins/module_utils/k8s/resource.py metaclass-boilerplate!skip
-plugins/module_utils/k8s/core.py metaclass-boilerplate!skip
-plugins/module_utils/k8s/waiter.py metaclass-boilerplate!skip
-plugins/module_utils/k8s/client.py metaclass-boilerplate!skip
-plugins/module_utils/k8s/runner.py metaclass-boilerplate!skip
-plugins/module_utils/k8s/service.py metaclass-boilerplate!skip
-plugins/module_utils/k8s/exceptions.py metaclass-boilerplate!skip
-plugins/connection/kubectl.py metaclass-boilerplate!skip
-plugins/inventory/k8s.py metaclass-boilerplate!skip
-plugins/lookup/k8s.py metaclass-boilerplate!skip
-plugins/lookup/kustomize.py metaclass-boilerplate!skip
-plugins/modules/k8s_scale.py metaclass-boilerplate!skip
-plugins/modules/helm_template.py metaclass-boilerplate!skip
-plugins/modules/k8s_exec.py metaclass-boilerplate!skip
-plugins/modules/helm.py metaclass-boilerplate!skip
-plugins/modules/helm_plugin_info.py metaclass-boilerplate!skip
-plugins/modules/helm_info.py metaclass-boilerplate!skip
-plugins/modules/helm_repository.py metaclass-boilerplate!skip
-plugins/modules/k8s_rollback.py metaclass-boilerplate!skip
-plugins/modules/k8s_log.py metaclass-boilerplate!skip
-plugins/modules/k8s_drain.py metaclass-boilerplate!skip
-plugins/modules/helm_plugin.py metaclass-boilerplate!skip
-plugins/modules/k8s_taint.py metaclass-boilerplate!skip
-plugins/modules/k8s.py metaclass-boilerplate!skip
-plugins/modules/k8s_service.py metaclass-boilerplate!skip
-plugins/modules/k8s_cluster_info.py metaclass-boilerplate!skip
-plugins/modules/k8s_info.py metaclass-boilerplate!skip
-plugins/modules/k8s_cp.py metaclass-boilerplate!skip
-plugins/modules/__init__.py metaclass-boilerplate!skip
-plugins/modules/k8s_json_patch.py metaclass-boilerplate!skip
-plugins/action/k8s_info.py metaclass-boilerplate!skip
-plugins/filter/k8s.py metaclass-boilerplate!skip
-tests/unit/conftest.py metaclass-boilerplate!skip
-tests/unit/utils/ansible_module_mock.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_helm.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_marshal.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_discoverer.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_hashes.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_resource.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_service.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_waiter.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_common.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_selector.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_apply.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_runner.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_client.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_core.py metaclass-boilerplate!skip
-tests/unit/modules/test_helm_template_module.py metaclass-boilerplate!skip
-tests/unit/modules/test_helm_template.py metaclass-boilerplate!skip
-tests/unit/modules/test_module_helm.py metaclass-boilerplate!skip
-tests/unit/action/test_remove_omit.py metaclass-boilerplate!skip
-plugins/doc_fragments/k8s_name_options.py import-2.6!skip
-plugins/doc_fragments/k8s_name_options.py import-2.7!skip
-plugins/doc_fragments/k8s_name_options.py import-3.5!skip
-plugins/doc_fragments/k8s_auth_options.py import-2.6!skip
-plugins/doc_fragments/k8s_auth_options.py import-2.7!skip
-plugins/doc_fragments/k8s_auth_options.py import-3.5!skip
-plugins/doc_fragments/helm_common_options.py import-2.6!skip
-plugins/doc_fragments/helm_common_options.py import-2.7!skip
-plugins/doc_fragments/helm_common_options.py import-3.5!skip
-plugins/doc_fragments/k8s_state_options.py import-2.6!skip
-plugins/doc_fragments/k8s_state_options.py import-2.7!skip
-plugins/doc_fragments/k8s_state_options.py import-3.5!skip
-plugins/doc_fragments/k8s_wait_options.py import-2.6!skip
-plugins/doc_fragments/k8s_wait_options.py import-2.7!skip
-plugins/doc_fragments/k8s_wait_options.py import-3.5!skip
-plugins/doc_fragments/k8s_scale_options.py import-2.6!skip
-plugins/doc_fragments/k8s_scale_options.py import-2.7!skip
-plugins/doc_fragments/k8s_scale_options.py import-3.5!skip
-plugins/doc_fragments/k8s_delete_options.py import-2.6!skip
-plugins/doc_fragments/k8s_delete_options.py import-2.7!skip
-plugins/doc_fragments/k8s_delete_options.py import-3.5!skip
-plugins/doc_fragments/__init__.py import-2.6!skip
-plugins/doc_fragments/__init__.py import-2.7!skip
-plugins/doc_fragments/__init__.py import-3.5!skip
-plugins/doc_fragments/k8s_resource_options.py import-2.6!skip
-plugins/doc_fragments/k8s_resource_options.py import-2.7!skip
-plugins/doc_fragments/k8s_resource_options.py import-3.5!skip
-plugins/module_utils/helm.py import-2.6!skip
-plugins/module_utils/helm.py import-2.7!skip
-plugins/module_utils/helm.py import-3.5!skip
-plugins/module_utils/apply.py import-2.6!skip
-plugins/module_utils/apply.py import-2.7!skip
-plugins/module_utils/apply.py import-3.5!skip
-plugins/module_utils/hashes.py import-2.6!skip
-plugins/module_utils/hashes.py import-2.7!skip
-plugins/module_utils/hashes.py import-3.5!skip
-plugins/module_utils/helm_args_common.py import-2.6!skip
-plugins/module_utils/helm_args_common.py import-2.7!skip
-plugins/module_utils/helm_args_common.py import-3.5!skip
-plugins/module_utils/version.py import-2.6!skip
-plugins/module_utils/version.py import-2.7!skip
-plugins/module_utils/version.py import-3.5!skip
-plugins/module_utils/_version.py import-2.6!skip
-plugins/module_utils/_version.py import-2.7!skip
-plugins/module_utils/_version.py import-3.5!skip
-plugins/module_utils/copy.py import-2.6!skip
-plugins/module_utils/copy.py import-2.7!skip
-plugins/module_utils/copy.py import-3.5!skip
-plugins/module_utils/args_common.py import-2.6!skip
-plugins/module_utils/args_common.py import-2.7!skip
-plugins/module_utils/args_common.py import-3.5!skip
-plugins/module_utils/__init__.py import-2.6!skip
-plugins/module_utils/__init__.py import-2.7!skip
-plugins/module_utils/__init__.py import-3.5!skip
-plugins/module_utils/selector.py import-2.6!skip
-plugins/module_utils/selector.py import-2.7!skip
-plugins/module_utils/selector.py import-3.5!skip
-plugins/module_utils/k8sdynamicclient.py import-2.6!skip
-plugins/module_utils/k8sdynamicclient.py import-2.7!skip
-plugins/module_utils/k8sdynamicclient.py import-3.5!skip
-plugins/module_utils/common.py import-2.6!skip
-plugins/module_utils/common.py import-2.7!skip
-plugins/module_utils/common.py import-3.5!skip
-plugins/module_utils/ansiblemodule.py import-2.6!skip
-plugins/module_utils/ansiblemodule.py import-2.7!skip
-plugins/module_utils/ansiblemodule.py import-3.5!skip
-plugins/module_utils/exceptions.py import-2.6!skip
-plugins/module_utils/exceptions.py import-2.7!skip
-plugins/module_utils/exceptions.py import-3.5!skip
-plugins/module_utils/client/resource.py import-2.6!skip
-plugins/module_utils/client/resource.py import-2.7!skip
-plugins/module_utils/client/resource.py import-3.5!skip
-plugins/module_utils/client/discovery.py import-2.6!skip
-plugins/module_utils/client/discovery.py import-2.7!skip
-plugins/module_utils/client/discovery.py import-3.5!skip
-plugins/module_utils/k8s/resource.py import-2.6!skip
-plugins/module_utils/k8s/resource.py import-2.7!skip
-plugins/module_utils/k8s/resource.py import-3.5!skip
-plugins/module_utils/k8s/core.py import-2.6!skip
-plugins/module_utils/k8s/core.py import-2.7!skip
-plugins/module_utils/k8s/core.py import-3.5!skip
-plugins/module_utils/k8s/waiter.py import-2.6!skip
-plugins/module_utils/k8s/waiter.py import-2.7!skip
-plugins/module_utils/k8s/waiter.py import-3.5!skip
-plugins/module_utils/k8s/client.py import-2.6!skip
-plugins/module_utils/k8s/client.py import-2.7!skip
-plugins/module_utils/k8s/client.py import-3.5!skip
-plugins/module_utils/k8s/runner.py import-2.6!skip
-plugins/module_utils/k8s/runner.py import-2.7!skip
-plugins/module_utils/k8s/runner.py import-3.5!skip
-plugins/module_utils/k8s/service.py import-2.6!skip
-plugins/module_utils/k8s/service.py import-2.7!skip
-plugins/module_utils/k8s/service.py import-3.5!skip
-plugins/module_utils/k8s/exceptions.py import-2.6!skip
-plugins/module_utils/k8s/exceptions.py import-2.7!skip
-plugins/module_utils/k8s/exceptions.py import-3.5!skip
-plugins/connection/kubectl.py import-2.6!skip
-plugins/connection/kubectl.py import-2.7!skip
-plugins/connection/kubectl.py import-3.5!skip
-plugins/inventory/k8s.py import-2.6!skip
-plugins/inventory/k8s.py import-2.7!skip
-plugins/inventory/k8s.py import-3.5!skip
-plugins/lookup/k8s.py import-2.6!skip
-plugins/lookup/k8s.py import-2.7!skip
-plugins/lookup/k8s.py import-3.5!skip
-plugins/lookup/kustomize.py import-2.6!skip
-plugins/lookup/kustomize.py import-2.7!skip
-plugins/lookup/kustomize.py import-3.5!skip
-plugins/modules/k8s_scale.py import-2.6!skip
-plugins/modules/k8s_scale.py import-2.7!skip
-plugins/modules/k8s_scale.py import-3.5!skip
-plugins/modules/helm_template.py import-2.6!skip
-plugins/modules/helm_template.py import-2.7!skip
-plugins/modules/helm_template.py import-3.5!skip
-plugins/modules/k8s_exec.py import-2.6!skip
-plugins/modules/k8s_exec.py import-2.7!skip
-plugins/modules/k8s_exec.py import-3.5!skip
-plugins/modules/helm.py import-2.6!skip
-plugins/modules/helm.py import-2.7!skip
-plugins/modules/helm.py import-3.5!skip
-plugins/modules/helm_plugin_info.py import-2.6!skip
-plugins/modules/helm_plugin_info.py import-2.7!skip
-plugins/modules/helm_plugin_info.py import-3.5!skip
-plugins/modules/helm_info.py import-2.6!skip
-plugins/modules/helm_info.py import-2.7!skip
-plugins/modules/helm_info.py import-3.5!skip
-plugins/modules/helm_repository.py import-2.6!skip
-plugins/modules/helm_repository.py import-2.7!skip
-plugins/modules/helm_repository.py import-3.5!skip
-plugins/modules/k8s_rollback.py import-2.6!skip
-plugins/modules/k8s_rollback.py import-2.7!skip
-plugins/modules/k8s_rollback.py import-3.5!skip
-plugins/modules/k8s_log.py import-2.6!skip
-plugins/modules/k8s_log.py import-2.7!skip
-plugins/modules/k8s_log.py import-3.5!skip
-plugins/modules/k8s_drain.py import-2.6!skip
-plugins/modules/k8s_drain.py import-2.7!skip
-plugins/modules/k8s_drain.py import-3.5!skip
-plugins/modules/helm_plugin.py import-2.6!skip
-plugins/modules/helm_plugin.py import-2.7!skip
-plugins/modules/helm_plugin.py import-3.5!skip
-plugins/modules/k8s_taint.py import-2.6!skip
-plugins/modules/k8s_taint.py import-2.7!skip
-plugins/modules/k8s_taint.py import-3.5!skip
-plugins/modules/k8s.py import-2.6!skip
-plugins/modules/k8s.py import-2.7!skip
-plugins/modules/k8s.py import-3.5!skip
-plugins/modules/k8s_service.py import-2.6!skip
-plugins/modules/k8s_service.py import-2.7!skip
-plugins/modules/k8s_service.py import-3.5!skip
-plugins/modules/k8s_cluster_info.py import-2.6!skip
-plugins/modules/k8s_cluster_info.py import-2.7!skip
-plugins/modules/k8s_cluster_info.py import-3.5!skip
-plugins/modules/k8s_info.py import-2.6!skip
-plugins/modules/k8s_info.py import-2.7!skip
-plugins/modules/k8s_info.py import-3.5!skip
-plugins/modules/k8s_cp.py import-2.6!skip
-plugins/modules/k8s_cp.py import-2.7!skip
-plugins/modules/k8s_cp.py import-3.5!skip
-plugins/modules/__init__.py import-2.6!skip
-plugins/modules/__init__.py import-2.7!skip
-plugins/modules/__init__.py import-3.5!skip
-plugins/modules/k8s_json_patch.py import-2.6!skip
-plugins/modules/k8s_json_patch.py import-2.7!skip
-plugins/modules/k8s_json_patch.py import-3.5!skip
-plugins/action/k8s_info.py import-2.6!skip
-plugins/action/k8s_info.py import-2.7!skip
-plugins/action/k8s_info.py import-3.5!skip
-plugins/filter/k8s.py import-2.6!skip
-plugins/filter/k8s.py import-2.7!skip
-plugins/filter/k8s.py import-3.5!skip
-plugins/doc_fragments/k8s_name_options.py compile-2.6!skip
-plugins/doc_fragments/k8s_name_options.py compile-2.7!skip
-plugins/doc_fragments/k8s_name_options.py compile-3.5!skip
-plugins/doc_fragments/k8s_auth_options.py compile-2.6!skip
-plugins/doc_fragments/k8s_auth_options.py compile-2.7!skip
-plugins/doc_fragments/k8s_auth_options.py compile-3.5!skip
-plugins/doc_fragments/helm_common_options.py compile-2.6!skip
-plugins/doc_fragments/helm_common_options.py compile-2.7!skip
-plugins/doc_fragments/helm_common_options.py compile-3.5!skip
-plugins/doc_fragments/k8s_state_options.py compile-2.6!skip
-plugins/doc_fragments/k8s_state_options.py compile-2.7!skip
-plugins/doc_fragments/k8s_state_options.py compile-3.5!skip
-plugins/doc_fragments/k8s_wait_options.py compile-2.6!skip
-plugins/doc_fragments/k8s_wait_options.py compile-2.7!skip
-plugins/doc_fragments/k8s_wait_options.py compile-3.5!skip
-plugins/doc_fragments/k8s_scale_options.py compile-2.6!skip
-plugins/doc_fragments/k8s_scale_options.py compile-2.7!skip
-plugins/doc_fragments/k8s_scale_options.py compile-3.5!skip
-plugins/doc_fragments/k8s_delete_options.py compile-2.6!skip
-plugins/doc_fragments/k8s_delete_options.py compile-2.7!skip
-plugins/doc_fragments/k8s_delete_options.py compile-3.5!skip
-plugins/doc_fragments/__init__.py compile-2.6!skip
-plugins/doc_fragments/__init__.py compile-2.7!skip
-plugins/doc_fragments/__init__.py compile-3.5!skip
-plugins/doc_fragments/k8s_resource_options.py compile-2.6!skip
-plugins/doc_fragments/k8s_resource_options.py compile-2.7!skip
-plugins/doc_fragments/k8s_resource_options.py compile-3.5!skip
-plugins/module_utils/helm.py compile-2.6!skip
-plugins/module_utils/helm.py compile-2.7!skip
-plugins/module_utils/helm.py compile-3.5!skip
-plugins/module_utils/apply.py compile-2.6!skip
-plugins/module_utils/apply.py compile-2.7!skip
-plugins/module_utils/apply.py compile-3.5!skip
-plugins/module_utils/hashes.py compile-2.6!skip
-plugins/module_utils/hashes.py compile-2.7!skip
-plugins/module_utils/hashes.py compile-3.5!skip
-plugins/module_utils/helm_args_common.py compile-2.6!skip
-plugins/module_utils/helm_args_common.py compile-2.7!skip
-plugins/module_utils/helm_args_common.py compile-3.5!skip
-plugins/module_utils/version.py compile-2.6!skip
-plugins/module_utils/version.py compile-2.7!skip
-plugins/module_utils/version.py compile-3.5!skip
-plugins/module_utils/_version.py compile-2.6!skip
-plugins/module_utils/_version.py compile-2.7!skip
-plugins/module_utils/_version.py compile-3.5!skip
-plugins/module_utils/copy.py compile-2.6!skip
-plugins/module_utils/copy.py compile-2.7!skip
-plugins/module_utils/copy.py compile-3.5!skip
-plugins/module_utils/args_common.py compile-2.6!skip
-plugins/module_utils/args_common.py compile-2.7!skip
-plugins/module_utils/args_common.py compile-3.5!skip
-plugins/module_utils/__init__.py compile-2.6!skip
-plugins/module_utils/__init__.py compile-2.7!skip
-plugins/module_utils/__init__.py compile-3.5!skip
-plugins/module_utils/selector.py compile-2.6!skip
-plugins/module_utils/selector.py compile-2.7!skip
-plugins/module_utils/selector.py compile-3.5!skip
-plugins/module_utils/k8sdynamicclient.py compile-2.6!skip
-plugins/module_utils/k8sdynamicclient.py compile-2.7!skip
-plugins/module_utils/k8sdynamicclient.py compile-3.5!skip
-plugins/module_utils/common.py compile-2.6!skip
-plugins/module_utils/common.py compile-2.7!skip
-plugins/module_utils/common.py compile-3.5!skip
-plugins/module_utils/ansiblemodule.py compile-2.6!skip
-plugins/module_utils/ansiblemodule.py compile-2.7!skip
-plugins/module_utils/ansiblemodule.py compile-3.5!skip
-plugins/module_utils/exceptions.py compile-2.6!skip
-plugins/module_utils/exceptions.py compile-2.7!skip
-plugins/module_utils/exceptions.py compile-3.5!skip
-plugins/module_utils/client/resource.py compile-2.6!skip
-plugins/module_utils/client/resource.py compile-2.7!skip
-plugins/module_utils/client/resource.py compile-3.5!skip
-plugins/module_utils/client/discovery.py compile-2.6!skip
-plugins/module_utils/client/discovery.py compile-2.7!skip
-plugins/module_utils/client/discovery.py compile-3.5!skip
-plugins/module_utils/k8s/resource.py compile-2.6!skip
-plugins/module_utils/k8s/resource.py compile-2.7!skip
-plugins/module_utils/k8s/resource.py compile-3.5!skip
-plugins/module_utils/k8s/core.py compile-2.6!skip
-plugins/module_utils/k8s/core.py compile-2.7!skip
-plugins/module_utils/k8s/core.py compile-3.5!skip
-plugins/module_utils/k8s/waiter.py compile-2.6!skip
-plugins/module_utils/k8s/waiter.py compile-2.7!skip
-plugins/module_utils/k8s/waiter.py compile-3.5!skip
-plugins/module_utils/k8s/client.py compile-2.6!skip
-plugins/module_utils/k8s/client.py compile-2.7!skip
-plugins/module_utils/k8s/client.py compile-3.5!skip
-plugins/module_utils/k8s/runner.py compile-2.6!skip
-plugins/module_utils/k8s/runner.py compile-2.7!skip
-plugins/module_utils/k8s/runner.py compile-3.5!skip
-plugins/module_utils/k8s/service.py compile-2.6!skip
-plugins/module_utils/k8s/service.py compile-2.7!skip
-plugins/module_utils/k8s/service.py compile-3.5!skip
-plugins/module_utils/k8s/exceptions.py compile-2.6!skip
-plugins/module_utils/k8s/exceptions.py compile-2.7!skip
-plugins/module_utils/k8s/exceptions.py compile-3.5!skip
-plugins/connection/kubectl.py compile-2.6!skip
-plugins/connection/kubectl.py compile-2.7!skip
-plugins/connection/kubectl.py compile-3.5!skip
-plugins/inventory/k8s.py compile-2.6!skip
-plugins/inventory/k8s.py compile-2.7!skip
-plugins/inventory/k8s.py compile-3.5!skip
-plugins/lookup/k8s.py compile-2.6!skip
-plugins/lookup/k8s.py compile-2.7!skip
-plugins/lookup/k8s.py compile-3.5!skip
-plugins/lookup/kustomize.py compile-2.6!skip
-plugins/lookup/kustomize.py compile-2.7!skip
-plugins/lookup/kustomize.py compile-3.5!skip
-plugins/modules/k8s_scale.py compile-2.6!skip
-plugins/modules/k8s_scale.py compile-2.7!skip
-plugins/modules/k8s_scale.py compile-3.5!skip
-plugins/modules/helm_template.py compile-2.6!skip
-plugins/modules/helm_template.py compile-2.7!skip
-plugins/modules/helm_template.py compile-3.5!skip
-plugins/modules/k8s_exec.py compile-2.6!skip
-plugins/modules/k8s_exec.py compile-2.7!skip
-plugins/modules/k8s_exec.py compile-3.5!skip
-plugins/modules/helm.py compile-2.6!skip
-plugins/modules/helm.py compile-2.7!skip
-plugins/modules/helm.py compile-3.5!skip
-plugins/modules/helm_plugin_info.py compile-2.6!skip
-plugins/modules/helm_plugin_info.py compile-2.7!skip
-plugins/modules/helm_plugin_info.py compile-3.5!skip
-plugins/modules/helm_info.py compile-2.6!skip
-plugins/modules/helm_info.py compile-2.7!skip
-plugins/modules/helm_info.py compile-3.5!skip
-plugins/modules/helm_repository.py compile-2.6!skip
-plugins/modules/helm_repository.py compile-2.7!skip
-plugins/modules/helm_repository.py compile-3.5!skip
-plugins/modules/k8s_rollback.py compile-2.6!skip
-plugins/modules/k8s_rollback.py compile-2.7!skip
-plugins/modules/k8s_rollback.py compile-3.5!skip
-plugins/modules/k8s_log.py compile-2.6!skip
-plugins/modules/k8s_log.py compile-2.7!skip
-plugins/modules/k8s_log.py compile-3.5!skip
-plugins/modules/k8s_drain.py compile-2.6!skip
-plugins/modules/k8s_drain.py compile-2.7!skip
-plugins/modules/k8s_drain.py compile-3.5!skip
-plugins/modules/helm_plugin.py compile-2.6!skip
-plugins/modules/helm_plugin.py compile-2.7!skip
-plugins/modules/helm_plugin.py compile-3.5!skip
-plugins/modules/k8s_taint.py compile-2.6!skip
-plugins/modules/k8s_taint.py compile-2.7!skip
-plugins/modules/k8s_taint.py compile-3.5!skip
-plugins/modules/k8s.py compile-2.6!skip
-plugins/modules/k8s.py compile-2.7!skip
-plugins/modules/k8s.py compile-3.5!skip
-plugins/modules/k8s_service.py compile-2.6!skip
-plugins/modules/k8s_service.py compile-2.7!skip
-plugins/modules/k8s_service.py compile-3.5!skip
-plugins/modules/k8s_cluster_info.py compile-2.6!skip
-plugins/modules/k8s_cluster_info.py compile-2.7!skip
-plugins/modules/k8s_cluster_info.py compile-3.5!skip
-plugins/modules/k8s_info.py compile-2.6!skip
-plugins/modules/k8s_info.py compile-2.7!skip
-plugins/modules/k8s_info.py compile-3.5!skip
-plugins/modules/k8s_cp.py compile-2.6!skip
-plugins/modules/k8s_cp.py compile-2.7!skip
-plugins/modules/k8s_cp.py compile-3.5!skip
-plugins/modules/__init__.py compile-2.6!skip
-plugins/modules/__init__.py compile-2.7!skip
-plugins/modules/__init__.py compile-3.5!skip
-plugins/modules/k8s_json_patch.py compile-2.6!skip
-plugins/modules/k8s_json_patch.py compile-2.7!skip
-plugins/modules/k8s_json_patch.py compile-3.5!skip
-plugins/action/k8s_info.py compile-2.6!skip
-plugins/action/k8s_info.py compile-2.7!skip
-plugins/action/k8s_info.py compile-3.5!skip
-plugins/filter/k8s.py compile-2.6!skip
-plugins/filter/k8s.py compile-2.7!skip
-plugins/filter/k8s.py compile-3.5!skip
-tests/unit/conftest.py compile-2.6!skip
-tests/unit/conftest.py compile-2.7!skip
-tests/unit/conftest.py compile-3.5!skip
-tests/unit/utils/ansible_module_mock.py compile-2.6!skip
-tests/unit/utils/ansible_module_mock.py compile-2.7!skip
-tests/unit/utils/ansible_module_mock.py compile-3.5!skip
-tests/unit/module_utils/test_helm.py compile-2.6!skip
-tests/unit/module_utils/test_helm.py compile-2.7!skip
-tests/unit/module_utils/test_helm.py compile-3.5!skip
-tests/unit/module_utils/test_marshal.py compile-2.6!skip
-tests/unit/module_utils/test_marshal.py compile-2.7!skip
-tests/unit/module_utils/test_marshal.py compile-3.5!skip
-tests/unit/module_utils/test_discoverer.py compile-2.6!skip
-tests/unit/module_utils/test_discoverer.py compile-2.7!skip
-tests/unit/module_utils/test_discoverer.py compile-3.5!skip
-tests/unit/module_utils/test_hashes.py compile-2.6!skip
-tests/unit/module_utils/test_hashes.py compile-2.7!skip
-tests/unit/module_utils/test_hashes.py compile-3.5!skip
-tests/unit/module_utils/test_resource.py compile-2.6!skip
-tests/unit/module_utils/test_resource.py compile-2.7!skip
-tests/unit/module_utils/test_resource.py compile-3.5!skip
-tests/unit/module_utils/test_service.py compile-2.6!skip
-tests/unit/module_utils/test_service.py compile-2.7!skip
-tests/unit/module_utils/test_service.py compile-3.5!skip
-tests/unit/module_utils/test_waiter.py compile-2.6!skip
-tests/unit/module_utils/test_waiter.py compile-2.7!skip
-tests/unit/module_utils/test_waiter.py compile-3.5!skip
-tests/unit/module_utils/test_common.py compile-2.6!skip
-tests/unit/module_utils/test_common.py compile-2.7!skip
-tests/unit/module_utils/test_common.py compile-3.5!skip
-tests/unit/module_utils/test_selector.py compile-2.6!skip
-tests/unit/module_utils/test_selector.py compile-2.7!skip
-tests/unit/module_utils/test_selector.py compile-3.5!skip
-tests/unit/module_utils/test_apply.py compile-2.6!skip
-tests/unit/module_utils/test_apply.py compile-2.7!skip
-tests/unit/module_utils/test_apply.py compile-3.5!skip
-tests/unit/module_utils/test_runner.py compile-2.6!skip
-tests/unit/module_utils/test_runner.py compile-2.7!skip
-tests/unit/module_utils/test_runner.py compile-3.5!skip
-tests/unit/module_utils/test_client.py compile-2.6!skip
-tests/unit/module_utils/test_client.py compile-2.7!skip
-tests/unit/module_utils/test_client.py compile-3.5!skip
-tests/unit/module_utils/test_core.py compile-2.6!skip
-tests/unit/module_utils/test_core.py compile-2.7!skip
-tests/unit/module_utils/test_core.py compile-3.5!skip
-tests/unit/modules/test_helm_template_module.py compile-2.6!skip
-tests/unit/modules/test_helm_template_module.py compile-2.7!skip
-tests/unit/modules/test_helm_template_module.py compile-3.5!skip
-tests/unit/modules/test_helm_template.py compile-2.6!skip
-tests/unit/modules/test_helm_template.py compile-2.7!skip
-tests/unit/modules/test_helm_template.py compile-3.5!skip
-tests/unit/modules/test_module_helm.py compile-2.6!skip
-tests/unit/modules/test_module_helm.py compile-2.7!skip
-tests/unit/modules/test_module_helm.py compile-3.5!skip
-tests/unit/action/test_remove_omit.py compile-2.6!skip
-tests/unit/action/test_remove_omit.py compile-2.7!skip
-tests/unit/action/test_remove_omit.py compile-3.5!skip
-tests/integration/targets/k8s_copy/library/k8s_create_file.py compile-2.6!skip
-tests/integration/targets/k8s_copy/library/k8s_create_file.py compile-2.7!skip
-tests/integration/targets/k8s_copy/library/k8s_create_file.py compile-3.5!skip
-tests/integration/targets/k8s_copy/library/kubectl_file_compare.py compile-2.6!skip
-tests/integration/targets/k8s_copy/library/kubectl_file_compare.py compile-2.7!skip
-tests/integration/targets/k8s_copy/library/kubectl_file_compare.py compile-3.5!skip
-tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentials.py compile-2.6!skip
-tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentials.py compile-2.7!skip
-tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentials.py compile-3.5!skip
-tests/integration/targets/helm/library/helm_test_version.py compile-2.6!skip
-tests/integration/targets/helm/library/helm_test_version.py compile-2.7!skip
-tests/integration/targets/helm/library/helm_test_version.py compile-3.5!skip
diff --git a/ansible_collections/kubernetes/core/tests/sanity/ignore-2.13.txt b/ansible_collections/kubernetes/core/tests/sanity/ignore-2.13.txt
deleted file mode 100644
index 6cfa02f6b..000000000
--- a/ansible_collections/kubernetes/core/tests/sanity/ignore-2.13.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-plugins/module_utils/client/discovery.py import-3.6!skip
-plugins/module_utils/client/discovery.py import-3.7!skip
-plugins/module_utils/client/discovery.py import-3.8!skip
-plugins/module_utils/client/discovery.py import-3.9!skip
-plugins/module_utils/client/discovery.py import-3.10!skip
-plugins/module_utils/client/resource.py import-3.6!skip
-plugins/module_utils/client/resource.py import-3.7!skip
-plugins/module_utils/client/resource.py import-3.8!skip
-plugins/module_utils/client/resource.py import-3.9!skip
-plugins/module_utils/client/resource.py import-3.10!skip
-plugins/module_utils/k8sdynamicclient.py import-3.6!skip
-plugins/module_utils/k8sdynamicclient.py import-3.7!skip
-plugins/module_utils/k8sdynamicclient.py import-3.8!skip
-plugins/module_utils/k8sdynamicclient.py import-3.9!skip
-plugins/module_utils/k8sdynamicclient.py import-3.10!skip
-plugins/modules/k8s.py validate-modules:parameter-type-not-in-doc
-plugins/modules/k8s_scale.py validate-modules:parameter-type-not-in-doc
-plugins/modules/k8s_service.py validate-modules:parameter-type-not-in-doc
-tests/unit/module_utils/fixtures/definitions.yml yamllint!skip
-tests/unit/module_utils/fixtures/deployments.yml yamllint!skip
-tests/unit/module_utils/fixtures/pods.yml yamllint!skip
-tests/integration/targets/helm/files/appversionless-chart-v2/templates/configmap.yaml yamllint!skip
-tests/integration/targets/helm/files/appversionless-chart/templates/configmap.yaml yamllint!skip
-tests/integration/targets/helm/files/test-chart-v2/templates/configmap.yaml yamllint!skip
-tests/integration/targets/helm/files/test-chart/templates/configmap.yaml yamllint!skip
-tests/integration/targets/helm_diff/files/test-chart/templates/configmap.yaml yamllint!skip
-tests/integration/targets/k8s_scale/files/deployment.yaml yamllint!skip
-tests/sanity/refresh_ignore_files shebang!skip
-plugins/modules/k8s.py validate-modules:return-syntax-error
-plugins/modules/k8s_scale.py validate-modules:return-syntax-error
-plugins/modules/k8s_service.py validate-modules:return-syntax-error
-plugins/modules/k8s_taint.py validate-modules:return-syntax-error
diff --git a/ansible_collections/kubernetes/core/tests/sanity/ignore-2.14.txt b/ansible_collections/kubernetes/core/tests/sanity/ignore-2.14.txt
index f62989e02..637747685 100644
--- a/ansible_collections/kubernetes/core/tests/sanity/ignore-2.14.txt
+++ b/ansible_collections/kubernetes/core/tests/sanity/ignore-2.14.txt
@@ -32,3 +32,5 @@ plugins/modules/k8s.py validate-modules:return-syntax-error
plugins/modules/k8s_scale.py validate-modules:return-syntax-error
plugins/modules/k8s_service.py validate-modules:return-syntax-error
plugins/modules/k8s_taint.py validate-modules:return-syntax-error
+tests/integration/targets/k8s_delete/files/deployments.yaml yamllint!skip
+tests/integration/targets/helm_diff/files/test-chart-reuse-values/templates/configmap.yaml yamllint!skip
diff --git a/ansible_collections/kubernetes/core/tests/sanity/ignore-2.15.txt b/ansible_collections/kubernetes/core/tests/sanity/ignore-2.15.txt
index 86c079160..8f2d9f899 100644
--- a/ansible_collections/kubernetes/core/tests/sanity/ignore-2.15.txt
+++ b/ansible_collections/kubernetes/core/tests/sanity/ignore-2.15.txt
@@ -22,6 +22,7 @@ plugins/modules/k8s_scale.py validate-modules:parameter-type-not-in-doc
plugins/modules/k8s_service.py validate-modules:parameter-type-not-in-doc
tests/unit/module_utils/fixtures/definitions.yml yamllint!skip
tests/unit/module_utils/fixtures/deployments.yml yamllint!skip
+tests/integration/targets/k8s_delete/files/deployments.yaml yamllint!skip
tests/unit/module_utils/fixtures/pods.yml yamllint!skip
tests/integration/targets/helm/files/appversionless-chart-v2/templates/configmap.yaml yamllint!skip
tests/integration/targets/helm/files/appversionless-chart/templates/configmap.yaml yamllint!skip
@@ -33,3 +34,4 @@ plugins/modules/k8s.py validate-modules:return-syntax-error
plugins/modules/k8s_scale.py validate-modules:return-syntax-error
plugins/modules/k8s_service.py validate-modules:return-syntax-error
plugins/modules/k8s_taint.py validate-modules:return-syntax-error
+tests/integration/targets/helm_diff/files/test-chart-reuse-values/templates/configmap.yaml yamllint!skip
diff --git a/ansible_collections/kubernetes/core/tests/sanity/ignore-2.16.txt b/ansible_collections/kubernetes/core/tests/sanity/ignore-2.16.txt
index cb6e74504..e41e02e31 100644
--- a/ansible_collections/kubernetes/core/tests/sanity/ignore-2.16.txt
+++ b/ansible_collections/kubernetes/core/tests/sanity/ignore-2.16.txt
@@ -25,6 +25,7 @@ plugins/modules/k8s_scale.py validate-modules:parameter-type-not-in-doc
plugins/modules/k8s_service.py validate-modules:parameter-type-not-in-doc
tests/unit/module_utils/fixtures/definitions.yml yamllint!skip
tests/unit/module_utils/fixtures/deployments.yml yamllint!skip
+tests/integration/targets/k8s_delete/files/deployments.yaml yamllint!skip
tests/unit/module_utils/fixtures/pods.yml yamllint!skip
tests/integration/targets/helm/files/appversionless-chart-v2/templates/configmap.yaml yamllint!skip
tests/integration/targets/helm/files/appversionless-chart/templates/configmap.yaml yamllint!skip
@@ -36,3 +37,4 @@ plugins/modules/k8s.py validate-modules:return-syntax-error
plugins/modules/k8s_scale.py validate-modules:return-syntax-error
plugins/modules/k8s_service.py validate-modules:return-syntax-error
plugins/modules/k8s_taint.py validate-modules:return-syntax-error
+tests/integration/targets/helm_diff/files/test-chart-reuse-values/templates/configmap.yaml yamllint!skip
diff --git a/ansible_collections/kubernetes/core/tests/sanity/ignore-2.17.txt b/ansible_collections/kubernetes/core/tests/sanity/ignore-2.17.txt
index 11c8b21e1..c154baaf2 100644
--- a/ansible_collections/kubernetes/core/tests/sanity/ignore-2.17.txt
+++ b/ansible_collections/kubernetes/core/tests/sanity/ignore-2.17.txt
@@ -16,6 +16,7 @@ plugins/modules/k8s_scale.py validate-modules:parameter-type-not-in-doc
plugins/modules/k8s_service.py validate-modules:parameter-type-not-in-doc
tests/unit/module_utils/fixtures/definitions.yml yamllint!skip
tests/unit/module_utils/fixtures/deployments.yml yamllint!skip
+tests/integration/targets/k8s_delete/files/deployments.yaml yamllint!skip
tests/unit/module_utils/fixtures/pods.yml yamllint!skip
tests/integration/targets/helm/files/appversionless-chart-v2/templates/configmap.yaml yamllint!skip
tests/integration/targets/helm/files/appversionless-chart/templates/configmap.yaml yamllint!skip
@@ -27,3 +28,4 @@ plugins/modules/k8s.py validate-modules:return-syntax-error
plugins/modules/k8s_scale.py validate-modules:return-syntax-error
plugins/modules/k8s_service.py validate-modules:return-syntax-error
plugins/modules/k8s_taint.py validate-modules:return-syntax-error
+tests/integration/targets/helm_diff/files/test-chart-reuse-values/templates/configmap.yaml yamllint!skip
diff --git a/ansible_collections/kubernetes/core/tests/sanity/ignore-2.12.txt b/ansible_collections/kubernetes/core/tests/sanity/ignore-2.18.txt
index 6cfa02f6b..c154baaf2 100644
--- a/ansible_collections/kubernetes/core/tests/sanity/ignore-2.12.txt
+++ b/ansible_collections/kubernetes/core/tests/sanity/ignore-2.18.txt
@@ -1,23 +1,22 @@
-plugins/module_utils/client/discovery.py import-3.6!skip
-plugins/module_utils/client/discovery.py import-3.7!skip
-plugins/module_utils/client/discovery.py import-3.8!skip
plugins/module_utils/client/discovery.py import-3.9!skip
plugins/module_utils/client/discovery.py import-3.10!skip
-plugins/module_utils/client/resource.py import-3.6!skip
-plugins/module_utils/client/resource.py import-3.7!skip
-plugins/module_utils/client/resource.py import-3.8!skip
+plugins/module_utils/client/discovery.py import-3.11!skip
+plugins/module_utils/client/discovery.py import-3.12!skip
plugins/module_utils/client/resource.py import-3.9!skip
plugins/module_utils/client/resource.py import-3.10!skip
-plugins/module_utils/k8sdynamicclient.py import-3.6!skip
-plugins/module_utils/k8sdynamicclient.py import-3.7!skip
-plugins/module_utils/k8sdynamicclient.py import-3.8!skip
+plugins/module_utils/client/resource.py import-3.11!skip
+plugins/module_utils/client/resource.py import-3.12!skip
plugins/module_utils/k8sdynamicclient.py import-3.9!skip
plugins/module_utils/k8sdynamicclient.py import-3.10!skip
+plugins/module_utils/k8sdynamicclient.py import-3.11!skip
+plugins/module_utils/k8sdynamicclient.py import-3.12!skip
+plugins/module_utils/version.py pylint!skip
plugins/modules/k8s.py validate-modules:parameter-type-not-in-doc
plugins/modules/k8s_scale.py validate-modules:parameter-type-not-in-doc
plugins/modules/k8s_service.py validate-modules:parameter-type-not-in-doc
tests/unit/module_utils/fixtures/definitions.yml yamllint!skip
tests/unit/module_utils/fixtures/deployments.yml yamllint!skip
+tests/integration/targets/k8s_delete/files/deployments.yaml yamllint!skip
tests/unit/module_utils/fixtures/pods.yml yamllint!skip
tests/integration/targets/helm/files/appversionless-chart-v2/templates/configmap.yaml yamllint!skip
tests/integration/targets/helm/files/appversionless-chart/templates/configmap.yaml yamllint!skip
@@ -25,8 +24,8 @@ tests/integration/targets/helm/files/test-chart-v2/templates/configmap.yaml yaml
tests/integration/targets/helm/files/test-chart/templates/configmap.yaml yamllint!skip
tests/integration/targets/helm_diff/files/test-chart/templates/configmap.yaml yamllint!skip
tests/integration/targets/k8s_scale/files/deployment.yaml yamllint!skip
-tests/sanity/refresh_ignore_files shebang!skip
plugins/modules/k8s.py validate-modules:return-syntax-error
plugins/modules/k8s_scale.py validate-modules:return-syntax-error
plugins/modules/k8s_service.py validate-modules:return-syntax-error
plugins/modules/k8s_taint.py validate-modules:return-syntax-error
+tests/integration/targets/helm_diff/files/test-chart-reuse-values/templates/configmap.yaml yamllint!skip
diff --git a/ansible_collections/kubernetes/core/tests/sanity/ignore-2.9.txt b/ansible_collections/kubernetes/core/tests/sanity/ignore-2.9.txt
deleted file mode 100644
index 7828a0c08..000000000
--- a/ansible_collections/kubernetes/core/tests/sanity/ignore-2.9.txt
+++ /dev/null
@@ -1,613 +0,0 @@
-plugins/module_utils/client/discovery.py import-3.6!skip
-plugins/module_utils/client/discovery.py import-3.7!skip
-plugins/module_utils/client/discovery.py import-3.8!skip
-plugins/module_utils/client/resource.py import-3.6!skip
-plugins/module_utils/client/resource.py import-3.7!skip
-plugins/module_utils/client/resource.py import-3.8!skip
-plugins/module_utils/k8sdynamicclient.py import-3.6!skip
-plugins/module_utils/k8sdynamicclient.py import-3.7!skip
-plugins/module_utils/k8sdynamicclient.py import-3.8!skip
-tests/unit/module_utils/fixtures/definitions.yml yamllint!skip
-tests/unit/module_utils/fixtures/deployments.yml yamllint!skip
-tests/unit/module_utils/fixtures/pods.yml yamllint!skip
-tests/integration/targets/helm/files/appversionless-chart-v2/templates/configmap.yaml yamllint!skip
-tests/integration/targets/helm/files/appversionless-chart/templates/configmap.yaml yamllint!skip
-tests/integration/targets/helm/files/test-chart-v2/templates/configmap.yaml yamllint!skip
-tests/integration/targets/helm/files/test-chart/templates/configmap.yaml yamllint!skip
-tests/integration/targets/helm_diff/files/test-chart/templates/configmap.yaml yamllint!skip
-tests/integration/targets/k8s_scale/files/deployment.yaml yamllint!skip
-tests/sanity/refresh_ignore_files shebang!skip
-plugins/doc_fragments/k8s_name_options.py future-import-boilerplate!skip
-plugins/doc_fragments/k8s_auth_options.py future-import-boilerplate!skip
-plugins/doc_fragments/helm_common_options.py future-import-boilerplate!skip
-plugins/doc_fragments/k8s_state_options.py future-import-boilerplate!skip
-plugins/doc_fragments/k8s_wait_options.py future-import-boilerplate!skip
-plugins/doc_fragments/k8s_scale_options.py future-import-boilerplate!skip
-plugins/doc_fragments/k8s_delete_options.py future-import-boilerplate!skip
-plugins/doc_fragments/__init__.py future-import-boilerplate!skip
-plugins/doc_fragments/k8s_resource_options.py future-import-boilerplate!skip
-plugins/module_utils/helm.py future-import-boilerplate!skip
-plugins/module_utils/apply.py future-import-boilerplate!skip
-plugins/module_utils/hashes.py future-import-boilerplate!skip
-plugins/module_utils/helm_args_common.py future-import-boilerplate!skip
-plugins/module_utils/version.py future-import-boilerplate!skip
-plugins/module_utils/_version.py future-import-boilerplate!skip
-plugins/module_utils/copy.py future-import-boilerplate!skip
-plugins/module_utils/args_common.py future-import-boilerplate!skip
-plugins/module_utils/__init__.py future-import-boilerplate!skip
-plugins/module_utils/selector.py future-import-boilerplate!skip
-plugins/module_utils/k8sdynamicclient.py future-import-boilerplate!skip
-plugins/module_utils/common.py future-import-boilerplate!skip
-plugins/module_utils/ansiblemodule.py future-import-boilerplate!skip
-plugins/module_utils/exceptions.py future-import-boilerplate!skip
-plugins/module_utils/client/resource.py future-import-boilerplate!skip
-plugins/module_utils/client/discovery.py future-import-boilerplate!skip
-plugins/module_utils/k8s/resource.py future-import-boilerplate!skip
-plugins/module_utils/k8s/core.py future-import-boilerplate!skip
-plugins/module_utils/k8s/waiter.py future-import-boilerplate!skip
-plugins/module_utils/k8s/client.py future-import-boilerplate!skip
-plugins/module_utils/k8s/runner.py future-import-boilerplate!skip
-plugins/module_utils/k8s/service.py future-import-boilerplate!skip
-plugins/module_utils/k8s/exceptions.py future-import-boilerplate!skip
-plugins/connection/kubectl.py future-import-boilerplate!skip
-plugins/inventory/k8s.py future-import-boilerplate!skip
-plugins/lookup/k8s.py future-import-boilerplate!skip
-plugins/lookup/kustomize.py future-import-boilerplate!skip
-plugins/modules/k8s_scale.py future-import-boilerplate!skip
-plugins/modules/helm_template.py future-import-boilerplate!skip
-plugins/modules/k8s_exec.py future-import-boilerplate!skip
-plugins/modules/helm.py future-import-boilerplate!skip
-plugins/modules/helm_plugin_info.py future-import-boilerplate!skip
-plugins/modules/helm_info.py future-import-boilerplate!skip
-plugins/modules/helm_repository.py future-import-boilerplate!skip
-plugins/modules/k8s_rollback.py future-import-boilerplate!skip
-plugins/modules/k8s_log.py future-import-boilerplate!skip
-plugins/modules/k8s_drain.py future-import-boilerplate!skip
-plugins/modules/helm_plugin.py future-import-boilerplate!skip
-plugins/modules/k8s_taint.py future-import-boilerplate!skip
-plugins/modules/k8s.py future-import-boilerplate!skip
-plugins/modules/k8s_service.py future-import-boilerplate!skip
-plugins/modules/k8s_cluster_info.py future-import-boilerplate!skip
-plugins/modules/k8s_info.py future-import-boilerplate!skip
-plugins/modules/k8s_cp.py future-import-boilerplate!skip
-plugins/modules/__init__.py future-import-boilerplate!skip
-plugins/modules/k8s_json_patch.py future-import-boilerplate!skip
-plugins/action/k8s_info.py future-import-boilerplate!skip
-plugins/filter/k8s.py future-import-boilerplate!skip
-tests/unit/conftest.py future-import-boilerplate!skip
-tests/unit/utils/ansible_module_mock.py future-import-boilerplate!skip
-tests/unit/module_utils/test_helm.py future-import-boilerplate!skip
-tests/unit/module_utils/test_marshal.py future-import-boilerplate!skip
-tests/unit/module_utils/test_discoverer.py future-import-boilerplate!skip
-tests/unit/module_utils/test_hashes.py future-import-boilerplate!skip
-tests/unit/module_utils/test_resource.py future-import-boilerplate!skip
-tests/unit/module_utils/test_service.py future-import-boilerplate!skip
-tests/unit/module_utils/test_waiter.py future-import-boilerplate!skip
-tests/unit/module_utils/test_common.py future-import-boilerplate!skip
-tests/unit/module_utils/test_selector.py future-import-boilerplate!skip
-tests/unit/module_utils/test_apply.py future-import-boilerplate!skip
-tests/unit/module_utils/test_runner.py future-import-boilerplate!skip
-tests/unit/module_utils/test_client.py future-import-boilerplate!skip
-tests/unit/module_utils/test_core.py future-import-boilerplate!skip
-tests/unit/modules/test_helm_template_module.py future-import-boilerplate!skip
-tests/unit/modules/test_helm_template.py future-import-boilerplate!skip
-tests/unit/modules/test_module_helm.py future-import-boilerplate!skip
-tests/unit/action/test_remove_omit.py future-import-boilerplate!skip
-plugins/doc_fragments/k8s_name_options.py metaclass-boilerplate!skip
-plugins/doc_fragments/k8s_auth_options.py metaclass-boilerplate!skip
-plugins/doc_fragments/helm_common_options.py metaclass-boilerplate!skip
-plugins/doc_fragments/k8s_state_options.py metaclass-boilerplate!skip
-plugins/doc_fragments/k8s_wait_options.py metaclass-boilerplate!skip
-plugins/doc_fragments/k8s_scale_options.py metaclass-boilerplate!skip
-plugins/doc_fragments/k8s_delete_options.py metaclass-boilerplate!skip
-plugins/doc_fragments/__init__.py metaclass-boilerplate!skip
-plugins/doc_fragments/k8s_resource_options.py metaclass-boilerplate!skip
-plugins/module_utils/helm.py metaclass-boilerplate!skip
-plugins/module_utils/apply.py metaclass-boilerplate!skip
-plugins/module_utils/hashes.py metaclass-boilerplate!skip
-plugins/module_utils/helm_args_common.py metaclass-boilerplate!skip
-plugins/module_utils/version.py metaclass-boilerplate!skip
-plugins/module_utils/_version.py metaclass-boilerplate!skip
-plugins/module_utils/copy.py metaclass-boilerplate!skip
-plugins/module_utils/args_common.py metaclass-boilerplate!skip
-plugins/module_utils/__init__.py metaclass-boilerplate!skip
-plugins/module_utils/selector.py metaclass-boilerplate!skip
-plugins/module_utils/k8sdynamicclient.py metaclass-boilerplate!skip
-plugins/module_utils/common.py metaclass-boilerplate!skip
-plugins/module_utils/ansiblemodule.py metaclass-boilerplate!skip
-plugins/module_utils/exceptions.py metaclass-boilerplate!skip
-plugins/module_utils/client/resource.py metaclass-boilerplate!skip
-plugins/module_utils/client/discovery.py metaclass-boilerplate!skip
-plugins/module_utils/k8s/resource.py metaclass-boilerplate!skip
-plugins/module_utils/k8s/core.py metaclass-boilerplate!skip
-plugins/module_utils/k8s/waiter.py metaclass-boilerplate!skip
-plugins/module_utils/k8s/client.py metaclass-boilerplate!skip
-plugins/module_utils/k8s/runner.py metaclass-boilerplate!skip
-plugins/module_utils/k8s/service.py metaclass-boilerplate!skip
-plugins/module_utils/k8s/exceptions.py metaclass-boilerplate!skip
-plugins/connection/kubectl.py metaclass-boilerplate!skip
-plugins/inventory/k8s.py metaclass-boilerplate!skip
-plugins/lookup/k8s.py metaclass-boilerplate!skip
-plugins/lookup/kustomize.py metaclass-boilerplate!skip
-plugins/modules/k8s_scale.py metaclass-boilerplate!skip
-plugins/modules/helm_template.py metaclass-boilerplate!skip
-plugins/modules/k8s_exec.py metaclass-boilerplate!skip
-plugins/modules/helm.py metaclass-boilerplate!skip
-plugins/modules/helm_plugin_info.py metaclass-boilerplate!skip
-plugins/modules/helm_info.py metaclass-boilerplate!skip
-plugins/modules/helm_repository.py metaclass-boilerplate!skip
-plugins/modules/k8s_rollback.py metaclass-boilerplate!skip
-plugins/modules/k8s_log.py metaclass-boilerplate!skip
-plugins/modules/k8s_drain.py metaclass-boilerplate!skip
-plugins/modules/helm_plugin.py metaclass-boilerplate!skip
-plugins/modules/k8s_taint.py metaclass-boilerplate!skip
-plugins/modules/k8s.py metaclass-boilerplate!skip
-plugins/modules/k8s_service.py metaclass-boilerplate!skip
-plugins/modules/k8s_cluster_info.py metaclass-boilerplate!skip
-plugins/modules/k8s_info.py metaclass-boilerplate!skip
-plugins/modules/k8s_cp.py metaclass-boilerplate!skip
-plugins/modules/__init__.py metaclass-boilerplate!skip
-plugins/modules/k8s_json_patch.py metaclass-boilerplate!skip
-plugins/action/k8s_info.py metaclass-boilerplate!skip
-plugins/filter/k8s.py metaclass-boilerplate!skip
-tests/unit/conftest.py metaclass-boilerplate!skip
-tests/unit/utils/ansible_module_mock.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_helm.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_marshal.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_discoverer.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_hashes.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_resource.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_service.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_waiter.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_common.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_selector.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_apply.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_runner.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_client.py metaclass-boilerplate!skip
-tests/unit/module_utils/test_core.py metaclass-boilerplate!skip
-tests/unit/modules/test_helm_template_module.py metaclass-boilerplate!skip
-tests/unit/modules/test_helm_template.py metaclass-boilerplate!skip
-tests/unit/modules/test_module_helm.py metaclass-boilerplate!skip
-tests/unit/action/test_remove_omit.py metaclass-boilerplate!skip
-plugins/modules/k8s_scale.py import-2.6!skip
-plugins/modules/k8s_scale.py import-2.7!skip
-plugins/modules/k8s_scale.py import-3.5!skip
-plugins/modules/helm_template.py import-2.6!skip
-plugins/modules/helm_template.py import-2.7!skip
-plugins/modules/helm_template.py import-3.5!skip
-plugins/modules/k8s_exec.py import-2.6!skip
-plugins/modules/k8s_exec.py import-2.7!skip
-plugins/modules/k8s_exec.py import-3.5!skip
-plugins/modules/helm.py import-2.6!skip
-plugins/modules/helm.py import-2.7!skip
-plugins/modules/helm.py import-3.5!skip
-plugins/modules/helm_plugin_info.py import-2.6!skip
-plugins/modules/helm_plugin_info.py import-2.7!skip
-plugins/modules/helm_plugin_info.py import-3.5!skip
-plugins/modules/helm_info.py import-2.6!skip
-plugins/modules/helm_info.py import-2.7!skip
-plugins/modules/helm_info.py import-3.5!skip
-plugins/modules/helm_repository.py import-2.6!skip
-plugins/modules/helm_repository.py import-2.7!skip
-plugins/modules/helm_repository.py import-3.5!skip
-plugins/modules/k8s_rollback.py import-2.6!skip
-plugins/modules/k8s_rollback.py import-2.7!skip
-plugins/modules/k8s_rollback.py import-3.5!skip
-plugins/modules/k8s_log.py import-2.6!skip
-plugins/modules/k8s_log.py import-2.7!skip
-plugins/modules/k8s_log.py import-3.5!skip
-plugins/modules/k8s_drain.py import-2.6!skip
-plugins/modules/k8s_drain.py import-2.7!skip
-plugins/modules/k8s_drain.py import-3.5!skip
-plugins/modules/helm_plugin.py import-2.6!skip
-plugins/modules/helm_plugin.py import-2.7!skip
-plugins/modules/helm_plugin.py import-3.5!skip
-plugins/modules/k8s_taint.py import-2.6!skip
-plugins/modules/k8s_taint.py import-2.7!skip
-plugins/modules/k8s_taint.py import-3.5!skip
-plugins/modules/k8s.py import-2.6!skip
-plugins/modules/k8s.py import-2.7!skip
-plugins/modules/k8s.py import-3.5!skip
-plugins/modules/k8s_service.py import-2.6!skip
-plugins/modules/k8s_service.py import-2.7!skip
-plugins/modules/k8s_service.py import-3.5!skip
-plugins/modules/k8s_cluster_info.py import-2.6!skip
-plugins/modules/k8s_cluster_info.py import-2.7!skip
-plugins/modules/k8s_cluster_info.py import-3.5!skip
-plugins/modules/k8s_info.py import-2.6!skip
-plugins/modules/k8s_info.py import-2.7!skip
-plugins/modules/k8s_info.py import-3.5!skip
-plugins/modules/k8s_cp.py import-2.6!skip
-plugins/modules/k8s_cp.py import-2.7!skip
-plugins/modules/k8s_cp.py import-3.5!skip
-plugins/modules/__init__.py import-2.6!skip
-plugins/modules/__init__.py import-2.7!skip
-plugins/modules/__init__.py import-3.5!skip
-plugins/modules/k8s_json_patch.py import-2.6!skip
-plugins/modules/k8s_json_patch.py import-2.7!skip
-plugins/modules/k8s_json_patch.py import-3.5!skip
-plugins/module_utils/helm.py import-2.6!skip
-plugins/module_utils/helm.py import-2.7!skip
-plugins/module_utils/helm.py import-3.5!skip
-plugins/module_utils/apply.py import-2.6!skip
-plugins/module_utils/apply.py import-2.7!skip
-plugins/module_utils/apply.py import-3.5!skip
-plugins/module_utils/hashes.py import-2.6!skip
-plugins/module_utils/hashes.py import-2.7!skip
-plugins/module_utils/hashes.py import-3.5!skip
-plugins/module_utils/helm_args_common.py import-2.6!skip
-plugins/module_utils/helm_args_common.py import-2.7!skip
-plugins/module_utils/helm_args_common.py import-3.5!skip
-plugins/module_utils/version.py import-2.6!skip
-plugins/module_utils/version.py import-2.7!skip
-plugins/module_utils/version.py import-3.5!skip
-plugins/module_utils/_version.py import-2.6!skip
-plugins/module_utils/_version.py import-2.7!skip
-plugins/module_utils/_version.py import-3.5!skip
-plugins/module_utils/copy.py import-2.6!skip
-plugins/module_utils/copy.py import-2.7!skip
-plugins/module_utils/copy.py import-3.5!skip
-plugins/module_utils/args_common.py import-2.6!skip
-plugins/module_utils/args_common.py import-2.7!skip
-plugins/module_utils/args_common.py import-3.5!skip
-plugins/module_utils/__init__.py import-2.6!skip
-plugins/module_utils/__init__.py import-2.7!skip
-plugins/module_utils/__init__.py import-3.5!skip
-plugins/module_utils/selector.py import-2.6!skip
-plugins/module_utils/selector.py import-2.7!skip
-plugins/module_utils/selector.py import-3.5!skip
-plugins/module_utils/k8sdynamicclient.py import-2.6!skip
-plugins/module_utils/k8sdynamicclient.py import-2.7!skip
-plugins/module_utils/k8sdynamicclient.py import-3.5!skip
-plugins/module_utils/common.py import-2.6!skip
-plugins/module_utils/common.py import-2.7!skip
-plugins/module_utils/common.py import-3.5!skip
-plugins/module_utils/ansiblemodule.py import-2.6!skip
-plugins/module_utils/ansiblemodule.py import-2.7!skip
-plugins/module_utils/ansiblemodule.py import-3.5!skip
-plugins/module_utils/exceptions.py import-2.6!skip
-plugins/module_utils/exceptions.py import-2.7!skip
-plugins/module_utils/exceptions.py import-3.5!skip
-plugins/module_utils/client/resource.py import-2.6!skip
-plugins/module_utils/client/resource.py import-2.7!skip
-plugins/module_utils/client/resource.py import-3.5!skip
-plugins/module_utils/client/discovery.py import-2.6!skip
-plugins/module_utils/client/discovery.py import-2.7!skip
-plugins/module_utils/client/discovery.py import-3.5!skip
-plugins/module_utils/k8s/resource.py import-2.6!skip
-plugins/module_utils/k8s/resource.py import-2.7!skip
-plugins/module_utils/k8s/resource.py import-3.5!skip
-plugins/module_utils/k8s/core.py import-2.6!skip
-plugins/module_utils/k8s/core.py import-2.7!skip
-plugins/module_utils/k8s/core.py import-3.5!skip
-plugins/module_utils/k8s/waiter.py import-2.6!skip
-plugins/module_utils/k8s/waiter.py import-2.7!skip
-plugins/module_utils/k8s/waiter.py import-3.5!skip
-plugins/module_utils/k8s/client.py import-2.6!skip
-plugins/module_utils/k8s/client.py import-2.7!skip
-plugins/module_utils/k8s/client.py import-3.5!skip
-plugins/module_utils/k8s/runner.py import-2.6!skip
-plugins/module_utils/k8s/runner.py import-2.7!skip
-plugins/module_utils/k8s/runner.py import-3.5!skip
-plugins/module_utils/k8s/service.py import-2.6!skip
-plugins/module_utils/k8s/service.py import-2.7!skip
-plugins/module_utils/k8s/service.py import-3.5!skip
-plugins/module_utils/k8s/exceptions.py import-2.6!skip
-plugins/module_utils/k8s/exceptions.py import-2.7!skip
-plugins/module_utils/k8s/exceptions.py import-3.5!skip
-plugins/doc_fragments/k8s_name_options.py compile-2.6!skip
-plugins/doc_fragments/k8s_name_options.py compile-2.7!skip
-plugins/doc_fragments/k8s_name_options.py compile-3.5!skip
-plugins/doc_fragments/k8s_auth_options.py compile-2.6!skip
-plugins/doc_fragments/k8s_auth_options.py compile-2.7!skip
-plugins/doc_fragments/k8s_auth_options.py compile-3.5!skip
-plugins/doc_fragments/helm_common_options.py compile-2.6!skip
-plugins/doc_fragments/helm_common_options.py compile-2.7!skip
-plugins/doc_fragments/helm_common_options.py compile-3.5!skip
-plugins/doc_fragments/k8s_state_options.py compile-2.6!skip
-plugins/doc_fragments/k8s_state_options.py compile-2.7!skip
-plugins/doc_fragments/k8s_state_options.py compile-3.5!skip
-plugins/doc_fragments/k8s_wait_options.py compile-2.6!skip
-plugins/doc_fragments/k8s_wait_options.py compile-2.7!skip
-plugins/doc_fragments/k8s_wait_options.py compile-3.5!skip
-plugins/doc_fragments/k8s_scale_options.py compile-2.6!skip
-plugins/doc_fragments/k8s_scale_options.py compile-2.7!skip
-plugins/doc_fragments/k8s_scale_options.py compile-3.5!skip
-plugins/doc_fragments/k8s_delete_options.py compile-2.6!skip
-plugins/doc_fragments/k8s_delete_options.py compile-2.7!skip
-plugins/doc_fragments/k8s_delete_options.py compile-3.5!skip
-plugins/doc_fragments/__init__.py compile-2.6!skip
-plugins/doc_fragments/__init__.py compile-2.7!skip
-plugins/doc_fragments/__init__.py compile-3.5!skip
-plugins/doc_fragments/k8s_resource_options.py compile-2.6!skip
-plugins/doc_fragments/k8s_resource_options.py compile-2.7!skip
-plugins/doc_fragments/k8s_resource_options.py compile-3.5!skip
-plugins/module_utils/helm.py compile-2.6!skip
-plugins/module_utils/helm.py compile-2.7!skip
-plugins/module_utils/helm.py compile-3.5!skip
-plugins/module_utils/apply.py compile-2.6!skip
-plugins/module_utils/apply.py compile-2.7!skip
-plugins/module_utils/apply.py compile-3.5!skip
-plugins/module_utils/hashes.py compile-2.6!skip
-plugins/module_utils/hashes.py compile-2.7!skip
-plugins/module_utils/hashes.py compile-3.5!skip
-plugins/module_utils/helm_args_common.py compile-2.6!skip
-plugins/module_utils/helm_args_common.py compile-2.7!skip
-plugins/module_utils/helm_args_common.py compile-3.5!skip
-plugins/module_utils/version.py compile-2.6!skip
-plugins/module_utils/version.py compile-2.7!skip
-plugins/module_utils/version.py compile-3.5!skip
-plugins/module_utils/_version.py compile-2.6!skip
-plugins/module_utils/_version.py compile-2.7!skip
-plugins/module_utils/_version.py compile-3.5!skip
-plugins/module_utils/copy.py compile-2.6!skip
-plugins/module_utils/copy.py compile-2.7!skip
-plugins/module_utils/copy.py compile-3.5!skip
-plugins/module_utils/args_common.py compile-2.6!skip
-plugins/module_utils/args_common.py compile-2.7!skip
-plugins/module_utils/args_common.py compile-3.5!skip
-plugins/module_utils/__init__.py compile-2.6!skip
-plugins/module_utils/__init__.py compile-2.7!skip
-plugins/module_utils/__init__.py compile-3.5!skip
-plugins/module_utils/selector.py compile-2.6!skip
-plugins/module_utils/selector.py compile-2.7!skip
-plugins/module_utils/selector.py compile-3.5!skip
-plugins/module_utils/k8sdynamicclient.py compile-2.6!skip
-plugins/module_utils/k8sdynamicclient.py compile-2.7!skip
-plugins/module_utils/k8sdynamicclient.py compile-3.5!skip
-plugins/module_utils/common.py compile-2.6!skip
-plugins/module_utils/common.py compile-2.7!skip
-plugins/module_utils/common.py compile-3.5!skip
-plugins/module_utils/ansiblemodule.py compile-2.6!skip
-plugins/module_utils/ansiblemodule.py compile-2.7!skip
-plugins/module_utils/ansiblemodule.py compile-3.5!skip
-plugins/module_utils/exceptions.py compile-2.6!skip
-plugins/module_utils/exceptions.py compile-2.7!skip
-plugins/module_utils/exceptions.py compile-3.5!skip
-plugins/module_utils/client/resource.py compile-2.6!skip
-plugins/module_utils/client/resource.py compile-2.7!skip
-plugins/module_utils/client/resource.py compile-3.5!skip
-plugins/module_utils/client/discovery.py compile-2.6!skip
-plugins/module_utils/client/discovery.py compile-2.7!skip
-plugins/module_utils/client/discovery.py compile-3.5!skip
-plugins/module_utils/k8s/resource.py compile-2.6!skip
-plugins/module_utils/k8s/resource.py compile-2.7!skip
-plugins/module_utils/k8s/resource.py compile-3.5!skip
-plugins/module_utils/k8s/core.py compile-2.6!skip
-plugins/module_utils/k8s/core.py compile-2.7!skip
-plugins/module_utils/k8s/core.py compile-3.5!skip
-plugins/module_utils/k8s/waiter.py compile-2.6!skip
-plugins/module_utils/k8s/waiter.py compile-2.7!skip
-plugins/module_utils/k8s/waiter.py compile-3.5!skip
-plugins/module_utils/k8s/client.py compile-2.6!skip
-plugins/module_utils/k8s/client.py compile-2.7!skip
-plugins/module_utils/k8s/client.py compile-3.5!skip
-plugins/module_utils/k8s/runner.py compile-2.6!skip
-plugins/module_utils/k8s/runner.py compile-2.7!skip
-plugins/module_utils/k8s/runner.py compile-3.5!skip
-plugins/module_utils/k8s/service.py compile-2.6!skip
-plugins/module_utils/k8s/service.py compile-2.7!skip
-plugins/module_utils/k8s/service.py compile-3.5!skip
-plugins/module_utils/k8s/exceptions.py compile-2.6!skip
-plugins/module_utils/k8s/exceptions.py compile-2.7!skip
-plugins/module_utils/k8s/exceptions.py compile-3.5!skip
-plugins/connection/kubectl.py compile-2.6!skip
-plugins/connection/kubectl.py compile-2.7!skip
-plugins/connection/kubectl.py compile-3.5!skip
-plugins/inventory/k8s.py compile-2.6!skip
-plugins/inventory/k8s.py compile-2.7!skip
-plugins/inventory/k8s.py compile-3.5!skip
-plugins/lookup/k8s.py compile-2.6!skip
-plugins/lookup/k8s.py compile-2.7!skip
-plugins/lookup/k8s.py compile-3.5!skip
-plugins/lookup/kustomize.py compile-2.6!skip
-plugins/lookup/kustomize.py compile-2.7!skip
-plugins/lookup/kustomize.py compile-3.5!skip
-plugins/modules/k8s_scale.py compile-2.6!skip
-plugins/modules/k8s_scale.py compile-2.7!skip
-plugins/modules/k8s_scale.py compile-3.5!skip
-plugins/modules/helm_template.py compile-2.6!skip
-plugins/modules/helm_template.py compile-2.7!skip
-plugins/modules/helm_template.py compile-3.5!skip
-plugins/modules/k8s_exec.py compile-2.6!skip
-plugins/modules/k8s_exec.py compile-2.7!skip
-plugins/modules/k8s_exec.py compile-3.5!skip
-plugins/modules/helm.py compile-2.6!skip
-plugins/modules/helm.py compile-2.7!skip
-plugins/modules/helm.py compile-3.5!skip
-plugins/modules/helm_plugin_info.py compile-2.6!skip
-plugins/modules/helm_plugin_info.py compile-2.7!skip
-plugins/modules/helm_plugin_info.py compile-3.5!skip
-plugins/modules/helm_info.py compile-2.6!skip
-plugins/modules/helm_info.py compile-2.7!skip
-plugins/modules/helm_info.py compile-3.5!skip
-plugins/modules/helm_repository.py compile-2.6!skip
-plugins/modules/helm_repository.py compile-2.7!skip
-plugins/modules/helm_repository.py compile-3.5!skip
-plugins/modules/k8s_rollback.py compile-2.6!skip
-plugins/modules/k8s_rollback.py compile-2.7!skip
-plugins/modules/k8s_rollback.py compile-3.5!skip
-plugins/modules/k8s_log.py compile-2.6!skip
-plugins/modules/k8s_log.py compile-2.7!skip
-plugins/modules/k8s_log.py compile-3.5!skip
-plugins/modules/k8s_drain.py compile-2.6!skip
-plugins/modules/k8s_drain.py compile-2.7!skip
-plugins/modules/k8s_drain.py compile-3.5!skip
-plugins/modules/helm_plugin.py compile-2.6!skip
-plugins/modules/helm_plugin.py compile-2.7!skip
-plugins/modules/helm_plugin.py compile-3.5!skip
-plugins/modules/k8s_taint.py compile-2.6!skip
-plugins/modules/k8s_taint.py compile-2.7!skip
-plugins/modules/k8s_taint.py compile-3.5!skip
-plugins/modules/k8s.py compile-2.6!skip
-plugins/modules/k8s.py compile-2.7!skip
-plugins/modules/k8s.py compile-3.5!skip
-plugins/modules/k8s_service.py compile-2.6!skip
-plugins/modules/k8s_service.py compile-2.7!skip
-plugins/modules/k8s_service.py compile-3.5!skip
-plugins/modules/k8s_cluster_info.py compile-2.6!skip
-plugins/modules/k8s_cluster_info.py compile-2.7!skip
-plugins/modules/k8s_cluster_info.py compile-3.5!skip
-plugins/modules/k8s_info.py compile-2.6!skip
-plugins/modules/k8s_info.py compile-2.7!skip
-plugins/modules/k8s_info.py compile-3.5!skip
-plugins/modules/k8s_cp.py compile-2.6!skip
-plugins/modules/k8s_cp.py compile-2.7!skip
-plugins/modules/k8s_cp.py compile-3.5!skip
-plugins/modules/__init__.py compile-2.6!skip
-plugins/modules/__init__.py compile-2.7!skip
-plugins/modules/__init__.py compile-3.5!skip
-plugins/modules/k8s_json_patch.py compile-2.6!skip
-plugins/modules/k8s_json_patch.py compile-2.7!skip
-plugins/modules/k8s_json_patch.py compile-3.5!skip
-plugins/action/k8s_info.py compile-2.6!skip
-plugins/action/k8s_info.py compile-2.7!skip
-plugins/action/k8s_info.py compile-3.5!skip
-plugins/filter/k8s.py compile-2.6!skip
-plugins/filter/k8s.py compile-2.7!skip
-plugins/filter/k8s.py compile-3.5!skip
-tests/unit/conftest.py compile-2.6!skip
-tests/unit/conftest.py compile-2.7!skip
-tests/unit/conftest.py compile-3.5!skip
-tests/unit/utils/ansible_module_mock.py compile-2.6!skip
-tests/unit/utils/ansible_module_mock.py compile-2.7!skip
-tests/unit/utils/ansible_module_mock.py compile-3.5!skip
-tests/unit/module_utils/test_helm.py compile-2.6!skip
-tests/unit/module_utils/test_helm.py compile-2.7!skip
-tests/unit/module_utils/test_helm.py compile-3.5!skip
-tests/unit/module_utils/test_marshal.py compile-2.6!skip
-tests/unit/module_utils/test_marshal.py compile-2.7!skip
-tests/unit/module_utils/test_marshal.py compile-3.5!skip
-tests/unit/module_utils/test_discoverer.py compile-2.6!skip
-tests/unit/module_utils/test_discoverer.py compile-2.7!skip
-tests/unit/module_utils/test_discoverer.py compile-3.5!skip
-tests/unit/module_utils/test_hashes.py compile-2.6!skip
-tests/unit/module_utils/test_hashes.py compile-2.7!skip
-tests/unit/module_utils/test_hashes.py compile-3.5!skip
-tests/unit/module_utils/test_resource.py compile-2.6!skip
-tests/unit/module_utils/test_resource.py compile-2.7!skip
-tests/unit/module_utils/test_resource.py compile-3.5!skip
-tests/unit/module_utils/test_service.py compile-2.6!skip
-tests/unit/module_utils/test_service.py compile-2.7!skip
-tests/unit/module_utils/test_service.py compile-3.5!skip
-tests/unit/module_utils/test_waiter.py compile-2.6!skip
-tests/unit/module_utils/test_waiter.py compile-2.7!skip
-tests/unit/module_utils/test_waiter.py compile-3.5!skip
-tests/unit/module_utils/test_common.py compile-2.6!skip
-tests/unit/module_utils/test_common.py compile-2.7!skip
-tests/unit/module_utils/test_common.py compile-3.5!skip
-tests/unit/module_utils/test_selector.py compile-2.6!skip
-tests/unit/module_utils/test_selector.py compile-2.7!skip
-tests/unit/module_utils/test_selector.py compile-3.5!skip
-tests/unit/module_utils/test_apply.py compile-2.6!skip
-tests/unit/module_utils/test_apply.py compile-2.7!skip
-tests/unit/module_utils/test_apply.py compile-3.5!skip
-tests/unit/module_utils/test_runner.py compile-2.6!skip
-tests/unit/module_utils/test_runner.py compile-2.7!skip
-tests/unit/module_utils/test_runner.py compile-3.5!skip
-tests/unit/module_utils/test_client.py compile-2.6!skip
-tests/unit/module_utils/test_client.py compile-2.7!skip
-tests/unit/module_utils/test_client.py compile-3.5!skip
-tests/unit/module_utils/test_core.py compile-2.6!skip
-tests/unit/module_utils/test_core.py compile-2.7!skip
-tests/unit/module_utils/test_core.py compile-3.5!skip
-tests/unit/modules/test_helm_template_module.py compile-2.6!skip
-tests/unit/modules/test_helm_template_module.py compile-2.7!skip
-tests/unit/modules/test_helm_template_module.py compile-3.5!skip
-tests/unit/modules/test_helm_template.py compile-2.6!skip
-tests/unit/modules/test_helm_template.py compile-2.7!skip
-tests/unit/modules/test_helm_template.py compile-3.5!skip
-tests/unit/modules/test_module_helm.py compile-2.6!skip
-tests/unit/modules/test_module_helm.py compile-2.7!skip
-tests/unit/modules/test_module_helm.py compile-3.5!skip
-tests/unit/action/test_remove_omit.py compile-2.6!skip
-tests/unit/action/test_remove_omit.py compile-2.7!skip
-tests/unit/action/test_remove_omit.py compile-3.5!skip
-tests/integration/targets/k8s_copy/library/k8s_create_file.py compile-2.6!skip
-tests/integration/targets/k8s_copy/library/k8s_create_file.py compile-2.7!skip
-tests/integration/targets/k8s_copy/library/k8s_create_file.py compile-3.5!skip
-tests/integration/targets/k8s_copy/library/kubectl_file_compare.py compile-2.6!skip
-tests/integration/targets/k8s_copy/library/kubectl_file_compare.py compile-2.7!skip
-tests/integration/targets/k8s_copy/library/kubectl_file_compare.py compile-3.5!skip
-tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentials.py compile-2.6!skip
-tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentials.py compile-2.7!skip
-tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentials.py compile-3.5!skip
-tests/integration/targets/helm/library/helm_test_version.py compile-2.6!skip
-tests/integration/targets/helm/library/helm_test_version.py compile-2.7!skip
-tests/integration/targets/helm/library/helm_test_version.py compile-3.5!skip
-plugins/modules/k8s_scale.py pylint!skip
-plugins/modules/helm_template.py pylint!skip
-plugins/modules/k8s_exec.py pylint!skip
-plugins/modules/helm.py pylint!skip
-plugins/modules/helm_plugin_info.py pylint!skip
-plugins/modules/helm_info.py pylint!skip
-plugins/modules/helm_repository.py pylint!skip
-plugins/modules/k8s_rollback.py pylint!skip
-plugins/modules/k8s_log.py pylint!skip
-plugins/modules/k8s_drain.py pylint!skip
-plugins/modules/helm_plugin.py pylint!skip
-plugins/modules/k8s_taint.py pylint!skip
-plugins/modules/k8s.py pylint!skip
-plugins/modules/k8s_service.py pylint!skip
-plugins/modules/k8s_cluster_info.py pylint!skip
-plugins/modules/k8s_info.py pylint!skip
-plugins/modules/k8s_cp.py pylint!skip
-plugins/modules/__init__.py pylint!skip
-plugins/modules/k8s_json_patch.py pylint!skip
-plugins/module_utils/helm.py pylint!skip
-plugins/module_utils/apply.py pylint!skip
-plugins/module_utils/hashes.py pylint!skip
-plugins/module_utils/helm_args_common.py pylint!skip
-plugins/module_utils/version.py pylint!skip
-plugins/module_utils/_version.py pylint!skip
-plugins/module_utils/copy.py pylint!skip
-plugins/module_utils/args_common.py pylint!skip
-plugins/module_utils/__init__.py pylint!skip
-plugins/module_utils/selector.py pylint!skip
-plugins/module_utils/k8sdynamicclient.py pylint!skip
-plugins/module_utils/common.py pylint!skip
-plugins/module_utils/ansiblemodule.py pylint!skip
-plugins/module_utils/exceptions.py pylint!skip
-plugins/module_utils/client/resource.py pylint!skip
-plugins/module_utils/client/discovery.py pylint!skip
-plugins/module_utils/k8s/resource.py pylint!skip
-plugins/module_utils/k8s/core.py pylint!skip
-plugins/module_utils/k8s/waiter.py pylint!skip
-plugins/module_utils/k8s/client.py pylint!skip
-plugins/module_utils/k8s/runner.py pylint!skip
-plugins/module_utils/k8s/service.py pylint!skip
-plugins/module_utils/k8s/exceptions.py pylint!skip
-tests/integration/targets/k8s_copy/library/k8s_create_file.py pylint!skip
-tests/integration/targets/k8s_copy/library/kubectl_file_compare.py pylint!skip
-tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentials.py pylint!skip
-tests/integration/targets/helm/library/helm_test_version.py pylint!skip
-tests/unit/conftest.py pylint!skip
-tests/unit/utils/ansible_module_mock.py pylint!skip
-tests/unit/module_utils/test_helm.py pylint!skip
-tests/unit/module_utils/test_marshal.py pylint!skip
-tests/unit/module_utils/test_discoverer.py pylint!skip
-tests/unit/module_utils/test_hashes.py pylint!skip
-tests/unit/module_utils/test_resource.py pylint!skip
-tests/unit/module_utils/test_service.py pylint!skip
-tests/unit/module_utils/test_waiter.py pylint!skip
-tests/unit/module_utils/test_common.py pylint!skip
-tests/unit/module_utils/test_selector.py pylint!skip
-tests/unit/module_utils/test_apply.py pylint!skip
-tests/unit/module_utils/test_runner.py pylint!skip
-tests/unit/module_utils/test_client.py pylint!skip
-tests/unit/module_utils/test_core.py pylint!skip
-tests/unit/modules/test_helm_template_module.py pylint!skip
-tests/unit/modules/test_helm_template.py pylint!skip
-tests/unit/modules/test_module_helm.py pylint!skip
-tests/unit/action/test_remove_omit.py pylint!skip
-plugins/modules/k8s.py validate-modules!skip
-plugins/modules/k8s_cp.py validate-modules!skip
-plugins/modules/k8s_drain.py validate-modules!skip
-plugins/modules/k8s_exec.py validate-modules!skip
-plugins/modules/k8s_info.py validate-modules!skip
-plugins/modules/k8s_json_patch.py validate-modules!skip
-plugins/modules/k8s_log.py validate-modules!skip
-plugins/modules/k8s_rollback.py validate-modules!skip
-plugins/modules/k8s_scale.py validate-modules!skip
-plugins/modules/k8s_service.py validate-modules!skip
-plugins/modules/k8s_taint.py validate-modules!skip
diff --git a/ansible_collections/kubernetes/core/tests/unit/action/test_remove_omit.py b/ansible_collections/kubernetes/core/tests/unit/action/test_remove_omit.py
index 3432c19f9..e8206a440 100644
--- a/ansible_collections/kubernetes/core/tests/unit/action/test_remove_omit.py
+++ b/ansible_collections/kubernetes/core/tests/unit/action/test_remove_omit.py
@@ -7,6 +7,7 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
from datetime import datetime
+
from ansible_collections.kubernetes.core.plugins.action.k8s_info import RemoveOmit
diff --git a/ansible_collections/kubernetes/core/tests/unit/conftest.py b/ansible_collections/kubernetes/core/tests/unit/conftest.py
index 20615adb0..63eca8b57 100644
--- a/ansible_collections/kubernetes/core/tests/unit/conftest.py
+++ b/ansible_collections/kubernetes/core/tests/unit/conftest.py
@@ -6,12 +6,11 @@ import json
import sys
from io import BytesIO
-import pytest
-
import ansible.module_utils.basic
-from ansible.module_utils.six import string_types
+import pytest
from ansible.module_utils._text import to_bytes
from ansible.module_utils.common._collections_compat import MutableMapping
+from ansible.module_utils.six import string_types
@pytest.fixture
diff --git a/ansible_collections/kubernetes/core/tests/unit/module_utils/test_apply.py b/ansible_collections/kubernetes/core/tests/unit/module_utils/test_apply.py
index 07986007b..3dd116108 100644
--- a/ansible_collections/kubernetes/core/tests/unit/module_utils/test_apply.py
+++ b/ansible_collections/kubernetes/core/tests/unit/module_utils/test_apply.py
@@ -18,8 +18,8 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
from ansible_collections.kubernetes.core.plugins.module_utils.apply import (
- merge,
apply_patch,
+ merge,
)
tests = [
diff --git a/ansible_collections/kubernetes/core/tests/unit/module_utils/test_client.py b/ansible_collections/kubernetes/core/tests/unit/module_utils/test_client.py
index bba03589e..d3fec2299 100644
--- a/ansible_collections/kubernetes/core/tests/unit/module_utils/test_client.py
+++ b/ansible_collections/kubernetes/core/tests/unit/module_utils/test_client.py
@@ -1,14 +1,14 @@
-import os
import base64
+import os
import tempfile
-import yaml
-import mock
-from mock import MagicMock
+import mock
+import yaml
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.client import (
_create_auth_spec,
_create_configuration,
)
+from mock import MagicMock
TEST_HOST = "test-host"
TEST_SSL_HOST = "https://test-host"
diff --git a/ansible_collections/kubernetes/core/tests/unit/module_utils/test_core.py b/ansible_collections/kubernetes/core/tests/unit/module_utils/test_core.py
index 189f1f950..a49ea12cc 100644
--- a/ansible_collections/kubernetes/core/tests/unit/module_utils/test_core.py
+++ b/ansible_collections/kubernetes/core/tests/unit/module_utils/test_core.py
@@ -6,12 +6,11 @@ import json
import kubernetes
import pytest
-
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.core import (
AnsibleK8SModule,
)
-MINIMAL_K8S_VERSION = "12.0.0"
+MINIMAL_K8S_VERSION = "24.2.0"
UNSUPPORTED_K8S_VERSION = "11.0.0"
@@ -50,9 +49,9 @@ def test_warn_on_k8s_version(monkeypatch, stdin, capfd):
dependencies = [
- ["18.20.0", "12.0.1", False],
- ["18.20.0", "18.20.0", True],
- ["12.0.1", "18.20.0", True],
+ ["28.20.0", "24.2.1", False],
+ ["28.20.0", "28.20.0", True],
+ ["24.2.1", "28.20.0", True],
]
@@ -68,7 +67,7 @@ def test_has_at_least(monkeypatch, stdin, desired, actual, result, capfd):
dependencies = [
- ["kubernetes", "18.20.0", "(kubernetes>=18.20.0)"],
+ ["kubernetes", "28.20.0", "(kubernetes>=28.20.0)"],
["foobar", "1.0.0", "(foobar>=1.0.0)"],
["foobar", None, "(foobar)"],
]
@@ -80,7 +79,7 @@ dependencies = [
def test_requires_fails_with_message(
monkeypatch, stdin, dependency, version, msg, capfd
):
- monkeypatch.setattr(kubernetes, "__version__", "12.0.0")
+ monkeypatch.setattr(kubernetes, "__version__", "24.2.0")
module = AnsibleK8SModule(argument_spec={})
with pytest.raises(SystemExit):
module.requires(dependency, version)
diff --git a/ansible_collections/kubernetes/core/tests/unit/module_utils/test_discoverer.py b/ansible_collections/kubernetes/core/tests/unit/module_utils/test_discoverer.py
index b23a7a9aa..618b0cb08 100644
--- a/ansible_collections/kubernetes/core/tests/unit/module_utils/test_discoverer.py
+++ b/ansible_collections/kubernetes/core/tests/unit/module_utils/test_discoverer.py
@@ -14,19 +14,17 @@
import pytest
-
-from kubernetes.client import ApiClient
-from kubernetes.dynamic import Resource
-
-from ansible_collections.kubernetes.core.plugins.module_utils.k8sdynamicclient import (
- K8SDynamicClient,
-)
from ansible_collections.kubernetes.core.plugins.module_utils.client.discovery import (
LazyDiscoverer,
)
from ansible_collections.kubernetes.core.plugins.module_utils.client.resource import (
ResourceList,
)
+from ansible_collections.kubernetes.core.plugins.module_utils.k8sdynamicclient import (
+ K8SDynamicClient,
+)
+from kubernetes.client import ApiClient
+from kubernetes.dynamic import Resource
@pytest.fixture(scope="module")
diff --git a/ansible_collections/kubernetes/core/tests/unit/module_utils/test_helm.py b/ansible_collections/kubernetes/core/tests/unit/module_utils/test_helm.py
index de2c1569d..5db0a017c 100644
--- a/ansible_collections/kubernetes/core/tests/unit/module_utils/test_helm.py
+++ b/ansible_collections/kubernetes/core/tests/unit/module_utils/test_helm.py
@@ -7,22 +7,21 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
import os.path
-import yaml
+import random
+import string
import tempfile
-import pytest
-
+from unittest.mock import MagicMock
+import pytest
+import yaml
from ansible_collections.kubernetes.core.plugins.module_utils.helm import (
AnsibleHelmModule,
write_temp_kubeconfig,
)
-from unittest.mock import MagicMock
-import random
-import string
@pytest.fixture()
-def ansible_helm_module():
+def _ansible_helm_module():
module = MagicMock()
module.params = {
"api_key": None,
@@ -114,7 +113,6 @@ def test_write_temp_kubeconfig_with_kubeconfig():
def test_module_get_helm_binary_from_params():
-
helm_binary_path = MagicMock()
helm_sys_binary_path = MagicMock()
@@ -129,7 +127,6 @@ def test_module_get_helm_binary_from_params():
def test_module_get_helm_binary_from_system():
-
helm_sys_binary_path = MagicMock()
module = MagicMock()
module.params = {}
@@ -139,31 +136,29 @@ def test_module_get_helm_binary_from_system():
assert helm_module.get_helm_binary() == helm_sys_binary_path
-def test_module_get_helm_plugin_list(ansible_helm_module):
-
- ansible_helm_module.run_helm_command = MagicMock()
- ansible_helm_module.run_helm_command.return_value = (0, "output", "error")
+def test_module_get_helm_plugin_list(_ansible_helm_module):
+ _ansible_helm_module.run_helm_command = MagicMock()
+ _ansible_helm_module.run_helm_command.return_value = (0, "output", "error")
- rc, out, err, command = ansible_helm_module.get_helm_plugin_list()
+ rc, out, err, command = _ansible_helm_module.get_helm_plugin_list()
assert (rc, out, err) == (0, "output", "error")
assert command == "some/path/to/helm/executable plugin list"
- ansible_helm_module.get_helm_binary.assert_called_once()
- ansible_helm_module.run_helm_command.assert_called_once_with(
+ _ansible_helm_module.get_helm_binary.assert_called_once()
+ _ansible_helm_module.run_helm_command.assert_called_once_with(
"some/path/to/helm/executable plugin list"
)
-def test_module_get_helm_plugin_list_failure(ansible_helm_module):
-
- ansible_helm_module.run_helm_command = MagicMock()
- ansible_helm_module.run_helm_command.return_value = (-1, "output", "error")
+def test_module_get_helm_plugin_list_failure(_ansible_helm_module):
+ _ansible_helm_module.run_helm_command = MagicMock()
+ _ansible_helm_module.run_helm_command.return_value = (-1, "output", "error")
with pytest.raises(SystemExit):
- ansible_helm_module.get_helm_plugin_list()
+ _ansible_helm_module.get_helm_plugin_list()
- ansible_helm_module.fail_json.assert_called_once_with(
+ _ansible_helm_module.fail_json.assert_called_once_with(
msg="Failed to get Helm plugin info",
command="some/path/to/helm/executable plugin list",
stdout="output",
@@ -174,8 +169,7 @@ def test_module_get_helm_plugin_list_failure(ansible_helm_module):
@pytest.mark.parametrize("no_values", [True, False])
@pytest.mark.parametrize("get_all", [True, False])
-def test_module_get_values(ansible_helm_module, no_values, get_all):
-
+def test_module_get_values(_ansible_helm_module, no_values, get_all):
expected = {"test": "units"}
output = "---\ntest: units\n"
@@ -183,19 +177,19 @@ def test_module_get_values(ansible_helm_module, no_values, get_all):
expected = {}
output = "null"
- ansible_helm_module.run_helm_command = MagicMock()
- ansible_helm_module.run_helm_command.return_value = (0, output, "error")
+ _ansible_helm_module.run_helm_command = MagicMock()
+ _ansible_helm_module.run_helm_command.return_value = (0, output, "error")
release_name = "".join(
random.choice(string.ascii_letters + string.digits) for x in range(10)
)
- result = ansible_helm_module.get_values(release_name, get_all=get_all)
+ result = _ansible_helm_module.get_values(release_name, get_all=get_all)
- ansible_helm_module.get_helm_binary.assert_called_once()
+ _ansible_helm_module.get_helm_binary.assert_called_once()
command = f"some/path/to/helm/executable get values --output=yaml {release_name}"
if get_all:
command += " -a"
- ansible_helm_module.run_helm_command.assert_called_once_with(command)
+ _ansible_helm_module.run_helm_command.assert_called_once_with(command)
assert result == expected
@@ -210,21 +204,19 @@ def test_module_get_values(ansible_helm_module, no_values, get_all):
('Client: &version.Version{SemVer:"v3.12.3"', None),
],
)
-def test_module_get_helm_version(ansible_helm_module, output, expected):
-
- ansible_helm_module.run_command = MagicMock()
- ansible_helm_module.run_command.return_value = (0, output, "error")
+def test_module_get_helm_version(_ansible_helm_module, output, expected):
+ _ansible_helm_module.run_command = MagicMock()
+ _ansible_helm_module.run_command.return_value = (0, output, "error")
- result = ansible_helm_module.get_helm_version()
+ result = _ansible_helm_module.get_helm_version()
- ansible_helm_module.get_helm_binary.assert_called_once()
+ _ansible_helm_module.get_helm_binary.assert_called_once()
command = "some/path/to/helm/executable version"
- ansible_helm_module.run_command.assert_called_once_with(command)
+ _ansible_helm_module.run_command.assert_called_once_with(command)
assert result == expected
-def test_module_run_helm_command(ansible_helm_module):
-
+def test_module_run_helm_command(_ansible_helm_module):
error = "".join(
random.choice(string.ascii_letters + string.digits) for x in range(10)
)
@@ -232,27 +224,26 @@ def test_module_run_helm_command(ansible_helm_module):
random.choice(string.ascii_letters + string.digits) for x in range(10)
)
- ansible_helm_module.run_command.return_value = (0, output, error)
+ _ansible_helm_module.run_command.return_value = (0, output, error)
- ansible_helm_module._prepare_helm_environment = MagicMock()
+ _ansible_helm_module._prepare_helm_environment = MagicMock()
env_update = {x: random.choice(string.ascii_letters) for x in range(10)}
- ansible_helm_module._prepare_helm_environment.return_value = env_update
+ _ansible_helm_module._prepare_helm_environment.return_value = env_update
command = "".join(
random.choice(string.ascii_letters + string.digits) for x in range(10)
)
- rc, out, err = ansible_helm_module.run_helm_command(command)
+ rc, out, err = _ansible_helm_module.run_helm_command(command)
assert (rc, out, err) == (0, output, error)
- ansible_helm_module.run_command.assert_called_once_with(
+ _ansible_helm_module.run_command.assert_called_once_with(
command, environ_update=env_update
)
@pytest.mark.parametrize("fails_on_error", [True, False])
-def test_module_run_helm_command_failure(ansible_helm_module, fails_on_error):
-
+def test_module_run_helm_command_failure(_ansible_helm_module, fails_on_error):
error = "".join(
random.choice(string.ascii_letters + string.digits) for x in range(10)
)
@@ -260,9 +251,9 @@ def test_module_run_helm_command_failure(ansible_helm_module, fails_on_error):
random.choice(string.ascii_letters + string.digits) for x in range(10)
)
return_code = random.randint(1, 10)
- ansible_helm_module.run_command.return_value = (return_code, output, error)
+ _ansible_helm_module.run_command.return_value = (return_code, output, error)
- ansible_helm_module._prepare_environment = MagicMock()
+ _ansible_helm_module._prepare_environment = MagicMock()
command = "".join(
random.choice(string.ascii_letters + string.digits) for x in range(10)
@@ -270,10 +261,10 @@ def test_module_run_helm_command_failure(ansible_helm_module, fails_on_error):
if fails_on_error:
with pytest.raises(SystemExit):
- rc, out, err = ansible_helm_module.run_helm_command(
+ rc, out, err = _ansible_helm_module.run_helm_command(
command, fails_on_error=fails_on_error
)
- ansible_helm_module.fail_json.assert_called_with(
+ _ansible_helm_module.fail_json.assert_called_with(
msg="Failure when executing Helm command. Exited {0}.\nstdout: {1}\nstderr: {2}".format(
return_code, output, error
),
@@ -282,7 +273,7 @@ def test_module_run_helm_command_failure(ansible_helm_module, fails_on_error):
command=command,
)
else:
- rc, out, err = ansible_helm_module.run_helm_command(
+ rc, out, err = _ansible_helm_module.run_helm_command(
command, fails_on_error=fails_on_error
)
assert (rc, out, err) == (return_code, output, error)
@@ -311,7 +302,6 @@ def test_module_run_helm_command_failure(ansible_helm_module, fails_on_error):
],
)
def test_module_prepare_helm_environment(params, env_update, kubeconfig):
-
module = MagicMock()
module.params = params
@@ -355,7 +345,6 @@ def test_module_prepare_helm_environment(params, env_update, kubeconfig):
def test_module_prepare_helm_environment_with_validate_certs(
helm_version, is_env_var_set
):
-
module = MagicMock()
module.params = {"validate_certs": False}
@@ -387,7 +376,6 @@ def test_module_prepare_helm_environment_with_validate_certs(
],
)
def test_module_prepare_helm_environment_with_ca_cert(helm_version, is_env_var_set):
-
ca_cert = "".join(
random.choice(string.ascii_letters + string.digits) for i in range(50)
)
@@ -441,7 +429,6 @@ def test_module_prepare_helm_environment_with_ca_cert(helm_version, is_env_var_s
],
)
def test_module_get_helm_set_values_args(set_values, expected):
-
module = MagicMock()
module.params = {}
module.fail_json.side_effect = SystemExit(1)
diff --git a/ansible_collections/kubernetes/core/tests/unit/module_utils/test_runner.py b/ansible_collections/kubernetes/core/tests/unit/module_utils/test_runner.py
index 45c6f29aa..a0555c411 100644
--- a/ansible_collections/kubernetes/core/tests/unit/module_utils/test_runner.py
+++ b/ansible_collections/kubernetes/core/tests/unit/module_utils/test_runner.py
@@ -1,12 +1,11 @@
-import pytest
from copy import deepcopy
from unittest.mock import Mock
-from kubernetes.dynamic.resource import ResourceInstance
-
+import pytest
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.runner import (
perform_action,
)
+from kubernetes.dynamic.resource import ResourceInstance
definition = {
"apiVersion": "v1",
diff --git a/ansible_collections/kubernetes/core/tests/unit/module_utils/test_service.py b/ansible_collections/kubernetes/core/tests/unit/module_utils/test_service.py
index a1822de61..980336176 100644
--- a/ansible_collections/kubernetes/core/tests/unit/module_utils/test_service.py
+++ b/ansible_collections/kubernetes/core/tests/unit/module_utils/test_service.py
@@ -1,14 +1,12 @@
from unittest.mock import Mock
import pytest
-from kubernetes.dynamic.resource import ResourceInstance, Resource
-
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.service import (
K8sService,
diff_objects,
)
-
from kubernetes.dynamic.exceptions import NotFoundError
+from kubernetes.dynamic.resource import Resource, ResourceInstance
pod_definition = {
"apiVersion": "v1",
diff --git a/ansible_collections/kubernetes/core/tests/unit/module_utils/test_waiter.py b/ansible_collections/kubernetes/core/tests/unit/module_utils/test_waiter.py
index b5ce10a51..e63019ec7 100644
--- a/ansible_collections/kubernetes/core/tests/unit/module_utils/test_waiter.py
+++ b/ansible_collections/kubernetes/core/tests/unit/module_utils/test_waiter.py
@@ -5,20 +5,19 @@ from unittest.mock import Mock
import pytest
import yaml
-from kubernetes.dynamic.resource import ResourceInstance
-from kubernetes.dynamic.exceptions import NotFoundError
-
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.waiter import (
+ DummyWaiter,
+ Waiter,
clock,
custom_condition,
deployment_ready,
- DummyWaiter,
exists,
get_waiter,
pod_ready,
resource_absent,
- Waiter,
)
+from kubernetes.dynamic.exceptions import NotFoundError
+from kubernetes.dynamic.resource import ResourceInstance
def resources(filepath):
diff --git a/ansible_collections/kubernetes/core/tests/unit/modules/test_helm_template_module.py b/ansible_collections/kubernetes/core/tests/unit/modules/test_helm_template_module.py
index 9fd98e4c8..0ff6ad016 100644
--- a/ansible_collections/kubernetes/core/tests/unit/modules/test_helm_template_module.py
+++ b/ansible_collections/kubernetes/core/tests/unit/modules/test_helm_template_module.py
@@ -7,14 +7,13 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
import unittest
-
from unittest.mock import patch
from ansible.module_utils import basic
from ansible_collections.kubernetes.core.plugins.modules import helm_template
from ansible_collections.kubernetes.core.tests.unit.utils.ansible_module_mock import (
- AnsibleFailJson,
AnsibleExitJson,
+ AnsibleFailJson,
exit_json,
fail_json,
get_bin_path,
diff --git a/ansible_collections/kubernetes/core/tests/unit/modules/test_module_helm.py b/ansible_collections/kubernetes/core/tests/unit/modules/test_module_helm.py
index ca61cf3ef..199bd828f 100644
--- a/ansible_collections/kubernetes/core/tests/unit/modules/test_module_helm.py
+++ b/ansible_collections/kubernetes/core/tests/unit/modules/test_module_helm.py
@@ -7,14 +7,13 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
import unittest
-
-from unittest.mock import MagicMock, patch, call
+from unittest.mock import MagicMock, call, patch
from ansible.module_utils import basic
from ansible_collections.kubernetes.core.plugins.modules import helm
from ansible_collections.kubernetes.core.tests.unit.utils.ansible_module_mock import (
- AnsibleFailJson,
AnsibleExitJson,
+ AnsibleFailJson,
exit_json,
fail_json,
get_bin_path,
@@ -87,12 +86,12 @@ class TestDependencyUpdateWithoutChartRepoUrlOption(unittest.TestCase):
helm.main()
helm.run_dep_update.assert_not_called()
mock_run_command.assert_called_once_with(
- "/usr/bin/helm upgrade -i --reset-values test /tmp/path",
+ "/usr/bin/helm upgrade -i --reset-values test '/tmp/path'",
environ_update={"HELM_NAMESPACE": "test"},
)
assert (
result.exception.args[0]["command"]
- == "/usr/bin/helm upgrade -i --reset-values test /tmp/path"
+ == "/usr/bin/helm upgrade -i --reset-values test '/tmp/path'"
)
def test_dependency_update_option_false(self):
@@ -117,12 +116,12 @@ class TestDependencyUpdateWithoutChartRepoUrlOption(unittest.TestCase):
helm.main()
helm.run_dep_update.assert_not_called()
mock_run_command.assert_called_once_with(
- "/usr/bin/helm upgrade -i --reset-values test /tmp/path",
+ "/usr/bin/helm upgrade -i --reset-values test '/tmp/path'",
environ_update={"HELM_NAMESPACE": "test"},
)
assert (
result.exception.args[0]["command"]
- == "/usr/bin/helm upgrade -i --reset-values test /tmp/path"
+ == "/usr/bin/helm upgrade -i --reset-values test '/tmp/path'"
)
def test_dependency_update_option_true(self):
@@ -146,14 +145,14 @@ class TestDependencyUpdateWithoutChartRepoUrlOption(unittest.TestCase):
mock_run_command.assert_has_calls(
[
call(
- "/usr/bin/helm upgrade -i --reset-values test /tmp/path",
+ "/usr/bin/helm upgrade -i --reset-values test '/tmp/path'",
environ_update={"HELM_NAMESPACE": "test"},
)
]
)
assert (
result.exception.args[0]["command"]
- == "/usr/bin/helm upgrade -i --reset-values test /tmp/path"
+ == "/usr/bin/helm upgrade -i --reset-values test '/tmp/path'"
)
def test_dependency_update_option_true_without_dependencies_block(self):
@@ -180,14 +179,14 @@ class TestDependencyUpdateWithoutChartRepoUrlOption(unittest.TestCase):
mock_run_command.assert_has_calls(
[
call(
- "/usr/bin/helm upgrade -i --reset-values test /tmp/path",
+ "/usr/bin/helm upgrade -i --reset-values test '/tmp/path'",
environ_update={"HELM_NAMESPACE": "test"},
)
]
)
assert (
result.exception.args[0]["command"]
- == "/usr/bin/helm upgrade -i --reset-values test /tmp/path"
+ == "/usr/bin/helm upgrade -i --reset-values test '/tmp/path'"
)
@@ -250,12 +249,12 @@ class TestDependencyUpdateWithChartRepoUrlOption(unittest.TestCase):
with self.assertRaises(AnsibleExitJson) as result:
helm.main()
mock_run_command.assert_called_once_with(
- "/usr/bin/helm --repo=http://repo.example/charts upgrade -i --reset-values test chart1",
+ "/usr/bin/helm --repo=http://repo.example/charts upgrade -i --reset-values test 'chart1'",
environ_update={"HELM_NAMESPACE": "test"},
)
assert (
result.exception.args[0]["command"]
- == "/usr/bin/helm --repo=http://repo.example/charts upgrade -i --reset-values test chart1"
+ == "/usr/bin/helm --repo=http://repo.example/charts upgrade -i --reset-values test 'chart1'"
)
def test_dependency_update_option_False(self):
@@ -279,12 +278,12 @@ class TestDependencyUpdateWithChartRepoUrlOption(unittest.TestCase):
with self.assertRaises(AnsibleExitJson) as result:
helm.main()
mock_run_command.assert_called_once_with(
- "/usr/bin/helm --repo=http://repo.example/charts upgrade -i --reset-values test chart1",
+ "/usr/bin/helm --repo=http://repo.example/charts upgrade -i --reset-values test 'chart1'",
environ_update={"HELM_NAMESPACE": "test"},
)
assert (
result.exception.args[0]["command"]
- == "/usr/bin/helm --repo=http://repo.example/charts upgrade -i --reset-values test chart1"
+ == "/usr/bin/helm --repo=http://repo.example/charts upgrade -i --reset-values test 'chart1'"
)
def test_dependency_update_option_True_and_replace_option_disabled(self):
@@ -337,12 +336,12 @@ class TestDependencyUpdateWithChartRepoUrlOption(unittest.TestCase):
with self.assertRaises(AnsibleExitJson) as result:
helm.main()
mock_run_command.assert_called_once_with(
- "/usr/bin/helm --repo=http://repo.example/charts install --dependency-update --replace test chart1",
+ "/usr/bin/helm --repo=http://repo.example/charts install --dependency-update --replace test 'chart1'",
environ_update={"HELM_NAMESPACE": "test"},
)
assert (
result.exception.args[0]["command"]
- == "/usr/bin/helm --repo=http://repo.example/charts install --dependency-update --replace test chart1"
+ == "/usr/bin/helm --repo=http://repo.example/charts install --dependency-update --replace test 'chart1'"
)
@@ -404,12 +403,12 @@ class TestDependencyUpdateWithChartRefIsUrl(unittest.TestCase):
with self.assertRaises(AnsibleExitJson) as result:
helm.main()
mock_run_command.assert_called_once_with(
- "/usr/bin/helm upgrade -i --reset-values test http://repo.example/charts/application.tgz",
+ "/usr/bin/helm upgrade -i --reset-values test 'http://repo.example/charts/application.tgz'",
environ_update={"HELM_NAMESPACE": "test"},
)
assert (
result.exception.args[0]["command"]
- == "/usr/bin/helm upgrade -i --reset-values test http://repo.example/charts/application.tgz"
+ == "/usr/bin/helm upgrade -i --reset-values test 'http://repo.example/charts/application.tgz'"
)
def test_dependency_update_option_False(self):
@@ -432,12 +431,12 @@ class TestDependencyUpdateWithChartRefIsUrl(unittest.TestCase):
with self.assertRaises(AnsibleExitJson) as result:
helm.main()
mock_run_command.assert_called_once_with(
- "/usr/bin/helm upgrade -i --reset-values test http://repo.example/charts/application.tgz",
+ "/usr/bin/helm upgrade -i --reset-values test 'http://repo.example/charts/application.tgz'",
environ_update={"HELM_NAMESPACE": "test"},
)
assert (
result.exception.args[0]["command"]
- == "/usr/bin/helm upgrade -i --reset-values test http://repo.example/charts/application.tgz"
+ == "/usr/bin/helm upgrade -i --reset-values test 'http://repo.example/charts/application.tgz'"
)
def test_dependency_update_option_True_and_replace_option_disabled(self):
@@ -488,10 +487,10 @@ class TestDependencyUpdateWithChartRefIsUrl(unittest.TestCase):
with self.assertRaises(AnsibleExitJson) as result:
helm.main()
mock_run_command.assert_called_once_with(
- "/usr/bin/helm install --dependency-update --replace test http://repo.example/charts/application.tgz",
+ "/usr/bin/helm install --dependency-update --replace test 'http://repo.example/charts/application.tgz'",
environ_update={"HELM_NAMESPACE": "test"},
)
assert (
result.exception.args[0]["command"]
- == "/usr/bin/helm install --dependency-update --replace test http://repo.example/charts/application.tgz"
+ == "/usr/bin/helm install --dependency-update --replace test 'http://repo.example/charts/application.tgz'"
)
diff --git a/ansible_collections/kubernetes/core/tox.ini b/ansible_collections/kubernetes/core/tox.ini
index 491046ec3..e2d15b071 100644
--- a/ansible_collections/kubernetes/core/tox.ini
+++ b/ansible_collections/kubernetes/core/tox.ini
@@ -2,6 +2,9 @@
minversion = 1.4.2
skipsdist = True
+[common]
+format_dirs = {toxinidir}/plugins {toxinidir}/tests
+
[testenv:integration]
install_command = pip install {opts} {packages}
@@ -19,20 +22,41 @@ commands=
deps = git+https://github.com/ansible-network/collection_prep
commands = collection_prep_add_docs -p .
-[testenv:black]
+[testenv:black_check]
deps =
black >= 22.0, < 23.0
commands =
black -v --check --diff {toxinidir}/plugins {toxinidir}/tests
+[testenv:black]
+depends =
+ flynt, isort
+deps =
+ black >=23.0, <24.0
+commands =
+ black -v {[common]format_dirs}
+
+[testenv:isort]
+deps =
+ isort
+commands =
+ isort --profile black {[common]format_dirs}
+
+[testenv:flynt]
+deps =
+ flynt
+commands =
+ flynt {[common]format_dirs}
+
[testenv:linters]
deps =
- yamllint
- flake8
{[testenv:black]deps}
-
+ {[testenv:isort]deps}
+ flake8
+ yamllint
commands =
- black -v --check --diff {toxinidir}/plugins {toxinidir}/tests
+ black -v --check {toxinidir}/plugins {toxinidir}/tests
+ isort --profile black --check-only --diff {toxinidir}/plugins {toxinidir}/tests
+ flake8 {posargs} {toxinidir}/plugins {toxinidir}/tests
yamllint -s {toxinidir}
- flake8 {toxinidir}