mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-05-07 21:42:38 +00:00
k8s - allow resource definition using generateName (#238)
k8s - allow resource definition using generateName SUMMARY #35 ISSUE TYPE Feature Pull Request COMPONENT NAME k8s ADDITIONAL INFORMATION - name: create pod using generateName k8s: namespace: test generate_name: pod- definition: kind: Pod spec: containers: - name: py image: python:3.7-alpine - name: create pod using generateName k8s: namespace: test definition: kind: Pod metadata: generateName: pod- spec: containers: - name: py image: python:3.7-alpine Reviewed-by: Mike Graves <mgraves@redhat.com> Reviewed-by: None <None> Reviewed-by: None <None>
This commit is contained in:
@@ -197,6 +197,14 @@
|
||||
tags:
|
||||
- always
|
||||
|
||||
- name: Include generate_name.yml
|
||||
include_tasks:
|
||||
file: tasks/generate_name.yml
|
||||
apply:
|
||||
tags: [ generate_name, k8s ]
|
||||
tags:
|
||||
- always
|
||||
|
||||
roles:
|
||||
- role: helm
|
||||
tags:
|
||||
|
||||
187
molecule/default/tasks/generate_name.yml
Normal file
187
molecule/default/tasks/generate_name.yml
Normal file
@@ -0,0 +1,187 @@
|
||||
- block:
|
||||
- set_fact:
|
||||
pod_00:
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
spec:
|
||||
containers:
|
||||
- name: py-container
|
||||
image: python:3.7-alpine
|
||||
imagePullPolicy: IfNotPresent
|
||||
command:
|
||||
- /bin/sh
|
||||
- -c
|
||||
- while true;do date;sleep 5; done
|
||||
pod_01:
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
generateName: pod-
|
||||
spec:
|
||||
containers:
|
||||
- args:
|
||||
- /bin/sh
|
||||
- -c
|
||||
- while true; do echo $(date); sleep 10; done
|
||||
image: python:3.7-alpine
|
||||
imagePullPolicy: IfNotPresent
|
||||
name: py-container
|
||||
|
||||
- name: Create namespace using generateName
|
||||
k8s:
|
||||
definition:
|
||||
kind: Namespace
|
||||
metadata:
|
||||
generateName: "test-"
|
||||
labels:
|
||||
ansible: test
|
||||
register: result
|
||||
|
||||
- set_fact:
|
||||
namespace: "{{ result.result.metadata.name }}"
|
||||
|
||||
- name: Create Pod without name
|
||||
k8s:
|
||||
namespace: "{{ namespace }}"
|
||||
definition: "{{ pod_00 }}"
|
||||
register: result
|
||||
ignore_errors: true
|
||||
|
||||
- name: assert pod creation failed
|
||||
assert:
|
||||
that:
|
||||
- result is failed
|
||||
- "'name or generateName is required' in result.msg"
|
||||
|
||||
- name: create pod using name parameter should succeed
|
||||
k8s:
|
||||
namespace: "{{ namespace }}"
|
||||
definition: "{{ pod_00 }}"
|
||||
name: pod-01
|
||||
|
||||
- name: list Pod for namespace
|
||||
k8s_info:
|
||||
kind: Pod
|
||||
namespace: "{{ namespace }}"
|
||||
register: pods
|
||||
|
||||
- name: assert pod has been created
|
||||
assert:
|
||||
that:
|
||||
- "{{ pods.resources | length == 1 }}"
|
||||
|
||||
- name: create pod using generate_name parameter should succeed
|
||||
k8s:
|
||||
namespace: "{{ namespace }}"
|
||||
definition: "{{ pod_00 }}"
|
||||
generate_name: pod-
|
||||
|
||||
- name: list Pod for namespace
|
||||
k8s_info:
|
||||
kind: Pod
|
||||
namespace: "{{ namespace }}"
|
||||
register: pods
|
||||
|
||||
- name: assert pod has been created
|
||||
assert:
|
||||
that:
|
||||
- "{{ pods.resources | length == 2 }}"
|
||||
|
||||
- name: create pod using metadata.generateName parameter should succeed
|
||||
k8s:
|
||||
namespace: "{{ namespace }}"
|
||||
definition: "{{ pod_01 }}"
|
||||
|
||||
- name: list Pod for namespace
|
||||
k8s_info:
|
||||
kind: Pod
|
||||
namespace: "{{ namespace }}"
|
||||
register: pods
|
||||
|
||||
- name: assert pod has been created
|
||||
assert:
|
||||
that:
|
||||
- "{{ pods.resources | length == 3 }}"
|
||||
|
||||
- name: create object using metadata.generateName should support wait option
|
||||
k8s:
|
||||
namespace: "{{ namespace }}"
|
||||
definition:
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
generateName: test-
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: nginx
|
||||
serviceName: "nginx"
|
||||
replicas: 3
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: nginx
|
||||
spec:
|
||||
terminationGracePeriodSeconds: 10
|
||||
containers:
|
||||
- name: nginx
|
||||
image: k8s.gcr.io/nginx-slim:0.8
|
||||
ports:
|
||||
- containerPort: 80
|
||||
name: web
|
||||
wait: yes
|
||||
wait_sleep: 3
|
||||
wait_timeout: 180
|
||||
|
||||
- name: Create ConfigMap using generateName
|
||||
kubernetes.core.k8s:
|
||||
kind: ConfigMap
|
||||
namespace: "{{ namespace }}"
|
||||
generate_name: cmap-
|
||||
append_hash: yes
|
||||
register: config
|
||||
|
||||
- name: assert that configmap has been created using generateName
|
||||
assert:
|
||||
that:
|
||||
- "config.result.metadata.name.startswith('cmap-')"
|
||||
|
||||
- name: Create Pod with failing container
|
||||
kubernetes.core.k8s:
|
||||
namespace: "{{ namespace }}"
|
||||
definition:
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: pod1
|
||||
spec:
|
||||
containers:
|
||||
- image: adslfkjadslfkjadslkfjsadf
|
||||
name: non-existent-container-image
|
||||
|
||||
- name: Create second Pod using wait (it should not wait for the first container)
|
||||
kubernetes.core.k8s:
|
||||
namespace: "{{ namespace }}"
|
||||
generate_name: "pod2-"
|
||||
definition:
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
spec:
|
||||
containers:
|
||||
- args:
|
||||
- /bin/sh
|
||||
- -c
|
||||
- while true; do echo $(date); sleep 10; done
|
||||
image: python:3.7-alpine
|
||||
imagePullPolicy: Always
|
||||
name: c0
|
||||
wait: yes
|
||||
wait_timeout: 10
|
||||
|
||||
always:
|
||||
- name: Delete namespace
|
||||
k8s:
|
||||
kind: Namespace
|
||||
name: "{{ namespace }}"
|
||||
state: absent
|
||||
ignore_errors: true
|
||||
Reference in New Issue
Block a user