mirror of
https://github.com/openshift/community.okd.git
synced 2026-03-26 19:03:14 +00:00
Add openshift_process module (#44)
* Initial pass at openshift_process module. Render-only * fix sanity test * Add ability to create/delete resources rendered by template * fix sanity tests * add more tests and fix .env parser * Add more tests * Make multiline parsing work properly * Add test for creating templates * Template APIs require namespace to be provided whether or not the template exists * add docs * Update plugins/modules/openshift_process.py Co-authored-by: Timothy Appnel <tima@ansible.com> Co-authored-by: Timothy Appnel <tima@ansible.com>
This commit is contained in:
committed by
GitHub
parent
308235e032
commit
74ac82e76d
9
molecule/default/files/example.env
Normal file
9
molecule/default/files/example.env
Normal file
@@ -0,0 +1,9 @@
|
||||
#
|
||||
NAME=example
|
||||
# Multiline values shouldn't break things
|
||||
export CONTENT=This is a long message\
|
||||
that may take one or more lines to parse\
|
||||
but should still work without issue
|
||||
|
||||
# This shouldn't throw an error
|
||||
UNUSED=
|
||||
12
molecule/default/files/nginx.env
Normal file
12
molecule/default/files/nginx.env
Normal file
@@ -0,0 +1,12 @@
|
||||
# Want to make sure comments don't break it
|
||||
export NAME=test123
|
||||
NAMESPACE=openshift
|
||||
|
||||
|
||||
|
||||
|
||||
# Blank lines should be fine too
|
||||
|
||||
# Equals in comments shouldn't break things=True
|
||||
MEMORY_LIMIT=1Gi
|
||||
|
||||
34
molecule/default/files/simple-template.yaml
Normal file
34
molecule/default/files/simple-template.yaml
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
apiVersion: template.openshift.io/v1
|
||||
kind: Template
|
||||
labels:
|
||||
template: simple-example-test
|
||||
message: |-
|
||||
The following configmaps have been created in your project: ${NAME}.
|
||||
metadata:
|
||||
annotations:
|
||||
description: A super basic template for testing
|
||||
openshift.io/display-name: Super basic template
|
||||
openshift.io/provider-display-name: Red Hat, Inc.
|
||||
tags: quickstart,examples
|
||||
name: simple-example
|
||||
objects:
|
||||
- apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
annotations:
|
||||
description: Big example
|
||||
name: ${NAME}
|
||||
data:
|
||||
content: "${CONTENT}"
|
||||
parameters:
|
||||
- description: The name assigned to the ConfigMap
|
||||
displayName: Name
|
||||
name: NAME
|
||||
required: true
|
||||
value: example
|
||||
- description: The value for the content key of the configmap
|
||||
displayName: Content
|
||||
name: CONTENT
|
||||
required: true
|
||||
value: ''
|
||||
164
molecule/default/tasks/openshift_process.yml
Normal file
164
molecule/default/tasks/openshift_process.yml
Normal file
@@ -0,0 +1,164 @@
|
||||
---
|
||||
|
||||
- name: Process a template in the cluster
|
||||
community.okd.openshift_process:
|
||||
name: nginx-example
|
||||
namespace: openshift # only needed if using a template already on the server
|
||||
parameters:
|
||||
NAMESPACE: openshift
|
||||
NAME: test123
|
||||
register: result
|
||||
|
||||
- name: Create the rendered resources
|
||||
community.okd.k8s:
|
||||
namespace: process-test
|
||||
definition: '{{ item }}'
|
||||
wait: yes
|
||||
apply: yes
|
||||
loop: '{{ result.resources }}'
|
||||
|
||||
- name: Delete the rendered resources
|
||||
community.okd.k8s:
|
||||
namespace: process-test
|
||||
definition: '{{ item }}'
|
||||
wait: yes
|
||||
state: absent
|
||||
loop: '{{ result.resources }}'
|
||||
|
||||
- name: Process a template and create the resources in the cluster
|
||||
community.okd.openshift_process:
|
||||
name: nginx-example
|
||||
namespace: openshift # only needed if using a template already on the server
|
||||
parameters:
|
||||
NAMESPACE: openshift
|
||||
NAME: test123
|
||||
state: present
|
||||
namespace_target: process-test
|
||||
register: result
|
||||
|
||||
- name: Process a template and update the resources in the cluster
|
||||
community.okd.openshift_process:
|
||||
name: nginx-example
|
||||
namespace: openshift # only needed if using a template already on the server
|
||||
parameters:
|
||||
NAMESPACE: openshift
|
||||
NAME: test123
|
||||
MEMORY_LIMIT: 1Gi
|
||||
state: present
|
||||
namespace_target: process-test
|
||||
register: result
|
||||
|
||||
- name: Process a template and delete the resources in the cluster
|
||||
community.okd.openshift_process:
|
||||
name: nginx-example
|
||||
namespace: openshift # only needed if using a template already on the server
|
||||
parameters:
|
||||
NAMESPACE: openshift
|
||||
NAME: test123
|
||||
state: absent
|
||||
namespace_target: process-test
|
||||
register: result
|
||||
|
||||
- name: Process a template with parameters from an env file and create the resources
|
||||
community.okd.openshift_process:
|
||||
name: nginx-example
|
||||
namespace: openshift
|
||||
namespace_target: process-test
|
||||
parameter_file: '{{ files_dir }}/nginx.env'
|
||||
state: present
|
||||
wait: yes
|
||||
|
||||
- name: Process a template with parameters from an env file and delete the resources
|
||||
community.okd.openshift_process:
|
||||
name: nginx-example
|
||||
namespace: openshift
|
||||
namespace_target: process-test
|
||||
parameter_file: '{{ files_dir }}/nginx.env'
|
||||
state: absent
|
||||
wait: yes
|
||||
|
||||
|
||||
- name: Process a template with duplicate values
|
||||
community.okd.openshift_process:
|
||||
name: nginx-example
|
||||
namespace: openshift # only needed if using a template already on the server
|
||||
parameters:
|
||||
NAME: test123
|
||||
parameter_file: '{{ files_dir }}/nginx.env'
|
||||
ignore_errors: yes
|
||||
register: result
|
||||
|
||||
- name: Assert the expected failure occurred
|
||||
assert:
|
||||
that:
|
||||
- result.msg is defined
|
||||
- result.msg == "Duplicate value for 'NAME' detected in parameter file"
|
||||
|
||||
- name: Process a local template
|
||||
community.okd.openshift_process:
|
||||
src: '{{ files_dir }}/simple-template.yaml'
|
||||
parameter_file: '{{ files_dir }}/example.env'
|
||||
register: rendered
|
||||
|
||||
- name: Process a local template and create the resources
|
||||
community.okd.openshift_process:
|
||||
src: '{{ files_dir }}/simple-template.yaml'
|
||||
parameter_file: '{{ files_dir }}/example.env'
|
||||
namespace_target: process-test
|
||||
state: present
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that: result is changed
|
||||
|
||||
- name: Create the processed resources
|
||||
community.okd.k8s:
|
||||
namespace: process-test
|
||||
definition: '{{ item }}'
|
||||
loop: '{{ rendered.resources }}'
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that: result is not changed
|
||||
|
||||
- name: Process a local template and create the resources
|
||||
community.okd.openshift_process:
|
||||
definition: "{{ lookup('template', files_dir + '/simple-template.yaml') | from_yaml }}"
|
||||
parameter_file: '{{ files_dir }}/example.env'
|
||||
namespace_target: process-test
|
||||
state: present
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that: result is not changed
|
||||
|
||||
- name: Get the created configmap
|
||||
community.kubernetes.k8s_info:
|
||||
api_version: v1
|
||||
kind: ConfigMap
|
||||
name: example
|
||||
namespace: process-test
|
||||
register: templated_cm
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- (templated_cm.resources | length) == 1
|
||||
- templated_cm.resources.0.data.content is defined
|
||||
- templated_cm.resources.0.data.content == "This is a long message that may take one or more lines to parse but should still work without issue"
|
||||
|
||||
- name: Create the Template resource
|
||||
community.okd.k8s:
|
||||
src: '{{ files_dir }}/simple-template.yaml'
|
||||
namespace: process-test
|
||||
|
||||
- name: Process the template and create the resources
|
||||
community.okd.openshift_process:
|
||||
name: simple-example
|
||||
namespace: process-test # only needed if using a template already on the server
|
||||
namespace_target: process-test
|
||||
parameter_file: '{{ files_dir }}/example.env'
|
||||
state: present
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that: result is not changed
|
||||
@@ -62,3 +62,19 @@
|
||||
|
||||
- import_tasks: tasks/openshift_auth.yml
|
||||
- import_tasks: tasks/openshift_route.yml
|
||||
- block:
|
||||
- name: Create namespace
|
||||
community.okd.k8s:
|
||||
api_version: v1
|
||||
kind: Namespace
|
||||
name: process-test
|
||||
- import_tasks: tasks/openshift_process.yml
|
||||
vars:
|
||||
files_dir: '{{ playbook_dir }}/files'
|
||||
always:
|
||||
- name: Delete namespace
|
||||
community.okd.k8s:
|
||||
api_version: v1
|
||||
kind: Namespace
|
||||
name: process-test
|
||||
state: absent
|
||||
|
||||
Reference in New Issue
Block a user