|
@@ -0,0 +1,754 @@
|
|
|
+# Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
|
|
|
+#
|
|
|
+# Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
+# you may not use this file except in compliance with the License.
|
|
|
+# You may obtain a copy of the License at
|
|
|
+#
|
|
|
+# http://www.apache.org/licenses/LICENSE-2.0
|
|
|
+#
|
|
|
+# Unless required by applicable law or agreed to in writing, software
|
|
|
+# distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
+# See the License for the specific language governing permissions and
|
|
|
+# limitations under the License.
|
|
|
+---
|
|
|
+# Test case to verify the prerequisites are installed and execute the AWX deployment
|
|
|
+- name: OMNIA_1.1_AWX_TC_001
|
|
|
+ hosts: localhost
|
|
|
+ connection: local
|
|
|
+ vars_files:
|
|
|
+ - test_vars/test_inventory_vars.yml
|
|
|
+ tasks:
|
|
|
+
|
|
|
+ - name: Check login_vars file is encrypted
|
|
|
+ command: cat "{{ login_vars_path }}"
|
|
|
+ changed_when: false
|
|
|
+ register: config_content
|
|
|
+ tags: always
|
|
|
+
|
|
|
+ - name: Decrpyt login_vars.yml
|
|
|
+ command: >-
|
|
|
+ ansible-vault decrypt {{ login_vars_path }}
|
|
|
+ --vault-password-file {{ login_vars_vault_path }}
|
|
|
+ changed_when: false
|
|
|
+ when: "'$ANSIBLE_VAULT;' in config_content.stdout"
|
|
|
+ tags: always
|
|
|
+
|
|
|
+ - name: Include variable file login_vars.yml
|
|
|
+ include_vars: "{{ login_vars_path }}"
|
|
|
+ tags: always
|
|
|
+
|
|
|
+ - name: Encypt login file
|
|
|
+ command: >-
|
|
|
+ ansible-vault encrypt {{ login_vars_path }}
|
|
|
+ --vault-password-file {{ login_vars_vault_path }}
|
|
|
+ changed_when: false
|
|
|
+ tags: always
|
|
|
+
|
|
|
+ - name: Execute awx command
|
|
|
+ command: "kubectl get pods -n {{ awx_namespace }}"
|
|
|
+ changed_when: true
|
|
|
+ register: k8s_pods
|
|
|
+ run_once: true
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_001,VERIFY_OMNIA_01
|
|
|
+
|
|
|
+ - name: Validate awx operator containers
|
|
|
+ assert:
|
|
|
+ that:
|
|
|
+ - k8s_pods.stdout | regex_search("{{ item }}")
|
|
|
+ fail_msg: "{{ awx_fail_msg }}"
|
|
|
+ success_msg: "{{ awx_success_msg }}"
|
|
|
+ loop:
|
|
|
+ - "awx-([A-Za-z0-9]{10})-([A-Za-z0-9]{5})"
|
|
|
+ - "awx-operator-([A-Za-z0-9]{10})-([A-Za-z0-9]{5})"
|
|
|
+ - "awx-postgres-([A-Za-z0-9]{1})"
|
|
|
+ run_once: true
|
|
|
+ tags: TC_001,VERIFY_OMNIA_01
|
|
|
+
|
|
|
+# Test case to verify inventory groups are present in AWX UI (idrac, ethernet, inifiniband, rbod)
|
|
|
+- name: OMNIA_1.1_AWX_TC_003
|
|
|
+ hosts: localhost
|
|
|
+ connection: local
|
|
|
+
|
|
|
+ vars_files:
|
|
|
+ - test_vars/test_inventory_vars.yml
|
|
|
+ tasks:
|
|
|
+
|
|
|
+ - name: Execute get pods command
|
|
|
+ command: "kubectl get pods -n {{ awx_namespace }}"
|
|
|
+ changed_when: true
|
|
|
+ register: k8s_pods
|
|
|
+ run_once: true
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_003
|
|
|
+
|
|
|
+ - name: Get awx pod
|
|
|
+ set_fact:
|
|
|
+ awx_pods: "{{ item | regex_search(awx_pod_regex) | trim }}"
|
|
|
+ idrac_status: true
|
|
|
+ with_items:
|
|
|
+ - "{{ k8s_pods.stdout_lines }}"
|
|
|
+ run_once: true
|
|
|
+ when: item | regex_search(awx_pod_item_regex)
|
|
|
+ tags: TC_003
|
|
|
+
|
|
|
+ - name: Get awx cluster ip
|
|
|
+ shell: "kubectl get svc awx-ui -n {{ awx_namespace }} -o jsonpath='{.spec.clusterIP}'"
|
|
|
+ register: awx_cluster_ip
|
|
|
+ changed_when: false
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_003
|
|
|
+
|
|
|
+ - name: Get AWX admin password
|
|
|
+ shell: "kubectl get secret awx-admin-password -n {{ awx_namespace }} -o jsonpath='{.data.password}' | base64 --decode"
|
|
|
+ register: awx_admin_password
|
|
|
+ changed_when: false
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_003
|
|
|
+
|
|
|
+ - name: Execute awx get inventory hosts command
|
|
|
+ command: "awx --conf.host http://{{ awx_cluster_ip.stdout }}:8052 --conf.username admin --conf.password {{ awx_admin_password.stdout }} --conf.insecure hosts list --inventory {{ item }} -f human --filter 'name'"
|
|
|
+ register: idrac_hosts
|
|
|
+ with_items:
|
|
|
+ - "idrac_inventory"
|
|
|
+ - "infiniband_inventory"
|
|
|
+ - "ethernet_inventory"
|
|
|
+ - "powervault_me4_inventory"
|
|
|
+ run_once: true
|
|
|
+ changed_when: false
|
|
|
+ tags: TC_003
|
|
|
+
|
|
|
+ - name: Verify inventory are present in AWX UI
|
|
|
+ assert:
|
|
|
+ that:
|
|
|
+ - item.stdout_lines[0] | regex_search("name")
|
|
|
+ fail_msg: "{{ item.item }} - {{ inventory_fail_msg }}"
|
|
|
+ success_msg: "{{ item.item }} - {{ inventory_success_msg }}"
|
|
|
+ with_items:
|
|
|
+ - "{{ idrac_hosts.results }}"
|
|
|
+ changed_when: false
|
|
|
+ tags: TC_003
|
|
|
+
|
|
|
+# Test case to validate ip of idrac
|
|
|
+- name: OMNIA_1.1_AWX_TC_004
|
|
|
+ hosts: localhost
|
|
|
+ connection: local
|
|
|
+
|
|
|
+ vars_files:
|
|
|
+ - test_vars/test_inventory_vars.yml
|
|
|
+ - ../input_params/base_vars.yml
|
|
|
+ tasks:
|
|
|
+
|
|
|
+ - name: Execute get pods command
|
|
|
+ command: "kubectl get pods -n {{ awx_namespace }}"
|
|
|
+ changed_when: true
|
|
|
+ register: k8s_pods
|
|
|
+ run_once: true
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_004
|
|
|
+
|
|
|
+ - name: Get awx pod
|
|
|
+ set_fact:
|
|
|
+ awx_pods: "{{ item | regex_search(awx_pod_regex) | trim }}"
|
|
|
+ with_items:
|
|
|
+ - "{{ k8s_pods.stdout_lines }}"
|
|
|
+ run_once: true
|
|
|
+ when: item | regex_search(awx_pod_item_regex)
|
|
|
+ changed_when: false
|
|
|
+ tags: TC_004
|
|
|
+
|
|
|
+ - name: Get awx cluster ip
|
|
|
+ shell: "kubectl get svc awx-ui -n {{ awx_namespace }} -o jsonpath='{.spec.clusterIP}'"
|
|
|
+ register: awx_cluster_ip
|
|
|
+ changed_when: false
|
|
|
+ tags: TC_004
|
|
|
+
|
|
|
+ - name: Get AWX admin password
|
|
|
+ shell: "kubectl get secret awx-admin-password -n {{ awx_namespace }} -o jsonpath='{.data.password}' | base64 --decode"
|
|
|
+ register: awx_admin_password
|
|
|
+ changed_when: false
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_004
|
|
|
+
|
|
|
+ - name: Execute awx get inventory hosts command
|
|
|
+ command: "awx --conf.host http://{{ awx_cluster_ip.stdout }}:8052 --conf.username admin --conf.password {{ awx_admin_password.stdout }} --conf.insecure hosts list --inventory {{ idrac_inventory_name }} -f human --filter 'name'"
|
|
|
+ changed_when: true
|
|
|
+ register: idrac_hosts
|
|
|
+ run_once: true
|
|
|
+ tags: TC_004
|
|
|
+
|
|
|
+ - name: List of iDRAC host
|
|
|
+ include_tasks: "{{ validation_script_path }}"
|
|
|
+ with_items:
|
|
|
+ - "{{ idrac_hosts.stdout_lines[2:] }}"
|
|
|
+ when: idrac_hosts.stdout_lines | length > 2
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_004
|
|
|
+
|
|
|
+ - name: Empty iDRAC hosts
|
|
|
+ debug:
|
|
|
+ msg: "{{ empty_host_err }}"
|
|
|
+ when: idrac_hosts.stdout_lines | length < 3
|
|
|
+ failed_when: false
|
|
|
+ tags: TC_004
|
|
|
+
|
|
|
+# Test case to validate ip of infiniband
|
|
|
+- name: OMNIA_1.1_AWX_TC_005
|
|
|
+ hosts: localhost
|
|
|
+ connection: local
|
|
|
+
|
|
|
+ vars_files:
|
|
|
+ - test_vars/test_inventory_vars.yml
|
|
|
+ - ../input_params/base_vars.yml
|
|
|
+ tasks:
|
|
|
+
|
|
|
+ - name: Execute get pods command
|
|
|
+ command: "kubectl get pods -n {{ awx_namespace }}"
|
|
|
+ changed_when: true
|
|
|
+ register: k8s_pods
|
|
|
+ run_once: true
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_005
|
|
|
+
|
|
|
+ - name: Get awx pod
|
|
|
+ set_fact:
|
|
|
+ awx_pods: "{{ item | regex_search(awx_pod_regex) | trim }}"
|
|
|
+ with_items:
|
|
|
+ - "{{ k8s_pods.stdout_lines }}"
|
|
|
+ run_once: true
|
|
|
+ when: item | regex_search(awx_pod_item_regex)
|
|
|
+ failed_when: false
|
|
|
+ tags: TC_005
|
|
|
+
|
|
|
+ - name: Get awx cluster ip
|
|
|
+ shell: "kubectl get svc awx-ui -n {{ awx_namespace }} -o jsonpath='{.spec.clusterIP}'"
|
|
|
+ register: awx_cluster_ip
|
|
|
+ changed_when: false
|
|
|
+ tags: TC_005
|
|
|
+
|
|
|
+ - name: Get AWX admin password
|
|
|
+ shell: "kubectl get secret awx-admin-password -n {{ awx_namespace }} -o jsonpath='{.data.password}' | base64 --decode"
|
|
|
+ register: awx_admin_password
|
|
|
+ changed_when: false
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_005
|
|
|
+
|
|
|
+ - name: Execute awx get inventory hosts command
|
|
|
+ command: "awx --conf.host http://{{ awx_cluster_ip.stdout }}:8052 --conf.username admin --conf.password {{ awx_admin_password.stdout }} --conf.insecure hosts list --inventory {{ ib_inventory_name }} -f human --filter 'name'"
|
|
|
+ changed_when: true
|
|
|
+ register: infiniband_hosts
|
|
|
+ run_once: true
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_005
|
|
|
+
|
|
|
+ - name: List of infiniband hosts
|
|
|
+ include_tasks: "{{ validation_script_path }}"
|
|
|
+ with_items:
|
|
|
+ - "{{ infiniband_hosts.stdout_lines[2:] }}"
|
|
|
+ when: infiniband_hosts.stdout_lines | length > 2
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_005
|
|
|
+
|
|
|
+ - name: Empty infiniband hosts
|
|
|
+ debug:
|
|
|
+ msg: "{{ empty_host_err }}"
|
|
|
+ when: infiniband_hosts.stdout_lines | length < 3
|
|
|
+ failed_when: false
|
|
|
+ tags: TC_005
|
|
|
+
|
|
|
+# Test case to validate ip of ethernet
|
|
|
+- name: OMNIA_1.1_AWX_TC_006
|
|
|
+ hosts: localhost
|
|
|
+ connection: local
|
|
|
+
|
|
|
+ vars_files:
|
|
|
+ - test_vars/test_inventory_vars.yml
|
|
|
+ - ../input_params/base_vars.yml
|
|
|
+ tasks:
|
|
|
+
|
|
|
+ - name: Execute get pods command
|
|
|
+ command: "kubectl get pods -n {{ awx_namespace }}"
|
|
|
+ changed_when: true
|
|
|
+ register: k8s_pods
|
|
|
+ run_once: true
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_006
|
|
|
+
|
|
|
+ - name: Get awx pod
|
|
|
+ set_fact:
|
|
|
+ awx_pods: "{{ item | regex_search(awx_pod_regex) | trim }}"
|
|
|
+ with_items:
|
|
|
+ - "{{ k8s_pods.stdout_lines }}"
|
|
|
+ run_once: true
|
|
|
+ when: item | regex_search(awx_pod_item_regex)
|
|
|
+ failed_when: false
|
|
|
+ tags: TC_006
|
|
|
+
|
|
|
+ - name: Get awx cluster ip
|
|
|
+ shell: "kubectl get svc awx-ui -n {{ awx_namespace }} -o jsonpath='{.spec.clusterIP}'"
|
|
|
+ register: awx_cluster_ip
|
|
|
+ changed_when: false
|
|
|
+ tags: TC_006
|
|
|
+
|
|
|
+ - name: Get AWX admin password
|
|
|
+ shell: "kubectl get secret awx-admin-password -n {{ awx_namespace }} -o jsonpath='{.data.password}' | base64 --decode"
|
|
|
+ register: awx_admin_password
|
|
|
+ changed_when: false
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_006
|
|
|
+
|
|
|
+ - name: Execute awx get inventory hosts command
|
|
|
+ command: "awx --conf.host http://{{ awx_cluster_ip.stdout }}:8052 --conf.username admin --conf.password {{ awx_admin_password.stdout }} --conf.insecure hosts list --inventory {{ ethernet_inventory_name }} -f human --filter 'name'"
|
|
|
+ changed_when: true
|
|
|
+ register: ethernet_hosts
|
|
|
+ run_once: true
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_006
|
|
|
+
|
|
|
+ - name: List of ethernet hosts
|
|
|
+ include_tasks: "{{ validation_script_path }}"
|
|
|
+ with_items:
|
|
|
+ - "{{ ethernet_hosts.stdout_lines[2:] }}"
|
|
|
+ when: ethernet_hosts.stdout_lines | length > 2
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_006
|
|
|
+
|
|
|
+ - name: Empty ethernet hosts
|
|
|
+ debug:
|
|
|
+ msg: "{{ empty_host_err }}"
|
|
|
+ when: ethernet_hosts.stdout_lines | length < 3
|
|
|
+ failed_when: false
|
|
|
+ tags: TC_006
|
|
|
+
|
|
|
+# Test case to validate ip of powervault
|
|
|
+- name: OMNIA_1.1_AWX_TC_007
|
|
|
+ hosts: localhost
|
|
|
+ connection: local
|
|
|
+
|
|
|
+ vars_files:
|
|
|
+ - test_vars/test_inventory_vars.yml
|
|
|
+ - ../input_params/base_vars.yml
|
|
|
+ tasks:
|
|
|
+
|
|
|
+ - name: Execute get pods command
|
|
|
+ command: "kubectl get pods -n {{ awx_namespace }}"
|
|
|
+ changed_when: true
|
|
|
+ register: k8s_pods
|
|
|
+ run_once: true
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_007
|
|
|
+
|
|
|
+ - name: Get awx pod
|
|
|
+ set_fact:
|
|
|
+ awx_pods: "{{ item | regex_search(awx_pod_regex) | trim }}"
|
|
|
+ idrac_status: true
|
|
|
+ with_items:
|
|
|
+ - "{{ k8s_pods.stdout_lines }}"
|
|
|
+ run_once: true
|
|
|
+ when: item | regex_search(awx_pod_item_regex)
|
|
|
+ failed_when: false
|
|
|
+ tags: TC_007
|
|
|
+
|
|
|
+ - name: Get awx cluster ip
|
|
|
+ shell: "kubectl get svc awx-ui -n {{ awx_namespace }} -o jsonpath='{.spec.clusterIP}'"
|
|
|
+ register: awx_cluster_ip
|
|
|
+ changed_when: false
|
|
|
+ tags: TC_007
|
|
|
+
|
|
|
+ - name: Get AWX admin password
|
|
|
+ shell: "kubectl get secret awx-admin-password -n {{ awx_namespace }} -o jsonpath='{.data.password}' | base64 --decode"
|
|
|
+ register: awx_admin_password
|
|
|
+ changed_when: false
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_007
|
|
|
+
|
|
|
+ - name: Execute awx get inventory hosts command
|
|
|
+ command: "awx --conf.host http://{{ awx_cluster_ip.stdout }}:8052 --conf.username admin --conf.password {{ awx_admin_password.stdout }} --conf.insecure hosts list --inventory {{ pv_inventory_name }} -f human --filter 'name'"
|
|
|
+ changed_when: true
|
|
|
+ register: powervault_hosts
|
|
|
+ run_once: true
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_007
|
|
|
+
|
|
|
+ - name: List of powervault hosts
|
|
|
+ include_tasks: "{{ validation_script_path }}"
|
|
|
+ with_items:
|
|
|
+ - "{{ powervault_hosts.stdout_lines[2:] }}"
|
|
|
+ when: powervault_hosts.stdout_lines | length > 2
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_007
|
|
|
+
|
|
|
+ - name: Empty powervault hosts
|
|
|
+ debug:
|
|
|
+ msg: "{{ empty_host_err }}"
|
|
|
+ when: powervault_hosts.stdout_lines | length < 3
|
|
|
+ failed_when: false
|
|
|
+ tags: TC_007
|
|
|
+
|
|
|
+# Test case to verify omnia inventory groups (manager, compute, login, nfs)
|
|
|
+- name: OMNIA_1.1_AWX_TC_008
|
|
|
+ hosts: localhost
|
|
|
+ connection: local
|
|
|
+ vars_files:
|
|
|
+ - test_vars/test_inventory_vars.yml
|
|
|
+ - ../roles/webui_awx/vars/main.yml
|
|
|
+
|
|
|
+ tasks:
|
|
|
+
|
|
|
+ - name: Get awx-service Cluster-IP
|
|
|
+ command: "kubectl get svc awx-service -n {{ awx_namespace }} -o jsonpath='{.spec.clusterIP}'"
|
|
|
+ register: awx_cluster_ip
|
|
|
+ changed_when: false
|
|
|
+ run_once: true
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_008
|
|
|
+
|
|
|
+ - name: Get AWX admin password
|
|
|
+ shell: "kubectl get secret awx-admin-password -n {{ awx_namespace }} -o jsonpath='{.data.password}' | base64 --decode"
|
|
|
+ register: awx_admin_password
|
|
|
+ changed_when: false
|
|
|
+ run_once: true
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_008
|
|
|
+
|
|
|
+ - name: Set IP and password
|
|
|
+ set_fact:
|
|
|
+ awx_ip: 'http://{{ awx_cluster_ip.stdout }}'
|
|
|
+ admin_password: "{{ awx_admin_password.stdout }}"
|
|
|
+ run_once: true
|
|
|
+ failed_when: false
|
|
|
+ tags: TC_008
|
|
|
+
|
|
|
+ - name: Get omnia inventory groups
|
|
|
+ awx.awx.tower_group:
|
|
|
+ name: "{{ item.name }}"
|
|
|
+ description: "{{ item.description }}"
|
|
|
+ inventory: "node_inventory"
|
|
|
+ state: present
|
|
|
+ loop: "{{ group_names }}"
|
|
|
+ register: awx_group
|
|
|
+ run_once: true
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_008
|
|
|
+
|
|
|
+ - name: Verify omnia inventory groups
|
|
|
+ assert:
|
|
|
+ that:
|
|
|
+ - item.changed == false
|
|
|
+ - item.item.name == "{{ manager_group }}" or
|
|
|
+ item.item.name =="{{ compute_group }}" or
|
|
|
+ item.item.name == "{{ login_group }}" or
|
|
|
+ item.item.name == "{{ nfs_group }}"
|
|
|
+ fail_msg: "{{ item .item.name }}{{ group_fail_msg }}"
|
|
|
+ success_msg: "{{ item .item.name }}{{ group_success_msg }}"
|
|
|
+ with_items:
|
|
|
+ - "{{ awx_group.results }}"
|
|
|
+ failed_when: false
|
|
|
+ tags: TC_008
|
|
|
+
|
|
|
+# Test case to verify AWX configuration is done properly with job_templates, schedules in place
|
|
|
+- name: OMNIA_1.1_AWX_TC_009
|
|
|
+ hosts: localhost
|
|
|
+ connection: local
|
|
|
+ vars_files:
|
|
|
+ - test_vars/test_inventory_vars.yml
|
|
|
+ - ../roles/webui_awx/vars/main.yml
|
|
|
+
|
|
|
+ tasks:
|
|
|
+
|
|
|
+ - name: Get awx-service Cluster-IP
|
|
|
+ command: "kubectl get svc awx-service -n {{ awx_namespace }} -o jsonpath='{.spec.clusterIP}'"
|
|
|
+ register: awx_cluster_ip
|
|
|
+ changed_when: false
|
|
|
+ ignore_errors: true
|
|
|
+ run_once: true
|
|
|
+ tags: TC_009
|
|
|
+
|
|
|
+ - name: Get AWX admin password
|
|
|
+ shell: "kubectl get secret awx-admin-password -n {{ awx_namespace }} -o jsonpath='{.data.password}' | base64 --decode"
|
|
|
+ register: awx_admin_password
|
|
|
+ changed_when: false
|
|
|
+ ignore_errors: true
|
|
|
+ run_once: true
|
|
|
+ tags: TC_009
|
|
|
+
|
|
|
+ - name: Set IP and password
|
|
|
+ set_fact:
|
|
|
+ awx_ip: 'http://{{ awx_cluster_ip.stdout }}'
|
|
|
+ admin_password: "{{ awx_admin_password.stdout }}"
|
|
|
+ failed_when: false
|
|
|
+ run_once: true
|
|
|
+ tags: TC_009
|
|
|
+
|
|
|
+ - name: Get job template details
|
|
|
+ awx.awx.tower_job_template:
|
|
|
+ name: "{{ item.name }}"
|
|
|
+ job_type: "run"
|
|
|
+ organization: "{{ organization_name }}"
|
|
|
+ inventory: "{{ item.inventory }}"
|
|
|
+ project: "{{ project_name }}"
|
|
|
+ playbook: "{{ item.playbook }}"
|
|
|
+ credentials:
|
|
|
+ - "{{ item.credential }}"
|
|
|
+ state: present
|
|
|
+ tower_config_file: "{{ tower_config_file_path }}"
|
|
|
+ loop: "{{ job_template_details }}"
|
|
|
+ register: job_template
|
|
|
+ when: item.flag
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_009
|
|
|
+
|
|
|
+ - name: Validate job template
|
|
|
+ assert:
|
|
|
+ that:
|
|
|
+ - item.changed == false
|
|
|
+ fail_msg: "{{ item.item.name }}{{ job_template_fail_msg }}"
|
|
|
+ success_msg: " {{ item.item.name }} {{ job_template_success_msg }}"
|
|
|
+ with_items:
|
|
|
+ - "{{ job_template.results }}"
|
|
|
+ failed_when: false
|
|
|
+ when: item.item.flag
|
|
|
+ tags: TC_009
|
|
|
+
|
|
|
+ - name: Build a schedule for job template
|
|
|
+ awx.awx.tower_schedule:
|
|
|
+ name: "{{ item.name }}"
|
|
|
+ unified_job_template: "{{ item.template }}"
|
|
|
+ rrule: "{{ schedule_rule }}"
|
|
|
+ state: present
|
|
|
+ tower_config_file: "{{ tower_config_file_path }}"
|
|
|
+ register: schedule
|
|
|
+ loop: "{{ scheduled_templates }}"
|
|
|
+ failed_when: false
|
|
|
+ run_once: true
|
|
|
+ tags: TC_009
|
|
|
+
|
|
|
+ - name: Validate schedule status
|
|
|
+ assert:
|
|
|
+ that:
|
|
|
+ - schedule.changed == false
|
|
|
+ fail_msg: "{{ schedule_fail_msg }}"
|
|
|
+ success_msg: "{{ schedule_success_msg }}"
|
|
|
+ failed_when: false
|
|
|
+ tags: TC_009
|
|
|
+
|
|
|
+
|
|
|
+# Test case to verify updation of new node in omnia inventory
|
|
|
+- name: OMNIA_1.1_AWX_TC_010
|
|
|
+ hosts: localhost
|
|
|
+ connection: local
|
|
|
+
|
|
|
+ vars_files:
|
|
|
+ - test_vars/test_inventory_vars.yml
|
|
|
+ - ../input_params/base_vars.yml
|
|
|
+ tasks:
|
|
|
+
|
|
|
+ - name: Execute get pods command
|
|
|
+ command: "kubectl get pods -n {{ awx_namespace }}"
|
|
|
+ changed_when: true
|
|
|
+ register: k8s_pods
|
|
|
+ run_once: true
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_010
|
|
|
+
|
|
|
+ - name: Get awx pod
|
|
|
+ set_fact:
|
|
|
+ awx_pods: "{{ item | regex_search(awx_pod_regex) | trim }}"
|
|
|
+ with_items:
|
|
|
+ - "{{ k8s_pods.stdout_lines }}"
|
|
|
+ run_once: true
|
|
|
+ when: item | regex_search(awx_pod_item_regex)
|
|
|
+ failed_when: false
|
|
|
+ tags: TC_010
|
|
|
+
|
|
|
+ - name: Get AWX admin password
|
|
|
+ shell: "kubectl get secret awx-admin-password -n {{ awx_namespace }} -o jsonpath='{.data.password}' | base64 --decode"
|
|
|
+ register: awx_admin_password
|
|
|
+ changed_when: false
|
|
|
+ ignore_errors: true
|
|
|
+ tags: TC_010
|
|
|
+
|
|
|
+ - name: Execute awx get inventory hosts command
|
|
|
+ command: "awx --conf.host {{ awx_host }} --conf.username admin --conf.password {{ awx_admin_password.stdout }} --conf.insecure hosts list --inventory {{ node_inventory_name }} -f human --filter 'name'"
|
|
|
+ changed_when: true
|
|
|
+ register: node_hosts
|
|
|
+ run_once: true
|
|
|
+ failed_when: false
|
|
|
+ tags: TC_010
|
|
|
+
|
|
|
+ - name: Get node_inventory hosts
|
|
|
+ command: ping -c1 {{ item }}
|
|
|
+ delegate_to: localhost
|
|
|
+ register: ping_result
|
|
|
+ ignore_errors: yes
|
|
|
+ changed_when: false
|
|
|
+ with_items:
|
|
|
+ - "{{ node_hosts.stdout_lines[2:] }}"
|
|
|
+ when: node_hosts.stdout_lines | length > 2
|
|
|
+ tags: TC_010
|
|
|
+
|
|
|
+ - name: Verify updation of new node
|
|
|
+ assert:
|
|
|
+ that:
|
|
|
+ - "'100% packet loss' not in item.stdout"
|
|
|
+ fail_msg: "{{ node_fail_msg }}"
|
|
|
+ success_msg: "{{ node_success_msg }}"
|
|
|
+ with_items:
|
|
|
+ - "{{ ping_result.results }}"
|
|
|
+ when: node_hosts.stdout_lines | length > 2
|
|
|
+ failed_when: false
|
|
|
+ tags: TC_010
|
|
|
+
|
|
|
+ - name: Empty node hosts
|
|
|
+ debug:
|
|
|
+ msg: "{{ empty_host_err }}"
|
|
|
+ when: node_hosts.stdout_lines | length < 3
|
|
|
+ tags: TC_010
|
|
|
+
|
|
|
+# Test case to verify AWX configuration is done properly with all items in place
|
|
|
+- name: OMNIA_1.1_AWX_TC_011
|
|
|
+ hosts: localhost
|
|
|
+ connection: local
|
|
|
+ vars_files:
|
|
|
+ - test_vars/test_inventory_vars.yml
|
|
|
+ - ../roles/webui_awx/vars/main.yml
|
|
|
+
|
|
|
+ tasks:
|
|
|
+
|
|
|
+ - name: Get awx-service Cluster-IP
|
|
|
+ command: "kubectl get svc awx-service -n {{ awx_namespace }} -o jsonpath='{.spec.clusterIP}'"
|
|
|
+ register: awx_cluster_ip
|
|
|
+ changed_when: false
|
|
|
+ ignore_errors: true
|
|
|
+ run_once: true
|
|
|
+ tags: TC_011
|
|
|
+
|
|
|
+ - name: Get AWX admin password
|
|
|
+ shell: "kubectl get secret awx-admin-password -n {{ awx_namespace }} -o jsonpath='{.data.password}' | base64 --decode"
|
|
|
+ register: awx_admin_password
|
|
|
+ changed_when: false
|
|
|
+ ignore_errors: true
|
|
|
+ run_once: true
|
|
|
+ tags: TC_011
|
|
|
+
|
|
|
+ - name: Set IP and password
|
|
|
+ set_fact:
|
|
|
+ awx_ip: 'http://{{ awx_cluster_ip.stdout }}'
|
|
|
+ admin_password: "{{ awx_admin_password.stdout }}"
|
|
|
+ run_once: true
|
|
|
+ tags: TC_011
|
|
|
+
|
|
|
+ - name: Get organization details
|
|
|
+ awx.awx.tower_organization:
|
|
|
+ name: "{{ organization_name }}"
|
|
|
+ description: "{{ org_description }}"
|
|
|
+ state: present
|
|
|
+ register: organization
|
|
|
+ ignore_errors: true
|
|
|
+ run_once: true
|
|
|
+ tags: TC_011
|
|
|
+
|
|
|
+ - name: Validate an organization
|
|
|
+ assert:
|
|
|
+ that:
|
|
|
+ - organization.changed == false
|
|
|
+ fail_msg: "{{ organization_fail_msg }}"
|
|
|
+ success_msg: "{{ organization_success_msg }}"
|
|
|
+ failed_when: false
|
|
|
+ tags: TC_011
|
|
|
+
|
|
|
+ - name: Get tower inventory details
|
|
|
+ awx.awx.tower_inventory:
|
|
|
+ name: "{{ item.name }}"
|
|
|
+ description: "{{ item.description }}"
|
|
|
+ organization: "{{ organization_name }}"
|
|
|
+ state: present
|
|
|
+ loop: "{{ inventory_names }}"
|
|
|
+ register: inventory
|
|
|
+ when: item.flag
|
|
|
+ ignore_errors: true
|
|
|
+ run_once: true
|
|
|
+ tags: TC_011
|
|
|
+
|
|
|
+ - name: Validate inventory status
|
|
|
+ assert:
|
|
|
+ that:
|
|
|
+ - item.changed == false
|
|
|
+ fail_msg: "{{ inventory_fail_msg }}"
|
|
|
+ success_msg: "{{ inventory_success_msg }}"
|
|
|
+ with_items:
|
|
|
+ - "{{ inventory.results }}"
|
|
|
+ failed_when: false
|
|
|
+ tags: TC_011
|
|
|
+
|
|
|
+ - name: Get job template details
|
|
|
+ awx.awx.tower_job_template:
|
|
|
+ name: "{{ item.name }}"
|
|
|
+ job_type: "run"
|
|
|
+ organization: "{{ organization_name }}"
|
|
|
+ inventory: "{{ item.inventory }}"
|
|
|
+ project: "{{ project_name }}"
|
|
|
+ playbook: "{{ item.playbook }}"
|
|
|
+ credentials:
|
|
|
+ - "{{ item.credential }}"
|
|
|
+ state: present
|
|
|
+ loop: "{{ job_template_details }}"
|
|
|
+ register: job_template
|
|
|
+ when: item.flag
|
|
|
+ ignore_errors: true
|
|
|
+ run_once: true
|
|
|
+ tags: TC_011
|
|
|
+
|
|
|
+ - name: Validate job template
|
|
|
+ assert:
|
|
|
+ that:
|
|
|
+ - item.changed == false
|
|
|
+ fail_msg: "{{ item.item.name }} {{ job_template_fail_msg }}"
|
|
|
+ success_msg: "{{ item.item.name }} {{ job_template_success_msg }}"
|
|
|
+ with_items:
|
|
|
+ - "{{ job_template.results }}"
|
|
|
+ failed_when: false
|
|
|
+ when: item.item.flag
|
|
|
+ tags: TC_011
|
|
|
+
|
|
|
+ - name: Get project details
|
|
|
+ awx.awx.tower_project:
|
|
|
+ name: "{{ project_name }}"
|
|
|
+ description: "{{ project_description }}"
|
|
|
+ organization: "{{ organization_name }}"
|
|
|
+ state: present
|
|
|
+ register: project
|
|
|
+ ignore_errors: true
|
|
|
+ run_once: true
|
|
|
+ tags: TC_011
|
|
|
+
|
|
|
+ - name: Verify project
|
|
|
+ assert:
|
|
|
+ that:
|
|
|
+ - project.changed == false
|
|
|
+ fail_msg: "{{ project_fail_msg }}"
|
|
|
+ success_msg: "{{ project_success_msg }}"
|
|
|
+ failed_when: false
|
|
|
+ tags: TC_011
|
|
|
+
|
|
|
+ - name: Build a schedule for job template
|
|
|
+ awx.awx.tower_schedule:
|
|
|
+ name: "{{ item.name }}"
|
|
|
+ unified_job_template: "{{ item.template }}"
|
|
|
+ rrule: "{{ schedule_rule }}"
|
|
|
+ state: present
|
|
|
+ register: schedule
|
|
|
+ loop: "{{ scheduled_templates }}"
|
|
|
+ failed_when: false
|
|
|
+ run_once: true
|
|
|
+ tags: TC_011
|
|
|
+
|
|
|
+ - name: Validate schedule status
|
|
|
+ assert:
|
|
|
+ that:
|
|
|
+ - schedule.changed == false
|
|
|
+ fail_msg: "{{ schedule_fail_msg }}"
|
|
|
+ success_msg: "{{ schedule_success_msg }}"
|
|
|
+ failed_when: false
|
|
|
+ tags: TC_011
|