diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 278f8262..c915a13a 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -4,6 +4,20 @@ Kubernetes Collection Release Notes
.. contents:: Topics
+v6.0.0
+======
+
+Release Summary
+---------------
+
+This major release removes the deprecated ``k8s`` inventory plugin and also removes ``ansible-core<2.16`` support.
+
+Breaking Changes / Porting Guide
+--------------------------------
+
+- Remove deprecated ``k8s`` invetory plugin (https://github.com/ansible-collections/kubernetes.core/pull/867).
+- Remove support for ``ansible-core<2.16`` (https://github.com/ansible-collections/kubernetes.core/pull/867).
+
v5.3.0
======
@@ -124,7 +138,7 @@ Bugfixes
- 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.3.1
-=======
+======
Release Summary
---------------
diff --git a/Makefile b/Makefile
index 80b41f31..31f827f7 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
# Also needs to be updated in galaxy.yml
-VERSION = 6.0.0-dev0
+VERSION = 6.0.0
TEST_ARGS ?= ""
PYTHON_VERSION ?= `python -c 'import platform; print(".".join(platform.python_version_tuple()[0:2]))'`
diff --git a/README.md b/README.md
index 15e1ea42..c6e21f38 100644
--- a/README.md
+++ b/README.md
@@ -101,7 +101,7 @@ You can also include it in a `requirements.yml` file and install it via `ansible
---
collections:
- name: kubernetes.core
- version: 5.2.0
+ version: 6.0.0
```
### Installing the Kubernetes Python Library
diff --git a/changelogs/changelog.yaml b/changelogs/changelog.yaml
index ff63f8b2..ea81ac8d 100644
--- a/changelogs/changelog.yaml
+++ b/changelogs/changelog.yaml
@@ -1044,3 +1044,11 @@ releases:
- 898-k8s-dont-delete-in-check-mode.yaml
- 919-update-ansible-lint-version.yaml
release_date: '2025-05-16'
+ 6.0.0:
+ changes:
+ breaking_changes:
+ - Remove deprecated ``k8s`` invetory plugin (https://github.com/ansible-collections/kubernetes.core/pull/867).
+ - Remove support for ``ansible-core<2.16`` (https://github.com/ansible-collections/kubernetes.core/pull/867).
+ fragments:
+ - 20250121-breaking-changes-6.0.0.yml
+ release_date: '2025-05-19'
diff --git a/changelogs/fragments/20250121-breaking-changes-6.0.0.yml b/changelogs/fragments/20250121-breaking-changes-6.0.0.yml
deleted file mode 100644
index 811b02fc..00000000
--- a/changelogs/fragments/20250121-breaking-changes-6.0.0.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-breaking_changes:
- - Remove support for ``ansible-core<2.16`` (https://github.com/ansible-collections/kubernetes.core/pull/867).
- - Remove deprecated ``k8s`` invetory plugin (https://github.com/ansible-collections/kubernetes.core/pull/867).
diff --git a/docs/kubernetes.core.helm_module.rst b/docs/kubernetes.core.helm_module.rst
index 998b0b57..e7df00d3 100644
--- a/docs/kubernetes.core.helm_module.rst
+++ b/docs/kubernetes.core.helm_module.rst
@@ -289,6 +289,29 @@ Parameters
Provide a URL for accessing the API. Can also be specified via K8S_AUTH_HOST environment variable.
+
+ |
+
+ insecure_skip_tls_verify
+
+
+ boolean
+
+ added in 5.3.0
+ |
+
+
+ |
+
+ Skip tls certificate checks for the chart download.
+ Do not confuse with the validate_certs option.
+ This option is only available for helm >= 3.16.0.
+ aliases: skip_tls_certs_check
+ |
+
|
diff --git a/docs/kubernetes.core.helm_pull_module.rst b/docs/kubernetes.core.helm_pull_module.rst
index 1c1af065..ac3cc5c5 100644
--- a/docs/kubernetes.core.helm_pull_module.rst
+++ b/docs/kubernetes.core.helm_pull_module.rst
@@ -279,7 +279,8 @@ Parameters
|
Whether or not to check tls certificate for the chart download.
- Requires helm >= 3.3.0.
+ Requires helm >= 3.3.0. Alias insecure_skip_tls_verify added in 5.3.0.
+ aliases: insecure_skip_tls_verify
|
diff --git a/docs/kubernetes.core.helm_repository_module.rst b/docs/kubernetes.core.helm_repository_module.rst
index ee4169ee..d2a8ecf1 100644
--- a/docs/kubernetes.core.helm_repository_module.rst
+++ b/docs/kubernetes.core.helm_repository_module.rst
@@ -143,6 +143,27 @@ Parameters
Provide a URL for accessing the API. Can also be specified via K8S_AUTH_HOST environment variable.
+
+ |
+
+ insecure_skip_tls_verify
+
+
+ boolean
+
+ added in 5.3.0
+ |
+
+
+ |
+
+ Skip tls certificate checks for the repository url.
+ aliases: skip_tls_certs_check
+ |
+
|
diff --git a/docs/kubernetes.core.k8s_info_module.rst b/docs/kubernetes.core.k8s_info_module.rst
index 15121a2c..cbd56feb 100644
--- a/docs/kubernetes.core.k8s_info_module.rst
+++ b/docs/kubernetes.core.k8s_info_module.rst
@@ -174,8 +174,7 @@ Parameters
|
Hide fields matching any of the field definitions in the result
- An example might be hidden_fields=[metadata.managedFields]
- Only field definitions that don't reference list items are supported (so V(spec.containers[0]) would not work)
+ An example might be hidden_fields=[metadata.managedFields] or V(hidden_fields=[spec.containers[0].env[3].value]) or V(hidden_fields=[metadata.annotations[kubectl.kubernetes.io/last-applied-configuration]])
|
diff --git a/docs/kubernetes.core.k8s_module.rst b/docs/kubernetes.core.k8s_module.rst
index cac063e6..de083a9c 100644
--- a/docs/kubernetes.core.k8s_module.rst
+++ b/docs/kubernetes.core.k8s_module.rst
@@ -395,8 +395,7 @@ Parameters
|
Hide fields matching this option in the result
- An example might be hidden_fields=[metadata.managedFields]
- Only field definitions that don't reference list items are supported (so V(spec.containers[0]) would not work)
+ An example might be hidden_fields=[metadata.managedFields] or V(hidden_fields=[spec.containers[0].env[3].value]) or V(hidden_fields=[metadata.annotations[kubectl.kubernetes.io/last-applied-configuration]])
|
diff --git a/galaxy.yml b/galaxy.yml
index 6f7c2d12..79689671 100644
--- a/galaxy.yml
+++ b/galaxy.yml
@@ -25,7 +25,7 @@ tags:
- openshift
- okd
- cluster
-version: 6.0.0-dev0
+version: 6.0.0
build_ignore:
- .DS_Store
- "*.tar.gz"
diff --git a/meta/runtime.yml b/meta/runtime.yml
index bde8842f..4547408a 100644
--- a/meta/runtime.yml
+++ b/meta/runtime.yml
@@ -22,8 +22,7 @@ plugin_routing:
redirect: community.okd.openshift
k8s:
tombstone:
- # To be replaced with 6.0.0 in release 6.0.0 commit
- removal_version: 6.0.0-dev0
+ removal_version: 6.0.0
warning_text: >-
The k8s inventory plugin was slated for deprecation in 3.3.0 and has been removed in release 6.0.0. Use kubernetes.core.k8s_info and ansible.builtin.add_host instead.
modules:
diff --git a/tests/unit/module_utils/test_core.py b/tests/unit/module_utils/test_core.py
index 05e9b689..65ea1a2c 100644
--- a/tests/unit/module_utils/test_core.py
+++ b/tests/unit/module_utils/test_core.py
@@ -2,50 +2,57 @@ from __future__ import absolute_import, division, print_function
__metaclass__ = type
-import json
+import re
import kubernetes
import pytest
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.core import (
AnsibleK8SModule,
)
+from mock import MagicMock, patch
MINIMAL_K8S_VERSION = "24.2.0"
UNSUPPORTED_K8S_VERSION = "11.0.0"
-@pytest.mark.parametrize("stdin", [{}], indirect=["stdin"])
-def test_no_warn(monkeypatch, stdin, capfd):
+class FakeAnsibleModule:
+ def __init__(self, **kwargs):
+ pass
+
+ def exit_json(self):
+ raise SystemExit(0)
+
+
+@patch.object(AnsibleK8SModule, "warn")
+def test_no_warn(m_ansible_k8s_module_warn, monkeypatch, capfd):
monkeypatch.setattr(kubernetes, "__version__", MINIMAL_K8S_VERSION)
- module = AnsibleK8SModule(argument_spec={})
+ m_ansible_k8s_module_warn.side_effect = print
+ module = AnsibleK8SModule(argument_spec={}, module_class=FakeAnsibleModule)
with pytest.raises(SystemExit):
module.exit_json()
out, err = capfd.readouterr()
-
- return_value = json.loads(out)
-
- assert return_value.get("exception") is None
- assert return_value.get("warnings") is None
- assert return_value.get("failed") is None
+ m_ansible_k8s_module_warn.assert_not_called()
-@pytest.mark.parametrize("stdin", [{}], indirect=["stdin"])
-def test_warn_on_k8s_version(monkeypatch, stdin, capfd):
+@patch.object(AnsibleK8SModule, "warn")
+def test_warn_on_k8s_version(m_ansible_k8s_module_warn, monkeypatch, capfd):
monkeypatch.setattr(kubernetes, "__version__", UNSUPPORTED_K8S_VERSION)
- module = AnsibleK8SModule(argument_spec={})
+ m_ansible_k8s_module_warn.side_effect = print
+ module = AnsibleK8SModule(argument_spec={}, module_class=FakeAnsibleModule)
with pytest.raises(SystemExit):
module.exit_json()
+
+ m_ansible_k8s_module_warn.assert_called_once()
out, err = capfd.readouterr()
-
- return_value = json.loads(out)
-
- assert return_value.get("warnings") is not None
- warnings = return_value["warnings"]
- assert len(warnings) == 1
- assert "kubernetes" in str(warnings[0])
- assert MINIMAL_K8S_VERSION in str(warnings[0])
+ assert (
+ re.search(
+ r"kubernetes<([0-9]+\.[0-9]+\.[0-9]+) is not supported or tested. Some features may not work.",
+ out,
+ )
+ is not None
+ )
dependencies = [
@@ -58,9 +65,17 @@ dependencies = [
@pytest.mark.parametrize(
"stdin,desired,actual,result", [({}, *d) for d in dependencies], indirect=["stdin"]
)
-def test_has_at_least(monkeypatch, stdin, desired, actual, result, capfd):
+@patch.object(AnsibleK8SModule, "warn")
+def test_has_at_least(
+ m_ansible_k8s_module_warn, monkeypatch, stdin, desired, actual, result, capfd
+):
monkeypatch.setattr(kubernetes, "__version__", actual)
+ def fake_warn(x):
+ print(x)
+ raise SystemExit(1)
+
+ m_ansible_k8s_module_warn.side_effect = fake_warn
module = AnsibleK8SModule(argument_spec={})
assert module.has_at_least("kubernetes", desired) is result
@@ -80,11 +95,18 @@ def test_requires_fails_with_message(
monkeypatch, stdin, dependency, version, msg, capfd
):
monkeypatch.setattr(kubernetes, "__version__", "24.2.0")
- module = AnsibleK8SModule(argument_spec={})
+ module = AnsibleK8SModule(argument_spec={}, module_class=FakeAnsibleModule)
+
+ def fake_fail_json(**kwargs):
+ print(f"Printing message => {kwargs}")
+ print(kwargs.get("msg"))
+ raise SystemExit(1)
+
+ module.fail_json = MagicMock()
+ module.fail_json.side_effect = fake_fail_json
+
with pytest.raises(SystemExit):
module.requires(dependency, version)
+ module.fail_json.assert_called_once()
out, err = capfd.readouterr()
- return_value = json.loads(out)
-
- assert return_value.get("failed")
- assert msg in return_value.get("msg")
+ assert msg in out