make name optional to delete all resources for the specified resource type (#517)

make name optional to delete all resources for the specified resource type

SUMMARY

closes #504
k8s module should allow deleting all namespace resources for the specified resource type.

ISSUE TYPE


Feature Pull Request

COMPONENT NAME

k8s
ADDITIONAL INFORMATION


Delete all Pods from namespace test

- k8s:
    namespace: test
    kind: Pod
    api_version: v1
    delete_all: true
    state: absent

Reviewed-by: Gonéri Le Bouder <goneri@lebouder.net>
Reviewed-by: Mike Graves <mgraves@redhat.com>
Reviewed-by: Bikouo Aubin
This commit is contained in:
Bikouo Aubin
2023-03-23 16:43:22 +01:00
committed by GitHub
parent 09a3c837c3
commit 151ed8245f
11 changed files with 235 additions and 5 deletions

View File

@@ -0,0 +1,70 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-d
labels:
context: ansible
spec:
replicas: 1
selector:
matchLabels:
context: ansible
template:
metadata:
labels:
context: ansible
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: openjdk-d
labels:
context: ansible
spec:
replicas: 2
selector:
matchLabels:
context: ansible
template:
metadata:
labels:
context: ansible
spec:
containers:
- name: openjdk
image: openjdk:17
command:
- /bin/sh
- -c
- while true;do date;sleep 5; done
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: alpine-d
labels:
context: ansible
spec:
replicas: 3
selector:
matchLabels:
context: ansible
template:
metadata:
labels:
context: ansible
spec:
containers:
- name: alpine
image: alpine
command:
- /bin/sh
- -c
- while true;do date;sleep 5; done

View File

@@ -121,6 +121,77 @@
that:
- _result.resources | length == 0
# test deletion using delete_all=true
- name: Create deployments
k8s:
namespace: "{{ test_namespace }}"
src: files/deployments.yaml
wait: true
register: result
- name: Trying to delete deployments without name and label_selectors and select_all=false
k8s:
kind: Deployment
api_version: apps/v1
namespace: "{{ test_namespace }}"
state: absent
register: _delete
- name: Ensure Deployment were not deleted
assert:
that:
- _delete is not changed
- name: Validate that Deployment still exist
k8s_info:
kind: Deployment
api_version: apps/v1
namespace: "{{ test_namespace }}"
label_selectors:
- context=ansible
register: _deployment
failed_when: _deployment.resources | length == 0
- name: Trying to delete using delete_all=true but missing kind option
k8s:
api_version: apps/v1
namespace: "{{ test_namespace }}"
delete_all: true
state: absent
register: _delete
ignore_errors: true
- name: assert task failed with proper message
assert:
that:
- _delete is failed
- _delete.msg == "'kind' option is required to specify the resource type."
- name: Trying to delete deployments without name and label_selectors and delete_all=true
k8s:
kind: Deployment
api_version: apps/v1
namespace: "{{ test_namespace }}"
delete_all: true
wait: true
state: absent
register: _delete
- name: Ensure Deployment were deleted
assert:
that:
- _delete is changed
- name: Validate that Deployment do not exist anymore
k8s_info:
kind: Deployment
api_version: apps/v1
namespace: "{{ test_namespace }}"
label_selectors:
- context=ansible
register: _deployment
failed_when: _deployment.resources | length > 0
always:
- name: Remove namespace
k8s:

View File

@@ -590,3 +590,4 @@ tests/integration/targets/setup_kubeconfig/library/test_inventory_read_credentia
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

@@ -30,3 +30,4 @@ plugins/modules/k8s.py validate-modules:return-syntax-error
plugins/modules/k8s_scale.py validate-modules:return-syntax-error
plugins/modules/k8s_service.py validate-modules:return-syntax-error
plugins/modules/k8s_taint.py validate-modules:return-syntax-error
tests/integration/targets/k8s_delete/files/deployments.yaml yamllint!skip

View File

@@ -30,3 +30,4 @@ plugins/modules/k8s.py validate-modules:return-syntax-error
plugins/modules/k8s_scale.py validate-modules:return-syntax-error
plugins/modules/k8s_service.py validate-modules:return-syntax-error
plugins/modules/k8s_taint.py validate-modules:return-syntax-error
tests/integration/targets/k8s_delete/files/deployments.yaml yamllint!skip

View File

@@ -30,3 +30,4 @@ plugins/modules/k8s.py validate-modules:return-syntax-error
plugins/modules/k8s_scale.py validate-modules:return-syntax-error
plugins/modules/k8s_service.py validate-modules:return-syntax-error
plugins/modules/k8s_taint.py validate-modules:return-syntax-error
tests/integration/targets/k8s_delete/files/deployments.yaml yamllint!skip

View File

@@ -48,6 +48,7 @@ YAML_LINT_SKIPS = [
"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