vmware_guest: tests for createvm+modifyvm tasks (#30959)

* 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
This commit is contained in:
jctanner 2017-09-27 18:10:08 -04:00 committed by GitHub
parent 04bfbb14d6
commit 0dd3a61a75
3 changed files with 184 additions and 1 deletions

View file

@ -618,7 +618,10 @@ def serialize_spec(clonespec):
for xe in xo: for xe in xo:
data[x].append(serialize_spec(xe)) data[x].append(serialize_spec(xe))
elif issubclass(xt, string_types + integer_types + (float, bool)): 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): elif issubclass(xt, bool):
data[x] = xo data[x] = xo
elif issubclass(xt, dict): elif issubclass(xt, dict):

View file

@ -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]"

View file

@ -12,3 +12,4 @@
- include: poweroff_d1_c1_f0.yml - include: poweroff_d1_c1_f0.yml
- include: poweroff_d1_c1_f1.yml - include: poweroff_d1_c1_f1.yml
- include: clone_d1_c1_f0.yml - include: clone_d1_c1_f0.yml
- include: create_d1_c1_f0.yml