ansible/test/integration/targets/rds_instance/tasks/test_states.yml
Sloane Hertel 113336d6f1 rds_instance module and tests (#43789)
* Add functions to retrieve the allowed and required parameters for boto3 client methods

* Add custom waiter for stopping an RDS DB instance

* Add rds_instance module

* Add rds_instance integration tests

* address requested changes from ryansb

* address requested changes from willthames

* address requested changes from dmsimard

* Fix final snapshots

Fix idempotence with already-deleting DB instances

Remove unused import from module_utils/aws/core.py

Consolidate function to get all boto3 client method parameters and the subset of required parameters

* Add some additional rds_instance integration tests

* Add some common functions to module_utils/aws/rds

* Move common code out of rds_instance

* Remove hardcoded engine choices and require the minimum boto3

* Document wait behavior

* Provide a list of valid engines in the error message if it is invalid

Add supported methods to whitelist

Remove AWSRetry around waiter

Wait for a less crazy amount of time

Remove unused variables

* Add a test for an invalid engine option

* pep8

* Missed adding a method to the whitelist

* Use retries

* Fix some little things

* Fix more things

* Improve error message

* Support creating cross-region read replicas

* Remove unused imports

* Add retry when getting RDS instance

* Soft-check required options so module fails properly when options are missing

* Fix mariadb parameter version

* Fix cross-region read_replica creation and tests

* fix modify tests

* Fix a modification test

* Fix typo

* Remove test for option_group_name that exists for this account but may not for others and added as a TODO to do properly
2018-08-31 12:17:02 +10:00

198 lines
4.8 KiB
YAML

---
- block:
- name: set up aws connection info
set_fact:
aws_connection_info: &aws_connection_info
aws_access_key: "{{ aws_access_key }}"
aws_secret_key: "{{ aws_secret_key }}"
security_token: "{{ security_token }}"
region: "{{ aws_region }}"
no_log: yes
- name: Ensure the resource doesn't exist
rds_instance:
id: "{{ instance_id }}"
state: absent
skip_final_snapshot: True
<<: *aws_connection_info
register: result
- assert:
that:
- not result.changed
ignore_errors: yes
- name: Check Mode - Create a mariadb instance
rds_instance:
id: "{{ instance_id }}"
state: present
engine: mariadb
username: "{{ username }}"
password: "{{ password }}"
db_instance_class: "{{ db_instance_class }}"
allocated_storage: "{{ allocated_storage }}"
<<: *aws_connection_info
register: result
check_mode: yes
- assert:
that:
- result.changed
- name: Create a mariadb instance
rds_instance:
id: "{{ instance_id }}"
state: present
engine: mariadb
username: "{{ username }}"
password: "{{ password }}"
db_instance_class: "{{ db_instance_class }}"
allocated_storage: "{{ allocated_storage }}"
<<: *aws_connection_info
register: result
- assert:
that:
- result.changed
- "result.db_instance_identifier == '{{ instance_id }}'"
- name: Idempotence
rds_instance:
id: '{{ instance_id }}'
state: present
engine: mariadb
username: "{{ username }}"
password: "{{ password }}"
db_instance_class: "{{ db_instance_class }}"
allocated_storage: "{{ allocated_storage }}"
<<: *aws_connection_info
register: result
- assert:
that:
- not result.changed
- result.db_instance_identifier
- name: Idempotence with minimal options
rds_instance:
id: '{{ instance_id }}'
state: present
<<: *aws_connection_info
register: result
- assert:
that:
- not result.changed
- result.db_instance_identifier
- name: Check Mode - stop the instance
rds_instance:
id: '{{ instance_id }}'
state: stopped
<<: *aws_connection_info
register: result
check_mode: yes
- assert:
that:
- result.changed
- name: Stop the instance
rds_instance:
id: '{{ instance_id }}'
state: stopped
<<: *aws_connection_info
register: result
- assert:
that:
- result.changed
- name: Check Mode - idempotence
rds_instance:
id: '{{ instance_id }}'
state: stopped
<<: *aws_connection_info
register: result
check_mode: yes
- assert:
that:
- not result.changed
- name: Idempotence
rds_instance:
id: '{{ instance_id }}'
state: stopped
<<: *aws_connection_info
register: result
- assert:
that:
- not result.changed
- name: Check mode - reboot a stopped instance
rds_instance:
id: '{{ instance_id }}'
state: rebooted
<<: *aws_connection_info
register: result
check_mode: yes
- assert:
that:
- result.changed
- name: Reboot a stopped instance
rds_instance:
id: '{{ instance_id }}'
state: rebooted
<<: *aws_connection_info
register: result
- assert:
that:
- result.changed
- name: Check Mode - start the instance
rds_instance:
id: '{{ instance_id }}'
state: started
<<: *aws_connection_info
register: result
check_mode: yes
- assert:
that:
- not result.changed
- name: Stop the instance
rds_instance:
id: '{{ instance_id }}'
state: stopped
<<: *aws_connection_info
- name: Start the instance
rds_instance:
id: '{{ instance_id }}'
state: started
<<: *aws_connection_info
register: result
- assert:
that:
- result.changed
always:
- name: Remove DB instance
rds_instance:
id: '{{ instance_id }}'
state: absent
skip_final_snapshot: True
<<: *aws_connection_info
register: result
- assert:
that:
- result.changed