mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02: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…
Reference in a new issue