Files
awx/awx_collection/tests/integration/targets/job_template/tasks/main.yml
2021-06-08 14:33:23 -04:00

430 lines
9.2 KiB
YAML

---
- name: Generate a random string for test
set_fact:
test_id: "{{ lookup('password', '/dev/null chars=ascii_letters length=16') }}"
- name: generate random string for project
set_fact:
org_name: "AWX-Collection-tests-tower_organization-org-{{ test_id }}"
cred1: "AWX-Collection-tests-tower_job_template-cred1-{{ test_id }}"
cred2: "AWX-Collection-tests-tower_job_template-cred2-{{ test_id }}"
cred3: "AWX-Collection-tests-tower_job_template-cred3-{{ test_id }}"
proj1: "AWX-Collection-tests-tower_job_template-proj-{{ test_id }}"
jt1: "AWX-Collection-tests-tower_job_template-jt1-{{ test_id }}"
jt2: "AWX-Collection-tests-tower_job_template-jt2-{{ test_id }}"
lab1: "AWX-Collection-tests-tower_job_template-lab1-{{ test_id }}"
email_not: "AWX-Collection-tests-tower_job_template-email-not-{{ test_id }}"
webhook_not: "AWX-Collection-tests-tower_notification_template-wehbook-not-{{ test_id }}"
group_name1: "AWX-Collection-tests-tower_instance_group-group1-{{ test_id }}"
- name: "Create a new organization"
tower_organization:
name: "{{ org_name }}"
galaxy_credentials:
- Ansible Galaxy
register: result
- name: Create a Demo Project
project:
name: "{{ proj1 }}"
organization: Default
state: present
scm_type: git
scm_url: https://github.com/ansible/ansible-tower-samples.git
register: proj_result
- name: Create Credential1
credential:
name: "{{ cred1 }}"
organization: Default
kind: tower
register: cred1_result
- name: Create Credential2
credential:
name: "{{ cred2 }}"
organization: Default
kind: ssh
- name: Create Credential3
credential:
name: "{{ cred3 }}"
organization: Default
kind: ssh
- name: Create Labels
tower_label:
name: "{{ lab1 }}"
organization: "{{ item }}"
loop:
- Default
- "{{ org_name }}"
- name: Create an Instance Group
instance_group:
name: "{{ group_name1 }}"
state: present
register: result
- assert:
that:
- "result is changed"
- name: Add email notification
notification_template:
name: "{{ email_not }}"
organization: Default
notification_type: email
username: user
password: s3cr3t
sender: tower@example.com
recipients:
- user1@example.com
host: smtp.example.com
port: 25
use_tls: false
use_ssl: false
state: present
- name: Add webhook notification
notification_template:
name: "{{ webhook_not }}"
organization: Default
notification_type: webhook
url: http://www.example.com/hook
headers:
X-Custom-Header: value123
state: present
register: result
- name: Create Job Template 1
job_template:
name: "{{ jt1 }}"
project: "{{ proj1 }}"
inventory: Demo Inventory
playbook: hello_world.yml
credentials:
- "{{ cred1 }}"
- "{{ cred2 }}"
instance_groups:
- "{{ group_name1 }}"
job_type: run
state: present
register: jt1_result
- assert:
that:
- "jt1_result is changed"
- name: Add a credential to this JT
job_template:
name: "{{ jt1 }}"
project: "{{ proj_result.id }}"
playbook: hello_world.yml
credentials:
- "{{ cred1_result.id }}"
register: result
- assert:
that:
- "result is changed"
- name: Try to add the same credential to this JT
job_template:
name: "{{ jt1_result.id }}"
project: "{{ proj1 }}"
playbook: hello_world.yml
credentials:
- "{{ cred1 }}"
register: result
- assert:
that:
- "result is not changed"
- name: Add another credential to this JT
job_template:
name: "{{ jt1 }}"
project: "{{ proj1 }}"
playbook: hello_world.yml
credentials:
- "{{ cred1 }}"
- "{{ cred2 }}"
register: result
- assert:
that:
- "result is changed"
- name: Remove a credential for this JT
job_template:
name: "{{ jt1 }}"
project: "{{ proj1 }}"
playbook: hello_world.yml
credentials:
- "{{ cred1 }}"
register: result
- assert:
that:
- "result is changed"
- name: Remove all credentials from this JT
job_template:
name: "{{ jt1 }}"
project: "{{ proj1 }}"
playbook: hello_world.yml
credentials: []
register: result
- assert:
that:
- "result is changed"
- name: Copy Job Template
job_template:
name: "copy_{{ jt1 }}"
copy_from: "{{ jt1 }}"
state: "present"
- name: Delete copied Job Template
job_template:
name: "copy_{{ jt1 }}"
job_type: run
state: absent
register: result
# This doesnt work if you include the credentials parameter
- name: Delete Job Template 1
job_template:
name: "{{ jt1 }}"
playbook: hello_world.yml
job_type: run
project: "Does Not Exist"
inventory: "Does Not Exist"
webhook_credential: "Does Not Exist"
state: absent
register: result
- assert:
that:
- "result is changed"
- name: Create Job Template 2
job_template:
name: "{{ jt2 }}"
organization: Default
project: "{{ proj1 }}"
inventory: Demo Inventory
playbook: hello_world.yml
credential: "{{ cred3 }}"
job_type: run
labels:
- "{{ lab1 }}"
state: present
register: result
- assert:
that:
- "result is changed"
- name: Add survey to Job Template 2
job_template:
name: "{{ jt2 }}"
survey_enabled: true
survey_spec:
name: ""
description: ""
spec:
- question_name: "Q1"
question_description: "The first question"
required: true
type: "text"
variable: "q1"
min: 5
max: 15
default: "hello"
register: result
- assert:
that:
- "result is changed"
- name: Re Add survey to Job Template 2
job_template:
name: "{{ jt2 }}"
survey_enabled: true
survey_spec:
name: ""
description: ""
spec:
- question_name: "Q1"
question_description: "The first question"
required: true
type: "text"
variable: "q1"
min: 5
max: 15
default: "hello"
register: result
- assert:
that:
- "result is not changed"
- name: Add question to survey to Job Template 2
job_template:
name: "{{ jt2 }}"
survey_enabled: true
survey_spec:
name: ""
description: ""
spec:
- question_name: "Q1"
question_description: "The first question"
required: true
type: "text"
variable: "q1"
min: 5
max: 15
default: "hello"
choices: ""
- question_name: "Q2"
type: "text"
variable: "q2"
required: false
register: result
- assert:
that:
- "result is changed"
- name: Remove survey from Job Template 2
job_template:
name: "{{ jt2 }}"
survey_enabled: false
survey_spec: {}
register: result
- assert:
that:
- "result is changed"
- name: Add started notifications to Job Template 2
job_template:
name: "{{ jt2 }}"
notification_templates_started:
- "{{ email_not }}"
- "{{ webhook_not }}"
register: result
- assert:
that:
- "result is changed"
- name: Re Add started notifications to Job Template 2
job_template:
name: "{{ jt2 }}"
notification_templates_started:
- "{{ email_not }}"
- "{{ webhook_not }}"
register: result
- assert:
that:
- "result is not changed"
- name: Add success notifications to Job Template 2
job_template:
name: "{{ jt2 }}"
notification_templates_success:
- "{{ email_not }}"
- "{{ webhook_not }}"
register: result
- assert:
that:
- "result is changed"
- name: Remove "on start" webhook notification from Job Template 2
job_template:
name: "{{ jt2 }}"
notification_templates_started:
- "{{ email_not }}"
register: result
- assert:
that:
- "result is changed"
- name: Delete Job Template 2
job_template:
name: "{{ jt2 }}"
project: "{{ proj1 }}"
inventory: Demo Inventory
playbook: hello_world.yml
credential: "{{ cred3 }}"
job_type: run
state: absent
register: result
- assert:
that:
- "result is changed"
- name: Delete the Demo Project
project:
name: "{{ proj1 }}"
organization: Default
state: absent
scm_type: git
scm_url: https://github.com/ansible/ansible-tower-samples.git
register: result
- name: Delete Credential1
credential:
name: "{{ cred1 }}"
organization: Default
kind: tower
state: absent
- name: Delete Credential2
credential:
name: "{{ cred2 }}"
organization: Default
kind: ssh
state: absent
- name: Delete Credential3
credential:
name: "{{ cred3 }}"
organization: Default
kind: ssh
state: absent
# You can't delete a label directly so no cleanup needed
- name: Delete email notification
notification_template:
name: "{{ email_not }}"
organization: Default
state: absent
- name: Delete the instance groups
instance_group:
name: "{{ group_name1 }}"
state: absent
- name: Delete webhook notification
notification_template:
name: "{{ webhook_not }}"
organization: Default
state: absent
- name: "Remove the organization"
tower_organization:
name: "{{ org_name }}"
state: absent
register: result