diff --git a/lib/ansible/modules/cloud/vmware/vmware_guest.py b/lib/ansible/modules/cloud/vmware/vmware_guest.py index fa354219ae..50e472282c 100644 --- a/lib/ansible/modules/cloud/vmware/vmware_guest.py +++ b/lib/ansible/modules/cloud/vmware/vmware_guest.py @@ -100,7 +100,8 @@ options: - A list of disks to add. - 'Valid attributes are:' - ' - C(size_[tb,gb,mb,kb]) (integer): Disk storage size in specified unit.' - - ' - C(type) (string): Valid value is C(thin) (default: None).' + - ' - C(type) (string): Valid values are:' + - ' C(thin) thin disk, C(eagerzeroedthick) eagerzeroedthick disk, added in version 2.5, Default: C(None) thick disk, no eagerzero.' - ' - C(datastore) (string): Datastore to use for the disk. If C(autoselect_datastore) is enabled, filter datastore selection.' - ' - C(autoselect_datastore) (bool): select the less used datastore.' cdrom: @@ -1018,8 +1019,11 @@ class PyVmomiHelper(PyVmomi): # is it thin? if 'type' in expected_disk_spec: - if expected_disk_spec.get('type', '').lower() == 'thin': + disk_type = expected_disk_spec.get('type', '').lower() + if disk_type == 'thin': diskspec.device.backing.thinProvisioned = True + elif disk_type == 'eagerzeroedthick': + diskspec.device.backing.eagerlyScrub = True # which datastore? if expected_disk_spec.get('datastore'): diff --git a/test/integration/targets/vmware_guest/tasks/disk_type_d1_c1_f0.yml b/test/integration/targets/vmware_guest/tasks/disk_type_d1_c1_f0.yml new file mode 100644 index 0000000000..47c435c490 --- /dev/null +++ b/test/integration/targets/vmware_guest/tasks/disk_type_d1_c1_f0.yml @@ -0,0 +1,62 @@ +# Test code for the vmware_guest module. +# Copyright: (c) 2017, Abhijeet Kasurde +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +- 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 }}" + guest_id: centos64Guest + datacenter: "{{ (item|basename).split('_')[0] }}" + hardware: + num_cpus: 1 + memory_mb: 512 + disk: + - size: 0gb + type: eagerzeroedthick + autoselect_datastore: True + - size: 0gb + type: thin + autoselect_datastore: True + state: poweredoff + folder: "{{ item|dirname }}" + with_items: "{{ vmlist['json'] }}" + register: disk_type_d1_c1_f0 + +- debug: var=disk_type_d1_c1_f0 + +- name: assert that changes were made + assert: + that: + - "disk_type_d1_c1_f0.results|map(attribute='changed')|unique|list == [true]"