Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

k8s_info causes an unavoidable error when the API cannot accept the connection #407

Closed
sugitk opened this issue Mar 15, 2022 · 3 comments · Fixed by #408
Closed

k8s_info causes an unavoidable error when the API cannot accept the connection #407

sugitk opened this issue Mar 15, 2022 · 3 comments · Fixed by #408
Labels
has_pr needs_info Needs additional information from original reporter type/bug Something isn't working

Comments

@sugitk
Copy link

sugitk commented Mar 15, 2022

SUMMARY

k8s_info causes an unavoidable error when the API cannot accept the connection

ISSUE TYPE
  • Bug Report
COMPONENT NAME

k8s_info

ANSIBLE VERSION
COLLECTION VERSION
Collection      Version
--------------- -------
kubernetes.core 2.2.3  
CONFIGURATION
OS / ENVIRONMENT
STEPS TO REPRODUCE
  1. define a task in a playbook
  k8s_info:
    api_version: config.openshift.io/v1
    kind: ClusterVersion
    name: version
  register: clusterversion
  1. run the above playbook periodically during the upgrading the OCP cluster
EXPECTED RESULTS

Grabbing the connection error in the module so that we can retry the task. And if possible, I request wait or wait_condition can handle this connection error and retry the connection internally until the API endpoint comes up.

ACTUAL RESULTS

When the OCP API cannot accept the connection during the rebooting the node or something, the k8s_info module shows an error like this: (hostname and sensitive information are masked)

The full traceback is:
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 343, in _make_request
    self._validate_conn(conn)
  File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 839, in _validate_conn
    conn.connect()
  File "/usr/lib/python3.6/site-packages/urllib3/connection.py", line 358, in connect
    ssl_context=context)
  File "/usr/lib/python3.6/site-packages/urllib3/util/ssl_.py", line 354, in ssl_wrap_socket
    return context.wrap_socket(sock, server_hostname=server_hostname)
  File "/usr/lib64/python3.6/ssl.py", line 365, in wrap_socket
    _context=self, _session=session)
  File "/usr/lib64/python3.6/ssl.py", line 776, in __init__
    self.do_handshake()
  File "/usr/lib64/python3.6/ssl.py", line 1036, in do_handshake
    self._sslobj.do_handshake()
  File "/usr/lib64/python3.6/ssl.py", line 648, in do_handshake
    self._sslobj.do_handshake()
OSError: [Errno 0] Error
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/home/user123/.ansible/tmp/ansible-tmp-1646850721.6780913-270968-159374049705148/AnsiballZ_k8s_info.py", line 102, in <module>
    _ansiballz_main()
  File "/home/user123/.ansible/tmp/ansible-tmp-1646850721.6780913-270968-159374049705148/AnsiballZ_k8s_info.py", line 94, in _ansiballz_main
    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)
  File "/home/user123/.ansible/tmp/ansible-tmp-1646850721.6780913-270968-159374049705148/AnsiballZ_k8s_info.py", line 40, in invoke_module
    runpy.run_module(mod_name='ansible_collections.kubernetes.core.plugins.modules.k8s_info', init_globals=None, run_name='__main__', alter_sys=True)
  File "/usr/lib64/python3.6/runpy.py", line 205, in run_module
    return _run_module_code(code, init_globals, run_name, mod_spec)
  File "/usr/lib64/python3.6/runpy.py", line 96, in _run_module_code
    mod_name, mod_spec, pkg_name, script_name)
  File "/usr/lib64/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmp/ansible_k8s_info_payload_me2dfbo8/ansible_k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/modules/k8s_info.py", line 198, in <module>
  File "/tmp/ansible_k8s_info_payload_me2dfbo8/ansible_k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/modules/k8s_info.py", line 194, in main
  File "/tmp/ansible_k8s_info_payload_me2dfbo8/ansible_k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/modules/k8s_info.py", line 166, in execute_module
  File "/tmp/ansible_k8s_info_payload_me2dfbo8/ansible_k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/module_utils/common.py", line 305, in kubernetes_facts
  File "/tmp/ansible_k8s_info_payload_me2dfbo8/ansible_k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/module_utils/common.py", line 465, in wait
  File "/tmp/ansible_k8s_info_payload_me2dfbo8/ansible_k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/module_utils/common.py", line 380, in _wait_for
  File "/usr/lib/python3.6/site-packages/kubernetes/dynamic/client.py", line 107, in get
    return self.request('get', path, **kwargs)
  File "/usr/lib/python3.6/site-packages/kubernetes/dynamic/client.py", line 55, in inner
    resp = func(self, *args, **kwargs)
  File "/usr/lib/python3.6/site-packages/kubernetes/dynamic/client.py", line 252, in request
    _return_http_data_only=params.get('_return_http_data_only', True)
  File "/usr/lib/python3.6/site-packages/kubernetes/client/api_client.py", line 353, in call_api
    _preload_content, _request_timeout, _host)
  File "/usr/lib/python3.6/site-packages/kubernetes/client/api_client.py", line 184, in __call_api
    _request_timeout=_request_timeout)
  File "/usr/lib/python3.6/site-packages/kubernetes/client/api_client.py", line 377, in request
    headers=headers)
  File "/usr/lib/python3.6/site-packages/kubernetes/client/rest.py", line 243, in GET
    query_params=query_params)
  File "/usr/lib/python3.6/site-packages/kubernetes/client/rest.py", line 216, in request
    headers=headers)
  File "/usr/lib/python3.6/site-packages/urllib3/request.py", line 68, in request
    **urlopen_kw)
  File "/usr/lib/python3.6/site-packages/urllib3/request.py", line 89, in request_encode_url
    return self.urlopen(method, url, **extra_kw)
  File "/usr/lib/python3.6/site-packages/urllib3/poolmanager.py", line 324, in urlopen
    response = conn.urlopen(method, u.request_uri, **kw)
  File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 667, in urlopen
    **response_kw)
  File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 667, in urlopen
    **response_kw)
  File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 667, in urlopen
    **response_kw)
  File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 638, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "/usr/lib/python3.6/site-packages/urllib3/util/retry.py", line 399, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.xxxxxxxxxxxxxxxxxxxxxx', port=6443): Max retries exceeded with url: /apis/config.openshift.io/v1/clusterversions/version (Caused by ProtocolError('Connection aborted.', OSError(0, 'Error')))
