1---
2- name: setup instance to be absent
3  cs_instance:
4    name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
5    state: expunged
6  register: instance
7- name: verify instance to be absent
8  assert:
9    that:
10    - instance is successful
11
12- name: test create instance in check mode
13  cs_instance:
14    name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
15    template: "{{ test_cs_instance_template }}"
16    service_offering: "{{ test_cs_instance_offering_1 }}"
17    affinity_group: "{{ cs_resource_prefix }}-ag"
18    security_group: "{{ cs_resource_prefix }}-sg"
19    ssh_key: "{{ cs_resource_prefix }}-sshkey"
20    user_data: |
21        #cloud-config
22        package_upgrade: true
23        packages:
24          - tmux
25    tags: []
26  register: instance
27  check_mode: true
28- name: verify create instance in check mode
29  assert:
30    that:
31    - instance is successful
32    - instance is changed
33
34- name: test create instance
35  cs_instance:
36    name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
37    template: "{{ test_cs_instance_template }}"
38    service_offering: "{{ test_cs_instance_offering_1 }}"
39    affinity_group: "{{ cs_resource_prefix }}-ag"
40    security_group: "{{ cs_resource_prefix }}-sg"
41    ssh_key: "{{ cs_resource_prefix }}-sshkey"
42    user_data: |
43        #cloud-config
44        package_upgrade: true
45        packages:
46          - tmux
47    tags: []
48  register: instance
49- name: verify create instance
50  assert:
51    that:
52    - instance is successful
53    - instance is changed
54    - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
55    - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
56    - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
57    - instance.state == "Running"
58    - instance.ssh_key == "{{ cs_resource_prefix }}-sshkey"
59    - not instance.tags
60
61- name: test create instance idempotence
62  cs_instance:
63    name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
64    template: "{{ test_cs_instance_template }}"
65    service_offering: "{{ test_cs_instance_offering_1 }}"
66    affinity_group: "{{ cs_resource_prefix }}-ag"
67    security_group: "{{ cs_resource_prefix }}-sg"
68    ssh_key: "{{ cs_resource_prefix }}-sshkey"
69    user_data: |
70        #cloud-config
71        package_upgrade: true
72        packages:
73          - tmux
74    tags: []
75  register: instance
76- name: verify create instance idempotence
77  assert:
78    that:
79    - instance is successful
80    - instance is not changed
81    - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
82    - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
83    - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
84    - instance.state == "Running"
85    - instance.ssh_key == "{{ cs_resource_prefix }}-sshkey"
86    - not instance.tags
87
88- name: gather host infos of running instance
89  cs_instance_info:
90    name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
91
92- name: test running instance not updated in check mode
93  cs_instance:
94    name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
95    service_offering: "{{ test_cs_instance_offering_2 }}"
96  register: instance
97  check_mode: true
98- name: verify running instance not updated in check mode
99  assert:
100    that:
101    - instance is successful
102    - instance is not changed
103    - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
104    - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
105    - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
106    - instance.state == "Running"
107
108- name: test running instance not updated
109  cs_instance:
110    name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
111    service_offering: "{{ test_cs_instance_offering_2 }}"
112  register: instance
113- name: verify running instance not updated
114  assert:
115    that:
116    - instance is successful
117    - instance is not changed
118    - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
119    - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
120    - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
121    - instance.state == "Running"
122
123- name: test stopping instance in check mode
124  cs_instance:
125    name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
126    state: stopped
127  register: instance
128  check_mode: true
129- name: verify stopping instance in check mode
130  assert:
131    that:
132    - instance is successful
133    - instance is changed
134    - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
135    - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
136    - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
137    - instance.state == "Running"
138
139- name: test stopping instance
140  cs_instance:
141    name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
142    state: stopped
143  register: instance
144- name: verify stopping instance
145  assert:
146    that:
147    - instance is successful
148    - instance is changed
149    - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
150    - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
151    - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
152    - instance.state == "Stopped"
153
154- name: test stopping instance idempotence
155  cs_instance:
156    name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
157    state: stopped
158  register: instance
159- name: verify stopping instance idempotence
160  assert:
161    that:
162    - instance is successful
163    - instance is not changed
164    - instance.state == "Stopped"
165
166- name: test updating stopped instance in check mode
167  cs_instance:
168    name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
169    display_name: "{{ cs_resource_prefix }}-display-{{ instance_number }}"
170    service_offering: "{{ test_cs_instance_offering_2 }}"
171  register: instance
172  check_mode: true
173- name: verify updating stopped instance in check mode
174  assert:
175    that:
176    - instance is successful
177    - instance is changed
178    - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
179    - instance.display_name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
180    - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
181    - instance.state == "Stopped"
182
183- name: test updating stopped instance
184  cs_instance:
185    name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
186    display_name: "{{ cs_resource_prefix }}-display-{{ instance_number }}"
187    service_offering: "{{ test_cs_instance_offering_2 }}"
188  register: instance
189- name: verify updating stopped instance
190  assert:
191    that:
192    - instance is successful
193    - instance is changed
194    - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
195    - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
196    - instance.service_offering == "{{ test_cs_instance_offering_2 }}"
197    - instance.state == "Stopped"
198
199- name: test updating stopped instance idempotence
200  cs_instance:
201    name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
202    display_name: "{{ cs_resource_prefix }}-display-{{ instance_number }}"
203    service_offering: "{{ test_cs_instance_offering_2 }}"
204  register: instance
205- name: verify updating stopped instance idempotence
206  assert:
207    that:
208    - instance is successful
209    - instance is not changed
210    - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
211    - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
212    - instance.service_offering == "{{ test_cs_instance_offering_2 }}"
213    - instance.state == "Stopped"
214
215- name: test starting instance
216  cs_instance:
217    name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
218    state: started
219  register: instance
220- name: verify starting instance
221  assert:
222    that:
223    - instance is successful
224    - instance is changed
225    - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
226    - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
227    - instance.service_offering == "{{ test_cs_instance_offering_2 }}"
228    - instance.state == "Running"
229
230- name: test starting instance idempotence
231  cs_instance:
232    name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
233    state: started
234  register: instance
235- name: verify starting instance idempotence
236  assert:
237    that:
238    - instance is successful
239    - instance is not changed
240    - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
241    - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
242    - instance.service_offering == "{{ test_cs_instance_offering_2 }}"
243    - instance.state == "Running"
244
245- name: test force update running instance in check mode
246  cs_instance:
247    name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
248    service_offering: "{{ test_cs_instance_offering_1 }}"
249    force: true
250  register: instance
251  check_mode: true
252- name: verify force update running instance in check mode
253  assert:
254    that:
255    - instance is successful
256    - instance is changed
257    - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
258    - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
259    - instance.service_offering == "{{ test_cs_instance_offering_2 }}"
260    - instance.state == "Running"
261
262- name: test force update running instance
263  cs_instance:
264    name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
265    service_offering: "{{ test_cs_instance_offering_1 }}"
266    force: true
267  register: instance
268- name: verify force update running instance
269  assert:
270    that:
271    - instance is successful
272    - instance is changed
273    - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
274    - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
275    - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
276    - instance.state == "Running"
277
278- name: test force update running instance idempotence
279  cs_instance:
280    name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
281    service_offering: "{{ test_cs_instance_offering_1 }}"
282    force: true
283  register: instance
284- name: verify force update running instance idempotence
285  assert:
286    that:
287    - instance is successful
288    - instance is not changed
289    - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
290    - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
291    - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
292    - instance.state == "Running"
293
294- name: test restore instance in check mode
295  cs_instance:
296    name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
297    template: "{{ test_cs_instance_template }}"
298    state: restored
299  register: instance
300  check_mode: true
301- name: verify restore instance in check mode
302  assert:
303    that:
304    - instance is successful
305    - instance is changed
306    - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
307    - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
308    - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
309
310- name: test restore instance
311  cs_instance:
312    name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
313    template: "{{ test_cs_instance_template }}"
314    state: restored
315  register: instance
316- name: verify restore instance
317  assert:
318    that:
319    - instance is successful
320    - instance is changed
321    - instance.name == "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
322    - instance.display_name == "{{ cs_resource_prefix }}-display-{{ instance_number }}"
323    - instance.service_offering == "{{ test_cs_instance_offering_1 }}"
324