mirror of
				https://github.com/ansible-collections/community.general.git
				synced 2025-10-24 21:14:00 -07:00 
			
		
		
		
	VMware: Check device type explicitly (#38729)
Check datatype of device instead of comparing them directly in vmware_guest. Also, added testcases to check this behavior. DPVG is not supported in current version vcsim Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
This commit is contained in:
		
					parent
					
						
							
								5cf61d7401
							
						
					
				
			
			
				commit
				
					
						79c7d462c1
					
				
			
		
					 3 changed files with 100 additions and 1 deletions
				
			
		|  | @ -1100,7 +1100,8 @@ class PyVmomiHelper(PyVmomi): | |||
|                     nic_change_detected = True | ||||
|                 if 'device_type' in network_devices[key]: | ||||
|                     device = self.device_helper.get_device(network_devices[key]['device_type'], network_name) | ||||
|                     if nic.device != device: | ||||
|                     device_class = type(device) | ||||
|                     if not isinstance(nic.device, device_class): | ||||
|                         self.module.fail_json(msg="Changing the device type is not possible when interface is already present. " | ||||
|                                                   "The failing device type is %s" % network_devices[key]['device_type']) | ||||
|                 # Changing mac address has no effect when editing interface | ||||
|  |  | |||
|  | @ -28,3 +28,4 @@ | |||
| #- include: template_d1_c1_f0.yml | ||||
| - include: vapp_d1_c1_f0.yml | ||||
| - include: disk_size_d1_c1_f0.yml | ||||
| - include: network_with_device.yml | ||||
|  | @ -0,0 +1,97 @@ | |||
| # Test code for the vmware_guest module. | ||||
| # Copyright: (c) 2018, Abhijeet Kasurde <akasurde@redhat.com> | ||||
| # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) | ||||
| 
 | ||||
| # Testcase to check #38605 | ||||
| - 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 | ||||
| 
 | ||||
| - set_fact: | ||||
|    vm1: "{{ vmlist['json'][0] }}" | ||||
| 
 | ||||
| - debug: var=vm1 | ||||
| 
 | ||||
| - set_fact: | ||||
|     vm_name: "VM_{{ 10000 | random }}" | ||||
| 
 | ||||
| - name: Deploy VM {{ vm1 | basename }} | ||||
|   vmware_guest: | ||||
|     hostname: "{{ vcsim }}" | ||||
|     username: "{{ vcsim_instance['json']['username'] }}" | ||||
|     password: "{{ vcsim_instance['json']['password'] }}" | ||||
|     validate_certs: False | ||||
|     datacenter: "{{ (vm1|basename).split('_')[0] }}" | ||||
|     state: poweredon | ||||
|     folder: "{{ vm1 | dirname }}" | ||||
|     name: "{{ vm_name }}" | ||||
|     disk: | ||||
|       - size: 10mb | ||||
|         autoselect_datastore: yes | ||||
|     guest_id: rhel7_64guest | ||||
|     hardware: | ||||
|       memory_mb: 512 | ||||
|       num_cpus: 1 | ||||
|     networks: | ||||
|       - name: 'VM Network' | ||||
|         device_type: "vmxnet3" | ||||
|   register: vm_result | ||||
| 
 | ||||
| - debug: var=vm_result | ||||
| 
 | ||||
| - assert: | ||||
|     that: | ||||
|       - "vm_result.changed" | ||||
| 
 | ||||
| - name: Deploy VM {{ vm1 | basename }} again | ||||
|   vmware_guest: | ||||
|     hostname: "{{ vcsim }}" | ||||
|     username: "{{ vcsim_instance['json']['username'] }}" | ||||
|     password: "{{ vcsim_instance['json']['password'] }}" | ||||
|     validate_certs: False | ||||
|     datacenter: "{{ (vm1|basename).split('_')[0] }}" | ||||
|     state: poweredon | ||||
|     folder: "{{ vm1 | dirname }}" | ||||
|     name: "{{ vm_name }}" | ||||
|     disk: | ||||
|       - size: 10mb | ||||
|         autoselect_datastore: yes | ||||
|     guest_id: rhel7_64guest | ||||
|     hardware: | ||||
|       memory_mb: 512 | ||||
|       num_cpus: 1 | ||||
|     networks: | ||||
|       - name: 'VM Network' | ||||
|         device_type: "vmxnet3" | ||||
|   register: vm_result_again | ||||
| 
 | ||||
| - debug: var=vm_result_again | ||||
| 
 | ||||
| - assert: | ||||
|     that: | ||||
|       - "not vm_result_again.changed" | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue