summaryrefslogtreecommitdiff
path: root/test/integration/targets/rds_instance/tasks/test_tags.yml
blob: 87500dc3ef2fd41e1ed9e626ae684ff342c3423c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
---
  - 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 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 }}"
          tags:
            Name: "{{ instance_id }}"
            Created_by: Ansible rds_instance tests
          <<: *aws_connection_info
        register: result

      - assert:
          that:
            - result.changed
            - "result.db_instance_identifier == '{{ instance_id }}'"
            - "result.tags | length == 2"
            - "result.tags.Name == '{{ instance_id }}'"
            - "result.tags.Created_by == 'Ansible rds_instance tests'"

      - name: Test idempotence omitting tags
        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.tags | length == 2"

      - name: Test tags are not purged if purge_tags is False
        rds_instance:
          id: "{{ instance_id }}"
          state: present
          engine: mariadb
          username: "{{ username }}"
          password: "{{ password }}"
          db_instance_class: "{{ db_instance_class }}"
          allocated_storage: "{{ allocated_storage }}"
          tags: {}
          purge_tags: False
          <<: *aws_connection_info
        register: result

      - assert:
          that:
            - not result.changed
            - "result.tags | length == 2"

      - name: Add a tag and remove a tag
        rds_instance:
          id: "{{ instance_id }}"
          state: present
          tags:
            Name: "{{ instance_id }}-new"
            Created_by: Ansible rds_instance tests
          purge_tags: True
          <<: *aws_connection_info
        register: result

      - assert:
          that:
            - result.changed
            - "result.tags | length == 2"
            - "result.tags.Name == '{{ instance_id }}-new'"

      - name: Remove all tags
        rds_instance:
          id: "{{ instance_id }}"
          state: present
          engine: mariadb
          username: "{{ username }}"
          password: "{{ password }}"
          db_instance_class: "{{ db_instance_class }}"
          allocated_storage: "{{ allocated_storage }}"
          tags: {}
          <<: *aws_connection_info
        register: result

      - assert:
          that:
            - result.changed
            - not result.tags

    always:

      - 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:
            - result.changed