1--- 2- name: 'Run tagging tests' 3 block: 4 5 # ============================================================ 6 - name: 'Create simple s3_bucket for testing tagging' 7 s3_bucket: 8 name: '{{ bucket_name }}' 9 state: present 10 register: output 11 12 - assert: 13 that: 14 - output.changed 15 - output.name == '{{ bucket_name }}' 16 17 # ============================================================ 18 19 - name: 'Add tags to s3 bucket' 20 s3_bucket: 21 name: '{{ bucket_name }}' 22 state: present 23 tags: 24 example: tag1 25 another: tag2 26 register: output 27 28 - assert: 29 that: 30 - output.changed 31 - output.name == '{{ bucket_name }}' 32 - output.tags.example == 'tag1' 33 - output.tags.another == 'tag2' 34 35 - name: 'Re-Add tags to s3 bucket' 36 s3_bucket: 37 name: '{{ bucket_name }}' 38 state: present 39 tags: 40 example: tag1 41 another: tag2 42 register: output 43 44 - assert: 45 that: 46 - output is not changed 47 - output.name == '{{ bucket_name }}' 48 - output.tags.example == 'tag1' 49 - output.tags.another == 'tag2' 50 51 # ============================================================ 52 53 - name: Remove a tag from an s3_bucket 54 s3_bucket: 55 name: '{{ bucket_name }}' 56 state: present 57 tags: 58 example: tag1 59 register: output 60 61 - assert: 62 that: 63 - output.changed 64 - output.name == '{{ bucket_name }}' 65 - output.tags.example == 'tag1' 66 - "'another' not in output.tags" 67 68 - name: Re-remove the tag from an s3_bucket 69 s3_bucket: 70 name: '{{ bucket_name }}' 71 state: present 72 tags: 73 example: tag1 74 register: output 75 76 - assert: 77 that: 78 - output is not changed 79 - output.name == '{{ bucket_name }}' 80 - output.tags.example == 'tag1' 81 - "'another' not in output.tags" 82 83 ## ============================================================ 84 85 #- name: 'Pause to help with s3 bucket eventual consistency' 86 # wait_for: 87 # timeout: 10 88 # delegate_to: localhost 89 90 ## ============================================================ 91 92 - name: 'Add a tag for s3_bucket with purge_tags False' 93 s3_bucket: 94 name: '{{ bucket_name }}' 95 state: present 96 purge_tags: no 97 tags: 98 anewtag: here 99 register: output 100 101 - assert: 102 that: 103 - output.changed 104 - output.name == '{{ bucket_name }}' 105 - output.tags.example == 'tag1' 106 - output.tags.anewtag == 'here' 107 108 - name: 'Re-add a tag for s3_bucket with purge_tags False' 109 s3_bucket: 110 name: '{{ bucket_name }}' 111 state: present 112 purge_tags: no 113 tags: 114 anewtag: here 115 register: output 116 117 - assert: 118 that: 119 - output is not changed 120 - output.name == '{{ bucket_name }}' 121 - output.tags.example == 'tag1' 122 - output.tags.anewtag == 'here' 123 124 ## ============================================================ 125 126 #- name: 'Pause to help with s3 bucket eventual consistency' 127 # wait_for: 128 # timeout: 10 129 # delegate_to: localhost 130 131 ## ============================================================ 132 133 - name: Update a tag for s3_bucket with purge_tags False 134 s3_bucket: 135 name: '{{ bucket_name }}' 136 state: present 137 purge_tags: no 138 tags: 139 anewtag: next 140 register: output 141 142 - assert: 143 that: 144 - output.changed 145 - output.name == '{{ bucket_name }}' 146 - output.tags.example == 'tag1' 147 - output.tags.anewtag == 'next' 148 149 - name: Re-update a tag for s3_bucket with purge_tags False 150 s3_bucket: 151 name: '{{ bucket_name }}' 152 state: present 153 purge_tags: no 154 tags: 155 anewtag: next 156 register: output 157 158 - assert: 159 that: 160 - output is not changed 161 - output.name == '{{ bucket_name }}' 162 - output.tags.example == 'tag1' 163 - output.tags.anewtag == 'next' 164 165 ## ============================================================ 166 167 #- name: 'Pause to help with s3 bucket eventual consistency' 168 # wait_for: 169 # timeout: 10 170 # delegate_to: localhost 171 172 ## ============================================================ 173 174 - name: Pass empty tags dict for s3_bucket with purge_tags False 175 s3_bucket: 176 name: '{{ bucket_name }}' 177 state: present 178 purge_tags: no 179 tags: {} 180 register: output 181 182 - assert: 183 that: 184 - output is not changed 185 - output.name == '{{ bucket_name }}' 186 - output.tags.example == 'tag1' 187 - output.tags.anewtag == 'next' 188 189 ## ============================================================ 190 191 #- name: 'Pause to help with s3 bucket eventual consistency' 192 # wait_for: 193 # timeout: 10 194 # delegate_to: localhost 195 196 ## ============================================================ 197 198 - name: Do not specify any tag to ensure previous tags are not removed 199 s3_bucket: 200 name: '{{ bucket_name }}' 201 state: present 202 register: output 203 204 - assert: 205 that: 206 - not output.changed 207 - output.name == '{{ bucket_name }}' 208 - output.tags.example == 'tag1' 209 210 # ============================================================ 211 212 - name: Remove all tags 213 s3_bucket: 214 name: '{{ bucket_name }}' 215 state: present 216 tags: {} 217 register: output 218 219 - assert: 220 that: 221 - output.changed 222 - output.name == '{{ bucket_name }}' 223 - output.tags == {} 224 225 - name: Re-remove all tags 226 s3_bucket: 227 name: '{{ bucket_name }}' 228 state: present 229 tags: {} 230 register: output 231 232 - assert: 233 that: 234 - output is not changed 235 - output.name == '{{ bucket_name }}' 236 - output.tags == {} 237 238 # ============================================================ 239 240 - name: Delete bucket 241 s3_bucket: 242 name: '{{ bucket_name }}' 243 state: absent 244 register: output 245 246 - assert: 247 that: 248 - output.changed 249 250 # ============================================================ 251 always: 252 - name: Ensure all buckets are deleted 253 s3_bucket: 254 name: '{{ bucket_name }}' 255 state: absent 256 ignore_errors: yes 257