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