Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rds: add point-in-time instance restore test #59411

Merged
merged 1 commit into from
Jul 25, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions hacking/aws_config/testing_policies/database-policy.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
"rds:PromoteReadReplica",
"rds:RebootDBInstance",
"rds:RemoveTagsFromResource",
"rds:RestoreDBInstanceToPointInTime",
"rds:StartDBInstance",
"rds:StopDBInstance"
],
Expand Down
4 changes: 2 additions & 2 deletions test/integration/targets/rds_instance/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
tags: read_replica
- include: ./test_vpc_security_groups.yml
tags: vpc_security_groups

#- include: ./test_restore_instance.yml # TODO: point-in-time, snapshot, s3
- include: ./test_restore_instance.yml # TODO: snapshot, s3
tags: restore
# TODO: uncomment after adding rds_cluster module
#- include: ./test_aurora.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
rds_instance:
id: "{{ instance_id }}-replica"
state: present
source_db_instance_identifier: "{{ source_db.db_instance_arn }}"
source_db_instance_identifier: "{{ instance_id }}"
engine: mysql
username: "{{ username }}"
password: "{{ password }}"
Expand All @@ -66,7 +66,7 @@
rds_instance:
id: "{{ instance_id }}-replica"
state: present
source_db_instance_identifier: "{{ source_db.db_instance_arn }}"
source_db_instance_identifier: "{{ instance_id }}"
engine: mysql
username: "{{ username }}"
password: "{{ password }}"
Expand All @@ -85,7 +85,7 @@
id: "{{ instance_id }}-replica"
state: present
read_replica: True
source_db_instance_identifier: "{{ source_db.db_instance_arn }}"
source_db_instance_identifier: "{{ instance_id }}"
engine: mysql
username: "{{ username }}"
password: "{{ password }}"
Expand Down Expand Up @@ -130,6 +130,7 @@
skip_final_snapshot: True
region: "{{ region_src }}"
<<: *aws_connection_info
ignore_errors: yes

- name: Remove the DB replica
rds_instance:
Expand All @@ -138,3 +139,4 @@
skip_final_snapshot: True
region: "{{ region_dest }}"
<<: *aws_connection_info
ignore_errors: yes
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
---
- 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: Create a source DB instance
rds_instance:
id: "{{ instance_id }}"
state: present
engine: mysql
backup_retention_period: 1
username: "{{ username }}"
password: "{{ password }}"
db_instance_class: "{{ db_instance_class }}"
allocated_storage: "{{ allocated_storage }}"
<<: *aws_connection_info
register: source_db

- assert:
that:
- source_db.changed
- "source_db.db_instance_identifier == '{{ instance_id }}'"

- name: Create a point in time DB instance
rds_instance:
id: "{{ instance_id }}-point-in-time"
state: present
source_db_instance_identifier: "{{ instance_id }}"
creation_source: instance
engine: mysql
username: "{{ username }}"
password: "{{ password }}"
db_instance_class: "{{ db_instance_class }}"
allocated_storage: "{{ allocated_storage }}"
use_latest_restorable_time: True
<<: *aws_connection_info
register: result

- name: Test idempotence with a point in time replica
rds_instance:
id: "{{ instance_id }}-point-in-time"
state: present
source_db_instance_identifier: "{{ instance_id }}"
creation_source: instance
engine: mysql
username: "{{ username }}"
password: "{{ password }}"
db_instance_class: "{{ db_instance_class }}"
allocated_storage: "{{ allocated_storage }}"
restore_time: "{{ result.latest_restorable_time }}"
<<: *aws_connection_info
register: result

- assert:
that:
- not result.changed

always:

- name: Remove the DB instance
rds_instance:
id: "{{ instance_id }}"
state: absent
skip_final_snapshot: True
<<: *aws_connection_info
ignore_errors: yes


- name: Remove the point in time restored DB
rds_instance:
id: "{{ instance_id }}-point-in-time"
state: absent
skip_final_snapshot: True
<<: *aws_connection_info
ignore_errors: yes