Skip to content

Commit ae8a023

Browse files
committed
add instance
1 parent 5f316bc commit ae8a023

File tree

14 files changed

+1767
-0
lines changed

14 files changed

+1767
-0
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
cloud/cs
2+
cs/group1
3+
cs/group3
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
instance_number: 1
3+
test_cs_instance_template: "{{ cs_common_template }}"
4+
test_cs_instance_offering_1: Small Instance
5+
test_cs_instance_offering_2: Medium Instance
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
---
2+
dependencies:
3+
- cs_common
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
---
2+
- name: test destroy instance in check mode
3+
ngine_io.cloudstack.instance:
4+
name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
5+
zone: "{{ cs_common_zone_basic }}"
6+
state: absent
7+
register: instance
8+
check_mode: true
9+
- name: verify destroy instance in check mode
10+
assert:
11+
that:
12+
- instance is changed
13+
- instance.state != "Destroyed"
14+
15+
- name: test destroy instance
16+
ngine_io.cloudstack.instance:
17+
name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
18+
zone: "{{ cs_common_zone_basic }}"
19+
state: absent
20+
register: instance
21+
- name: verify destroy instance
22+
assert:
23+
that:
24+
- instance is changed
25+
- instance.state == "Destroyed"
26+
27+
- name: test destroy instance idempotence
28+
ngine_io.cloudstack.instance:
29+
name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
30+
zone: "{{ cs_common_zone_basic }}"
31+
state: absent
32+
register: instance
33+
- name: verify destroy instance idempotence
34+
assert:
35+
that:
36+
- instance is not changed
37+
38+
- name: test recover to stopped state and update a deleted instance in check mode
39+
ngine_io.cloudstack.instance:
40+
name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
41+
zone: "{{ cs_common_zone_basic }}"
42+
service_offering: "{{ test_cs_instance_offering_1 }}"
43+
state: stopped
44+
register: instance
45+
check_mode: true
46+
- name: verify test recover to stopped state and update a deleted instance in check mode
47+
assert:
48+
that:
49+
- instance is changed
50+
51+
- name: test recover to stopped state and update a deleted instance
52+
ngine_io.cloudstack.instance:
53+
name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
54+
zone: "{{ cs_common_zone_basic }}"
55+
service_offering: "{{ test_cs_instance_offering_1 }}"
56+
state: stopped
57+
register: instance
58+
- name: verify test recover to stopped state and update a deleted instance
59+
assert:
60+
that:
61+
- instance is changed
62+
- instance.state == "Stopped"
63+
- instance.service_offering == test_cs_instance_offering_1
64+
65+
- name: test recover to stopped state and update a deleted instance idempotence
66+
ngine_io.cloudstack.instance:
67+
name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
68+
zone: "{{ cs_common_zone_basic }}"
69+
service_offering: "{{ test_cs_instance_offering_1 }}"
70+
state: stopped
71+
register: instance
72+
- name: verify test recover to stopped state and update a deleted instance idempotence
73+
assert:
74+
that:
75+
- instance is not changed
76+
- instance.state == "Stopped"
77+
- instance.service_offering == test_cs_instance_offering_1
78+
79+
- name: test expunge instance in check mode
80+
ngine_io.cloudstack.instance:
81+
name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
82+
zone: "{{ cs_common_zone_basic }}"
83+
state: expunged
84+
register: instance
85+
check_mode: true
86+
- name: verify test expunge instance in check mode
87+
assert:
88+
that:
89+
- instance is changed
90+
- instance.state == "Stopped"
91+
- instance.service_offering == test_cs_instance_offering_1
92+
93+
- name: test expunge instance
94+
ngine_io.cloudstack.instance:
95+
name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
96+
zone: "{{ cs_common_zone_basic }}"
97+
state: expunged
98+
register: instance
99+
- name: verify test expunge instance
100+
assert:
101+
that:
102+
- instance is changed
103+
- instance.state == "Stopped"
104+
- instance.service_offering == test_cs_instance_offering_1
105+
106+
- name: test expunge instance idempotence
107+
ngine_io.cloudstack.instance:
108+
name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
109+
zone: "{{ cs_common_zone_basic }}"
110+
state: expunged
111+
register: instance
112+
- name: verify test expunge instance idempotence
113+
assert:
114+
that:
115+
- instance is not changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
---
2+
- name: test destroy instance with display_name
3+
ngine_io.cloudstack.instance:
4+
display_name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
5+
zone: "{{ cs_common_zone_basic }}"
6+
state: absent
7+
register: instance
8+
- name: verify destroy instance with display_name
9+
assert:
10+
that:
11+
- instance is changed
12+
- instance.state == "Destroyed"
13+
14+
- name: test destroy instance with display_name idempotence
15+
ngine_io.cloudstack.instance:
16+
display_name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
17+
zone: "{{ cs_common_zone_basic }}"
18+
state: absent
19+
register: instance
20+
- name: verify destroy instance with display_name idempotence
21+
assert:
22+
that:
23+
- instance is not changed
24+
25+
- name: test recover to stopped state and update a deleted instance with display_name
26+
ngine_io.cloudstack.instance:
27+
display_name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
28+
zone: "{{ cs_common_zone_basic }}"
29+
service_offering: "{{ test_cs_instance_offering_1 }}"
30+
state: stopped
31+
register: instance
32+
- name: verify test recover to stopped state and update a deleted instance with display_name
33+
assert:
34+
that:
35+
- instance is changed
36+
- instance.state == "Stopped"
37+
- instance.service_offering == test_cs_instance_offering_1
38+
39+
# force expunge, only works with admin permissions
40+
- ngine_io.cloudstack.instance:
41+
display_name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
42+
zone: "{{ cs_common_zone_basic }}"
43+
state: expunged
44+
failed_when: false
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
- name: cleanup ssh key
3+
ngine_io.cloudstack.ssh_key:
4+
name: "{{ cs_resource_prefix }}-sshkey"
5+
state: absent
6+
register: sshkey
7+
- name: verify cleanup ssh key
8+
assert:
9+
that:
10+
- sshkey is successful
11+
12+
- name: cleanup affinity group
13+
ngine_io.cloudstack.affinity_group:
14+
name: "{{ cs_resource_prefix }}-ag"
15+
state: absent
16+
register: ag
17+
until: ag is successful
18+
retries: 20
19+
delay: 5
20+
- name: verify cleanup affinity group
21+
assert:
22+
that:
23+
- ag is successful
24+
25+
- name: cleanup security group ...take a while unless instance is expunged
26+
ngine_io.cloudstack.security_group:
27+
name: "{{ cs_resource_prefix }}-sg"
28+
state: absent
29+
register: sg
30+
until: sg is successful
31+
retries: 100
32+
delay: 10
33+
- name: verify cleanup security group
34+
assert:
35+
that:
36+
- sg is successful
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
---
2+
- name: setup ensure running instance to get host infos
3+
ngine_io.cloudstack.instance:
4+
name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
5+
zone: "{{ cs_common_zone_basic }}"
6+
template: "{{ test_cs_instance_template }}"
7+
service_offering: "{{ test_cs_instance_offering_1 }}"
8+
state: started
9+
register: running_instance
10+
11+
- name: setup ensure stopped instance
12+
ngine_io.cloudstack.instance:
13+
name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
14+
zone: "{{ cs_common_zone_basic }}"
15+
state: stopped
16+
17+
- name: setup zone facts
18+
ngine_io.cloudstack.zone_info:
19+
name: "{{ cs_common_zone_basic }}"
20+
register: zone_info
21+
22+
- name: setup find the host name
23+
shell: cs listHosts type=routing zoneid="{{ zone_info.zones[0].id }}"
24+
args:
25+
chdir: "{{ playbook_dir }}"
26+
register: host
27+
28+
- name: host convert from json
29+
set_fact:
30+
host_json: "{{ host.stdout | from_json }}"
31+
32+
- name: select a host on which the instance was not running on
33+
set_fact:
34+
host: "{{ host_json | json_query('host[?name!=`' + running_instance.host + '`] | [0]') }}"
35+
36+
- debug:
37+
msg: "from current host {{ running_instance.host }} to new host {{ host.name }}"
38+
39+
- name: test starting instance on new host in check mode
40+
ngine_io.cloudstack.instance:
41+
name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
42+
zone: "{{ cs_common_zone_basic }}"
43+
host: "{{ host.name }}"
44+
state: started
45+
register: instance
46+
check_mode: true
47+
- name: verify test starting instance on new host in check mode
48+
assert:
49+
that:
50+
- instance is changed
51+
- instance.name == cs_resource_prefix + "-vm-" + instance_number
52+
- instance.host is not defined
53+
- instance.state == "Stopped"
54+
55+
- name: test starting instance on new host
56+
ngine_io.cloudstack.instance:
57+
name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
58+
zone: "{{ cs_common_zone_basic }}"
59+
host: "{{ host.name }}"
60+
state: started
61+
register: instance
62+
- name: verify test starting instance on new host
63+
assert:
64+
that:
65+
- instance is changed
66+
- instance.name == cs_resource_prefix + "-vm-" + instance_number
67+
- instance.host == host.name
68+
- instance.state == "Running"
69+
70+
- name: test starting instance on new host idempotence
71+
ngine_io.cloudstack.instance:
72+
name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
73+
zone: "{{ cs_common_zone_basic }}"
74+
host: "{{ host.name }}"
75+
state: started
76+
register: instance
77+
- name: verify test starting instance on new host idempotence
78+
assert:
79+
that:
80+
- instance is not changed
81+
- instance.name == cs_resource_prefix + "-vm-" + instance_number
82+
- instance.host == host.name
83+
- instance.state == "Running"
84+
85+
- name: select a host on which the instance is not running on
86+
set_fact:
87+
host: "{{ host_json | json_query('host[?name!=`' + instance.host + '`] | [0]') }}"
88+
89+
- debug:
90+
msg: "from current host {{ instance.host }} to new host {{ host.name }}"
91+
92+
- name: test force update running instance in check mode
93+
ngine_io.cloudstack.instance:
94+
name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
95+
zone: "{{ cs_common_zone_basic }}"
96+
host: "{{ host.name }}"
97+
force: true
98+
register: instance
99+
check_mode: true
100+
- name: verify force update running instance in check mode
101+
assert:
102+
that:
103+
- instance is changed
104+
- instance.name == cs_resource_prefix + "-vm-" + instance_number
105+
- instance.host != host.name
106+
- instance.state == "Running"
107+
108+
- name: test force update running instance
109+
ngine_io.cloudstack.instance:
110+
name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
111+
zone: "{{ cs_common_zone_basic }}"
112+
host: "{{ host.name }}"
113+
force: true
114+
register: instance
115+
- name: verify force update running instance
116+
assert:
117+
that:
118+
- instance is changed
119+
- instance.name cs_resource_prefix + "-vm-" + instance_number
120+
- instance.host == host.name
121+
- instance.state == "Running"
122+
123+
- name: test force update running instance idempotence
124+
ngine_io.cloudstack.instance:
125+
name: "{{ cs_resource_prefix }}-vm-{{ instance_number }}"
126+
zone: "{{ cs_common_zone_basic }}"
127+
host: "{{ host.name }}"
128+
force: true
129+
register: instance
130+
- name: verify force update running instance idempotence
131+
assert:
132+
that:
133+
- instance is not changed
134+
- instance.name == cs_resource_prefix + "-vm-" + instance_number
135+
- instance.display_name == cs_resource_prefix + "-display-" + instance_number
136+
- instance.host == host.name
137+
- instance.state == "Running"
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
- import_tasks: setup.yml
3+
4+
- import_tasks: present.yml
5+
- import_tasks: tags.yml
6+
- import_tasks: absent.yml
7+
8+
- import_tasks: present_display_name.yml
9+
- import_tasks: absent_display_name.yml
10+
11+
# TODO: These tests randomly fail in all kinds of unexpected states.
12+
# This needs to be verified by the cloudstack community.
13+
# - import_tasks: host.yml
14+
15+
- import_tasks: sshkeys.yml
16+
- import_tasks: project.yml
17+
18+
- import_tasks: cleanup.yml

0 commit comments

Comments
 (0)