fatal: [localhost]: FAILED! => {
    "changed": false,
    "invocation": {
        "api_key": "sha256~xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "api_version": "config.openshift.io/v1",
        "host": "https://api.xxxxxxxxxxxxxxxxxxxxxx:6443",
        "kind": "ClusterVersion",
        "module_args": {
            "api_key": "sha256~xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
            "api_version": "config.openshift.io/v1",
            "host": "https://api.xxxxxxxxxxxxxxxxxxxxxx:6443",
            "kind": "ClusterVersion",
            "name": "version",
            "validate_certs": false,
            "wait": true,
            "wait_condition": {
                "status": false,
                "type": "Progressing"
            },
            "wait_sleep": 300,
            "wait_timeout": 43200
        },
        "name": "version",
        "validate_certs": false,
        "wait": true,
        "wait_condition": {
            "status": false,
            "type": "Progressing"
        },
        "wait_sleep": 300,
        "wait_timeout": 43200
    },
    "rc": 1
}
MSG:
MODULE FAILURE
See stdout/stderr for the exact error
MODULE_STDERR:
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 343, in _make_request
    self._validate_conn(conn)
  File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 839, in _validate_conn
    conn.connect()
  File "/usr/lib/python3.6/site-packages/urllib3/connection.py", line 358, in connect
    ssl_context=context)
  File "/usr/lib/python3.6/site-packages/urllib3/util/ssl_.py", line 354, in ssl_wrap_socket
    return context.wrap_socket(sock, server_hostname=server_hostname)
  File "/usr/lib64/python3.6/ssl.py", line 365, in wrap_socket
    _context=self, _session=session)
  File "/usr/lib64/python3.6/ssl.py", line 776, in __init__
    self.do_handshake()
  File "/usr/lib64/python3.6/ssl.py", line 1036, in do_handshake
    self._sslobj.do_handshake()
  File "/usr/lib64/python3.6/ssl.py", line 648, in do_handshake
    self._sslobj.do_handshake()
