Compare commits

1 Commits
5.0.0 ... 3.0.0

Author SHA1 Message Date
GomathiselviS
e756cedf33 Prepare for release 3.0.0 (#662)
Prepare for release 3.0.0

SUMMARY



Updated version to 3.0.0
Executed antsibull-changelog to generate changelog

ISSUE TYPE


Docs Pull Request

COMPONENT NAME

ADDITIONAL INFORMATION

Reviewed-by: Alina Buzachis
Reviewed-by: Helen Bailey <hebailey@redhat.com>
Reviewed-by: GomathiselviS
2023-11-17 21:52:11 +00:00
70 changed files with 3825 additions and 1171 deletions

View File

@@ -1,2 +0,0 @@
# no-changed-when is not requried for examples
plugins/connection/kubectl.py no-changed-when

View File

@@ -132,8 +132,6 @@ jobs:
- name: create kubernetes cluster - name: create kubernetes cluster
uses: helm/kind-action@v1.8.0 uses: helm/kind-action@v1.8.0
with:
node_image: "kindest/node:v1.29.2"
- name: Run integration tests - name: Run integration tests
uses: ansible-network/github_actions/.github/actions/ansible_test_integration@main uses: ansible-network/github_actions/.github/actions/ansible_test_integration@main

View File

@@ -21,4 +21,4 @@ jobs:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Run ansible-lint - name: Run ansible-lint
uses: ansible/ansible-lint@v24.2.3 uses: ansible/ansible-lint@v6.21.0

View File

@@ -4,92 +4,6 @@ Kubernetes Collection Release Notes
.. contents:: Topics .. contents:: Topics
v5.0.0
======
Release Summary
---------------
This major release drops support for ``ansible-core<2.15``.
Minor Changes
-------------
- inventory/k8s.py - Defer removal of k8s inventory plugin to version 6.0.0 (https://github.com/ansible-collections/kubernetes.core/pull/734).
Breaking Changes / Porting Guide
--------------------------------
- Remove support for ``ansible-core<2.15`` (https://github.com/ansible-collections/kubernetes.core/pull/737).
v4.0.0
======
Release Summary
---------------
This major release brings several bug fixes. We have also removed support for ``ansible-core<2.15`` and deprecated functions and class from ``module_utils/common.py``.
Minor Changes
-------------
- inventory/k8s.py - Defer removal of k8s inventory plugin to version 5.0 (https://github.com/ansible-collections/kubernetes.core/pull/723).
- k8s - The module and K8sService were changed so warnings returned by the K8S API are now displayed to the user.
Removed Features (previously deprecated)
----------------------------------------
- k8s - Support for ``merge_type=json`` has been removed in version 4.0.0. Please use ``kubernetes.core.k8s_json_patch`` instead (https://github.com/ansible-collections/kubernetes.core/pull/722).
- k8s_exec - the previously deprecated ``result.return_code`` return value has been removed, consider using ``result.rc`` instead (https://github.com/ansible-collections/kubernetes.core/pull/726).
- module_utils/common.py - the previously deprecated ``K8sAnsibleMixin`` class has been removed (https://github.com/ansible-collections/kubernetes.core/pull/726).
- module_utils/common.py - the previously deprecated ``configuration_digest()`` function has been removed (https://github.com/ansible-collections/kubernetes.core/pull/726).
- module_utils/common.py - the previously deprecated ``get_api_client()`` function has been removed (https://github.com/ansible-collections/kubernetes.core/pull/726).
- module_utils/common.py - the previously deprecated ``unique_string()`` function has been removed (https://github.com/ansible-collections/kubernetes.core/pull/726).
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).
- avoid unsafe conditions in integration tests (https://github.com/ansible-collections/kubernetes.core/pull/665).
- 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).
v3.1.0
======
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.
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).
v3.0.0 v3.0.0
====== ======

View File

@@ -1,5 +1,5 @@
# Also needs to be updated in galaxy.yml # Also needs to be updated in galaxy.yml
VERSION = 5.0.0 VERSION = 3.0.0
TEST_ARGS ?= "" TEST_ARGS ?= ""
PYTHON_VERSION ?= `python -c 'import platform; print(".".join(platform.python_version_tuple()[0:2]))'` PYTHON_VERSION ?= `python -c 'import platform; print(".".join(platform.python_version_tuple()[0:2]))'`

View File

@@ -9,7 +9,7 @@ The collection includes a variety of Ansible content to help automate the manage
<!--start requires_ansible--> <!--start requires_ansible-->
## Ansible version compatibility ## Ansible version compatibility
This collection has been tested against following Ansible versions: **>=2.15.0**. 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 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`). fully qualified collection name (for example, `cisco.ios.ios`).
@@ -93,7 +93,7 @@ You can also include it in a `requirements.yml` file and install it via `ansible
--- ---
collections: collections:
- name: kubernetes.core - name: kubernetes.core
version: 5.0.0 version: 3.0.0
``` ```
### Installing the Kubernetes Python Library ### Installing the Kubernetes Python Library

View File

@@ -814,98 +814,3 @@ releases:
- remove_ansible_2_13.yaml - remove_ansible_2_13.yaml
- update_supported_versions.yaml - update_supported_versions.yaml
release_date: '2023-11-17' 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).
- 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:
- 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'
4.0.0:
changes:
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).
- avoid unsafe conditions in integration tests (https://github.com/ansible-collections/kubernetes.core/pull/665).
- 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).
minor_changes:
- inventory/k8s.py - Defer removal of k8s inventory plugin to version 5.0 (https://github.com/ansible-collections/kubernetes.core/pull/723).
- k8s - The module and K8sService were changed so warnings returned by the K8S
API are now displayed to the user.
release_summary: This major release brings several bug fixes. We have also removed
support for ``ansible-core<2.15`` and deprecated functions and class from
``module_utils/common.py``.
removed_features:
- k8s - Support for ``merge_type=json`` has been removed in version 4.0.0. Please
use ``kubernetes.core.k8s_json_patch`` instead (https://github.com/ansible-collections/kubernetes.core/pull/722).
- k8s_exec - the previously deprecated ``result.return_code`` return value has
been removed, consider using ``result.rc`` instead (https://github.com/ansible-collections/kubernetes.core/pull/726).
- module_utils/common.py - the previously deprecated ``K8sAnsibleMixin`` class
has been removed (https://github.com/ansible-collections/kubernetes.core/pull/726).
- module_utils/common.py - the previously deprecated ``configuration_digest()``
function has been removed (https://github.com/ansible-collections/kubernetes.core/pull/726).
- module_utils/common.py - the previously deprecated ``get_api_client()`` function
has been removed (https://github.com/ansible-collections/kubernetes.core/pull/726).
- module_utils/common.py - the previously deprecated ``unique_string()`` function
has been removed (https://github.com/ansible-collections/kubernetes.core/pull/726).
fragments:
- 20231206-fix-unsafe-condition-in-integration.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
- 20240423-k8s-display-warnings-to-users.yml
- 4.0.0.yaml
- inventory-update_removal_date.yml
- k8s-merge_type-removed.yml
- module_utils-common-remove-deprecated-functions-and-class.yaml
release_date: '2024-05-24'
5.0.0:
changes:
breaking_changes:
- Remove support for ``ansible-core<2.15`` (https://github.com/ansible-collections/kubernetes.core/pull/737).
minor_changes:
- inventory/k8s.py - Defer removal of k8s inventory plugin to version 6.0.0
(https://github.com/ansible-collections/kubernetes.core/pull/734).
release_summary: This major release drops support for ``ansible-core<2.15``.
fragments:
- 20240530-ansible-core-support-update.yaml
- 20240530-defer-removal-and-ansible-core-support-update.yaml
- 5.0.0.yml
release_date: '2024-05-31'

View File

@@ -1,3 +0,0 @@
---
minor_changes:
- connection/kubectl.py - Added an example of using the kubectl connection plugin to the documentation (https://github.com/ansible-collections/kubernetes.core/pull/741).

View File

@@ -17,7 +17,7 @@ DEPRECATED
---------- ----------
:Removed in collection release after :Removed in collection release after
:Why: As discussed in https://github.com/ansible-collections/kubernetes.core/issues/31, we decided to :Why: As discussed in https://github.com/ansible-collections/kubernetes.core/issues/31, we decided to
remove the k8s inventory plugin in release 6.0.0. 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. :Alternative: Use :ref:`kubernetes.core.k8s_info <kubernetes.core.k8s_info_module>` and :ref:`ansible.builtin.add_host <ansible.builtin.add_host_module>` instead.
@@ -357,7 +357,7 @@ Status
------ ------
- This inventory will be removed in version 6.0.0. *[deprecated]* - This inventory will be removed in version 4.0.0. *[deprecated]*
- For more information see `DEPRECATED`_. - For more information see `DEPRECATED`_.

View File

@@ -121,7 +121,7 @@ Parameters
<td> <td>
<div><code>apply</code> compares the desired resource definition with the previously supplied resource definition, ignoring properties that are automatically generated</div> <div><code>apply</code> compares the desired resource definition with the previously supplied resource definition, ignoring properties that are automatically generated</div>
<div><code>apply</code> works better with Services than &#x27;force=yes&#x27;</div> <div><code>apply</code> works better with Services than &#x27;force=yes&#x27;</div>
<div>Mutually exclusive with <code>merge_type</code>.</div> <div>mutually exclusive with <code>merge_type</code></div>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -513,17 +513,18 @@ Parameters
</td> </td>
<td> <td>
<ul style="margin: 0; padding: 0"><b>Choices:</b> <ul style="margin: 0; padding: 0"><b>Choices:</b>
<li>json</li>
<li>merge</li> <li>merge</li>
<li>strategic-merge</li> <li>strategic-merge</li>
</ul> </ul>
</td> </td>
<td> <td>
<div>Whether to override the default patch merge approach with a specific type. By default, the strategic merge will typically be used.</div> <div>Whether to override the default patch merge approach with a specific type. By default, the strategic merge will typically be used.</div>
<div>For example, Custom Resource Definitions typically aren&#x27;t updatable by the usual strategic merge. You may want to use <code>merge</code> if you see &quot;strategic merge patch format is not supported&quot;.</div> <div>For example, Custom Resource Definitions typically aren&#x27;t updatable by the usual strategic merge. You may want to use <code>merge</code> if you see &quot;strategic merge patch format is not supported&quot;</div>
<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>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>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>mutually exclusive with <code>apply</code></div>
<div><em>merge_type=json</em> has been removed in version 4.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 3.0.0. Please use <span class='module'>kubernetes.core.k8s_json_patch</span> instead.</div>
</td> </td>
</tr> </tr>
<tr> <tr>

View File

@@ -211,27 +211,6 @@ Parameters
<div>The configuration can be provided as dictionary. Added in version 2.4.0.</div> <div>The configuration can be provided as dictionary. Added in version 2.4.0.</div>
</td> </td>
</tr> </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> <tr>
<td colspan="1"> <td colspan="1">
<div class="ansibleOptionAnchor" id="parameter-"></div> <div class="ansibleOptionAnchor" id="parameter-"></div>
@@ -365,82 +344,6 @@ Parameters
Examples
--------
.. code-block:: yaml
- name: Run a command in a pod using local kubectl with kubeconfig file ~/.kube/config
hosts: localhost
gather_facts: no
vars:
ansible_connection: kubernetes.core.kubectl
ansible_kubectl_namespace: my-namespace
ansible_kubectl_pod: my-pod
ansible_kubectl_container: my-container
tasks:
# be aware that the command is executed as the user that started the container
# and requires python to be installed in the image
- name: Run a command in a pod
ansible.builtin.command: echo "Hello, World!"
- name: Run a command in a pod using local kubectl with inventory variables
# Example inventory:
# k8s:
# hosts:
# foo.example.com:
# ansible_connection: kubernetes.core.kubectl
# ansible_kubectl_kubeconfig: /root/.kube/foo.example.com.config
# ansible_kubectl_pod: my-foo-pod
# ansible_kubectl_container: my-foo-container
# ansible_kubectl_namespace: my-foo-namespace
# bar.example.com:
# ansible_connection: kubernetes.core.kubectl
# ansible_kubectl_kubeconfig: /root/.kube/bar.example.com.config
# ansible_kubectl_pod: my-bar-pod
# ansible_kubectl_container: my-bar-container
# ansible_kubectl_namespace: my-bar-namespace
hosts: k8s
gather_facts: no
tasks:
# be aware that the command is executed as the user that started the container
# and requires python to be installed in the image
- name: Run a command in a pod
ansible.builtin.command: echo "Hello, World!"
- name: Run a command in a pod using dynamic inventory
hosts: localhost
gather_facts: no
vars:
kubeconfig: /root/.kube/config
namespace: my-namespace
my_app: my-app
tasks:
- name: Get My App pod info based on label
kubernetes.core.k8s_info:
kubeconfig: "{{ kubeconfig }}"
namespace: "{{ namespace }}"
kind: Pod
label_selectors: app.kubernetes.io/name = "{{ my_app }}"
register: my_app_pod
- name: Get My App pod name
ansible.builtin.set_fact:
my_app_pod_name: "{{ my_app_pod.resources[0].metadata.name }}"
- name: Add My App pod to inventory
ansible.builtin.add_host:
name: "{{ my_app_pod_name }}"
ansible_connection: kubernetes.core.kubectl
ansible_kubectl_kubeconfig: "{{ kubeconfig }}"
ansible_kubectl_pod: "{{ my_app_pod_name }}"
ansible_kubectl_namespace: "{{ namespace }}"
- name: Run a command in My App pod
# be aware that the command is executed as the user that started the container
# and requires python to be installed in the image
ansible.builtin.command: echo "Hello, World!"
delegate_to: "{{ my_app_pod_name }}"

View File

@@ -77,24 +77,6 @@ Parameters
<div>If omitted, &#x27;.&#x27; is assumed.</div> <div>If omitted, &#x27;.&#x27; is assumed.</div>
</td> </td>
</tr> </tr>
<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> <tr>
<td colspan="1"> <td colspan="1">
<div class="ansibleOptionAnchor" id="parameter-"></div> <div class="ansibleOptionAnchor" id="parameter-"></div>
@@ -130,21 +112,17 @@ Examples
.. code-block:: yaml .. code-block:: yaml
- name: Run lookup using kustomize - name: Run lookup using kustomize
ansible.builtin.set_fact: set_fact:
resources: "{{ lookup('kubernetes.core.kustomize', binary_path='/path/to/kustomize') }}" resources: "{{ lookup('kubernetes.core.kustomize', binary_path='/path/to/kustomize') }}"
- name: Run lookup using kubectl kustomize - name: Run lookup using kubectl kustomize
ansible.builtin.set_fact: set_fact:
resources: "{{ lookup('kubernetes.core.kustomize', binary_path='/path/to/kubectl') }}" resources: "{{ lookup('kubernetes.core.kustomize', binary_path='/path/to/kubectl') }}"
- name: Create kubernetes resources for lookup output - name: Create kubernetes resources for lookup output
kubernetes.core.k8s: k8s:
definition: "{{ lookup('kubernetes.core.kustomize', dir='/path/to/kustomization') }}" 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 Return Values

View File

@@ -25,7 +25,7 @@ tags:
- openshift - openshift
- okd - okd
- cluster - cluster
version: 5.0.0 version: 3.0.0
build_ignore: build_ignore:
- .DS_Store - .DS_Store
- "*.tar.gz" - "*.tar.gz"

View File

@@ -1,5 +1,5 @@
--- ---
requires_ansible: '>=2.15.0' requires_ansible: '>=2.14.0'
action_groups: action_groups:
helm: helm:
@@ -22,10 +22,10 @@ plugin_routing:
redirect: community.okd.openshift redirect: community.okd.openshift
k8s: k8s:
deprecation: deprecation:
removal_version: 6.0.0 removal_version: 4.0.0
warning_text: >- warning_text: >-
The k8s inventory plugin has been deprecated and The k8s inventory plugin has been deprecated and
will be removed in release 6.0.0. will be removed in release 4.0.0.
modules: modules:
k8s_auth: k8s_auth:
redirect: community.okd.k8s_auth redirect: community.okd.k8s_auth

View File

@@ -72,15 +72,6 @@ DOCUMENTATION = r"""
- name: ansible_kubectl_extra_args - name: ansible_kubectl_extra_args
env: env:
- name: K8S_AUTH_EXTRA_ARGS - 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: kubectl_kubeconfig:
description: description:
- Path to a kubectl config file. Defaults to I(~/.kube/config) - Path to a kubectl config file. Defaults to I(~/.kube/config)
@@ -181,81 +172,6 @@ DOCUMENTATION = r"""
aliases: [ kubectl_verify_ssl ] aliases: [ kubectl_verify_ssl ]
""" """
EXAMPLES = r"""
- name: Run a command in a pod using local kubectl with kubeconfig file ~/.kube/config
hosts: localhost
gather_facts: no
vars:
ansible_connection: kubernetes.core.kubectl
ansible_kubectl_namespace: my-namespace
ansible_kubectl_pod: my-pod
ansible_kubectl_container: my-container
tasks:
# be aware that the command is executed as the user that started the container
# and requires python to be installed in the image
- name: Run a command in a pod
ansible.builtin.command: echo "Hello, World!"
- name: Run a command in a pod using local kubectl with inventory variables
# Example inventory:
# k8s:
# hosts:
# foo.example.com:
# ansible_connection: kubernetes.core.kubectl
# ansible_kubectl_kubeconfig: /root/.kube/foo.example.com.config
# ansible_kubectl_pod: my-foo-pod
# ansible_kubectl_container: my-foo-container
# ansible_kubectl_namespace: my-foo-namespace
# bar.example.com:
# ansible_connection: kubernetes.core.kubectl
# ansible_kubectl_kubeconfig: /root/.kube/bar.example.com.config
# ansible_kubectl_pod: my-bar-pod
# ansible_kubectl_container: my-bar-container
# ansible_kubectl_namespace: my-bar-namespace
hosts: k8s
gather_facts: no
tasks:
# be aware that the command is executed as the user that started the container
# and requires python to be installed in the image
- name: Run a command in a pod
ansible.builtin.command: echo "Hello, World!"
- name: Run a command in a pod using dynamic inventory
hosts: localhost
gather_facts: no
vars:
kubeconfig: /root/.kube/config
namespace: my-namespace
my_app: my-app
tasks:
- name: Get My App pod info based on label
kubernetes.core.k8s_info:
kubeconfig: "{{ kubeconfig }}"
namespace: "{{ namespace }}"
kind: Pod
label_selectors: app.kubernetes.io/name = "{{ my_app }}"
register: my_app_pod
- name: Get My App pod name
ansible.builtin.set_fact:
my_app_pod_name: "{{ my_app_pod.resources[0].metadata.name }}"
- name: Add My App pod to inventory
ansible.builtin.add_host:
name: "{{ my_app_pod_name }}"
ansible_connection: kubernetes.core.kubectl
ansible_kubectl_kubeconfig: "{{ kubeconfig }}"
ansible_kubectl_pod: "{{ my_app_pod_name }}"
ansible_kubectl_namespace: "{{ namespace }}"
- name: Run a command in My App pod
# be aware that the command is executed as the user that started the container
# and requires python to be installed in the image
ansible.builtin.command: echo "Hello, World!"
delegate_to: "{{ my_app_pod_name }}"
"""
import json import json
import os import os
import os.path import os.path
@@ -385,19 +301,6 @@ class Connection(ConnectionBase):
return local_cmd, censored_local_cmd 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): def _connect(self, port=None):
"""Connect to the container. Nothing to do""" """Connect to the container. Nothing to do"""
super(Connection, self)._connect() super(Connection, self)._connect()
@@ -426,7 +329,6 @@ class Connection(ConnectionBase):
stdin=subprocess.PIPE, stdin=subprocess.PIPE,
stdout=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, stderr=subprocess.PIPE,
env=self._local_env(),
) )
stdout, stderr = p.communicate(in_data) stdout, stderr = p.communicate(in_data)
@@ -476,11 +378,7 @@ class Connection(ConnectionBase):
args = [to_bytes(i, errors="surrogate_or_strict") for i in args] args = [to_bytes(i, errors="surrogate_or_strict") for i in args]
try: try:
p = subprocess.Popen( p = subprocess.Popen(
args, args, stdin=in_file, stdout=subprocess.PIPE, stderr=subprocess.PIPE
stdin=in_file,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
env=self._local_env(),
) )
except OSError: except OSError:
raise AnsibleError( raise AnsibleError(
@@ -517,11 +415,7 @@ class Connection(ConnectionBase):
) as out_file: ) as out_file:
try: try:
p = subprocess.Popen( p = subprocess.Popen(
args, args, stdin=subprocess.PIPE, stdout=out_file, stderr=subprocess.PIPE
stdin=subprocess.PIPE,
stdout=out_file,
stderr=subprocess.PIPE,
env=self._local_env(),
) )
except OSError: except OSError:
raise AnsibleError( raise AnsibleError(

View File

@@ -36,12 +36,12 @@ options:
description: description:
- Provide a URL for accessing the API. Can also be specified via C(K8S_AUTH_HOST) environment variable. - Provide a URL for accessing the API. Can also be specified via C(K8S_AUTH_HOST) environment variable.
type: str type: str
version_added: 1.2.0 version_added: "1.2.0"
api_key: api_key:
description: description:
- Token used to authenticate with the API. Can also be specified via C(K8S_AUTH_API_KEY) environment variable. - Token used to authenticate with the API. Can also be specified via C(K8S_AUTH_API_KEY) environment variable.
type: str type: str
version_added: 1.2.0 version_added: "1.2.0"
validate_certs: validate_certs:
description: description:
- Whether or not to verify the API server's SSL certificates. Can also be specified via C(K8S_AUTH_VERIFY_SSL) - Whether or not to verify the API server's SSL certificates. Can also be specified via C(K8S_AUTH_VERIFY_SSL)
@@ -49,12 +49,12 @@ options:
type: bool type: bool
aliases: [ verify_ssl ] aliases: [ verify_ssl ]
default: True default: True
version_added: 1.2.0 version_added: "1.2.0"
ca_cert: ca_cert:
description: description:
- Path to a CA certificate used to authenticate with the API. The full certificate chain must be provided to - 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. avoid certificate validation errors. Can also be specified via C(K8S_AUTH_SSL_CA_CERT) environment variable.
type: path type: path
aliases: [ ssl_ca_cert ] aliases: [ ssl_ca_cert ]
version_added: 1.2.0 version_added: "1.2.0"
""" """

View File

@@ -15,7 +15,7 @@ class ModuleDocFragment(object):
options: options:
delete_options: delete_options:
type: dict type: dict
version_added: 1.2.0 version_added: '1.2.0'
description: description:
- Configure behavior when deleting an object. - Configure behavior when deleting an object.
- Only used when I(state=absent). - Only used when I(state=absent).

View File

@@ -20,10 +20,10 @@ DOCUMENTATION = """
- Uses k8s.(yml|yaml) YAML configuration file to set parameter values. - Uses k8s.(yml|yaml) YAML configuration file to set parameter values.
deprecated: deprecated:
removed_in: 6.0.0 removed_in: 4.0.0
why: | why: |
As discussed in U(https://github.com/ansible-collections/kubernetes.core/issues/31), we decided to As discussed in U(https://github.com/ansible-collections/kubernetes.core/issues/31), we decided to
remove the k8s inventory plugin in release 6.0.0. remove the k8s inventory plugin in release 4.0.0.
alternative: "Use M(kubernetes.core.k8s_info) and M(ansible.builtin.add_host) instead." alternative: "Use M(kubernetes.core.k8s_info) and M(ansible.builtin.add_host) instead."
options: options:
@@ -125,19 +125,19 @@ import json
from ansible.errors import AnsibleError from ansible.errors import AnsibleError
from ansible.plugins.inventory import BaseInventoryPlugin, Cacheable, Constructable from ansible.plugins.inventory import BaseInventoryPlugin, Cacheable, Constructable
from ansible_collections.kubernetes.core.plugins.module_utils.common import (
try: HAS_K8S_MODULE_HELPER,
from kubernetes.dynamic.exceptions import DynamicApiError k8s_import_exception,
)
HAS_K8S_MODULE_HELPER = True
k8s_import_exception = None
except ImportError as e:
HAS_K8S_MODULE_HELPER = False
k8s_import_exception = e
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.client import ( from ansible_collections.kubernetes.core.plugins.module_utils.k8s.client import (
get_api_client, get_api_client,
) )
try:
from kubernetes.dynamic.exceptions import DynamicApiError
except ImportError:
pass
def format_dynamic_api_exc(exc): def format_dynamic_api_exc(exc):
if exc.body: if exc.body:
@@ -164,8 +164,8 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
super(InventoryModule, self).parse(inventory, loader, path) super(InventoryModule, self).parse(inventory, loader, path)
self.display.deprecated( self.display.deprecated(
"The 'k8s' inventory plugin has been deprecated and will be removed in release 6.0.0", "The 'k8s' inventory plugin has been deprecated and will be removed in release 4.0.0",
version="6.0.0", version="4.0.0",
collection_name="kubernetes.core", collection_name="kubernetes.core",
) )
cache_key = self._get_cache_prefix(path) cache_key = self._get_cache_prefix(path)

View File

@@ -8,7 +8,7 @@ DOCUMENTATION = """
short_description: Build a set of kubernetes resources using a 'kustomization.yaml' file. short_description: Build a set of kubernetes resources using a 'kustomization.yaml' file.
version_added: 2.2.0 version_added: "2.2.0"
author: author:
- Aubin Bikouo (@abikouo) - Aubin Bikouo (@abikouo)
@@ -30,10 +30,6 @@ DOCUMENTATION = """
opt_dirs: opt_dirs:
description: description:
- An optional list of directories to search for the executable in addition to PATH. - 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: requirements:
- "python >= 3.6" - "python >= 3.6"
@@ -41,20 +37,16 @@ DOCUMENTATION = """
EXAMPLES = """ EXAMPLES = """
- name: Run lookup using kustomize - name: Run lookup using kustomize
ansible.builtin.set_fact: set_fact:
resources: "{{ lookup('kubernetes.core.kustomize', binary_path='/path/to/kustomize') }}" resources: "{{ lookup('kubernetes.core.kustomize', binary_path='/path/to/kustomize') }}"
- name: Run lookup using kubectl kustomize - name: Run lookup using kubectl kustomize
ansible.builtin.set_fact: set_fact:
resources: "{{ lookup('kubernetes.core.kustomize', binary_path='/path/to/kubectl') }}" resources: "{{ lookup('kubernetes.core.kustomize', binary_path='/path/to/kubectl') }}"
- name: Create kubernetes resources for lookup output - name: Create kubernetes resources for lookup output
kubernetes.core.k8s: k8s:
definition: "{{ lookup('kubernetes.core.kustomize', dir='/path/to/kustomization') }}" 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 = """ RETURN = """
@@ -99,14 +91,7 @@ def run_command(command):
class LookupModule(LookupBase): class LookupModule(LookupBase):
def run( def run(
self, self, terms, variables=None, dir=".", binary_path=None, opt_dirs=None, **kwargs
terms,
variables=None,
dir=".",
binary_path=None,
opt_dirs=None,
enable_helm=False,
**kwargs
): ):
executable_path = binary_path executable_path = binary_path
if executable_path is None: if executable_path is None:
@@ -137,9 +122,6 @@ class LookupModule(LookupBase):
) )
) )
if enable_helm:
command += ["--enable-helm"]
(out, err) = run_command(command) (out, err) = run_command(command)
if err: if err:
raise AnsibleLookupError( raise AnsibleLookupError(

View File

@@ -149,7 +149,6 @@ def k8s_apply(resource, definition, **kwargs):
force_conflicts=kwargs.get("force_conflicts"), force_conflicts=kwargs.get("force_conflicts"),
field_manager=kwargs.get("field_manager"), field_manager=kwargs.get("field_manager"),
dry_run=kwargs.get("dry_run"), dry_run=kwargs.get("dry_run"),
serialize=kwargs.get("serialize"),
) )
if not existing: if not existing:
return resource.create( return resource.create(
@@ -159,7 +158,6 @@ def k8s_apply(resource, definition, **kwargs):
return resource.get( return resource.get(
name=definition["metadata"]["name"], name=definition["metadata"]["name"],
namespace=definition["metadata"].get("namespace"), namespace=definition["metadata"].get("namespace"),
**kwargs
) )
return resource.patch( return resource.patch(
body=desired, body=desired,

View File

@@ -113,7 +113,7 @@ class Discoverer(kubernetes.dynamic.discovery.Discoverer):
filter(lambda resource: "/" in resource["name"], resources_response) filter(lambda resource: "/" in resource["name"], resources_response)
) )
for subresource in subresources_raw: for subresource in subresources_raw:
resource, name = subresource["name"].split("/", 1) resource, name = subresource["name"].split("/")
subresources[resource][name] = subresource subresources[resource][name] = subresource
for resource in resources_raw: for resource in resources_raw:

File diff suppressed because it is too large Load Diff

View File

@@ -115,7 +115,7 @@ class AnsibleHelmModule(object):
kubeconfig = self.params.get("kubeconfig") kubeconfig = self.params.get("kubeconfig")
if kubeconfig: if kubeconfig:
if isinstance(kubeconfig, string_types): if isinstance(kubeconfig, string_types):
with open(os.path.expanduser(kubeconfig)) as fd: with open(kubeconfig) as fd:
kubeconfig_content = yaml.safe_load(fd) kubeconfig_content = yaml.safe_load(fd)
elif isinstance(kubeconfig, dict): elif isinstance(kubeconfig, dict):
kubeconfig_content = kubeconfig kubeconfig_content = kubeconfig

View File

@@ -139,7 +139,6 @@ def perform_action(svc, definition: Dict, params: Dict) -> Dict:
result = {"changed": False, "result": {}} result = {"changed": False, "result": {}}
instance = {} instance = {}
warnings = []
resource = svc.find_resource(kind, api_version, fail=True) resource = svc.find_resource(kind, api_version, fail=True)
definition["kind"] = resource.kind definition["kind"] = resource.kind
@@ -173,7 +172,7 @@ def perform_action(svc, definition: Dict, params: Dict) -> Dict:
return result return result
if params.get("apply"): if params.get("apply"):
instance, warnings = svc.apply(resource, definition, existing) instance = svc.apply(resource, definition, existing)
result["method"] = "apply" result["method"] = "apply"
elif not existing: elif not existing:
if state == "patched": if state == "patched":
@@ -184,19 +183,16 @@ def perform_action(svc, definition: Dict, params: Dict) -> Dict:
) )
) )
return result return result
instance, warnings = svc.create(resource, definition) instance = svc.create(resource, definition)
result["method"] = "create" result["method"] = "create"
result["changed"] = True result["changed"] = True
elif params.get("force", False): elif params.get("force", False):
instance, warnings = svc.replace(resource, definition, existing) instance = svc.replace(resource, definition, existing)
result["method"] = "replace" result["method"] = "replace"
else: else:
instance, warnings = svc.update(resource, definition, existing) instance = svc.update(resource, definition, existing)
result["method"] = "update" result["method"] = "update"
if warnings:
result["warnings"] = warnings
# If needed, wait and/or create diff # If needed, wait and/or create diff
success = True success = True

View File

@@ -2,8 +2,6 @@
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
import copy import copy
from json import loads
from re import compile
from typing import Any, Dict, List, Optional, Tuple from typing import Any, Dict, List, Optional, Tuple
from ansible.module_utils.common.dict_transformations import dict_merge from ansible.module_utils.common.dict_transformations import dict_merge
@@ -144,12 +142,18 @@ class K8sService:
name: str, name: str,
namespace: str, namespace: str,
merge_type: str = None, merge_type: str = None,
) -> Tuple[Dict, List[str]]: ) -> Dict:
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="4.0.0",
collection_name="kubernetes.core",
)
try: try:
params = dict(name=name, namespace=namespace, serialize=False) params = dict(name=name, namespace=namespace)
if merge_type: if merge_type:
params["content_type"] = "application/{0}-patch+json".format(merge_type) params["content_type"] = "application/{0}-patch+json".format(merge_type)
return decode_response(self.client.patch(resource, definition, **params)) return self.client.patch(resource, definition, **params).to_dict()
except Exception as e: except Exception as e:
reason = e.body if hasattr(e, "body") else e reason = e.body if hasattr(e, "body") else e
msg = "Failed to patch object: {0}".format(reason) msg = "Failed to patch object: {0}".format(reason)
@@ -326,19 +330,17 @@ class K8sService:
result["resources"].append(hide_fields(res, hidden_fields)) result["resources"].append(hide_fields(res, hidden_fields))
return result return result
def create(self, resource: Resource, definition: Dict) -> Tuple[Dict, List[str]]: def create(self, resource: Resource, definition: Dict) -> Dict:
namespace = definition["metadata"].get("namespace") namespace = definition["metadata"].get("namespace")
name = definition["metadata"].get("name") name = definition["metadata"].get("name")
if self._client_side_dry_run: if self._client_side_dry_run:
return _encode_stringdata(definition), [] k8s_obj = _encode_stringdata(definition)
else:
try: try:
return decode_response( k8s_obj = self.client.create(
self.client.create( resource, definition, namespace=namespace
resource, definition, namespace=namespace, serialize=False ).to_dict()
)
)
except ConflictError: except ConflictError:
# Some resources, like ProjectRequests, can't be created multiple times, # Some resources, like ProjectRequests, can't be created multiple times,
# because the resources that they create don't match their kind # because the resources that they create don't match their kind
@@ -349,101 +351,102 @@ class K8sService:
name name
) )
) )
return dict(), [] return dict()
except Exception as e: except Exception as e:
reason = e.body if hasattr(e, "body") else e reason = e.body if hasattr(e, "body") else e
msg = "Failed to create object: {0}".format(reason) msg = "Failed to create object: {0}".format(reason)
raise CoreException(msg) from e raise CoreException(msg) from e
return k8s_obj
def apply( def apply(
self, self,
resource: Resource, resource: Resource,
definition: Dict, definition: Dict,
existing: Optional[ResourceInstance] = None, existing: Optional[ResourceInstance] = None,
) -> Tuple[Dict, List[str]]: ) -> Dict:
namespace = definition["metadata"].get("namespace") namespace = definition["metadata"].get("namespace")
server_side_apply = self.module.params.get("server_side_apply") server_side_apply = self.module.params.get("server_side_apply")
if server_side_apply: if server_side_apply:
requires("kubernetes", "19.15.0", reason="to use server side apply") requires("kubernetes", "19.15.0", reason="to use server side apply")
if self._client_side_dry_run: if self._client_side_dry_run:
ignored, patch = apply_object(resource, _encode_stringdata(definition)) ignored, patch = apply_object(resource, _encode_stringdata(definition))
if existing: if existing:
return dict_merge(existing.to_dict(), patch), [] k8s_obj = dict_merge(existing.to_dict(), patch)
else:
k8s_obj = patch
else: else:
return patch, []
try: try:
params = {} params = {}
if server_side_apply: if server_side_apply:
params["server_side"] = True params["server_side"] = True
params.update(server_side_apply) params.update(server_side_apply)
return decode_response( k8s_obj = self.client.apply(
self.client.apply( resource, definition, namespace=namespace, **params
resource, definition, namespace=namespace, serialize=False, **params ).to_dict()
)
)
except Exception as e: except Exception as e:
reason = e.body if hasattr(e, "body") else e reason = e.body if hasattr(e, "body") else e
msg = "Failed to apply object: {0}".format(reason) msg = "Failed to apply object: {0}".format(reason)
raise CoreException(msg) from e raise CoreException(msg) from e
return k8s_obj
def replace( def replace(
self, self,
resource: Resource, resource: Resource,
definition: Dict, definition: Dict,
existing: ResourceInstance, existing: ResourceInstance,
) -> Tuple[Dict, List[str]]: ) -> Dict:
append_hash = self.module.params.get("append_hash", False) append_hash = self.module.params.get("append_hash", False)
name = definition["metadata"].get("name") name = definition["metadata"].get("name")
namespace = definition["metadata"].get("namespace") namespace = definition["metadata"].get("namespace")
if self._client_side_dry_run: if self._client_side_dry_run:
return _encode_stringdata(definition), [] k8s_obj = _encode_stringdata(definition)
else:
try: try:
return decode_response( k8s_obj = self.client.replace(
self.client.replace(
resource, resource,
definition, definition,
name=name, name=name,
namespace=namespace, namespace=namespace,
append_hash=append_hash, append_hash=append_hash,
serialize=False, ).to_dict()
)
)
except Exception as e: except Exception as e:
reason = e.body if hasattr(e, "body") else e reason = e.body if hasattr(e, "body") else e
msg = "Failed to replace object: {0}".format(reason) msg = "Failed to replace object: {0}".format(reason)
raise CoreException(msg) from e raise CoreException(msg) from e
return k8s_obj
def update( def update(
self, resource: Resource, definition: Dict, existing: ResourceInstance self, resource: Resource, definition: Dict, existing: ResourceInstance
) -> Tuple[Dict, List[str]]: ) -> Dict:
name = definition["metadata"].get("name") name = definition["metadata"].get("name")
namespace = definition["metadata"].get("namespace") namespace = definition["metadata"].get("namespace")
if self._client_side_dry_run: if self._client_side_dry_run:
return dict_merge(existing.to_dict(), _encode_stringdata(definition)), [] k8s_obj = dict_merge(existing.to_dict(), _encode_stringdata(definition))
else:
exception = None exception = None
for merge_type in self.module.params.get("merge_type") or [ for merge_type in self.module.params.get("merge_type") or [
"strategic-merge", "strategic-merge",
"merge", "merge",
]: ]:
try: try:
return self.patch_resource( k8s_obj = self.patch_resource(
resource, resource,
definition, definition,
name, name,
namespace, namespace,
merge_type=merge_type, merge_type=merge_type,
) )
exception = None
except CoreException as e: except CoreException as e:
exception = e exception = e
continue continue
break
if exception:
raise exception raise exception
return k8s_obj
def delete( def delete(
self, self,
@@ -540,83 +543,3 @@ def hide_field(definition: dict, hidden_field: str) -> dict:
else: else:
del definition[split[0]] del definition[split[0]]
return definition return definition
def decode_response(resp) -> Tuple[Dict, List[str]]:
"""
This function decodes unserialized responses from the Kubernetes python
client and decodes the RFC2616 14.46 warnings found in the response
headers.
"""
obj = ResourceInstance(None, loads(resp.data.decode("utf8"))).to_dict()
warnings = []
if (
resp.headers is not None
and "warning" in resp.headers
and resp.headers["warning"] is not None
):
warnings = resp.headers["warning"].split(", ")
return obj, decode_warnings(warnings)
def decode_warnings(warnings: str) -> List[str]:
"""
This function decodes RFC2616 14.46 warnings in a simplified way, where
only the warn-texts are returned in a list.
"""
p = compile('\\d{3} .+ (".+")')
decoded = []
for warning in warnings:
m = p.match(warning)
if m:
try:
parsed, unused = parse_quoted_string(m.group(1))
decoded.append(parsed)
except ValueError:
continue
return decoded
def parse_quoted_string(quoted_string: str) -> Tuple[str, str]:
"""
This function was adapted from:
https://github.com/kubernetes/apimachinery/blob/bb8822152cabfb4f34dbc26270f874ce53db50de/pkg/util/net/http.go#L609
"""
if len(quoted_string) == 0:
raise ValueError("invalid quoted string: 0-length")
if quoted_string[0] != '"':
raise ValueError("invalid quoted string: missing initial quote")
quoted_string = quoted_string[1:]
remainder = ""
escaping = False
closed_quote = False
result = []
for i, b in enumerate(quoted_string):
if b == '"':
if escaping:
result.append(b)
escaping = False
else:
closed_quote = True
remainder_start = i + 1
remainder = quoted_string[remainder_start:].strip()
break
elif b == "\\":
if escaping:
result.append(b)
escaping = False
else:
escaping = True
else:
result.append(b)
escaping = False
if not closed_quote:
raise ValueError("invalid quoted string: missing closing quote")
return "".join(result), remainder

View File

@@ -14,7 +14,7 @@ module: helm
short_description: Manages Kubernetes packages with the Helm package manager short_description: Manages Kubernetes packages with the Helm package manager
version_added: 0.11.0 version_added: "0.11.0"
author: author:
- Lucas Boisserie (@LucasBoisserie) - Lucas Boisserie (@LucasBoisserie)
@@ -61,7 +61,7 @@ options:
default: false default: false
type: bool type: bool
aliases: [ dep_up ] aliases: [ dep_up ]
version_added: 2.4.0 version_added: "2.4.0"
release_name: release_name:
description: description:
- Release name to manage. - Release name to manage.
@@ -99,7 +99,7 @@ options:
default: [] default: []
type: list type: list
elements: str elements: str
version_added: 1.1.0 version_added: '1.1.0'
update_repo_cache: update_repo_cache:
description: 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). - 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,7 @@ options:
- string - string
- json - json
- file - file
version_added: 2.4.0 version_added: '2.4.0'
reuse_values: reuse_values:
description: description:
- When upgrading package, specifies wether to reuse the last release's values and merge in any overrides from parameters I(release_values), - When upgrading package, specifies wether to reuse the last release's values and merge in any overrides from parameters I(release_values),
@@ -137,14 +137,14 @@ options:
- If I(reset_values) is set to C(True), this is ignored. - If I(reset_values) is set to C(True), this is ignored.
type: bool type: bool
required: false required: false
version_added: 2.5.0 version_added: '2.5.0'
reset_values: reset_values:
description: description:
- When upgrading package, reset the values to the ones built into the chart. - When upgrading package, reset the values to the ones built into the chart.
type: bool type: bool
required: false required: false
default: True default: True
version_added: 2.5.0 version_added: '2.5.0'
#Helm options #Helm options
disable_hook: disable_hook:
@@ -181,7 +181,7 @@ options:
- similar to C(wait_timeout) but does not required C(wait) to be activated. - similar to C(wait_timeout) but does not required C(wait) to be activated.
- Mutually exclusive with C(wait_timeout). - Mutually exclusive with C(wait_timeout).
type: str type: str
version_added: 2.3.0 version_added: "2.3.0"
atomic: atomic:
description: description:
- If set, the installation process deletes the installation on failure. - If set, the installation process deletes the installation on failure.
@@ -192,12 +192,12 @@ options:
- Create the release namespace if not present. - Create the release namespace if not present.
type: bool type: bool
default: False default: False
version_added: 0.11.1 version_added: "0.11.1"
post_renderer: post_renderer:
description: description:
- Path to an executable to be used for post rendering. - Path to an executable to be used for post rendering.
type: str type: str
version_added: 2.4.0 version_added: "2.4.0"
replace: replace:
description: description:
- Reuse the given name, only if that name is a deleted release which remains in the history. - Reuse the given name, only if that name is a deleted release which remains in the history.
@@ -205,19 +205,19 @@ options:
- mutually exclusive with with C(history_max). - mutually exclusive with with C(history_max).
type: bool type: bool
default: False default: False
version_added: 1.11.0 version_added: "1.11.0"
skip_crds: skip_crds:
description: description:
- Skip custom resource definitions when installing or upgrading. - Skip custom resource definitions when installing or upgrading.
type: bool type: bool
default: False default: False
version_added: 1.2.0 version_added: "1.2.0"
history_max: history_max:
description: description:
- Limit the maximum number of revisions saved per release. - Limit the maximum number of revisions saved per release.
- mutually exclusive with with C(replace). - mutually exclusive with with C(replace).
type: int type: int
version_added: 2.2.0 version_added: "2.2.0"
extends_documentation_fragment: extends_documentation_fragment:
- kubernetes.core.helm_common_options - kubernetes.core.helm_common_options
""" """
@@ -639,9 +639,6 @@ def helmdiff_check(
replace=False, replace=False,
chart_repo_url=None, chart_repo_url=None,
post_renderer=False, 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. Use helm diff to determine if a release would change by upgrading a chart.
@@ -655,14 +652,10 @@ def helmdiff_check(
if chart_version is not None: if chart_version is not None:
cmd += " " + "--version=" + chart_version cmd += " " + "--version=" + chart_version
if not replace: if not replace:
cmd += " " + "--reset-values=" + str(reset_values) cmd += " " + "--reset-values"
if post_renderer: if post_renderer:
cmd += " --post-renderer=" + post_renderer cmd += " --post-renderer=" + post_renderer
if values_files:
for value_file in values_files:
cmd += " --values=" + value_file
if release_values != {}: if release_values != {}:
fd, path = tempfile.mkstemp(suffix=".yml") fd, path = tempfile.mkstemp(suffix=".yml")
with open(path, "w") as yaml_file: with open(path, "w") as yaml_file:
@@ -670,11 +663,9 @@ def helmdiff_check(
cmd += " -f=" + path cmd += " -f=" + path
module.add_cleanup_file(path) module.add_cleanup_file(path)
if set_value_args: if values_files:
cmd += " " + set_value_args for values_file in values_files:
cmd += " -f=" + values_file
if reuse_values:
cmd += " --reuse-values"
rc, out, err = module.run_helm_command(cmd) rc, out, err = module.run_helm_command(cmd)
return (len(out.strip()) > 0, out.strip()) return (len(out.strip()) > 0, out.strip())
@@ -856,11 +847,11 @@ def main():
"Please consider add dependencies block or disable dependency_update to remove this warning." "Please consider add dependencies block or disable dependency_update to remove this warning."
) )
if release_status is None: # Not installed
set_value_args = None set_value_args = None
if set_values: if set_values:
set_value_args = module.get_helm_set_values_args(set_values) set_value_args = module.get_helm_set_values_args(set_values)
if release_status is None: # Not installed
helm_cmd = deploy( helm_cmd = deploy(
module, module,
helm_cmd, helm_cmd,
@@ -905,9 +896,6 @@ def main():
replace, replace,
chart_repo_url, chart_repo_url,
post_renderer, post_renderer,
set_value_args,
reuse_values=reuse_values,
reset_values=reset_values,
) )
if would_change and module._diff: if would_change and module._diff:
opt_result["diff"] = {"prepared": prepared} opt_result["diff"] = {"prepared": prepared}
@@ -921,6 +909,10 @@ def main():
) )
if force or would_change: 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( helm_cmd = deploy(
module, module,
helm_cmd, helm_cmd,

View File

@@ -14,7 +14,7 @@ module: helm_info
short_description: Get information from Helm package deployed inside the cluster short_description: Get information from Helm package deployed inside the cluster
version_added: 0.11.0 version_added: "0.11.0"
author: author:
- Lucas Boisserie (@LucasBoisserie) - Lucas Boisserie (@LucasBoisserie)
@@ -53,7 +53,7 @@ options:
type: list type: list
elements: str elements: str
default: [] default: []
version_added: 2.3.0 version_added: "2.3.0"
get_all_values: get_all_values:
description: description:
- Set to C(True) if you want to get all (computed) values of the release. - Set to C(True) if you want to get all (computed) values of the release.
@@ -61,7 +61,7 @@ options:
required: false required: false
default: false default: false
type: bool type: bool
version_added: 2.4.0 version_added: "2.4.0"
extends_documentation_fragment: extends_documentation_fragment:
- kubernetes.core.helm_common_options - kubernetes.core.helm_common_options
""" """
@@ -123,18 +123,18 @@ status:
elements: dict elements: dict
description: Hooks of the release description: Hooks of the release
returned: always returned: always
version_added: 2.4.0 version_added: "2.4.0"
notes: notes:
type: str type: str
description: Notes of the release description: Notes of the release
returned: always returned: always
version_added: 2.4.0 version_added: "2.4.0"
manifest: manifest:
type: list type: list
elements: dict elements: dict
description: Manifest of the release description: Manifest of the release
returned: always returned: always
version_added: 2.4.0 version_added: "2.4.0"
""" """
import copy import copy

View File

@@ -12,7 +12,7 @@ DOCUMENTATION = r"""
--- ---
module: helm_plugin module: helm_plugin
short_description: Manage Helm plugins short_description: Manage Helm plugins
version_added: 1.0.0 version_added: "1.0.0"
author: author:
- Abhijeet Kasurde (@Akasurde) - Abhijeet Kasurde (@Akasurde)
requirements: requirements:
@@ -47,7 +47,7 @@ options:
- Ignored when C(state=absent) or C(state=latest). - Ignored when C(state=absent) or C(state=latest).
required: false required: false
type: str type: str
version_added: 2.3.0 version_added: "2.3.0"
extends_documentation_fragment: extends_documentation_fragment:
- kubernetes.core.helm_common_options - kubernetes.core.helm_common_options
""" """

View File

@@ -12,7 +12,7 @@ DOCUMENTATION = r"""
--- ---
module: helm_plugin_info module: helm_plugin_info
short_description: Gather information about Helm plugins short_description: Gather information about Helm plugins
version_added: 1.0.0 version_added: "1.0.0"
author: author:
- Abhijeet Kasurde (@Akasurde) - Abhijeet Kasurde (@Akasurde)
requirements: requirements:

View File

@@ -12,7 +12,7 @@ DOCUMENTATION = r"""
--- ---
module: helm_pull module: helm_pull
short_description: download a chart from a repository and (optionally) unpack it in local directory. 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: author:
- Aubin Bikouo (@abikouo) - Aubin Bikouo (@abikouo)
description: description:

View File

@@ -14,7 +14,7 @@ module: helm_repository
short_description: Manage Helm repositories. short_description: Manage Helm repositories.
version_added: 0.11.0 version_added: "0.11.0"
author: author:
- Lucas Boisserie (@LucasBoisserie) - Lucas Boisserie (@LucasBoisserie)
@@ -76,12 +76,12 @@ options:
description: description:
- Provide a URL for accessing the API. Can also be specified via C(K8S_AUTH_HOST) environment variable. - Provide a URL for accessing the API. Can also be specified via C(K8S_AUTH_HOST) environment variable.
type: str type: str
version_added: 2.3.0 version_added: "2.3.0"
api_key: api_key:
description: description:
- Token used to authenticate with the API. Can also be specified via C(K8S_AUTH_API_KEY) environment variable. - Token used to authenticate with the API. Can also be specified via C(K8S_AUTH_API_KEY) environment variable.
type: str type: str
version_added: 2.3.0 version_added: "2.3.0"
validate_certs: validate_certs:
description: description:
- Whether or not to verify the API server's SSL certificates. Can also be specified via C(K8S_AUTH_VERIFY_SSL) - 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 type: bool
aliases: [ verify_ssl ] aliases: [ verify_ssl ]
default: True default: True
version_added: 2.3.0 version_added: "2.3.0"
ca_cert: ca_cert:
description: description:
- Path to a CA certificate used to authenticate with the API. The full certificate chain must be provided to - 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. avoid certificate validation errors. Can also be specified via C(K8S_AUTH_SSL_CA_CERT) environment variable.
type: path type: path
aliases: [ ssl_ca_cert ] aliases: [ ssl_ca_cert ]
version_added: 2.3.0 version_added: "2.3.0"
context: context:
description: description:
- Helm option to specify which kubeconfig context to use. - 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. - If the value is not specified in the task, the value of environment variable C(K8S_AUTH_CONTEXT) will be used instead.
type: str type: str
aliases: [ kube_context ] aliases: [ kube_context ]
version_added: 2.4.0 version_added: "2.4.0"
kubeconfig: kubeconfig:
description: description:
- Helm option to specify kubeconfig path to use. - Helm option to specify kubeconfig path to use.
@@ -111,14 +111,14 @@ options:
- The configuration can be provided as dictionary. - The configuration can be provided as dictionary.
type: raw type: raw
aliases: [ kubeconfig_path ] aliases: [ kubeconfig_path ]
version_added: 2.4.0 version_added: "2.4.0"
force_update: force_update:
description: description:
- Whether or not to replace (overwrite) the repo if it already exists. - Whether or not to replace (overwrite) the repo if it already exists.
type: bool type: bool
aliases: [ force ] aliases: [ force ]
default: False default: False
version_added: 2.4.0 version_added: "2.4.0"
""" """
EXAMPLES = r""" EXAMPLES = r"""

View File

@@ -53,7 +53,7 @@ options:
default: false default: false
type: bool type: bool
aliases: [ dep_up ] aliases: [ dep_up ]
version_added: 2.4.0 version_added: "2.4.0"
disable_hook: disable_hook:
description: description:
- Prevent hooks from running during install. - Prevent hooks from running during install.
@@ -139,7 +139,7 @@ options:
- string - string
- json - json
- file - file
version_added: 2.4.0 version_added: '2.4.0'
""" """
EXAMPLES = r""" EXAMPLES = r"""

View File

@@ -57,14 +57,15 @@ options:
- Whether to override the default patch merge approach with a specific type. By default, the strategic - Whether to override the default patch merge approach with a specific type. By default, the strategic
merge will typically be used. merge will typically be used.
- For example, Custom Resource Definitions typically aren't updatable by the usual strategic merge. You may - For example, Custom Resource Definitions typically aren't updatable by the usual strategic merge. You may
want to use C(merge) if you see "strategic merge patch format is not supported". want to use C(merge) if you see "strategic merge patch format is not supported"
- See U(https://kubernetes.io/docs/tasks/run-application/update-api-object-kubectl-patch/#use-a-json-merge-patch-to-update-a-deployment) - See U(https://kubernetes.io/docs/tasks/run-application/update-api-object-kubectl-patch/#use-a-json-merge-patch-to-update-a-deployment)
- If more than one C(merge_type) is given, the merge_types will be tried in order. This defaults to - If more than one C(merge_type) is given, the merge_types will be tried in order. This defaults to
C(['strategic-merge', 'merge']), which is ideal for using the same parameters on resource kinds that C(['strategic-merge', 'merge']), which is ideal for using the same parameters on resource kinds that
combine Custom Resources and built-in resources. combine Custom Resources and built-in resources.
- Mutually exclusive with C(apply). - mutually exclusive with C(apply)
- I(merge_type=json) has been removed in version 4.0.0. Please use M(kubernetes.core.k8s_json_patch) instead. - I(merge_type=json) is deprecated and will be removed in version 3.0.0. Please use M(kubernetes.core.k8s_json_patch) instead.
choices: choices:
- json
- merge - merge
- strategic-merge - strategic-merge
type: list type: list
@@ -100,7 +101,7 @@ options:
- C(apply) compares the desired resource definition with the previously supplied resource definition, - C(apply) compares the desired resource definition with the previously supplied resource definition,
ignoring properties that are automatically generated ignoring properties that are automatically generated
- C(apply) works better with Services than 'force=yes' - C(apply) works better with Services than 'force=yes'
- Mutually exclusive with C(merge_type). - mutually exclusive with C(merge_type)
default: False default: False
type: bool type: bool
template: template:
@@ -459,7 +460,7 @@ def argspec():
argument_spec.update(copy.deepcopy(AUTH_ARG_SPEC)) argument_spec.update(copy.deepcopy(AUTH_ARG_SPEC))
argument_spec.update(copy.deepcopy(WAIT_ARG_SPEC)) argument_spec.update(copy.deepcopy(WAIT_ARG_SPEC))
argument_spec["merge_type"] = dict( argument_spec["merge_type"] = dict(
type="list", elements="str", choices=["merge", "strategic-merge"] type="list", elements="str", choices=["json", "merge", "strategic-merge"]
) )
argument_spec["validate"] = dict(type="dict", default=None, options=validate_spec()) argument_spec["validate"] = dict(type="dict", default=None, options=validate_spec())
argument_spec["append_hash"] = dict(type="bool", default=False) argument_spec["append_hash"] = dict(type="bool", default=False)

View File

@@ -11,7 +11,7 @@ __metaclass__ = type
DOCUMENTATION = r""" DOCUMENTATION = r"""
module: k8s_cluster_info 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 short_description: Describe Kubernetes (K8s) cluster, APIs available and their respective versions

View File

@@ -14,7 +14,7 @@ module: k8s_cp
short_description: Copy files and directories to and from pod. short_description: Copy files and directories to and from pod.
version_added: 2.2.0 version_added: "2.2.0"
author: author:
- Aubin Bikouo (@abikouo) - Aubin Bikouo (@abikouo)

View File

@@ -15,7 +15,7 @@ module: k8s_drain
short_description: Drain, Cordon, or Uncordon node in k8s cluster short_description: Drain, Cordon, or Uncordon node in k8s cluster
version_added: 2.2.0 version_added: "2.2.0"
author: Aubin Bikouo (@abikouo) author: Aubin Bikouo (@abikouo)

View File

@@ -15,7 +15,7 @@ module: k8s_exec
short_description: Execute command in Pod short_description: Execute command in Pod
version_added: 0.10.0 version_added: "0.10.0"
author: "Tristan de Cacqueray (@tristanC)" author: "Tristan de Cacqueray (@tristanC)"
@@ -135,7 +135,7 @@ from ansible.module_utils._text import to_native
from ansible_collections.kubernetes.core.plugins.module_utils.ansiblemodule import ( from ansible_collections.kubernetes.core.plugins.module_utils.ansiblemodule import (
AnsibleModule, AnsibleModule,
) )
from ansible_collections.kubernetes.core.plugins.module_utils.args_common import ( from ansible_collections.kubernetes.core.plugins.module_utils.common import (
AUTH_ARG_SPEC, AUTH_ARG_SPEC,
) )
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.client import ( from ansible_collections.kubernetes.core.plugins.module_utils.k8s.client import (
@@ -219,6 +219,12 @@ def execute_module(module, client):
else: else:
rc = int(err["details"]["causes"][0]["message"]) rc = int(err["details"]["causes"][0]["message"])
module.deprecate(
"The 'return_code' return key is being renamed to 'rc'. "
"Both keys are being returned for now to allow users to migrate their automation.",
version="4.0.0",
collection_name="kubernetes.core",
)
module.exit_json( module.exit_json(
# Some command might change environment, but ultimately failing at end # Some command might change environment, but ultimately failing at end
changed=True, changed=True,

View File

@@ -14,7 +14,7 @@ module: k8s_log
short_description: Fetch logs from Kubernetes resources short_description: Fetch logs from Kubernetes resources
version_added: 0.10.0 version_added: "0.10.0"
author: author:
- "Fabian von Feilitzsch (@fabianvf)" - "Fabian von Feilitzsch (@fabianvf)"
@@ -61,26 +61,26 @@ options:
- A relative time in seconds before the current time from which to show logs. - A relative time in seconds before the current time from which to show logs.
required: no required: no
type: str type: str
version_added: 2.2.0 version_added: '2.2.0'
previous: previous:
description: description:
- If C(true), print the logs for the previous instance of the container in a pod if it exists. - If C(true), print the logs for the previous instance of the container in a pod if it exists.
required: no required: no
type: bool type: bool
default: False default: False
version_added: 2.4.0 version_added: '2.4.0'
tail_lines: tail_lines:
description: description:
- A number of lines from the end of the logs to retrieve. - A number of lines from the end of the logs to retrieve.
required: no required: no
type: int type: int
version_added: 2.4.0 version_added: '2.4.0'
all_containers: all_containers:
description: description:
- If set to C(true), retrieve all containers' logs in the pod(s). - If set to C(true), retrieve all containers' logs in the pod(s).
- mutually exclusive with C(container). - mutually exclusive with C(container).
type: bool type: bool
version_added: 2.4.0 version_added: '2.4.0'
requirements: requirements:
- "python >= 3.9" - "python >= 3.9"

View File

@@ -12,7 +12,7 @@ __metaclass__ = type
DOCUMENTATION = r""" DOCUMENTATION = r"""
module: k8s_rollback module: k8s_rollback
short_description: Rollback Kubernetes (K8S) Deployments and DaemonSets short_description: Rollback Kubernetes (K8S) Deployments and DaemonSets
version_added: 1.0.0 version_added: "1.0.0"
author: author:
- "Julien Huon (@julienhuon)" - "Julien Huon (@julienhuon)"
description: description:

View File

@@ -13,7 +13,7 @@ __metaclass__ = type
DOCUMENTATION = r""" DOCUMENTATION = r"""
module: k8s_taint module: k8s_taint
short_description: Taint a node in a Kubernetes/OpenShift cluster short_description: Taint a node in a Kubernetes/OpenShift cluster
version_added: 2.3.0 version_added: "2.3.0"
author: Alina Buzachis (@alinabuzachis) author: Alina Buzachis (@alinabuzachis)
description: description:
- Taint allows a node to refuse Pod to be scheduled unless that Pod has a matching toleration. - Taint allows a node to refuse Pod to be scheduled unless that Pod has a matching toleration.

View File

@@ -73,7 +73,7 @@
assert: assert:
that: that:
- install is changed - install is changed
- install.status.chart == chart_test+"-"+chart_test_version - install.status.chart == "{{ chart_test }}-{{ chart_test_version }}"
- install.status.status | lower == 'deployed' - install.status.status | lower == 'deployed'
- name: Check helm_info content - name: Check helm_info content
@@ -95,7 +95,7 @@
- name: "Assert that {{ chart_test }} is installed from {{ source }} with helm_info" - name: "Assert that {{ chart_test }} is installed from {{ source }} with helm_info"
assert: assert:
that: that:
- content_info.status.chart == chart_test+"-"+chart_test_version - content_info.status.chart == "{{ chart_test }}-{{ chart_test_version }}"
- content_info.status.status | lower == 'deployed' - content_info.status.status | lower == 'deployed'
- release_state_content_info.status.status | lower == 'deployed' - release_state_content_info.status.status | lower == 'deployed'
@@ -112,7 +112,7 @@
assert: assert:
that: that:
- install is not changed - install is not changed
- install.status.chart == chart_test+"-"+chart_test_version - install.status.chart == "{{ chart_test }}-{{ chart_test_version }}"
- install.status.status | lower == 'deployed' - install.status.status | lower == 'deployed'
- name: "Add vars to {{ chart_test }} from {{ source }}" - name: "Add vars to {{ chart_test }} from {{ source }}"
@@ -130,7 +130,7 @@
that: that:
- install is changed - install is changed
- install.status.status | lower == 'deployed' - install.status.status | lower == 'deployed'
- install.status.chart == chart_test+"-"+chart_test_version - install.status.chart == "{{ chart_test }}-{{ chart_test_version }}"
- "install.status['values'].revisionHistoryLimit == 0" - "install.status['values'].revisionHistoryLimit == 0"
- name: Check idempotency after adding vars - name: Check idempotency after adding vars
@@ -148,7 +148,7 @@
that: that:
- install is not changed - install is not changed
- install.status.status | lower == 'deployed' - install.status.status | lower == 'deployed'
- install.status.chart == chart_test+"-"+chart_test_version - install.status.chart == "{{ chart_test }}-{{ chart_test_version }}"
- "install.status['values'].revisionHistoryLimit == 0" - "install.status['values'].revisionHistoryLimit == 0"
- name: "Remove Vars to {{ chart_test }} from {{ source }}" - name: "Remove Vars to {{ chart_test }} from {{ source }}"
@@ -165,7 +165,7 @@
that: that:
- install is changed - install is changed
- install.status.status | lower == 'deployed' - install.status.status | lower == 'deployed'
- install.status.chart == chart_test+"-"+chart_test_version - install.status.chart == "{{ chart_test }}-{{ chart_test_version }}"
- install.status['values'] == {} - install.status['values'] == {}
- name: Check idempotency after removing vars - name: Check idempotency after removing vars
@@ -182,7 +182,7 @@
that: that:
- install is not changed - install is not changed
- install.status.status | lower == 'deployed' - install.status.status | lower == 'deployed'
- install.status.chart == chart_test+"-"+chart_test_version - install.status.chart == "{{ chart_test }}-{{ chart_test_version }}"
- install.status['values'] == {} - install.status['values'] == {}
- name: "Upgrade {{ chart_test }} from {{ source }}" - name: "Upgrade {{ chart_test }} from {{ source }}"
@@ -199,7 +199,7 @@
that: that:
- install is changed - install is changed
- install.status.status | lower == 'deployed' - install.status.status | lower == 'deployed'
- install.status.chart == chart_test+"-"+chart_test_version_upgrade - install.status.chart == "{{ chart_test }}-{{ chart_test_version_upgrade }}"
- name: Check idempotency after upgrade - name: Check idempotency after upgrade
helm: helm:
@@ -215,7 +215,7 @@
that: that:
- install is not changed - install is not changed
- install.status.status | lower == 'deployed' - install.status.status | lower == 'deployed'
- install.status.chart == chart_test+"-"+chart_test_version_upgrade - install.status.chart == "{{ chart_test }}-{{ chart_test_version_upgrade }}"
- name: "Remove {{ chart_test }} from {{ source }}" - name: "Remove {{ chart_test }} from {{ source }}"
helm: helm:
@@ -316,7 +316,7 @@
that: that:
- install is changed - install is changed
- install.status.status | lower == 'deployed' - install.status.status | lower == 'deployed'
- install.status.chart == chart_test+"-"+chart_test_version - install.status.chart == "{{ chart_test }}-{{ chart_test_version }}"
- "install.status['values'].revisionHistoryLimit == 0" - "install.status['values'].revisionHistoryLimit == 0"
- name: "Install {{ chart_test }} from {{ source }} with values_files (again)" - name: "Install {{ chart_test }} from {{ source }} with values_files (again)"
@@ -357,7 +357,7 @@
- result is changed - result is changed
- result is not failed - result is not failed
- result.rc == 0 - result.rc == 0
- result.command is match(helm_binary+" template "+chart_source) - result.command is match("{{ helm_binary }} template {{ chart_source }}")
- name: Check templates created - name: Check templates created
stat: stat:
@@ -388,7 +388,7 @@
- result is changed - result is changed
- result is not failed - result is not failed
- result.rc == 0 - result.rc == 0
- result.command is match(helm_binary+" template MyRelease "+chart_source) - result.command is match("{{ helm_binary }} template MyRelease {{ chart_source }}")
- result.stdout is search("ThisValue") - result.stdout is search("ThisValue")
when: chart_source is search("test-chart") when: chart_source is search("test-chart")
# limit assertion of test result to controlled (local) chart_source # limit assertion of test result to controlled (local) chart_source

View File

@@ -1,24 +0,0 @@
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"

View File

@@ -1,7 +0,0 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: cmap
data:
ansible_version: {{ .Values.ansible_version }}
phase: {{ .Values.phase }}

View File

@@ -1,2 +0,0 @@
ansible_version: milestone
phase: uat

View File

@@ -143,8 +143,6 @@
chart_ref: "{{ test_chart_ref }}" chart_ref: "{{ test_chart_ref }}"
values: values:
foo: gaz foo: gaz
values_files:
- "{{ test_chart_ref }}/values.yml"
register: install register: install
- assert: - assert:
@@ -159,46 +157,6 @@
chart_ref: "{{ test_chart_ref }}" chart_ref: "{{ test_chart_ref }}"
values: values:
foo: gaz 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 register: install
- assert: - assert:
@@ -298,7 +256,4 @@
kind: Namespace kind: Namespace
name: "{{ helm_namespace }}" name: "{{ helm_namespace }}"
state: absent state: absent
wait: true
ignore_errors: yes ignore_errors: yes
- include_tasks: reuse_values.yml

View File

@@ -1,93 +0,0 @@
---
- 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

View File

@@ -1,10 +1,6 @@
--- ---
- name: Test helm with in-memory kubeconfig - name: Test helm with in-memory kubeconfig
include_tasks: "from_in_memory_kubeconfig.yml" include_tasks: "from_in_memory_kubeconfig.yml"
loop_control:
loop_var: test_helm_version
with_items:
- "v3.10.3"
- name: Test helm with custom kubeconfig and validate_certs=false - name: Test helm with custom kubeconfig and validate_certs=false
include_tasks: "from_kubeconfig_with_validate_certs.yml" include_tasks: "from_kubeconfig_with_validate_certs.yml"
@@ -12,10 +8,12 @@
loop_var: test_helm_version loop_var: test_helm_version
with_items: with_items:
- "v3.10.3" - "v3.10.3"
- "v3.8.2"
- name: Test helm with custom kubeconfig and ca_cert - name: Test helm with custom kubeconfig and ca_cert
include_tasks: "from_kubeconfig_with_cacert.yml" include_tasks: "from_kubeconfig_with_cacert.yml"
loop_control: loop_control:
loop_var: test_helm_version loop_var: test_helm_version
with_items: with_items:
- "v3.10.3" - "v3.5.1"
- "v3.4.2"

View File

@@ -182,7 +182,7 @@
- name: assert that pods are running on cordoned node - name: assert that pods are running on cordoned node
assert: assert:
that: that:
- Pod.resources | selectattr('status.phase', 'equalto', 'Running') | selectattr('spec.nodeName', 'equalto', node_to_drain) | list | length > 0 - "{{ Pod.resources | selectattr('status.phase', 'equalto', 'Running') | selectattr('spec.nodeName', 'equalto', node_to_drain) | list | length > 0 }}"
- name: Uncordon node - name: Uncordon node
k8s_drain: k8s_drain:
@@ -236,7 +236,7 @@
assert: assert:
that: that:
- drain_result is changed - drain_result is changed
- '"node "+node_to_drain+" marked unschedulable." in drain_result.result' - '"node {{ node_to_drain }} marked unschedulable." in drain_result.result'
- name: assert that unmanaged pod were deleted - name: assert that unmanaged pod were deleted
k8s_info: k8s_info:
@@ -338,7 +338,7 @@
assert: assert:
that: that:
- disable_evict is changed - disable_evict is changed
- '"node "+node_to_drain+" marked unschedulable." in disable_evict.result' - '"node {{ node_to_drain }} marked unschedulable." in disable_evict.result'
- name: assert that unmanaged pod were deleted - name: assert that unmanaged pod were deleted
k8s_info: k8s_info:
@@ -401,7 +401,7 @@
assert: assert:
that: that:
- drain_pod_selector is changed - drain_pod_selector is changed
- '"node "+node_to_drain+" marked unschedulable." in drain_pod_selector.result' - '"node {{ node_to_drain }} marked unschedulable." in drain_pod_selector.result'
- name: assert that pod created before is still running - name: assert that pod created before is still running
k8s_info: k8s_info:
@@ -429,8 +429,8 @@
assert: assert:
that: that:
- drain_pod_selector_equal is changed - drain_pod_selector_equal is changed
- '"node "+node_to_drain+" already marked unschedulable." in drain_pod_selector_equal.result' - '"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' - '"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 - name: Uncordon node
k8s_drain: k8s_drain:

View File

@@ -424,7 +424,7 @@
- assert: - assert:
that: that:
- result.resources[0].data.testkey == (cmap_data.stdout | b64encode) - result.resources[0].data.testkey == "{{ cmap_data.stdout | b64encode }}"
# test setting module defaults for kubernetes.core.k8s_info # test setting module defaults for kubernetes.core.k8s_info
- block: - block:

View File

@@ -69,7 +69,7 @@
- name: assert pod has been created - name: assert pod has been created
assert: assert:
that: that:
- pods.resources | length == 1 - "{{ pods.resources | length == 1 }}"
- name: create pod using generate_name parameter should succeed - name: create pod using generate_name parameter should succeed
k8s: k8s:
@@ -86,7 +86,7 @@
- name: assert pod has been created - name: assert pod has been created
assert: assert:
that: that:
- pods.resources | length == 2 - "{{ pods.resources | length == 2 }}"
- name: create pod using metadata.generateName parameter should succeed - name: create pod using metadata.generateName parameter should succeed
k8s: k8s:
@@ -102,7 +102,7 @@
- name: assert pod has been created - name: assert pod has been created
assert: assert:
that: that:
- pods.resources | length == 3 - "{{ pods.resources | length == 3 }}"
- name: create object using metadata.generateName should support wait option - name: create object using metadata.generateName should support wait option
k8s: k8s:

View File

@@ -1,32 +0,0 @@
---
# Testing fix for issue https://github.com/ansible-collections/kubernetes.core/pull/676
- vars:
kubevirt_release: "v1.1.1"
block:
- name: Delete existing namespace
kubernetes.core.k8s:
kind: namespace
namespace: kubevirt
state: absent
- name: Create kubevirt resources
kubernetes.core.k8s:
state: present
apply: true
src: "{{ item }}"
with_items:
- "https://github.com/kubevirt/kubevirt/releases/download/{{ kubevirt_release }}/kubevirt-operator.yaml"
- "https://github.com/kubevirt/kubevirt/releases/download/{{ kubevirt_release }}/kubevirt-cr.yaml"
- name: Read kubevirt Deployment
k8s_info:
kind: Deployment
namespace: kubevirt
always:
- name: Delete existing namespace
kubernetes.core.k8s:
kind: namespace
namespace: kubevirt
state: absent
wait: true
ignore_errors: true

View File

@@ -3,4 +3,3 @@
with_items: with_items:
- wait - wait
- api-server-caching - api-server-caching
- discovery

View File

@@ -192,7 +192,7 @@
- name: Check that module waited - name: Check that module waited
assert: assert:
that: that:
- ( lookup('pipe', 'date +%s')|int - start|int ) > 30 - "{{ lookup('pipe', 'date +%s') }} - {{ start }} > 30"
- name: Create simple pod - name: Create simple pod
k8s: k8s:

View File

@@ -11,7 +11,7 @@
assert: assert:
that: that:
- fake_pod is failed - fake_pod is failed
- fake_pod.msg == "Pod "+test_namespace+"/this_pod_does_exist not found." - 'fake_pod.msg == "Pod {{ test_namespace }}/this_pod_does_exist not found."'
- name: create hello-world deployment - name: create hello-world deployment
k8s: k8s:

View File

@@ -65,7 +65,7 @@
assert: assert:
that: that:
- _result.result.status.phase == 'Running' - _result.result.status.phase == 'Running'
- _result.result.spec.nodeName == node_to_taint - _result.result.spec.nodeName == "{{ node_to_taint }}"
- name: Taint node (check_mode) - name: Taint node (check_mode)
kubernetes.core.k8s_taint: kubernetes.core.k8s_taint:
@@ -89,8 +89,8 @@
assert: assert:
that: that:
- _result.changed - _result.changed
- item['effect'] == taint_patch_1[0]['effect'] - "{{ item['effect'] == taint_patch_1[0]['effect'] }}"
- item['key'] == taint_patch_1[0]['key'] - "{{ item['key'] == taint_patch_1[0]['key'] }}"
loop: "{{ _result.result.spec.taints }}" loop: "{{ _result.result.spec.taints }}"
- name: Taint node (idempotency) - (check_mode) - name: Taint node (idempotency) - (check_mode)

View File

@@ -213,8 +213,8 @@
- name: check that resources creation failed - name: check that resources creation failed
assert: assert:
that: that:
- resource.results.0.resources | length == 0 - '{{ resource.results[0].resources | length == 0 }}'
- resource.results.1.resources | length == 0 - '{{ resource.results[1].resources | length == 0 }}'
- name: create pod without namespace (continue_on_error = true) - name: create pod without namespace (continue_on_error = true)
kubernetes.core.k8s: kubernetes.core.k8s:

View File

@@ -130,9 +130,9 @@
assert: assert:
that: that:
- result_configmap.apiVersion == 'v1' - result_configmap.apiVersion == 'v1'
- result_configmap.metadata.name == configmap_name - result_configmap.metadata.name == "{{ configmap_name }}"
- result_configmap.metadata.namespace == test_namespace[2] - result_configmap.metadata.namespace == "{{ test_namespace[2] }}"
- result_configmap.data.value == configmap_data - result_configmap.data.value == "{{ configmap_data }}"
# test lookup plugin using src parameter # test lookup plugin using src parameter
- block: - block:
@@ -159,9 +159,9 @@
assert: assert:
that: that:
- src_configmap.apiVersion == 'v1' - src_configmap.apiVersion == 'v1'
- src_configmap.metadata.name == configmap_name - src_configmap.metadata.name == "{{ configmap_name }}"
- src_configmap.metadata.namespace == test_namespace[2] - src_configmap.metadata.namespace == "{{ test_namespace[2] }}"
- src_configmap.data.value == configmap_data - src_configmap.data.value == "{{ configmap_data }}"
always: always:
- name: Delete temporary file created - name: Delete temporary file created
@@ -198,9 +198,9 @@
assert: assert:
that: that:
- configmap_no_ssl.apiVersion == 'v1' - configmap_no_ssl.apiVersion == 'v1'
- configmap_no_ssl.metadata.name == configmap_name - configmap_no_ssl.metadata.name == "{{ configmap_name }}"
- configmap_no_ssl.metadata.namespace == test_namespace[2] - configmap_no_ssl.metadata.namespace == "{{ test_namespace[2] }}"
- configmap_no_ssl.data.value == configmap_data - configmap_no_ssl.data.value == "{{ configmap_data }}"
- name: Retrieve configmap using authentication aliases (validate_certs=true) - name: Retrieve configmap using authentication aliases (validate_certs=true)
set_fact: set_fact:
@@ -210,9 +210,9 @@
assert: assert:
that: that:
- configmap_with_ssl.apiVersion == 'v1' - configmap_with_ssl.apiVersion == 'v1'
- configmap_with_ssl.metadata.name == configmap_name - configmap_with_ssl.metadata.name == "{{ configmap_name }}"
- configmap_with_ssl.metadata.namespace == test_namespace[2] - configmap_with_ssl.metadata.namespace == "{{ test_namespace[2] }}"
- configmap_with_ssl.data.value == configmap_data - configmap_with_ssl.data.value == "{{ configmap_data }}"
always: always:
- name: Delete temporary directory - name: Delete temporary directory

View File

@@ -0,0 +1,616 @@
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

View File

@@ -0,0 +1,593 @@
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
tests/integration/targets/k8s_delete/files/deployments.yaml yamllint!skip

View File

@@ -1,22 +1,23 @@
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.9!skip
plugins/module_utils/client/discovery.py import-3.10!skip plugins/module_utils/client/discovery.py import-3.10!skip
plugins/module_utils/client/discovery.py import-3.11!skip plugins/module_utils/client/resource.py import-3.6!skip
plugins/module_utils/client/discovery.py import-3.12!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.9!skip
plugins/module_utils/client/resource.py import-3.10!skip plugins/module_utils/client/resource.py import-3.10!skip
plugins/module_utils/client/resource.py import-3.11!skip plugins/module_utils/k8sdynamicclient.py import-3.6!skip
plugins/module_utils/client/resource.py import-3.12!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.9!skip
plugins/module_utils/k8sdynamicclient.py import-3.10!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.py validate-modules:parameter-type-not-in-doc
plugins/modules/k8s_scale.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 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/definitions.yml yamllint!skip
tests/unit/module_utils/fixtures/deployments.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/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-v2/templates/configmap.yaml yamllint!skip
tests/integration/targets/helm/files/appversionless-chart/templates/configmap.yaml yamllint!skip tests/integration/targets/helm/files/appversionless-chart/templates/configmap.yaml yamllint!skip
@@ -24,8 +25,9 @@ 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/files/test-chart/templates/configmap.yaml yamllint!skip
tests/integration/targets/helm_diff/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/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.py validate-modules:return-syntax-error
plugins/modules/k8s_scale.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_service.py validate-modules:return-syntax-error
plugins/modules/k8s_taint.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 tests/integration/targets/k8s_delete/files/deployments.yaml yamllint!skip

View File

@@ -0,0 +1,33 @@
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
tests/integration/targets/k8s_delete/files/deployments.yaml yamllint!skip

View File

@@ -1,9 +1,18 @@
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.9!skip
plugins/module_utils/client/discovery.py import-3.10!skip plugins/module_utils/client/discovery.py import-3.10!skip
plugins/module_utils/client/discovery.py import-3.11!skip plugins/module_utils/client/discovery.py import-3.11!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.9!skip
plugins/module_utils/client/resource.py import-3.10!skip plugins/module_utils/client/resource.py import-3.10!skip
plugins/module_utils/client/resource.py import-3.11!skip plugins/module_utils/client/resource.py import-3.11!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.9!skip
plugins/module_utils/k8sdynamicclient.py import-3.10!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.11!skip
@@ -19,9 +28,9 @@ 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/files/test-chart/templates/configmap.yaml yamllint!skip
tests/integration/targets/helm_diff/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/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.py validate-modules:return-syntax-error
plugins/modules/k8s_scale.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_service.py validate-modules:return-syntax-error
plugins/modules/k8s_taint.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/k8s_delete/files/deployments.yaml yamllint!skip
tests/integration/targets/helm_diff/files/test-chart-reuse-values/templates/configmap.yaml yamllint!skip

View File

@@ -1,9 +1,18 @@
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.9!skip
plugins/module_utils/client/discovery.py import-3.10!skip plugins/module_utils/client/discovery.py import-3.10!skip
plugins/module_utils/client/discovery.py import-3.11!skip plugins/module_utils/client/discovery.py import-3.11!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.9!skip
plugins/module_utils/client/resource.py import-3.10!skip plugins/module_utils/client/resource.py import-3.10!skip
plugins/module_utils/client/resource.py import-3.11!skip plugins/module_utils/client/resource.py import-3.11!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.9!skip
plugins/module_utils/k8sdynamicclient.py import-3.10!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.11!skip
@@ -21,8 +30,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/files/test-chart/templates/configmap.yaml yamllint!skip
tests/integration/targets/helm_diff/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/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.py validate-modules:return-syntax-error
plugins/modules/k8s_scale.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_service.py validate-modules:return-syntax-error
plugins/modules/k8s_taint.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

View File

@@ -1,11 +1,20 @@
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.9!skip
plugins/module_utils/client/discovery.py import-3.10!skip plugins/module_utils/client/discovery.py import-3.10!skip
plugins/module_utils/client/discovery.py import-3.11!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/discovery.py import-3.12!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.9!skip
plugins/module_utils/client/resource.py import-3.10!skip plugins/module_utils/client/resource.py import-3.10!skip
plugins/module_utils/client/resource.py import-3.11!skip plugins/module_utils/client/resource.py import-3.11!skip
plugins/module_utils/client/resource.py import-3.12!skip plugins/module_utils/client/resource.py import-3.12!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.9!skip
plugins/module_utils/k8sdynamicclient.py import-3.10!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.11!skip
@@ -24,8 +33,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/files/test-chart/templates/configmap.yaml yamllint!skip
tests/integration/targets/helm_diff/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/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.py validate-modules:return-syntax-error
plugins/modules/k8s_scale.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_service.py validate-modules:return-syntax-error
plugins/modules/k8s_taint.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

View File

@@ -1,22 +1,26 @@
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.9!skip
plugins/module_utils/client/discovery.py import-3.10!skip plugins/module_utils/client/discovery.py import-3.10!skip
plugins/module_utils/client/discovery.py import-3.11!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.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.9!skip
plugins/module_utils/client/resource.py import-3.10!skip plugins/module_utils/client/resource.py import-3.10!skip
plugins/module_utils/client/resource.py import-3.11!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.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.9!skip
plugins/module_utils/k8sdynamicclient.py import-3.10!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.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.py validate-modules:parameter-type-not-in-doc
plugins/modules/k8s_scale.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 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/definitions.yml yamllint!skip
tests/unit/module_utils/fixtures/deployments.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/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-v2/templates/configmap.yaml yamllint!skip
tests/integration/targets/helm/files/appversionless-chart/templates/configmap.yaml yamllint!skip tests/integration/targets/helm/files/appversionless-chart/templates/configmap.yaml yamllint!skip
@@ -24,8 +28,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/files/test-chart/templates/configmap.yaml yamllint!skip
tests/integration/targets/helm_diff/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/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.py validate-modules:return-syntax-error
plugins/modules/k8s_scale.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_service.py validate-modules:return-syntax-error
plugins/modules/k8s_taint.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

609
tests/sanity/ignore-2.9.txt Normal file
View File

@@ -0,0 +1,609 @@
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/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/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

View File

@@ -0,0 +1,215 @@
#!/usr/bin/env python3
import itertools
from pathlib import Path
# Mapping of Ansible versions to supported Python versions
ANSIBLE_VERSIONS = {
"2.9": ["3.6", "3.7", "3.8"],
"2.10": ["3.6", "3.7", "3.8", "3.9"],
"2.11": ["3.6", "3.7", "3.8", "3.9"],
"2.12": ["3.6", "3.7", "3.8", "3.9", "3.10"],
"2.13": ["3.6", "3.7", "3.8", "3.9", "3.10"],
"2.14": ["3.6", "3.7", "3.8", "3.9", "3.10"],
"2.15": ["3.6", "3.7", "3.8", "3.9", "3.10", "3.11"],
}
IMPORT_SKIPS = [
"plugins/module_utils/client/discovery.py",
"plugins/module_utils/client/resource.py",
"plugins/module_utils/k8sdynamicclient.py",
]
# Adds validate-modules:parameter-type-not-in-doc
PARAM_TYPE_SKIPS = [
"plugins/modules/k8s.py",
"plugins/modules/k8s_scale.py",
"plugins/modules/k8s_service.py",
]
# Adds validate-modules:return-syntax-error
RETURN_SYNTAX_SKIPS = [
"plugins/modules/k8s.py",
"plugins/modules/k8s_scale.py",
"plugins/modules/k8s_service.py",
"plugins/modules/k8s_taint.py",
]
YAML_LINT_SKIPS = [
"tests/unit/module_utils/fixtures/definitions.yml",
"tests/unit/module_utils/fixtures/deployments.yml",
"tests/unit/module_utils/fixtures/pods.yml",
"tests/integration/targets/helm/files/appversionless-chart-v2/templates/configmap.yaml",
"tests/integration/targets/helm/files/appversionless-chart/templates/configmap.yaml",
"tests/integration/targets/helm/files/test-chart-v2/templates/configmap.yaml",
"tests/integration/targets/helm/files/test-chart/templates/configmap.yaml",
"tests/integration/targets/helm_diff/files/test-chart/templates/configmap.yaml",
"tests/integration/targets/k8s_scale/files/deployment.yaml",
"tests/integration/targets/k8s_delete/files/deployments.yaml",
]
# Add shebang!skip
SHEBANG_SKIPS = [
"tests/sanity/refresh_ignore_files",
]
# Add validate-modules:import-error
VALIDATE_IMPORT_SKIPS = [
"plugins/modules/k8s.py",
"plugins/modules/k8s_cp.py",
"plugins/modules/k8s_drain.py",
"plugins/modules/k8s_exec.py",
"plugins/modules/k8s_info.py",
"plugins/modules/k8s_json_patch.py",
"plugins/modules/k8s_log.py",
"plugins/modules/k8s_rollback.py",
"plugins/modules/k8s_scale.py",
"plugins/modules/k8s_service.py",
"plugins/modules/k8s_taint.py",
]
def import_skips(*versions):
for f in IMPORT_SKIPS:
for v in versions:
yield f"{f} import-{v}!skip"
def param_type_skips(ansible_version):
if ansible_version not in ("2.9", "2.10"):
for f in PARAM_TYPE_SKIPS:
yield f"{f} validate-modules:parameter-type-not-in-doc"
def return_syntax_skips(ansible_version):
if ansible_version not in ("2.9", "2.10"):
for f in RETURN_SYNTAX_SKIPS:
yield f"{f} validate-modules:return-syntax-error"
else:
yield
def yaml_lint_skips():
for f in YAML_LINT_SKIPS:
yield f"{f} yamllint!skip"
def shebang_skips():
for f in SHEBANG_SKIPS:
yield f"{f} shebang!skip"
def import_boilerplate(path, ansible_version):
if ansible_version in ("2.9", "2.10", "2.11"):
for f in (p for p in path.glob("**/*.py") if not p.is_symlink()):
yield f"{f} future-import-boilerplate!skip"
else:
yield
def metaclass_boilerplate(path, ansible_version):
if ansible_version in ("2.9", "2.10", "2.11"):
for f in (p for p in path.glob("**/*.py") if not p.is_symlink()):
yield f"{f} metaclass-boilerplate!skip"
else:
yield
def unsupported_compile_skips(path, ansible_version):
"""This adds rules for compile skips for all unsupported versions of python.
These aren't needed for Ansible version 2.12+ as that can be managed on a
global level in tests/config.yml.
"""
if ansible_version in ("2.9", "2.10", "2.11"):
for f in (p for p in path.glob("**/*.py") if not p.is_symlink()):
yield (
f"{f} compile-2.6!skip\n"
f"{f} compile-2.7!skip\n"
f"{f} compile-3.5!skip"
)
def unsupported_import_skips(path, ansible_version):
"""This adds rules for import skips for all unsupported versions of python.
These aren't needed for Ansible version 2.12+ as that can be managed on a
global level in tests/config.yml.
"""
if ansible_version in ("2.9", "2.10", "2.11"):
if ansible_version in ("2.9", "2.10") and path.name == "plugins":
pathglob = itertools.chain(
path.joinpath("modules").glob("**/*.py"),
path.joinpath("module_utils").glob("**/*.py")
)
else:
pathglob = path.glob("**/*.py")
for f in (p for p in pathglob if not p.is_symlink()):
yield (
f"{f} import-2.6!skip\n"
f"{f} import-2.7!skip\n"
f"{f} import-3.5!skip"
)
def unsupported_pylint_skips(path, ansible_version):
"""This adds rules to skip pylint checks.
This is only a problem on Ansible version 2.9 and 2.10 with python 3.5,
but there's no way to restrict this to a specific version of python.
"""
if ansible_version in ("2.9", "2.10"):
pathglob = itertools.chain(
path.joinpath("plugins/modules").glob("**/*.py"),
path.joinpath("plugins/module_utils").glob("**/*.py"),
path.joinpath("tests").glob("**/*.py"),
)
for f in (p for p in pathglob if not p.is_symlink()):
yield f"{f} pylint!skip"
def unsupported_validate_modules_skips(ansible_version):
"""Disable validate-modules test.
Unfortunately, this is overly broad. Applying a validate-modules:import-error
skip fixes ansible 2.9 and python <3.6, but causes validation of the ignores
file itself to fail in python 3.6+. The only solution here is to simply
skip validate-modules altogether.
"""
if ansible_version in ("2.9", "2.10"):
for f in VALIDATE_IMPORT_SKIPS:
yield f"{f} validate-modules!skip"
def main():
target_dir = Path('.')
sanity_dir = target_dir / "tests" / "sanity"
plugins = target_dir / "plugins"
units = target_dir / "tests" / "unit"
integration = target_dir / "tests" / "integration"
for ansible, python in ANSIBLE_VERSIONS.items():
with open(sanity_dir / f"ignore-{ansible}.txt", "w") as fp:
ignores = itertools.chain(
import_skips(*python),
param_type_skips(ansible),
yaml_lint_skips(),
shebang_skips(),
return_syntax_skips(ansible),
import_boilerplate(plugins, ansible),
import_boilerplate(units, ansible),
metaclass_boilerplate(plugins, ansible),
metaclass_boilerplate(units, ansible),
unsupported_import_skips(plugins, ansible),
unsupported_compile_skips(plugins, ansible),
unsupported_compile_skips(units, ansible),
unsupported_compile_skips(integration, ansible),
unsupported_pylint_skips(target_dir, ansible),
unsupported_validate_modules_skips(ansible),
)
for f in filter(None, ignores):
fp.write(f + "\n")
if __name__ == "__main__":
main()

View File

@@ -31,7 +31,7 @@ modified_def["metadata"]["labels"]["environment"] = "testing"
@pytest.mark.parametrize( @pytest.mark.parametrize(
"action, params, existing, instance_warnings, expected", "action, params, existing, instance, expected",
[ [
( (
"delete", "delete",
@@ -51,26 +51,14 @@ modified_def["metadata"]["labels"]["environment"] = "testing"
"apply", "apply",
{"apply": "yes"}, {"apply": "yes"},
{}, {},
(definition, []), definition,
{"changed": True, "method": "apply", "result": definition}, {"changed": True, "method": "apply", "result": definition},
), ),
(
"apply",
{"apply": "yes"},
{},
(definition, ["test warning"]),
{
"changed": True,
"method": "apply",
"result": definition,
"warnings": ["test warning"],
},
),
( (
"create", "create",
{"state": "patched"}, {"state": "patched"},
{}, {},
({}, []), {},
{ {
"changed": False, "changed": False,
"result": {}, "result": {},
@@ -83,78 +71,42 @@ modified_def["metadata"]["labels"]["environment"] = "testing"
"create", "create",
{}, {},
{}, {},
(definition, []), definition,
{"changed": True, "method": "create", "result": definition}, {"changed": True, "method": "create", "result": definition},
), ),
(
"create",
{},
{},
(definition, ["test warning"]),
{
"changed": True,
"method": "create",
"result": definition,
"warnings": ["test warning"],
},
),
( (
"replace", "replace",
{"force": "yes"}, {"force": "yes"},
definition, definition,
(definition, []), definition,
{"changed": False, "method": "replace", "result": definition}, {"changed": False, "method": "replace", "result": definition},
), ),
( (
"replace", "replace",
{"force": "yes"}, {"force": "yes"},
definition, definition,
(modified_def, []), modified_def,
{"changed": True, "method": "replace", "result": modified_def}, {"changed": True, "method": "replace", "result": modified_def},
), ),
(
"replace",
{"force": "yes"},
definition,
(modified_def, ["test warning"]),
{
"changed": True,
"method": "replace",
"result": modified_def,
"warnings": ["test warning"],
},
),
( (
"update", "update",
{}, {},
definition, definition,
(definition, []), definition,
{"changed": False, "method": "update", "result": definition}, {"changed": False, "method": "update", "result": definition},
), ),
( (
"update", "update",
{}, {},
definition, definition,
(modified_def, []), modified_def,
{"changed": True, "method": "update", "result": modified_def}, {"changed": True, "method": "update", "result": modified_def},
), ),
(
"update",
{},
definition,
(modified_def, ["test warning"]),
{
"changed": True,
"method": "update",
"result": modified_def,
"warnings": ["test warning"],
},
),
( (
"create", "create",
{"label_selectors": ["app=foo"]}, {"label_selectors": ["app=foo"]},
{}, {},
(definition, []), definition,
{ {
"changed": False, "changed": False,
"msg": "resource 'kind=Pod,name=foo,namespace=foo' filtered by label_selectors.", "msg": "resource 'kind=Pod,name=foo,namespace=foo' filtered by label_selectors.",
@@ -164,18 +116,18 @@ modified_def["metadata"]["labels"]["environment"] = "testing"
"create", "create",
{"label_selectors": ["app=nginx"]}, {"label_selectors": ["app=nginx"]},
{}, {},
(definition, []), definition,
{"changed": True, "method": "create", "result": definition}, {"changed": True, "method": "create", "result": definition},
), ),
], ],
) )
def test_perform_action(action, params, existing, instance_warnings, expected): def test_perform_action(action, params, existing, instance, expected):
svc = Mock() svc = Mock()
svc.find_resource.return_value = Mock( svc.find_resource.return_value = Mock(
kind=definition["kind"], group_version=definition["apiVersion"] kind=definition["kind"], group_version=definition["apiVersion"]
) )
svc.retrieve.return_value = ResourceInstance(None, existing) if existing else None svc.retrieve.return_value = ResourceInstance(None, existing) if existing else None
spec = {action + ".return_value": instance_warnings} spec = {action + ".return_value": instance}
svc.configure_mock(**spec) svc.configure_mock(**spec)
result = perform_action(svc, definition, params) result = perform_action(svc, definition, params)

View File

@@ -1,11 +1,9 @@
from json import dumps
from unittest.mock import Mock from unittest.mock import Mock
import pytest import pytest
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.service import ( from ansible_collections.kubernetes.core.plugins.module_utils.k8s.service import (
K8sService, K8sService,
diff_objects, diff_objects,
parse_quoted_string,
) )
from kubernetes.dynamic.exceptions import NotFoundError from kubernetes.dynamic.exceptions import NotFoundError
from kubernetes.dynamic.resource import Resource, ResourceInstance from kubernetes.dynamic.resource import Resource, ResourceInstance
@@ -59,22 +57,6 @@ def mock_pod_updated_resource_instance():
return ResourceInstance(None, pod_definition_updated) return ResourceInstance(None, pod_definition_updated)
@pytest.fixture(scope="module")
def mock_pod_response():
resp = Mock()
resp.data.decode.return_value = dumps(pod_definition)
resp.headers = {}
return resp
@pytest.fixture(scope="module")
def mock_pod_warnings_response():
resp = Mock()
resp.data.decode.return_value = dumps(pod_definition)
resp.headers = {"warning": '299 - "test warning 1", 299 - "test warning 2"'}
return resp
def test_diff_objects_no_diff(): def test_diff_objects_no_diff():
match, diff = diff_objects(pod_definition, pod_definition) match, diff = diff_objects(pod_definition, pod_definition)
@@ -177,33 +159,16 @@ def test_service_delete_existing_resource_check_mode(mock_pod_resource_instance)
client.delete.assert_not_called() client.delete.assert_not_called()
def test_service_create_resource(mock_pod_response, mock_pod_resource_instance): def test_service_create_resource(mock_pod_resource_instance):
spec = {"create.side_effect": [mock_pod_response]} spec = {"create.side_effect": [mock_pod_resource_instance]}
client = Mock(**spec) client = Mock(**spec)
module = Mock() module = Mock()
module.params = {} module.params = {}
module.check_mode = False module.check_mode = False
svc = K8sService(client, module) svc = K8sService(client, module)
result, warnings = svc.create(Mock(), pod_definition) result = svc.create(Mock(), pod_definition)
assert result == mock_pod_resource_instance.to_dict() assert result == mock_pod_resource_instance.to_dict()
assert not warnings
def test_service_create_resource_warnings(
mock_pod_warnings_response, mock_pod_resource_instance
):
spec = {"create.side_effect": [mock_pod_warnings_response]}
client = Mock(**spec)
module = Mock()
module.params = {}
module.check_mode = False
svc = K8sService(client, module)
result, warnings = svc.create(Mock(), pod_definition)
assert result == mock_pod_resource_instance.to_dict()
assert warnings[0] == "test warning 1"
assert warnings[1] == "test warning 2"
def test_service_create_resource_check_mode(): def test_service_create_resource_check_mode():
@@ -211,10 +176,9 @@ def test_service_create_resource_check_mode():
client.create.return_value = mock_pod_resource_instance client.create.return_value = mock_pod_resource_instance
module = Mock(params={}, check_mode=True) module = Mock(params={}, check_mode=True)
svc = K8sService(client, module) svc = K8sService(client, module)
result, warnings = svc.create(Mock(), pod_definition) result = svc.create(Mock(), pod_definition)
assert result == pod_definition assert result == pod_definition
assert not warnings
client.create.assert_not_called() client.create.assert_not_called()
@@ -260,99 +224,40 @@ def test_create_project_request():
assert results["result"] == project_definition assert results["result"] == project_definition
def test_service_apply_existing_resource(mock_pod_response, mock_pod_resource_instance): def test_service_apply_existing_resource(mock_pod_resource_instance):
spec = {"apply.side_effect": [mock_pod_response]} spec = {"apply.side_effect": [mock_pod_resource_instance]}
client = Mock(**spec) client = Mock(**spec)
module = Mock() module = Mock()
module.params = {"apply": True} module.params = {"apply": True}
module.check_mode = False module.check_mode = False
svc = K8sService(client, module) svc = K8sService(client, module)
result, warnings = svc.apply( result = svc.apply(Mock(), pod_definition_updated, mock_pod_resource_instance)
Mock(), pod_definition_updated, mock_pod_resource_instance
)
assert result == mock_pod_resource_instance.to_dict() assert result == mock_pod_resource_instance.to_dict()
assert not warnings
def test_service_apply_existing_resource_warnings( def test_service_replace_existing_resource(mock_pod_resource_instance):
mock_pod_warnings_response, mock_pod_resource_instance spec = {"replace.side_effect": [mock_pod_resource_instance]}
):
spec = {"apply.side_effect": [mock_pod_warnings_response]}
client = Mock(**spec)
module = Mock()
module.params = {"apply": True}
module.check_mode = False
svc = K8sService(client, module)
result, warnings = svc.apply(
Mock(), pod_definition_updated, mock_pod_resource_instance
)
assert result == mock_pod_resource_instance.to_dict()
assert warnings[0] == "test warning 1"
assert warnings[1] == "test warning 2"
def test_service_replace_existing_resource(
mock_pod_response, mock_pod_resource_instance
):
spec = {"replace.side_effect": [mock_pod_response]}
client = Mock(**spec) client = Mock(**spec)
module = Mock() module = Mock()
module.params = {} module.params = {}
module.check_mode = False module.check_mode = False
svc = K8sService(client, module) svc = K8sService(client, module)
result, warnings = svc.replace(Mock(), pod_definition, mock_pod_resource_instance) result = svc.replace(Mock(), pod_definition, mock_pod_resource_instance)
assert result == mock_pod_resource_instance.to_dict() assert result == mock_pod_resource_instance.to_dict()
assert not warnings
def test_service_replace_existing_resource_warnings( def test_service_update_existing_resource(mock_pod_resource_instance):
mock_pod_warnings_response, mock_pod_resource_instance spec = {"replace.side_effect": [mock_pod_resource_instance]}
):
spec = {"replace.side_effect": [mock_pod_warnings_response]}
client = Mock(**spec) client = Mock(**spec)
module = Mock() module = Mock()
module.params = {} module.params = {}
module.check_mode = False module.check_mode = False
svc = K8sService(client, module) svc = K8sService(client, module)
result, warnings = svc.replace(Mock(), pod_definition, mock_pod_resource_instance) result = svc.replace(Mock(), pod_definition, mock_pod_resource_instance)
assert result == mock_pod_resource_instance.to_dict() assert result == mock_pod_resource_instance.to_dict()
assert warnings[0] == "test warning 1"
assert warnings[1] == "test warning 2"
def test_service_update_existing_resource(
mock_pod_response, mock_pod_resource_instance
):
spec = {"replace.side_effect": [mock_pod_response]}
client = Mock(**spec)
module = Mock()
module.params = {}
module.check_mode = False
svc = K8sService(client, module)
result, warnings = svc.replace(Mock(), pod_definition, mock_pod_resource_instance)
assert result == mock_pod_resource_instance.to_dict()
assert not warnings
def test_service_update_existing_resource_warnings(
mock_pod_warnings_response, mock_pod_resource_instance
):
spec = {"replace.side_effect": [mock_pod_warnings_response]}
client = Mock(**spec)
module = Mock()
module.params = {}
module.check_mode = False
svc = K8sService(client, module)
result, warnings = svc.replace(Mock(), pod_definition, mock_pod_resource_instance)
assert result == mock_pod_resource_instance.to_dict()
assert warnings[0] == "test warning 1"
assert warnings[1] == "test warning 2"
def test_service_find(mock_pod_resource_instance): def test_service_find(mock_pod_resource_instance):
@@ -383,24 +288,3 @@ def test_service_find_error():
assert isinstance(results, dict) assert isinstance(results, dict)
assert results["api_found"] is True assert results["api_found"] is True
assert results["resources"] == [] assert results["resources"] == []
@pytest.mark.parametrize(
"quoted_string,expected_val,expected_remainder",
[
(
'"Response is stale" Tue, 15 Nov 1994 12:45:26 GMT',
"Response is stale",
"Tue, 15 Nov 1994 12:45:26 GMT",
),
(
'"unknown field \\"spec.template.spec.disk\\""',
'unknown field "spec.template.spec.disk"',
"",
),
],
)
def test_parse_quoted_string(quoted_string, expected_val, expected_remainder):
val, remainder = parse_quoted_string(quoted_string)
assert val == expected_val
assert remainder == expected_remainder