From b6ea43efc3a9c426cea6b4c70e2b795b58f7bbbd Mon Sep 17 00:00:00 2001 From: Pavan Bidkar Date: Thu, 17 Oct 2019 12:23:13 +0530 Subject: [PATCH] VMware: Support instance_uuid to find the vm for vmware_guest_network module (#62818) --- .../cloud/vmware/vmware_guest_network.py | 22 +++++++ .../vmware_guest_network/tasks/main.yml | 66 +++++++++++++++++-- 2 files changed, 84 insertions(+), 4 deletions(-) diff --git a/lib/ansible/modules/cloud/vmware/vmware_guest_network.py b/lib/ansible/modules/cloud/vmware/vmware_guest_network.py index a67e4548d49..08712039451 100644 --- a/lib/ansible/modules/cloud/vmware/vmware_guest_network.py +++ b/lib/ansible/modules/cloud/vmware/vmware_guest_network.py @@ -39,6 +39,12 @@ options: - UUID of the instance to gather info if known, this is VMware's unique identifier. - This is a required parameter, if parameter C(name) or C(moid) is not supplied. type: str + use_instance_uuid: + description: + - Whether to use the VMware instance UUID rather than the BIOS UUID. + default: False + type: bool + version_added: '2.10' moid: description: - Managed Object ID of the instance to manage if known, this is a unique identifier only within a single vCenter instance. @@ -154,6 +160,21 @@ EXAMPLES = ''' - state: absent mac: "00:50:56:44:55:77" delegate_to: localhost + +- name: Change network adapter settings of virtual machine using instance UUID + vmware_guest_network: + hostname: "{{ vcenter_hostname }}" + username: "{{ vcenter_username }}" + password: "{{ vcenter_password }}" + datacenter: "{{ datacenter_name }}" + validate_certs: no + uuid: 5003b4f5-c705-2f37-ccf6-dfc0b40afeb7 + use_instance_uuid: True + gather_network_info: false + networks: + - state: absent + mac: "00:50:56:44:55:77" + delegate_to: localhost ''' RETURN = """ @@ -453,6 +474,7 @@ def main(): argument_spec.update( name=dict(type='str'), uuid=dict(type='str'), + use_instance_uuid=dict(type='bool', default=False), moid=dict(type='str'), folder=dict(type='str'), datacenter=dict(type='str', default='ha-datacenter'), diff --git a/test/integration/targets/vmware_guest_network/tasks/main.yml b/test/integration/targets/vmware_guest_network/tasks/main.yml index 0841dddd6e5..5f7e92dff43 100644 --- a/test/integration/targets/vmware_guest_network/tasks/main.yml +++ b/test/integration/targets/vmware_guest_network/tasks/main.yml @@ -71,8 +71,10 @@ state: new device_type: e1000e manual_mac: "aa:50:56:58:59:60" + connected: True - name: "VM Network" state: new + connected: True device_type: vmxnet3 manual_mac: "aa:50:56:58:59:61" register: add_netadapter @@ -82,7 +84,7 @@ - name: assert the new netowrk adapters were added to VM assert: that: - - "add_netadapter.changed == true" + - add_netadapter is changed - "{{ add_netadapter.network_data | length | int }} == {{ netadapter_num | int + 2 }}" - name: delete one specified network adapter @@ -102,9 +104,65 @@ - name: assert the network adapter was removed assert: that: - - "del_netadapter.changed == true" + - del_netadapter is changed - "{{ del_netadapter.network_data | length | int }} == {{ netadapter_num | int + 1 }}" + - name: get instance uuid of virtual machines + vmware_guest_info: + validate_certs: False + hostname: "{{ vcenter_hostname }}" + username: "{{ vcenter_username }}" + password: "{{ vcenter_password }}" + name: "{{ virtual_machines[0].name }}" + datacenter: '{{ dc1 }}' + register: guest_info + + - set_fact: vm1_instance_uuid="{{ guest_info['instance']['instance_uuid'] }}" + + - name: add new network adapters to virtual machine with instance uuid + vmware_guest_network: + validate_certs: False + hostname: "{{ vcenter_hostname }}" + username: "{{ vcenter_username }}" + password: "{{ vcenter_password }}" + uuid: "{{ vm1_instance_uuid }}" + use_instance_uuid: True + networks: + - name: "VM Network" + state: new + connected: True + device_type: e1000e + manual_mac: "00:50:56:58:59:60" + register: add_netadapter_instanceuuid + + - debug: var=add_netadapter_instanceuuid + + - name: assert the new netowrk adapters were added to VM + assert: + that: + - add_netadapter_instanceuuid is changed + - "{{ add_netadapter_instanceuuid.network_data | length | int }} == {{ netadapter_num | int + 2 }}" + + - name: delete again one specified network adapter + vmware_guest_network: + validate_certs: False + hostname: "{{ vcenter_hostname }}" + username: "{{ vcenter_username }}" + password: "{{ vcenter_password }}" + name: "{{ virtual_machines[0].name }}" + networks: + - state: absent + mac: "00:50:56:58:59:60" + register: del_again_netadapter + + - debug: var=del_again_netadapter + + - name: assert the network adapter was removed + assert: + that: + - del_again_netadapter is changed + - "{{ del_again_netadapter.network_data | length | int }} == {{ netadapter_num | int + 1 }}" + - name: disconnect one specified network adapter vmware_guest_network: validate_certs: False @@ -123,7 +181,7 @@ - name: assert the network adapter was disconnected assert: that: - - "disc_netadapter.changed == true" + - disc_netadapter is changed - "{{ disc_netadapter.network_data[netadapter_num]['connected'] }} == false" - name: Check if network does not exists @@ -145,5 +203,5 @@ - name: Check if network does not exists assert: that: - - not no_nw_details.changed + - not (no_nw_details is changed) - no_nw_details.failed