OSError: [Errno 0] Error
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/home/user123/.ansible/tmp/ansible-tmp-1646850721.6780913-270968-159374049705148/AnsiballZ_k8s_info.py", line 102, in <module>
    _ansiballz_main()
  File "/home/user123/.ansible/tmp/ansible-tmp-1646850721.6780913-270968-159374049705148/AnsiballZ_k8s_info.py", line 94, in _ansiballz_main
    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)
  File "/home/user123/.ansible/tmp/ansible-tmp-1646850721.6780913-270968-159374049705148/AnsiballZ_k8s_info.py", line 40, in invoke_module
    runpy.run_module(mod_name='ansible_collections.kubernetes.core.plugins.modules.k8s_info', init_globals=None, run_name='__main__', alter_sys=True)
  File "/usr/lib64/python3.6/runpy.py", line 205, in run_module
    return _run_module_code(code, init_globals, run_name, mod_spec)
  File "/usr/lib64/python3.6/runpy.py", line 96, in _run_module_code
    mod_name, mod_spec, pkg_name, script_name)
  File "/usr/lib64/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmp/ansible_k8s_info_payload_me2dfbo8/ansible_k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/modules/k8s_info.py", line 198, in <module>
  File "/tmp/ansible_k8s_info_payload_me2dfbo8/ansible_k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/modules/k8s_info.py", line 194, in main
  File "/tmp/ansible_k8s_info_payload_me2dfbo8/ansible_k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/modules/k8s_info.py", line 166, in execute_module
  File "/tmp/ansible_k8s_info_payload_me2dfbo8/ansible_k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/module_utils/common.py", line 305, in kubernetes_facts
  File "/tmp/ansible_k8s_info_payload_me2dfbo8/ansible_k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/module_utils/common.py", line 465, in wait
  File "/tmp/ansible_k8s_info_payload_me2dfbo8/ansible_k8s_info_payload.zip/ansible_collections/kubernetes/core/plugins/module_utils/common.py", line 380, in _wait_for
  File "/usr/lib/python3.6/site-packages/kubernetes/dynamic/client.py", line 107, in get
    return self.request('get', path, **kwargs)
  File "/usr/lib/python3.6/site-packages/kubernetes/dynamic/client.py", line 55, in inner
    resp = func(self, *args, **kwargs)
  File "/usr/lib/python3.6/site-packages/kubernetes/dynamic/client.py", line 252, in request
    _return_http_data_only=params.get('_return_http_data_only', True)
  File "/usr/lib/python3.6/site-packages/kubernetes/client/api_client.py", line 353, in call_api
    _preload_content, _request_timeout, _host)
  File "/usr/lib/python3.6/site-packages/kubernetes/client/api_client.py", line 184, in __call_api
    _request_timeout=_request_timeout)
  File "/usr/lib/python3.6/site-packages/kubernetes/client/api_client.py", line 377, in request
    headers=headers)
  File "/usr/lib/python3.6/site-packages/kubernetes/client/rest.py", line 243, in GET
    query_params=query_params)
  File "/usr/lib/python3.6/site-packages/kubernetes/client/rest.py", line 216, in request
    headers=headers)
  File "/usr/lib/python3.6/site-packages/urllib3/request.py", line 68, in request
    **urlopen_kw)
  File "/usr/lib/python3.6/site-packages/urllib3/request.py", line 89, in request_encode_url
    return self.urlopen(method, url, **extra_kw)
  File "/usr/lib/python3.6/site-packages/urllib3/poolmanager.py", line 324, in urlopen
    response = conn.urlopen(method, u.request_uri, **kw)
  File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 667, in urlopen
    **response_kw)
  File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 667, in urlopen
    **response_kw)
  File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 667, in urlopen
    **response_kw)
  File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 638, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "/usr/lib/python3.6/site-packages/urllib3/util/retry.py", line 399, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.xxxxxxxxxxxxxxxxxxxxxx', port=6443): Max retries exceeded with url: /apis/config.openshift.io/v1/clusterversions/version (Caused by ProtocolError('Connection aborted.', OSError(0, 'Error')))
@gravesm gravesm added the type/bug Something isn't working label Mar 15, 2022
@abikouo
Copy link
Contributor

abikouo commented Mar 16, 2022

@sugitk Thanks for raising this issue, could you please test using this PR #408 ?
Regards

@abikouo abikouo added needs_info Needs additional information from original reporter has_pr labels Mar 16, 2022
@sugitk
Copy link
Author

sugitk commented Mar 16, 2022

@abikouo Thank you very much, I will try it tomorrow

softwarefactory-project-zuul bot pushed a commit that referenced this issue Mar 23, 2022
Continue waiting when an exception is raised

SUMMARY
When an exception is raised and the wait_timeout is not reached, we should continue waiting as this may occurs due to temporary issue on cluster

Fixes #407

ISSUE TYPE


Bugfix Pull Request

COMPONENT NAME

ADDITIONAL INFORMATION

Reviewed-by: Mike Graves <mgraves@redhat.com>
Reviewed-by: Abhijeet Kasurde <None>
@sugitk
Copy link
Author

sugitk commented Apr 10, 2022

@gravesm @abikouo

Hi, do you have a plan for a new release that this PR is merged?
The customer is waiting for the fix in some weeks and I have to explain to him about the current situation as an Ansible technical support.

