summaryrefslogtreecommitdiff
path: root/test/integration/targets/ec2_tag/tasks/main.yml
blob: 7e8cd8d128b58518663ff59b45d41e4aa56f0070 (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
132
133
134
135
136
137
138
139
140
141
142
143
144
---
# tasks file for test_ec2_tag
- name: Set up AWS connection info
  module_defaults:
    group/aws:
      aws_access_key: "{{ aws_access_key }}"
      aws_secret_key: "{{ aws_secret_key }}"
      security_token: "{{ security_token | default(omit) }}"
      region: "{{ aws_region }}"
  block:
    - name: Create an EC2 volume so we have something to tag
      ec2_vol:
        name: "{{ resource_prefix }} ec2_tag volume"
        volume_size: 1
        state: present
        zone: "{{ aws_region }}a"
      register: volume

    - name: List the tags on the volume (ec2_tag)
      ec2_tag:
        resource: "{{ volume.volume_id }}"
        state: list
      register: result
    - name: List the tags on the volume (ec2_tag_info)
      ec2_tag_info:
        resource: "{{ volume.volume_id }}"
      register: result_info

    - assert:
        that:
          - result.tags | length == 1
          - result.tags.Name == '{{ resource_prefix }} ec2_tag volume'
          - result_info.tags | length == 1
          - result_info.tags.Name == '{{ resource_prefix }} ec2_tag volume'

    - name: Set some new tags on the volume
      ec2_tag:
        resource: "{{ volume.volume_id }}"
        state: present
        tags:
          foo: foo
          bar: baz
          baz: also baz
      register: result
    - name: List the new tags on the volume
      ec2_tag_info:
        resource: "{{ volume.volume_id }}"
      register: result_info

    - assert:
        that:
          - result is changed
          - result.tags | length == 4
          - result.added_tags | length == 3
          - result.tags.Name == '{{ resource_prefix }} ec2_tag volume'
          - result.tags.foo == 'foo'
          - result.tags.bar == 'baz'
          - result.tags.baz == 'also baz'
          - result_info.tags | length == 4
          - result_info.tags.Name == '{{ resource_prefix }} ec2_tag volume'
          - result_info.tags.foo == 'foo'
          - result_info.tags.bar == 'baz'
          - result_info.tags.baz == 'also baz'

    - name: Remove a tag by name
      ec2_tag:
        resource: "{{ volume.volume_id }}"
        state: absent
        tags:
          baz:
      register: result

    - assert:
        that:
          - result is changed
          - result.removed_tags | length == 1
          - "'baz' in result.removed_tags"

    - name: Don't remove a tag
      ec2_tag:
        resource: "{{ volume.volume_id }}"
        state: absent
        tags:
          foo: baz
      register: result

    - assert:
        that:
          - result is not changed

    - name: Remove a tag
      ec2_tag:
        resource: "{{ volume.volume_id }}"
        state: absent
        tags:
          foo: foo
      register: result

    - assert:
        that:
          - result is changed
          - result.tags | length == 2
          - "'added_tags' not in result"
          - result.removed_tags | length == 1
          - result.tags.Name == '{{ resource_prefix }} ec2_tag volume'
          - result.tags.bar == 'baz'

    - name: Set an exclusive tag
      ec2_tag:
        resource: "{{ volume.volume_id }}"
        purge_tags: true
        tags:
          baz: quux
      register: result

    - assert:
        that:
          - result is changed
          - result.tags | length == 1
          - result.added_tags | length == 1
          - result.removed_tags | length == 2
          - result.tags.baz == 'quux'

    - name: Remove all tags
      ec2_tag:
        resource: "{{ volume.volume_id }}"
        purge_tags: true
        tags: {}
      register: result

    - assert:
        that:
          - result is changed
          - result.tags | length == 0

  always:
    - name: Remove the volume
      ec2_vol:
        id: "{{ volume.volume_id }}"
        state: absent
      register: result
      until: result is not failed
      ignore_errors: yes
      retries: 10