1# Test code for the vmware_guest_register_operation module
2# Copyright: (c) 2019, sky-joker <sky.jokerxx@gmail.com>
3# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
4
5- import_role:
6    name: prepare_vmware_tests
7  vars:
8    setup_attach_host: true
9    setup_datastore: true
10    setup_cluster: true
11    setup_virtualmachines: true
12    setup_resource_pool: true
13
14- name: gather facts of vm
15  vmware_guest_info:
16    hostname: "{{ vcenter_hostname }}"
17    username: "{{ vcenter_username }}"
18    password: "{{ vcenter_password }}"
19    validate_certs: false
20    datacenter: "{{ dc1 }}"
21    folder: "{{ f0 }}"
22    name: "{{ virtual_machines[0].name }}"
23  register: vm_facts
24
25- name: get a vm vmx file path
26  set_fact: vm_vmx_file_path="{{ vm_facts.instance.hw_files[0] }}"
27
28- name: Powered off the vm
29  vmware_guest_powerstate:
30    hostname: "{{ vcenter_hostname }}"
31    username: "{{ vcenter_username }}"
32    password: "{{ vcenter_password }}"
33    validate_certs: false
34    folder: /vm
35    name: "{{ virtual_machines[0].name }}"
36    state: powered-off
37
38- name: Unregister VM from inventory with check_mode
39  vmware_guest_register_operation:
40    hostname: "{{ vcenter_hostname }}"
41    username: "{{ vcenter_username }}"
42    password: "{{ vcenter_password }}"
43    validate_certs: false
44    datacenter: "{{ dc1 }}"
45    folder: "/vm"
46    cluster: "{{ ccr1 }}"
47    name: "{{ virtual_machines[0].name }}"
48    state: absent
49  check_mode: true
50  register: unregister_vm_inventory_check_mode_result
51
52- name: Make sure the changed occurred
53  assert:
54    that:
55      - unregister_vm_inventory_check_mode_result.changed is sameas true
56
57- name: Unregister VM from inventory
58  vmware_guest_register_operation:
59    hostname: "{{ vcenter_hostname }}"
60    username: "{{ vcenter_username }}"
61    password: "{{ vcenter_password }}"
62    validate_certs: false
63    datacenter: "{{ dc1 }}"
64    folder: "/vm"
65    cluster: "{{ ccr1 }}"
66    name: "{{ virtual_machines[0].name }}"
67    state: absent
68  register: unregister_vm_inventory_result1
69
70- name: Gather all registered virtual machines
71  vmware_vm_info:
72    hostname: "{{ vcenter_hostname }}"
73    username: "{{ vcenter_username }}"
74    password: "{{ vcenter_password }}"
75    validate_certs: false
76  register: vms
77
78- assert:
79    that:
80      - >-
81        vms.virtual_machines
82        | selectattr('guest_name', 'equalto', virtual_machines[0].name)
83        | map(attribute='guest_name')
84        | list
85        | length == 0
86      - unregister_vm_inventory_result1.changed is sameas true
87
88- assert:
89    that:
90      - item.guest_name != virtual_machines[0].name
91  loop: "{{ vms.virtual_machines }}"
92
93- name: Register VM to inventory with check_mode
94  vmware_guest_register_operation:
95    hostname: "{{ vcenter_hostname }}"
96    username: "{{ vcenter_username }}"
97    password: "{{ vcenter_password }}"
98    validate_certs: false
99    datacenter: "{{ dc1 }}"
100    folder: "/vm"
101    esxi_hostname: "{{ esxi1 }}"
102    name: "{{ virtual_machines[0].name }}"
103    path: "{{ vm_vmx_file_path }}"
104    state: present
105  check_mode: true
106  register: register_vm_inventory_check_mode_result
107
108- name: Make sure the changed occurred
109  assert:
110    that:
111      - register_vm_inventory_check_mode_result.changed is sameas true
112
113- name: Register VM to inventory
114  vmware_guest_register_operation:
115    hostname: "{{ vcenter_hostname }}"
116    username: "{{ vcenter_username }}"
117    password: "{{ vcenter_password }}"
118    validate_certs: false
119    datacenter: "{{ dc1 }}"
120    folder: "/vm"
121    esxi_hostname: "{{ esxi1 }}"
122    name: "{{ virtual_machines[0].name }}"
123    path: "{{ vm_vmx_file_path }}"
124    state: present
125  register: register_vm_inventory_result
126
127- name: Gather all registered virtual machines
128  vmware_vm_info:
129    hostname: "{{ vcenter_hostname }}"
130    username: "{{ vcenter_username }}"
131    password: "{{ vcenter_password }}"
132    validate_certs: false
133  register: vms
134
135- assert:
136    that:
137      - >-
138        vms.virtual_machines
139        | selectattr('guest_name', 'equalto', virtual_machines[0].name)
140        | selectattr('esxi_hostname', 'equalto', esxi1)
141        | map(attribute='guest_name')
142        | list
143        | length == 1
144      - register_vm_inventory_result.changed is sameas true
145
146- name: Unregister VM from inventory
147  vmware_guest_register_operation:
148    hostname: "{{ vcenter_hostname }}"
149    username: "{{ vcenter_username }}"
150    password: "{{ vcenter_password }}"
151    validate_certs: false
152    datacenter: "{{ dc1 }}"
153    folder: "/vm"
154    cluster: "{{ ccr1 }}"
155    name: "{{ virtual_machines[0].name }}"
156    state: absent
157  register: unregister_vm_inventory_result2
158
159- name: Gather all registered virtual machines
160  vmware_vm_info:
161    hostname: "{{ vcenter_hostname }}"
162    username: "{{ vcenter_username }}"
163    password: "{{ vcenter_password }}"
164    validate_certs: false
165  register: vms
166
167- assert:
168    that:
169      - >-
170        vms.virtual_machines
171        | selectattr('guest_name', 'equalto', virtual_machines[0].name)
172        | map(attribute='guest_name')
173        | list
174        | length == 0
175      - unregister_vm_inventory_result2.changed is sameas true
176
177- name: Register VM in Cluster with check_mode
178  vmware_guest_register_operation:
179    hostname: "{{ vcenter_hostname }}"
180    username: "{{ vcenter_username }}"
181    password: "{{ vcenter_password }}"
182    validate_certs: false
183    datacenter: "{{ dc1 }}"
184    folder: "/vm"
185    cluster: "{{ ccr1 }}"
186    name: "{{ virtual_machines[0].name }}"
187    path: "{{ vm_vmx_file_path }}"
188    state: present
189  check_mode: true
190  register: register_vm_cluster_check_mode_result
191
192- name: Make sure the changed occurred
193  assert:
194    that:
195      - register_vm_cluster_check_mode_result.changed is sameas true
196
197- name: Register VM in Cluster
198  vmware_guest_register_operation:
199    hostname: "{{ vcenter_hostname }}"
200    username: "{{ vcenter_username }}"
201    password: "{{ vcenter_password }}"
202    validate_certs: false
203    datacenter: "{{ dc1 }}"
204    folder: "/vm"
205    cluster: "{{ ccr1 }}"
206    name: "{{ virtual_machines[0].name }}"
207    path: "{{ vm_vmx_file_path }}"
208    state: present
209  register: register_vm_cluster_result
210
211- name: Gather all registered virtual machines
212  vmware_vm_info:
213    hostname: "{{ vcenter_hostname }}"
214    username: "{{ vcenter_username }}"
215    password: "{{ vcenter_password }}"
216    validate_certs: false
217  register: vms
218
219- assert:
220    that:
221      - >-
222        vms.virtual_machines
223        | selectattr('guest_name', 'equalto', virtual_machines[0].name)
224        | selectattr('cluster', 'equalto', ccr1)
225        | map(attribute='guest_name')
226        | list
227        | length == 1
228      - register_vm_cluster_result.changed is sameas true
229
230- name: Unregister VM from inventory
231  vmware_guest_register_operation:
232    hostname: "{{ vcenter_hostname }}"
233    username: "{{ vcenter_username }}"
234    password: "{{ vcenter_password }}"
235    validate_certs: false
236    datacenter: "{{ dc1 }}"
237    folder: "/vm"
238    cluster: "{{ ccr1 }}"
239    name: "{{ virtual_machines[0].name }}"
240    state: absent
241  register: unregister_vm_inventory_result3
242
243- name: Gather all registered virtual machines
244  vmware_vm_info:
245    hostname: "{{ vcenter_hostname }}"
246    username: "{{ vcenter_username }}"
247    password: "{{ vcenter_password }}"
248    validate_certs: false
249  register: vms
250
251- assert:
252    that:
253      - >-
254        vms.virtual_machines
255        | selectattr('guest_name', 'equalto', virtual_machines[0].name)
256        | map(attribute='guest_name')
257        | list
258        | length == 0
259      - unregister_vm_inventory_result3.changed is sameas true
260
261- name: Register VM in Resource pool with check_mode
262  vmware_guest_register_operation:
263    hostname: "{{ vcenter_hostname }}"
264    username: "{{ vcenter_username }}"
265    password: "{{ vcenter_password }}"
266    validate_certs: false
267    datacenter: "{{ dc1 }}"
268    folder: "/vm"
269    cluster: "{{ ccr1 }}"
270    resource_pool: DC0_C0_RP1
271    name: "{{ virtual_machines[0].name }}"
272    path: "{{ vm_vmx_file_path }}"
273    state: present
274  check_mode: true
275  register: register_vm_resource_pool_check_mode_result
276
277- name: Make sure the changed occurred
278  assert:
279    that:
280      - register_vm_resource_pool_check_mode_result.changed is sameas true
281
282- name: Register VM in Resource pool
283  vmware_guest_register_operation:
284    hostname: "{{ vcenter_hostname }}"
285    username: "{{ vcenter_username }}"
286    password: "{{ vcenter_password }}"
287    validate_certs: false
288    datacenter: "{{ dc1 }}"
289    folder: "/vm"
290    cluster: "{{ ccr1 }}"
291    resource_pool: DC0_C0_RP1
292    name: "{{ virtual_machines[0].name }}"
293    path: "{{ vm_vmx_file_path }}"
294    state: present
295  register: register_vm_resource_pool_result
296
297- name: Gather all registered virtual machines
298  vmware_vm_info:
299    hostname: "{{ vcenter_hostname }}"
300    username: "{{ vcenter_username }}"
301    password: "{{ vcenter_password }}"
302    validate_certs: false
303  register: vms
304
305- assert:
306    that:
307      - >-
308        vms.virtual_machines
309        | selectattr('guest_name', 'equalto', virtual_machines[0].name)
310        | map(attribute='guest_name')
311        | list
312        | length == 1
313      - register_vm_resource_pool_result.changed is sameas true
314
315- name: Gather facts of vm
316  vmware_guest_info:
317    hostname: "{{ vcenter_hostname }}"
318    username: "{{ vcenter_username }}"
319    password: "{{ vcenter_password }}"
320    validate_certs: false
321    datacenter: "{{ dc1 }}"
322    folder: "/vm"
323    name: "{{ virtual_machines[0].name }}"
324  register: vm_facts
325
326- name: Get a vm uuid
327  set_fact: vm_uuid="{{ vm_facts.instance.hw_product_uuid }}"
328
329- name: Unregister VM from inventory with uuid parameter
330  vmware_guest_register_operation:
331    hostname: "{{ vcenter_hostname }}"
332    username: "{{ vcenter_username }}"
333    password: "{{ vcenter_password }}"
334    validate_certs: false
335    datacenter: "{{ dc1 }}"
336    folder: "/vm"
337    cluster: "{{ ccr1 }}"
338    name: "{{ virtual_machines[0].name }}"
339    uuid: "{{ vm_uuid }}"
340    state: absent
341  register: unregister_vm_inventory_result4
342
343- name: Gather all registered virtual machines
344  vmware_vm_info:
345    hostname: "{{ vcenter_hostname }}"
346    username: "{{ vcenter_username }}"
347    password: "{{ vcenter_password }}"
348    validate_certs: false
349  register: vms
350
351- assert:
352    that:
353      - >-
354        vms.virtual_machines
355        | selectattr('guest_name', 'equalto', virtual_machines[0].name)
356        | map(attribute='guest_name')
357        | list
358        | length == 0
359      - unregister_vm_inventory_result4.changed is sameas true