Thank you.

gravesm pushed a commit to gravesm/kubernetes.core that referenced this issue Apr 28, 2022
Continue waiting when an exception is raised

SUMMARY
When an exception is raised and the wait_timeout is not reached, we should continue waiting as this may occurs due to temporary issue on cluster

Fixes ansible-collections#407

ISSUE TYPE

Bugfix Pull Request

COMPONENT NAME

ADDITIONAL INFORMATION

Reviewed-by: Mike Graves <mgraves@redhat.com>
Reviewed-by: Abhijeet Kasurde <None>
(cherry picked from commit f418353)
gravesm pushed a commit to gravesm/kubernetes.core that referenced this issue May 2, 2022
Continue waiting when an exception is raised

SUMMARY
When an exception is raised and the wait_timeout is not reached, we should continue waiting as this may occurs due to temporary issue on cluster

Fixes ansible-collections#407

ISSUE TYPE

Bugfix Pull Request

COMPONENT NAME

ADDITIONAL INFORMATION

Reviewed-by: Mike Graves <mgraves@redhat.com>
Reviewed-by: Abhijeet Kasurde <None>
(cherry picked from commit f418353)
softwarefactory-project-zuul bot pushed a commit that referenced this issue May 2, 2022
)

[backport/2.3] continue waiting when an exception is raised (#408)

Depends-On: #446
Continue waiting when an exception is raised
SUMMARY
When an exception is raised and the wait_timeout is not reached, we should continue waiting as this may occurs due to temporary issue on cluster
Fixes #407
ISSUE TYPE
Bugfix Pull Request
COMPONENT NAME
ADDITIONAL INFORMATION
Reviewed-by: Mike Graves mgraves@redhat.com
Reviewed-by: Abhijeet Kasurde 
(cherry picked from commit f418353)
StinkyBenji referenced this issue in StinkyBenji/ansible-tekton-demo Nov 1, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
|
[kubernetes.core](https://togithub.com/ansible-collections/kubernetes.core)
| galaxy-collection | minor | `2.2.3` -> `2.4.0` |

---

### Release Notes

<details>
<summary>ansible-collections/kubernetes.core (kubernetes.core)</summary>

###
[`v2.4.0`](https://togithub.com/ansible-collections/kubernetes.core/blob/HEAD/CHANGELOG.rst#v240)

[Compare
Source](https://togithub.com/ansible-collections/kubernetes.core/compare/2.3.2...2.4.0)

\======

## Major Changes

- refactor K8sAnsibleMixin into module_utils/k8s/
([https://github.com/ansible-collections/kubernetes.core/pull/481](https://togithub.com/ansible-collections/kubernetes.core/pull/481)).

## Minor Changes

- Adjust k8s_user_impersonation tests to be compatible with Kubernetes
1.24
([https://github.com/ansible-collections/kubernetes.core/pull/520](https://togithub.com/ansible-collections/kubernetes.core/pull/520)).
- add support for dry run with kubernetes client version >=18.20
([https://github.com/ansible-collections/kubernetes.core/pull/245](https://togithub.com/ansible-collections/kubernetes.core/pull/245)).
-   added ignore.txt for Ansible 2.14 devel branch.
- fixed module_defaults by removing routing hacks from runtime.yml
([https://github.com/ansible-collections/kubernetes.core/pull/347](https://togithub.com/ansible-collections/kubernetes.core/pull/347)).
- helm - add support for -set-file, -set-json, -set and -set-string
options when running helm install
([https://github.com/ansible-collections/kubernetes.core/issues/533](https://togithub.com/ansible-collections/kubernetes.core/issues/533)).
- helm - add support for helm dependency update
([https://github.com/ansible-collections/kubernetes.core/pull/208](https://togithub.com/ansible-collections/kubernetes.core/pull/208)).
- helm - add support for post-renderer flag
([https://github.com/ansible-collections/kubernetes.core/issues/30](https://togithub.com/ansible-collections/kubernetes.core/issues/30)).
- helm - add support for timeout cli parameter to allow setting Helm
timeout independent of wait
([https://github.com/ansible-collections/kubernetes.core/issues/67](https://togithub.com/ansible-collections/kubernetes.core/issues/67)).
- helm - add support for wait parameter for helm uninstall command.
(https://github.com/ansible-collections/kubernetes/core/issues/33).
- helm - support repo location for helm diff
([https://github.com/ansible-collections/kubernetes.core/issues/174](https://togithub.com/ansible-collections/kubernetes.core/issues/174)).
- helm - when ansible is executed in check mode, return the diff between
what's deployed and what will be deployed.
- helm, helm_plugin, helm_info, helm_plugin_info, kubectl - add support
for in-memory kubeconfig.
([https://github.com/ansible-collections/kubernetes.core/issues/492](https://togithub.com/ansible-collections/kubernetes.core/issues/492)).
- helm_info - add hooks, notes and manifest as part of returned
information
([https://github.com/ansible-collections/kubernetes.core/pull/546](https://togithub.com/ansible-collections/kubernetes.core/pull/546)).
- helm_info - add release state as a module argument
([https://github.com/ansible-collections/kubernetes.core/issues/377](https://togithub.com/ansible-collections/kubernetes.core/issues/377)).
- helm_info - added possibility to get all values by adding
get_all_values parameter
([https://github.com/ansible-collections/kubernetes.core/pull/531](https://togithub.com/ansible-collections/kubernetes.core/pull/531)).
- helm_plugin - Add plugin_version parameter to the helm_plugin module
([https://github.com/ansible-collections/kubernetes.core/issues/157](https://togithub.com/ansible-collections/kubernetes.core/issues/157)).
-   helm_plugin - Add support for helm plugin update using state=update.
- helm_repository - Ability to replace (overwrite) the repo if it
already exists by forcing
([https://github.com/ansible-collections/kubernetes.core/issues/491](https://togithub.com/ansible-collections/kubernetes.core/issues/491)).
- helm_repository - add support for pass-credentials cli parameter
([https://github.com/ansible-collections/kubernetes.core/pull/282](https://togithub.com/ansible-collections/kubernetes.core/pull/282)).
- helm_repository - added support for `host`, `api_key`,
`validate_certs`, and `ca_cert`.
- helm_repository - mark `pass_credentials` as no_log=True to silence
false warning
([https://github.com/ansible-collections/kubernetes.core/issues/412](https://togithub.com/ansible-collections/kubernetes.core/issues/412)).
- helm_template - add name (NAME of release) and disable_hook as
optional module arguments
([https://github.com/ansible-collections/kubernetes.core/issues/313](https://togithub.com/ansible-collections/kubernetes.core/issues/313)).
- helm_template - add show_only and release_namespace as module
arguments
([https://github.com/ansible-collections/kubernetes.core/issues/313](https://togithub.com/ansible-collections/kubernetes.core/issues/313)).
- helm_template - add support for -set-file, -set-json, -set and
-set-string options when running helm template
([https://github.com/ansible-collections/kubernetes.core/pull/546](https://togithub.com/ansible-collections/kubernetes.core/pull/546)).
- k8s - add no_proxy support to k8s\*
[https://github.com/ansible-collections/kubernetes.core/pull/272](https://togithub.com/ansible-collections/kubernetes.core/pull/272)2).
- k8s - add support for server_side_apply.
([https://github.com/ansible-collections/kubernetes.core/issues/87](https://togithub.com/ansible-collections/kubernetes.core/issues/87)).
- k8s - add support for user impersonation.
(https://github.com/ansible-collections/kubernetes/core/issues/40).
- k8s - allow resource definition using metadata.generateName
([https://github.com/ansible-collections/kubernetes.core/issues/35](https://togithub.com/ansible-collections/kubernetes.core/issues/35)).
- k8s lookup plugin - Enable turbo mode via environment variable
([https://github.com/ansible-collections/kubernetes.core/issues/291](https://togithub.com/ansible-collections/kubernetes.core/issues/291)).
- k8s, k8s_scale, k8s_service - add support for resource definition as
manifest via.
([https://github.com/ansible-collections/kubernetes.core/issues/451](https://togithub.com/ansible-collections/kubernetes.core/issues/451)).
- k8s_cp - remove dependency with 'find' executable on remote pod when
state=from_pod
([https://github.com/ansible-collections/kubernetes.core/issues/486](https://togithub.com/ansible-collections/kubernetes.core/issues/486)).
- k8s_drain - Adds `delete_emptydir_data` option to
`k8s_drain.delete_options` to evict pods with an `emptyDir` volume
attached
([https://github.com/ansible-collections/kubernetes.core/pull/322](https://togithub.com/ansible-collections/kubernetes.core/pull/322)).
- k8s_exec - select first container from the pod if none specified
([https://github.com/ansible-collections/kubernetes.core/issues/358](https://togithub.com/ansible-collections/kubernetes.core/issues/358)).
- k8s_exec - update deprecation warning for `return_code`
([https://github.com/ansible-collections/kubernetes.core/issues/417](https://togithub.com/ansible-collections/kubernetes.core/issues/417)).
- k8s_json_patch - minor typo fix in the example section
([https://github.com/ansible-collections/kubernetes.core/issues/411](https://togithub.com/ansible-collections/kubernetes.core/issues/411)).
- k8s_log - add the `all_containers` for retrieving all containers' logs
in the pod(s).
- k8s_log - added the `previous` parameter for retrieving the previously
terminated pod logs
([https://github.com/ansible-collections/kubernetes.core/issues/437](https://togithub.com/ansible-collections/kubernetes.core/issues/437)).
- k8s_log - added the `tail_lines` parameter to limit the number of
lines to be retrieved from the end of the logs
([https://github.com/ansible-collections/kubernetes.core/issues/488](https://togithub.com/ansible-collections/kubernetes.core/issues/488)).
- k8s_rollback - add support for check_mode.
(https://github.com/ansible-collections/kubernetes/core/issues/243).
- k8s_scale - add support for check_mode.
(https://github.com/ansible-collections/kubernetes/core/issues/244).
- kubectl - wait for dd command to complete before proceeding
([https://github.com/ansible-collections/kubernetes.core/pull/321](https://togithub.com/ansible-collections/kubernetes.core/pull/321)).
- kubectl.py - replace distutils.spawn.find_executable with shutil.which
in the kubectl connection plugin
([https://github.com/ansible-collections/kubernetes.core/pull/456](https://togithub.com/ansible-collections/kubernetes.core/pull/456)).

## Bugfixes

- Fix dry_run logic - Pass the value dry_run=All instead of dry_run=True
to the client, add conditional check on kubernetes client version as
this feature is supported only for kubernetes >= 18.20.0
([https://github.com/ansible-collections/kubernetes.core/pull/561](https://togithub.com/ansible-collections/kubernetes.core/pull/561)).
- Fix kubeconfig parameter when multiple config files are provided
([https://github.com/ansible-collections/kubernetes.core/issues/435](https://togithub.com/ansible-collections/kubernetes.core/issues/435)).
- Helm - Fix issue with alternative kubeconfig provided with
validate_certs=False
([https://github.com/ansible-collections/kubernetes.core/issues/538](https://togithub.com/ansible-collections/kubernetes.core/issues/538)).
- Various modules and plugins - use vendored version of
`distutils.version` instead of the deprecated Python standard library
`distutils`
([https://github.com/ansible-collections/kubernetes.core/pull/314](https://togithub.com/ansible-collections/kubernetes.core/pull/314)).
- add missing documentation for filter plugin
kubernetes.core.k8s_config_resource_name
([https://github.com/ansible-collections/kubernetes.core/issues/558](https://togithub.com/ansible-collections/kubernetes.core/issues/558)).
- common - Ensure the label_selectors parameter of \_wait_for method is
optional.
-   common - handle `aliases` passed from inventory and lookup plugins.
- helm_template - evaluate release_values after values_files, insuring
highest precedence (now same behavior as in helm module).
([https://github.com/ansible-collections/kubernetes.core/pull/348](https://togithub.com/ansible-collections/kubernetes.core/pull/348))
-   import exception from `kubernetes.client.rest`.
- k8s - Fix issue with check_mode when using server side apply
([https://github.com/ansible-collections/kubernetes.core/issues/547](https://togithub.com/ansible-collections/kubernetes.core/issues/547)).
- k8s - Fix issue with server side apply with kubernetes release
'25.3.0'
([https://github.com/ansible-collections/kubernetes.core/issues/548](https://togithub.com/ansible-collections/kubernetes.core/issues/548)).
- k8s_cp - add support for check_mode
([https://github.com/ansible-collections/kubernetes.core/issues/380](https://togithub.com/ansible-collections/kubernetes.core/issues/380)).
- k8s_drain - fix error caused by accessing an undefined variable when
pods have local storage
([https://github.com/ansible-collections/kubernetes.core/issues/292](https://togithub.com/ansible-collections/kubernetes.core/issues/292)).
- k8s_info - don't wait on empty List resources
([https://github.com/ansible-collections/kubernetes.core/pull/253](https://togithub.com/ansible-collections/kubernetes.core/pull/253)).
- k8s_info - fix issue when module returns successful true after the
resource cache has been established during periods where communication
to the api-server is not possible
([https://github.com/ansible-collections/kubernetes.core/issues/508](https://togithub.com/ansible-collections/kubernetes.core/issues/508)).
- k8s_log - Fix module traceback when no resource found
([https://github.com/ansible-collections/kubernetes.core/issues/479](https://togithub.com/ansible-collections/kubernetes.core/issues/479)).
- k8s_log - fix exception raised when the name is not provided for
resources requiring.
([https://github.com/ansible-collections/kubernetes.core/issues/514](https://togithub.com/ansible-collections/kubernetes.core/issues/514))
- k8s_scale - fix waiting on statefulset when scaled down to 0 replicas
([https://github.com/ansible-collections/kubernetes.core/issues/203](https://togithub.com/ansible-collections/kubernetes.core/issues/203)).
- module_utils.common - change default opening mode to read-bytes to
avoid bad interpretation of non ascii characters and strings, often
present in 3rd party manifests.
- module_utils/k8s/client.py - fix issue when trying to authenticate
with host, client_cert and client_key parameters only.
- remove binary file from k8s_cp test suite
([https://github.com/ansible-collections/kubernetes.core/pull/298](https://togithub.com/ansible-collections/kubernetes.core/pull/298)).
- use resource prefix when finding resource and apiVersion is v1
([https://github.com/ansible-collections/kubernetes.core/issues/351](https://togithub.com/ansible-collections/kubernetes.core/issues/351)).

## New Modules

- helm_pull - download a chart from a repository and (optionally) unpack
it in local directory.

###
[`v2.3.2`](https://togithub.com/ansible-collections/kubernetes.core/compare/2.3.1...2.3.2)

[Compare
Source](https://togithub.com/ansible-collections/kubernetes.core/compare/2.3.1...2.3.2)

###
[`v2.3.1`](https://togithub.com/ansible-collections/kubernetes.core/blob/HEAD/CHANGELOG.rst#v231)

[Compare
Source](https://togithub.com/ansible-collections/kubernetes.core/compare/2.3.0...2.3.1)

\======

## Bugfixes

- Catch exception raised when the process is waiting for resources
([https://github.com/ansible-collections/kubernetes.core/issues/407](https://togithub.com/ansible-collections/kubernetes.core/issues/407)).
- Remove `omit` placeholder when defining resource using template
parameter
([https://github.com/ansible-collections/kubernetes.core/issues/431](https://togithub.com/ansible-collections/kubernetes.core/issues/431)).
- k8s - fix the issue when trying to delete resources using
label_selectors options
([https://github.com/ansible-collections/kubernetes.core/issues/433](https://togithub.com/ansible-collections/kubernetes.core/issues/433)).
- k8s_cp - fix issue when using parameter local_path with file on
managed node.
([https://github.com/ansible-collections/kubernetes.core/issues/421](https://togithub.com/ansible-collections/kubernetes.core/issues/421)).
- k8s_drain - fix error occurring when trying to drain node with
disable_eviction set to yes
([https://github.com/ansible-collections/kubernetes.core/issues/416](https://togithub.com/ansible-collections/kubernetes.core/issues/416)).

###
[`v2.3.0`](https://togithub.com/ansible-collections/kubernetes.core/blob/HEAD/CHANGELOG.rst#v230)

[Compare
Source](https://togithub.com/ansible-collections/kubernetes.core/compare/2.2.3...2.3.0)

\======

## Minor Changes

- add support for dry run with kubernetes client version >=18.20
([https://github.com/ansible-collections/kubernetes.core/pull/245](https://togithub.com/ansible-collections/kubernetes.core/pull/245)).
- fixed module_defaults by removing routing hacks from runtime.yml
([https://github.com/ansible-collections/kubernetes.core/pull/347](https://togithub.com/ansible-collections/kubernetes.core/pull/347)).
- helm - add support for timeout cli parameter to allow setting Helm
timeout independent of wait
([https://github.com/ansible-collections/kubernetes.core/issues/67](https://togithub.com/ansible-collections/kubernetes.core/issues/67)).
- helm - add support for wait parameter for helm uninstall command.
(https://github.com/ansible-collections/kubernetes/core/issues/33).
- helm - support repo location for helm diff
([https://github.com/ansible-collections/kubernetes.core/issues/174](https://togithub.com/ansible-collections/kubernetes.core/issues/174)).
- helm - when ansible is executed in check mode, return the diff between
what's deployed and what will be deployed.
- helm_info - add release state as a module argument
([https://github.com/ansible-collections/kubernetes.core/issues/377](https://togithub.com/ansible-collections/kubernetes.core/issues/377)).
- helm_plugin - Add plugin_version parameter to the helm_plugin module
([https://github.com/ansible-collections/kubernetes.core/issues/157](https://togithub.com/ansible-collections/kubernetes.core/issues/157)).
-   helm_plugin - Add support for helm plugin update using state=update.
- helm_repository - add support for pass-credentials cli parameter
([https://github.com/ansible-collections/kubernetes.core/pull/282](https://togithub.com/ansible-collections/kubernetes.core/pull/282)).
- helm_repository - added support for `host`, `api_key`,
`validate_certs`, and `ca_cert`.
- helm_template - add show_only and release_namespace as module
arguments
([https://github.com/ansible-collections/kubernetes.core/issues/313](https://togithub.com/ansible-collections/kubernetes.core/issues/313)).
- k8s - add no_proxy support to k8s\*
[https://github.com/ansible-collections/kubernetes.core/pull/272](https://togithub.com/ansible-collections/kubernetes.core/pull/272)2).
- k8s - add support for server_side_apply.
([https://github.com/ansible-collections/kubernetes.core/issues/87](https://togithub.com/ansible-collections/kubernetes.core/issues/87)).
- k8s - add support for user impersonation.
(https://github.com/ansible-collections/kubernetes/core/issues/40).
- k8s - allow resource definition using metadata.generateName
([https://github.com/ansible-collections/kubernetes.core/issues/35](https://togithub.com/ansible-collections/kubernetes.core/issues/35)).
- k8s lookup plugin - Enable turbo mode via environment variable
([https://github.com/ansible-collections/kubernetes.core/issues/291](https://togithub.com/ansible-collections/kubernetes.core/issues/291)).
- k8s_drain - Adds `delete_emptydir_data` option to
`k8s_drain.delete_options` to evict pods with an `emptyDir` volume
attached
([https://github.com/ansible-collections/kubernetes.core/pull/322](https://togithub.com/ansible-collections/kubernetes.core/pull/322)).
- k8s_exec - select first container from the pod if none specified
([https://github.com/ansible-collections/kubernetes.core/issues/358](https://togithub.com/ansible-collections/kubernetes.core/issues/358)).
- k8s_rollback - add support for check_mode.
(https://github.com/ansible-collections/kubernetes/core/issues/243).
- k8s_scale - add support for check_mode.
(https://github.com/ansible-collections/kubernetes/core/issues/244).
- kubectl - wait for dd command to complete before proceeding
([https://github.com/ansible-collections/kubernetes.core/pull/321](https://togithub.com/ansible-collections/kubernetes.core/pull/321)).

## Bugfixes

- Various modules and plugins - use vendored version of
`distutils.version` instead of the deprecated Python standard library
`distutils`
([https://github.com/ansible-collections/kubernetes.core/pull/314](https://togithub.com/ansible-collections/kubernetes.core/pull/314)).
- common - Ensure the label_selectors parameter of \_wait_for method is
optional.
- helm_template - evaluate release_values after values_files, insuring
highest precedence (now same behavior as in helm module).
([https://github.com/ansible-collections/kubernetes.core/pull/348](https://togithub.com/ansible-collections/kubernetes.core/pull/348))
-   import exception from `kubernetes.client.rest`.
- k8s_drain - fix error caused by accessing an undefined variable when
pods have local storage
([https://github.com/ansible-collections/kubernetes.core/issues/292](https://togithub.com/ansible-collections/kubernetes.core/issues/292)).
- k8s_info - don't wait on empty List resources
([https://github.com/ansible-collections/kubernetes.core/pull/253](https://togithub.com/ansible-collections/kubernetes.core/pull/253)).
- k8s_scale - fix waiting on statefulset when scaled down to 0 replicas
([https://github.com/ansible-collections/kubernetes.core/issues/203](https://togithub.com/ansible-collections/kubernetes.core/issues/203)).
- module_utils.common - change default opening mode to read-bytes to
avoid bad interpretation of non ascii characters and strings, often
present in 3rd party manifests.
- remove binary file from k8s_cp test suite
([https://github.com/ansible-collections/kubernetes.core/pull/298](https://togithub.com/ansible-collections/kubernetes.core/pull/298)).
- use resource prefix when finding resource and apiVersion is v1
([https://github.com/ansible-collections/kubernetes.core/issues/351](https://togithub.com/ansible-collections/kubernetes.core/issues/351)).

## New Modules

-   k8s_taint - Taint a node in a Kubernetes/OpenShift cluster

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/StinkyBenji/ansible-tekton-demo).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMS41IiwidXBkYXRlZEluVmVyIjoiMzcuMzEuNSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
has_pr needs_info Needs additional information from original reporter type/bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants