mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-05-14 13:32:14 +00:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0d9c4d3459 | ||
|
|
3645c1c16c | ||
|
|
5fdd70cbc3 | ||
|
|
1c02fe3443 | ||
|
|
eaffde63bb |
@@ -5,6 +5,21 @@ Kubernetes Collection Release Notes
|
||||
.. contents:: Topics
|
||||
|
||||
|
||||
v2.2.3
|
||||
======
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- k8s_drain - fix error caused by accessing an undefined variable when pods have local storage (https://github.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).
|
||||
- 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.
|
||||
|
||||
Minor Changes
|
||||
-------------
|
||||
|
||||
- Add integration test to check handling of module_defaults (https://github.com/ansible-collections/kubernetes.core/pull/296).
|
||||
|
||||
v2.2.2
|
||||
======
|
||||
|
||||
|
||||
2
Makefile
2
Makefile
@@ -1,5 +1,5 @@
|
||||
# Also needs to be updated in galaxy.yml
|
||||
VERSION = 2.2.2
|
||||
VERSION = 2.2.3
|
||||
|
||||
TEST_ARGS ?= ""
|
||||
PYTHON_VERSION ?= `python -c 'import platform; print(".".join(platform.python_version_tuple()[0:2]))'`
|
||||
|
||||
@@ -85,7 +85,7 @@ You can also include it in a `requirements.yml` file and install it via `ansible
|
||||
---
|
||||
collections:
|
||||
- name: kubernetes.core
|
||||
version: 2.2.2
|
||||
version: 2.2.3
|
||||
```
|
||||
|
||||
### Installing the Kubernetes Python Library
|
||||
|
||||
@@ -501,3 +501,20 @@ releases:
|
||||
fragments:
|
||||
- 298-remove-binary-file.yaml
|
||||
release_date: '2021-12-07'
|
||||
2.2.3:
|
||||
changes:
|
||||
bugfixes:
|
||||
- k8s_drain - fix error caused by accessing an undefined variable when pods
|
||||
have local storage (https://github.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).
|
||||
- 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.
|
||||
minor_changes:
|
||||
- Add integration test to check handling of module_defaults
|
||||
(https://github.com/ansible-collections/kubernetes.core/pull/296).
|
||||
fragments:
|
||||
- 253-dont-wait-on-list-resources.yaml
|
||||
- 295-fix-k8s-drain-variable-declaration.yaml
|
||||
- 308-fix-for-common-non-ascii-characters-in-resources.yaml
|
||||
release_date: '2022-01-18'
|
||||
|
||||
@@ -25,7 +25,7 @@ tags:
|
||||
- openshift
|
||||
- okd
|
||||
- cluster
|
||||
version: 2.2.2
|
||||
version: 2.2.3
|
||||
build_ignore:
|
||||
- .DS_Store
|
||||
- '*.tar.gz'
|
||||
|
||||
@@ -9,7 +9,6 @@ action_groups:
|
||||
k8s:
|
||||
- k8s
|
||||
- k8s_exec
|
||||
- k8s_facts
|
||||
- k8s_info
|
||||
- k8s_log
|
||||
- k8s_scale
|
||||
|
||||
@@ -421,6 +421,49 @@
|
||||
that:
|
||||
- result.resources[0].data.testkey == "{{ cmap_data.stdout | b64encode }}"
|
||||
|
||||
# test setting module defaults for kubernetes.core.k8s_info
|
||||
- block:
|
||||
- name: Create a namespace
|
||||
kubernetes.core.k8s:
|
||||
name: test-namespace-module-defaults
|
||||
kind: Namespace
|
||||
register: output
|
||||
|
||||
- name: Create a ConfigMap
|
||||
kubernetes.core.k8s:
|
||||
kind: ConfigMap
|
||||
name: test-configmap-1
|
||||
definition:
|
||||
data:
|
||||
key1: value1
|
||||
|
||||
- name: Create another ConfigMap
|
||||
kubernetes.core.k8s:
|
||||
kind: ConfigMap
|
||||
name: test-configmap-2
|
||||
definition:
|
||||
data:
|
||||
key2: value2
|
||||
|
||||
- name: Get list of all ConfigMaps in namespace specified in module_defaults
|
||||
kubernetes.core.k8s_info:
|
||||
kind: ConfigMap
|
||||
register: configmap_info
|
||||
|
||||
- name: assert that the ConfigMaps are created in and info is retrieved for namespace specified in module_defaults
|
||||
assert:
|
||||
that:
|
||||
- configmap_info.resources[1].metadata.name == "test-configmap-1"
|
||||
- configmap_info.resources[1].metadata.namespace == "test-namespace-module-defaults"
|
||||
- configmap_info.resources[2].metadata.name == "test-configmap-2"
|
||||
- configmap_info.resources[2].metadata.namespace == "test-namespace-module-defaults"
|
||||
|
||||
module_defaults:
|
||||
group/kubernetes.core.k8s:
|
||||
namespace: test-namespace-module-defaults
|
||||
|
||||
when: ansible_version.full is version("2.12", ">=")
|
||||
|
||||
always:
|
||||
- name: Delete all namespaces
|
||||
k8s:
|
||||
@@ -454,4 +497,8 @@
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: testing6
|
||||
- kind: Namespace
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: test-namespace-module-defaults
|
||||
ignore_errors: yes
|
||||
|
||||
@@ -199,6 +199,38 @@
|
||||
that:
|
||||
- "{{ lookup('pipe', 'date +%s') }} - {{ start }} > 30"
|
||||
|
||||
- name: Create simple pod
|
||||
k8s:
|
||||
definition:
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: wait-pod-1
|
||||
namespace: "{{ wait_namespace }}"
|
||||
spec:
|
||||
containers:
|
||||
- image: busybox
|
||||
name: busybox
|
||||
command:
|
||||
- /bin/sh
|
||||
- -c
|
||||
- while true; do sleep 5; done
|
||||
|
||||
- name: Wait for multiple non-existent pods to be created
|
||||
k8s_info:
|
||||
kind: Pod
|
||||
namespace: "{{ wait_namespace }}"
|
||||
label_selectors:
|
||||
- thislabel=doesnotexist
|
||||
wait: yes
|
||||
wait_timeout: 10
|
||||
register: result
|
||||
|
||||
- name: Assert no pods were found
|
||||
assert:
|
||||
that:
|
||||
- not result.resources
|
||||
|
||||
vars:
|
||||
k8s_pod_name: pod-info-1
|
||||
|
||||
|
||||
@@ -279,18 +279,28 @@ class K8sAnsibleMixin(object):
|
||||
def _elapsed():
|
||||
return (datetime.now() - start).seconds
|
||||
|
||||
if result is None:
|
||||
while _elapsed() < wait_timeout:
|
||||
try:
|
||||
result = resource.get(name=name, namespace=namespace,
|
||||
label_selector=','.join(label_selectors),
|
||||
field_selector=','.join(field_selectors))
|
||||
break
|
||||
except NotFoundError:
|
||||
pass
|
||||
time.sleep(wait_sleep)
|
||||
if result is None:
|
||||
return dict(resources=[], api_found=True)
|
||||
def result_empty(result):
|
||||
return (
|
||||
result is None
|
||||
or result.kind.endswith("List")
|
||||
and not result.get("items")
|
||||
)
|
||||
|
||||
while result_empty(result) and _elapsed() < wait_timeout:
|
||||
try:
|
||||
result = resource.get(
|
||||
name=name,
|
||||
namespace=namespace,
|
||||
label_selector=",".join(label_selectors),
|
||||
field_selector=",".join(field_selectors),
|
||||
)
|
||||
except NotFoundError:
|
||||
pass
|
||||
if not result_empty(result):
|
||||
break
|
||||
time.sleep(wait_sleep)
|
||||
if result_empty(result):
|
||||
return dict(resources=[], api_found=True)
|
||||
|
||||
if isinstance(result, ResourceInstance):
|
||||
satisfied_by = []
|
||||
@@ -331,7 +341,7 @@ class K8sAnsibleMixin(object):
|
||||
if not os.path.exists(path):
|
||||
self.fail(msg="Error accessing {0}. Does the file exist?".format(path))
|
||||
try:
|
||||
with open(path, 'r') as f:
|
||||
with open(path, "rb") as f:
|
||||
result = list(yaml.safe_load_all(f))
|
||||
except (IOError, yaml.YAMLError) as exc:
|
||||
self.fail(msg="Error loading resource_definition: {0}".format(exc))
|
||||
|
||||
@@ -183,6 +183,7 @@ def filter_pods(pods, force, ignore_daemonset):
|
||||
|
||||
# local storage
|
||||
if localStorage:
|
||||
pod_names = ",".join([pod[0] + "/" + pod[1] for pod in localStorage])
|
||||
errors.append("cannot delete Pods with local storage: {0}.".format(pod_names))
|
||||
|
||||
# DaemonSet managed Pods
|
||||
|
||||
@@ -191,6 +191,10 @@ def main():
|
||||
|
||||
k8s_ansible_mixin = K8sAnsibleMixin(module)
|
||||
k8s_ansible_mixin.client = get_api_client(module=module)
|
||||
k8s_ansible_mixin.fail_json = module.fail_json
|
||||
k8s_ansible_mixin.fail = module.fail_json
|
||||
k8s_ansible_mixin.exit_json = module.exit_json
|
||||
k8s_ansible_mixin.warn = module.warn
|
||||
execute_module(module, k8s_ansible_mixin)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user