2022-08-05 21:31:34 +02:00
|
|
|
---
|
2020-09-25 08:01:17 +02:00
|
|
|
####################################################################
|
|
|
|
# WARNING: These are designed specifically for Ansible tests #
|
|
|
|
# and should not be used as examples of how to write Ansible roles #
|
|
|
|
####################################################################
|
|
|
|
|
2020-03-09 10:11:07 +01:00
|
|
|
# test code for the one_host module
|
2022-08-05 21:31:34 +02:00
|
|
|
# Copyright (c) Ansible Project
|
|
|
|
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
2020-03-09 10:11:07 +01:00
|
|
|
|
2023-10-29 20:26:39 +01:00
|
|
|
# ENVIRONMENT PREPARACTION
|
2020-03-09 10:11:07 +01:00
|
|
|
|
|
|
|
- set_fact: test_number= 0
|
|
|
|
|
|
|
|
- name: "test_{{test_number}}: copy fixtures to test host"
|
|
|
|
copy:
|
|
|
|
src: testhost/tmp/opennebula-fixtures.json.gz
|
|
|
|
dest: /tmp
|
|
|
|
when:
|
|
|
|
- opennebula_test_fixture
|
|
|
|
- opennebula_test_fixture_replay
|
|
|
|
|
|
|
|
|
|
|
|
# SETUP INITIAL TESTING CONDITION
|
|
|
|
|
|
|
|
- set_fact: test_number={{ test_number | int + 1 }}
|
|
|
|
|
|
|
|
- name: "test_{{test_number}}: ensure the tests hosts are absent"
|
|
|
|
one_host:
|
|
|
|
name: "{{ item }}"
|
|
|
|
state: absent
|
|
|
|
api_endpoint: "{{ opennebula_url }}"
|
|
|
|
api_username: "{{ opennebula_username }}"
|
|
|
|
api_token: "{{ opennebula_password }}"
|
|
|
|
validate_certs: false
|
|
|
|
environment:
|
|
|
|
PYONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
|
|
|
|
PYONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
|
|
|
|
PYONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
|
|
|
|
PYONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{ item }}"
|
|
|
|
with_items: "{{opennebula_test.hosts}}"
|
|
|
|
register: result
|
|
|
|
|
|
|
|
# NOT EXISTING HOSTS
|
|
|
|
|
|
|
|
- set_fact: test_number={{ test_number | int + 1 }}
|
|
|
|
|
|
|
|
- name: "test_{{test_number}}: attempt to enable a host that does not exists"
|
|
|
|
one_host:
|
|
|
|
name: badhost
|
|
|
|
state: "{{item}}"
|
|
|
|
api_url: "{{ opennebula_url }}"
|
|
|
|
api_username: "{{ opennebula_username }}"
|
|
|
|
api_password: "{{ opennebula_password }}"
|
|
|
|
validate_certs: false
|
|
|
|
environment:
|
|
|
|
PYONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
|
|
|
|
PYONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
|
|
|
|
PYONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
|
|
|
|
PYONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{item}}"
|
|
|
|
ignore_errors: true
|
|
|
|
register: result
|
|
|
|
with_items:
|
|
|
|
- enabled
|
|
|
|
- disabled
|
|
|
|
- offline
|
|
|
|
|
|
|
|
- name: "assert test_{{test_number}} failed"
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- result is failed
|
|
|
|
- result.results[0].msg == 'invalid host state ERROR'
|
|
|
|
|
|
|
|
# ---
|
|
|
|
|
|
|
|
- set_fact: test_number={{ test_number | int + 1 }}
|
|
|
|
|
|
|
|
- name: "test_{{test_number}}: delete an unexisting host"
|
|
|
|
one_host:
|
|
|
|
name: badhost
|
|
|
|
state: absent
|
|
|
|
validate_certs: false
|
|
|
|
environment:
|
|
|
|
ONE_URL: "{{ opennebula_url }}"
|
|
|
|
ONE_USERNAME: "{{ opennebula_username }}"
|
|
|
|
ONE_PASSWORD: "{{ opennebula_password }}"
|
|
|
|
PYONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
|
|
|
|
PYONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
|
|
|
|
PYONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
|
|
|
|
PYONE_TEST_FIXTURE_UNIT: "test_{{test_number}}"
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- name: "assert test_{{test_number}} worked"
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- result.changed
|
|
|
|
|
|
|
|
# HOST ENABLEMENT
|
|
|
|
|
|
|
|
- set_fact: test_number={{ test_number | int + 1 }}
|
|
|
|
|
|
|
|
|
|
|
|
- name: "test_{{test_number}}: enable the test hosts"
|
|
|
|
one_host:
|
|
|
|
name: "{{ item }}"
|
|
|
|
state: enabled
|
|
|
|
api_url: "{{ opennebula_url }}"
|
|
|
|
api_username: "{{ opennebula_username }}"
|
|
|
|
api_password: "{{ opennebula_password }}"
|
|
|
|
validate_certs: false
|
|
|
|
environment:
|
|
|
|
PYONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
|
|
|
|
PYONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
|
|
|
|
PYONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
|
|
|
|
PYONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{ item }}"
|
|
|
|
with_items: "{{opennebula_test.hosts}}"
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- name: "assert test_{{test_number}} worked"
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- result.changed
|
|
|
|
|
|
|
|
# TEMPLATE MANAGEMENT
|
|
|
|
|
|
|
|
- set_fact: test_number={{ test_number | int + 1 }}
|
|
|
|
|
|
|
|
- name: "test_{{test_number}}: setup template values on hosts"
|
|
|
|
one_host:
|
|
|
|
name: "{{ item }}"
|
|
|
|
state: enabled
|
|
|
|
api_url: "{{ opennebula_url }}"
|
|
|
|
api_username: "{{ opennebula_username }}"
|
|
|
|
api_password: "{{ opennebula_password }}"
|
|
|
|
validate_certs: false
|
|
|
|
template:
|
|
|
|
LABELS:
|
|
|
|
- test
|
|
|
|
- custom
|
|
|
|
TEST_VALUE: 2
|
|
|
|
environment:
|
|
|
|
PYONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
|
|
|
|
PYONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
|
|
|
|
PYONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
|
|
|
|
PYONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{ item }}"
|
|
|
|
with_items: "{{opennebula_test.hosts}}"
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- name: "assert test_{{test_number}} worked"
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- result.changed
|
|
|
|
|
|
|
|
# ---
|
|
|
|
|
|
|
|
- set_fact: test_number={{ test_number | int + 1 }}
|
|
|
|
|
|
|
|
- name: "test_{{test_number}}: setup equivalent template values on hosts"
|
|
|
|
one_host:
|
|
|
|
name: "{{ item }}"
|
|
|
|
state: enabled
|
|
|
|
api_url: "{{ opennebula_url }}"
|
|
|
|
api_username: "{{ opennebula_username }}"
|
|
|
|
api_password: "{{ opennebula_password }}"
|
|
|
|
validate_certs: false
|
|
|
|
labels:
|
|
|
|
- test
|
|
|
|
- custom
|
|
|
|
attributes:
|
|
|
|
TEST_VALUE: "2"
|
|
|
|
environment:
|
|
|
|
PYONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
|
|
|
|
PYONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
|
|
|
|
PYONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
|
|
|
|
PYONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{ item }}"
|
|
|
|
with_items: "{{opennebula_test.hosts}}"
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- name: "assert test_{{test_number}} worked"
|
|
|
|
assert:
|
|
|
|
that:
|
2021-05-22 13:51:36 +02:00
|
|
|
- result is not changed
|
2020-03-09 10:11:07 +01:00
|
|
|
|
|
|
|
# HOST DISABLEMENT
|
|
|
|
|
|
|
|
- set_fact: test_number={{ test_number | int + 1 }}
|
|
|
|
|
|
|
|
- name: "test_{{test_number}}: disable the test hosts"
|
|
|
|
one_host:
|
|
|
|
name: "{{ item }}"
|
|
|
|
state: disabled
|
|
|
|
api_url: "{{ opennebula_url }}"
|
|
|
|
api_username: "{{ opennebula_username }}"
|
|
|
|
api_password: "{{ opennebula_password }}"
|
|
|
|
validate_certs: false
|
|
|
|
environment:
|
|
|
|
PYONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
|
|
|
|
PYONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
|
|
|
|
PYONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
|
|
|
|
PYONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{ item }}"
|
|
|
|
with_items: "{{opennebula_test.hosts}}"
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- name: "assert test_{{test_number}} worked"
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- result.changed
|
|
|
|
|
|
|
|
# HOST OFFLINE
|
|
|
|
|
|
|
|
- set_fact: test_number={{ test_number | int + 1 }}
|
|
|
|
|
|
|
|
- name: "test_{{test_number}}: offline the test hosts"
|
|
|
|
one_host:
|
|
|
|
name: "{{ item }}"
|
|
|
|
state: offline
|
|
|
|
api_url: "{{ opennebula_url }}"
|
|
|
|
api_username: "{{ opennebula_username }}"
|
|
|
|
api_password: "{{ opennebula_password }}"
|
|
|
|
validate_certs: false
|
|
|
|
environment:
|
|
|
|
PYONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
|
|
|
|
PYONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
|
|
|
|
PYONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
|
|
|
|
PYONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{ item }}"
|
|
|
|
with_items: "{{opennebula_test.hosts}}"
|
|
|
|
register: result
|
|
|
|
|
|
|
|
- name: "assert test_{{test_number}} worked"
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- result.changed
|
|
|
|
|
|
|
|
# TEARDOWN
|
|
|
|
|
|
|
|
- name: fetch fixtures
|
|
|
|
fetch:
|
|
|
|
src: /tmp/opennebula-fixtures.json.gz
|
|
|
|
dest: targets/one_host/files
|
|
|
|
when:
|
|
|
|
- opennebula_test_fixture
|
|
|
|
- not opennebula_test_fixture_replay
|