mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-04-11 03:11:14 +00:00
* Support template param in other collections The action plugin for k8s does a collection name check for the template param, but it's missing redhat.openshift and community.kubernetes. * Add changelog fragment * Fix test
259 lines
7.1 KiB
YAML
259 lines
7.1 KiB
YAML
---
|
|
- block:
|
|
- set_fact:
|
|
template_namespace: template-test
|
|
|
|
- name: Ensure namespace exists
|
|
k8s:
|
|
definition:
|
|
apiVersion: v1
|
|
kind: Namespace
|
|
metadata:
|
|
name: "{{ template_namespace }}"
|
|
|
|
- name: Check if k8s_service does not inherit parameter
|
|
kubernetes.core.k8s_service:
|
|
template: "pod_template_one.j2"
|
|
state: present
|
|
ignore_errors: yes
|
|
register: r
|
|
|
|
- name: Check for expected failures in last tasks
|
|
assert:
|
|
that:
|
|
- r.failed
|
|
- "'is only a supported parameter for' in r.msg"
|
|
|
|
- name: Specify both definition and template
|
|
kubernetes.core.k8s:
|
|
state: present
|
|
template: "pod_template_one.j2"
|
|
definition:
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: apply-deploy
|
|
namespace: "{{ template_namespace }}"
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: "{{ k8s_pod_name_one }}"
|
|
vars:
|
|
k8s_pod_name_one: pod
|
|
k8s_pod_namespace: "{{ template_namespace }}"
|
|
register: r
|
|
ignore_errors: yes
|
|
|
|
- name: Check if definition and template are mutually exclusive
|
|
assert:
|
|
that:
|
|
- r.failed
|
|
- "'parameters are mutually exclusive' in r.msg"
|
|
|
|
- name: Specify both src and template
|
|
kubernetes.core.k8s:
|
|
state: present
|
|
src: "../templates/pod_template_one.j2"
|
|
template: "pod_template_one.j2"
|
|
vars:
|
|
k8s_pod_name_one: pod
|
|
k8s_pod_namespace: "{{ template_namespace }}"
|
|
register: r
|
|
ignore_errors: yes
|
|
|
|
- name: Check if src and template are mutually exclusive
|
|
assert:
|
|
that:
|
|
- r.failed
|
|
- "'parameters are mutually exclusive' in r.msg"
|
|
|
|
- name: Create pod using template (direct specification)
|
|
kubernetes.core.k8s:
|
|
template: "pod_template_one.j2"
|
|
wait: yes
|
|
vars:
|
|
k8s_pod_name_one: pod-1
|
|
k8s_pod_namespace: "{{ template_namespace }}"
|
|
register: r
|
|
|
|
- name: Assert that pod creation succeeded using template
|
|
assert:
|
|
that:
|
|
- r is successful
|
|
|
|
- name: Create pod using template with wrong parameter
|
|
kubernetes.core.k8s:
|
|
template:
|
|
- default
|
|
wait: yes
|
|
vars:
|
|
k8s_pod_name_one: pod-2
|
|
k8s_pod_namespace: "{{ template_namespace }}"
|
|
register: r
|
|
ignore_errors: True
|
|
|
|
- name: Assert that pod creation failed using template due to wrong parameter
|
|
assert:
|
|
that:
|
|
- r is failed
|
|
|
|
- name: Create pod using template (path parameter)
|
|
kubernetes.core.k8s:
|
|
template:
|
|
path: "pod_template_one.j2"
|
|
wait: yes
|
|
vars:
|
|
k8s_pod_name_one: pod-3
|
|
k8s_pod_namespace: "{{ template_namespace }}"
|
|
register: r
|
|
|
|
- name: Assert that pod creation succeeded using template
|
|
assert:
|
|
that:
|
|
- r is successful
|
|
|
|
- name: Create pod using template (different variable string)
|
|
kubernetes.core.k8s:
|
|
template:
|
|
path: "pod_template_two.j2"
|
|
variable_start_string: '[['
|
|
variable_end_string: ']]'
|
|
wait: yes
|
|
vars:
|
|
k8s_pod_name_two: pod-4
|
|
k8s_pod_namespace: "[[ template_namespace ]]"
|
|
ansible_python_interpreter: "[[ ansible_playbook_python ]]"
|
|
register: r
|
|
|
|
- name: Assert that pod creation succeeded using template
|
|
assert:
|
|
that:
|
|
- r is successful
|
|
|
|
- name: Create pods using multi-resource template
|
|
kubernetes.core.k8s:
|
|
template:
|
|
path: "pod_template_three.j2"
|
|
wait: yes
|
|
vars:
|
|
k8s_pod_name_three_one: pod-5
|
|
k8s_pod_name_three_two: pod-6
|
|
k8s_pod_namespace: "{{ template_namespace }}"
|
|
register: r
|
|
|
|
- name: Assert that pod creation succeeded using template
|
|
assert:
|
|
that:
|
|
- r is successful
|
|
|
|
- name: Create pods using list of template
|
|
kubernetes.core.k8s:
|
|
template:
|
|
- pod_template_one.j2
|
|
- path: "pod_template_two.j2"
|
|
variable_start_string: '[['
|
|
variable_end_string: ']]'
|
|
- path: "pod_template_three.j2"
|
|
wait: yes
|
|
vars:
|
|
k8s_pod_name_one: pod-7
|
|
k8s_pod_name_two: pod-8
|
|
k8s_pod_name_three_one: pod-9
|
|
k8s_pod_name_three_two: pod-10
|
|
k8s_pod_namespace: "template-test"
|
|
register: r
|
|
|
|
- name: Assert that pod creation succeeded using template
|
|
assert:
|
|
that:
|
|
- r is successful
|
|
|
|
# continue_on_error
|
|
- name: define variable for test
|
|
set_fact:
|
|
k8s_pod_name_one: pod-11
|
|
k8s_pod_bad_name: pod-12
|
|
k8s_pod_namespace: "{{ template_namespace }}"
|
|
k8s_pod_bad_namespace: "dummy-namespace-012345"
|
|
|
|
- name: delete pod if it exists
|
|
kubernetes.core.k8s:
|
|
template: pod_template_one.j2
|
|
wait: true
|
|
state: absent
|
|
|
|
- name: create pod on bad namespace ( continue_on_error set to default(false) )
|
|
kubernetes.core.k8s:
|
|
template:
|
|
- pod_with_bad_namespace.j2
|
|
- pod_template_one.j2
|
|
register: resource
|
|
ignore_errors: true
|
|
|
|
- name: validate that creation failed
|
|
assert:
|
|
that:
|
|
- resource is failed
|
|
- '"Failed to create object" in resource.msg'
|
|
|
|
- name: assert pod has not been created
|
|
kubernetes.core.k8s_info:
|
|
kind: "{{ item.kind }}"
|
|
namespace: "{{ item.namespace }}"
|
|
name: "{{ item.name }}"
|
|
with_items:
|
|
- kind: pod
|
|
namespace: "{{ k8s_pod_bad_namespace }}"
|
|
name: "{{ k8s_pod_bad_name }}"
|
|
- kind: pod
|
|
namespace: "{{ k8s_pod_name_one }}"
|
|
name: "{{ k8s_pod_namespace }}"
|
|
register: resource
|
|
|
|
- name: check that resources creation failed
|
|
assert:
|
|
that:
|
|
- '{{ resource.results[0].resources | length == 0 }}'
|
|
- '{{ resource.results[1].resources | length == 0 }}'
|
|
|
|
- name: create pod without namespace (continue_on_error = true)
|
|
kubernetes.core.k8s:
|
|
template:
|
|
- pod_with_bad_namespace.j2
|
|
- pod_template_one.j2
|
|
continue_on_error: true
|
|
wait: true
|
|
register: resource
|
|
ignore_errors: true
|
|
|
|
- name: validate that creation succeeded
|
|
assert:
|
|
that:
|
|
- resource is successful
|
|
|
|
- name: validate resource creation succeeded for some and failed for others
|
|
assert:
|
|
that:
|
|
- resource is successful
|
|
- resource.result.results | selectattr('changed') | list | length == 1
|
|
- resource.result.results | selectattr('error', 'defined') | list | length == 1
|
|
|
|
- name: Remove Pod (Cleanup)
|
|
kubernetes.core.k8s:
|
|
api_version: v1
|
|
kind: Pod
|
|
name: "pod-{{ item }}"
|
|
namespace: "{{ template_namespace }}"
|
|
state: absent
|
|
wait: yes
|
|
ignore_errors: yes
|
|
loop: "{{ range(1, 12) | list }}"
|
|
|
|
always:
|
|
- name: Remove namespace (Cleanup)
|
|
kubernetes.core.k8s:
|
|
kind: Namespace
|
|
name: "{{ template_namespace }}"
|
|
state: absent
|