Skip to content

Commit

Permalink
vmware_guest: tests for createvm+modifyvm tasks (ansible#30959)
Browse files Browse the repository at this point in the history
* Save the serialized values instead of their types
* Add tests for creating and modifying VMs without using a template
* Remove blank line
* Add tests for vm deletion
  • Loading branch information
jctanner authored Sep 27, 2017
1 parent 04bfbb1 commit 0dd3a61
Show file tree
Hide file tree
Showing 3 changed files with 184 additions and 1 deletion.
5 changes: 4 additions & 1 deletion lib/ansible/module_utils/vmware.py
Original file line number Diff line number Diff line change
Expand Up @@ -618,7 +618,10 @@ def serialize_spec(clonespec):
for xe in xo:
data[x].append(serialize_spec(xe))
elif issubclass(xt, string_types + integer_types + (float, bool)):
data[x] = to_text(xt)
if issubclass(xt, integer_types):
data[x] = int(xo)
else:
data[x] = to_text(xo)
elif issubclass(xt, bool):
data[x] = xo
elif issubclass(xt, dict):
Expand Down
179 changes: 179 additions & 0 deletions test/integration/targets/vmware_guest/tasks/create_d1_c1_f0.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@
- name: Wait for Flask controller to come up online
wait_for:
host: "{{ vcsim }}"
port: 5000
state: started

- name: kill vcsim
uri:
url: "{{ 'http://' + vcsim + ':5000/killall' }}"
- name: start vcsim with no folders
uri:
url: "{{ 'http://' + vcsim + ':5000/spawn?datacenter=1&cluster=1&folder=0' }}"
register: vcsim_instance

- name: Wait for Flask controller to come up online
wait_for:
host: "{{ vcsim }}"
port: 443
state: started

- name: get a list of VMS from vcsim
uri:
url: "{{ 'http://' + vcsim + ':5000/govc_find?filter=VM' }}"
register: vmlist

- debug: var=vcsim_instance
- debug: var=vmlist

- name: create new VMs
vmware_guest:
validate_certs: False
hostname: "{{ vcsim }}"
username: "{{ vcsim_instance['json']['username'] }}"
password: "{{ vcsim_instance['json']['password'] }}"
name: "{{ 'newvm_' + item|basename }}"
#template: "{{ item|basename }}"
guest_id: centos64Guest
datacenter: "{{ (item|basename).split('_')[0] }}"
hardware:
num_cpus: 1
memory_mb: 512
disk:
- size: 0gb
type: thin
autoselect_datastore: True
state: poweredoff
folder: "{{ item|dirname }}"
with_items: "{{ vmlist['json'] }}"
register: clone_d1_c1_f0

- debug: var=clone_d1_c1_f0

- name: assert that changes were made
assert:
that:
- "clone_d1_c1_f0.results|map(attribute='changed')|unique|list == [true]"

- name: create new VMs again
vmware_guest:
validate_certs: False
hostname: "{{ vcsim }}"
username: "{{ vcsim_instance['json']['username'] }}"
password: "{{ vcsim_instance['json']['password'] }}"
name: "{{ 'newvm_' + item|basename }}"
#template: "{{ item|basename }}"
guest_id: centos64Guest
datacenter: "{{ (item|basename).split('_')[0] }}"
hardware:
num_cpus: 1
memory_mb: 512
disk:
- size: 0gb
type: thin
autoselect_datastore: True
state: poweredoff
folder: "{{ item|dirname }}"
with_items: "{{ vmlist['json'] }}"
register: clone_d1_c1_f0_recreate

- debug: var=clone_d1_c1_f0_recreate

- name: assert that no changes were made after re-creating
assert:
that:
- "clone_d1_c1_f0_recreate.results|map(attribute='changed')|unique|list == [false]"

- name: modify the new VMs
vmware_guest:
validate_certs: False
hostname: "{{ vcsim }}"
username: "{{ vcsim_instance['json']['username'] }}"
password: "{{ vcsim_instance['json']['password'] }}"
name: "{{ 'newvm_' + item|basename }}"
#template: "{{ item|basename }}"
guest_id: centos64Guest
datacenter: "{{ (item|basename).split('_')[0] }}"
hardware:
num_cpus: 2
memory_mb: 1024
state: present
folder: "{{ item|dirname }}"
with_items: "{{ vmlist['json'] }}"
register: clone_d1_c1_f0_modify

- debug: var=clone_d1_c1_f0_modify

- name: assert that changes were made with modification
assert:
that:
- "clone_d1_c1_f0_modify.results|map(attribute='changed')|unique|list == [true]"

- name: re-modify the new VMs
vmware_guest:
validate_certs: False
hostname: "{{ vcsim }}"
username: "{{ vcsim_instance['json']['username'] }}"
password: "{{ vcsim_instance['json']['password'] }}"
name: "{{ 'newvm_' + item|basename }}"
#template: "{{ item|basename }}"
guest_id: centos64Guest
datacenter: "{{ (item|basename).split('_')[0] }}"
hardware:
num_cpus: 2
memory_mb: 1024
state: present
folder: "{{ item|dirname }}"
with_items: "{{ vmlist['json'] }}"
register: clone_d1_c1_f0_remodify

- debug: var=clone_d1_c1_f0_remodify

- name: assert that no changes were made when re-modified
assert:
that:
- "clone_d1_c1_f0_remodify.results|map(attribute='changed')|unique|list == [false]"

- name: delete the new VMs
vmware_guest:
validate_certs: False
hostname: "{{ vcsim }}"
username: "{{ vcsim_instance['json']['username'] }}"
password: "{{ vcsim_instance['json']['password'] }}"
name: "{{ 'newvm_' + item|basename }}"
#template: "{{ item|basename }}"
#guest_id: centos64Guest
datacenter: "{{ (item|basename).split('_')[0] }}"
state: absent
folder: "{{ item|dirname }}"
with_items: "{{ vmlist['json'] }}"
register: clone_d1_c1_f0_delete

- debug: var=clone_d1_c1_f0_delete

- name: assert that changes were made with deletion
assert:
that:
- "clone_d1_c1_f0_delete.results|map(attribute='changed')|unique|list == [true]"

- name: re-delete the new VMs
vmware_guest:
validate_certs: False
hostname: "{{ vcsim }}"
username: "{{ vcsim_instance['json']['username'] }}"
password: "{{ vcsim_instance['json']['password'] }}"
name: "{{ 'newvm_' + item|basename }}"
#template: "{{ item|basename }}"
#guest_id: centos64Guest
datacenter: "{{ (item|basename).split('_')[0] }}"
state: absent
folder: "{{ item|dirname }}"
with_items: "{{ vmlist['json'] }}"
register: clone_d1_c1_f0_redelete

- debug: var=clone_d1_c1_f0_redelete

- name: assert that no changes were made with redeletion
assert:
that:
- "clone_d1_c1_f0_redelete.results|map(attribute='changed')|unique|list == [false]"
1 change: 1 addition & 0 deletions test/integration/targets/vmware_guest/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@
- include: poweroff_d1_c1_f0.yml
- include: poweroff_d1_c1_f1.yml
- include: clone_d1_c1_f0.yml
- include: create_d1_c1_f0.yml

0 comments on commit 0dd3a61

Please sign in to comment.