From 73febd4ea68ac1f15dd0e5bd49875681afa934ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gon=C3=A9ri=20Le=20Bouder?= Date: Fri, 11 Oct 2019 10:16:54 -0400 Subject: [PATCH] prepare_vmware_tests: use module_defaults (#63209) --- .../dev_guide/platforms/vmware_guidelines.rst | 35 +++++++++++++++++++ .../prepare_vmware_tests/tasks/init_vcsim.yml | 4 --- .../tasks/setup_attach_hosts.yml | 8 ----- .../tasks/setup_category.yml | 4 --- .../tasks/setup_cluster.yml | 8 ----- .../tasks/setup_content_library.yml | 4 --- .../tasks/setup_datacenter.yml | 8 ----- .../tasks/setup_datastore.yml | 3 -- .../tasks/setup_dvswitch.yml | 7 ---- .../tasks/setup_resource_pool.yml | 3 -- .../tasks/setup_switch.yml | 4 --- .../prepare_vmware_tests/tasks/setup_tag.yml | 8 ----- .../tasks/setup_virtualmachines.yml | 8 ----- .../prepare_vmware_tests/tasks/teardown.yml | 27 -------------- .../ansible_test/_internal/cloud/vcenter.py | 8 +++++ 15 files changed, 43 insertions(+), 96 deletions(-) diff --git a/docs/docsite/rst/dev_guide/platforms/vmware_guidelines.rst b/docs/docsite/rst/dev_guide/platforms/vmware_guidelines.rst index 948268bac64..284bf2f64bb 100644 --- a/docs/docsite/rst/dev_guide/platforms/vmware_guidelines.rst +++ b/docs/docsite/rst/dev_guide/platforms/vmware_guidelines.rst @@ -211,6 +211,41 @@ VM names should be predictable If you need to create a new VM during your test, you can use ``test_vm1``, ``test_vm2`` or ``test_vm3``. This way it will be automatically clean up for you. +Avoid the common boiler plate code in your test playbook +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +From Ansible 2.10, the test suite uses `modules_defaults`. This module +allow us to preinitialize the following default keys of the VMware modules: + +- hostname +- username +- password +- validate_certs + +For example, the following block: + +.. code-block:: yaml + + - name: Add a VMware vSwitch + vmware_vswitch: + hostname: '{{ vcenter_hostname }}' + username: '{{ vcenter_username }}' + password: '{{ vcenter_password }}' + validate_certs: 'no' + esxi_hostname: 'esxi1' + switch_name: "boby" + state: present + +should be simplified to just: + +.. code-block:: yaml + + - name: Add a VMware vSwitch + vmware_vswitch: + esxi_hostname: 'esxi1' + switch_name: "boby" + state: present + Typographic convention ====================== diff --git a/test/integration/targets/prepare_vmware_tests/tasks/init_vcsim.yml b/test/integration/targets/prepare_vmware_tests/tasks/init_vcsim.yml index df9f2c89753..bfb9ef6db7d 100644 --- a/test/integration/targets/prepare_vmware_tests/tasks/init_vcsim.yml +++ b/test/integration/targets/prepare_vmware_tests/tasks/init_vcsim.yml @@ -38,10 +38,6 @@ - name: set state to poweroff on all VMs vmware_guest: - validate_certs: False - hostname: "{{ vcenter_hostname }}" - username: "{{ vcenter_username }}" - password: "{{ vcenter_password }}" name: "{{ item.name }}" state: poweredoff with_items: "{{ virtual_machines + virtual_machines_in_cluster }}" diff --git a/test/integration/targets/prepare_vmware_tests/tasks/setup_attach_hosts.yml b/test/integration/targets/prepare_vmware_tests/tasks/setup_attach_hosts.yml index ee428dc5850..73942b68c24 100644 --- a/test/integration/targets/prepare_vmware_tests/tasks/setup_attach_hosts.yml +++ b/test/integration/targets/prepare_vmware_tests/tasks/setup_attach_hosts.yml @@ -1,23 +1,15 @@ - name: Add ESXi Hosts to vCenter vmware_host: - hostname: '{{ vcenter_hostname }}' - username: '{{ vcenter_username }}' - password: '{{ vcenter_password }}' datacenter_name: '{{ dc1 }}' cluster_name: '{{ ccr1 }}' esxi_hostname: '{{ item }}' esxi_username: '{{ esxi_user }}' esxi_password: '{{ esxi_password }}' state: present - validate_certs: no with_items: "{{ esxi_hosts }}" - name: Disable the Maintenance Mode vmware_maintenancemode: - validate_certs: no - hostname: "{{ vcenter_hostname }}" - username: "{{ vcenter_username }}" - password: "{{ vcenter_password }}" esxi_hostname: '{{ item }}' state: absent with_items: "{{ esxi_hosts }}" diff --git a/test/integration/targets/prepare_vmware_tests/tasks/setup_category.yml b/test/integration/targets/prepare_vmware_tests/tasks/setup_category.yml index 527228d738f..bfd680172c0 100644 --- a/test/integration/targets/prepare_vmware_tests/tasks/setup_category.yml +++ b/test/integration/targets/prepare_vmware_tests/tasks/setup_category.yml @@ -1,9 +1,5 @@ - name: Create a category for cluster vmware_category: - hostname: '{{ vcenter_hostname }}' - username: '{{ vcenter_username }}' - password: '{{ vcenter_password }}' - validate_certs: False category_name: '{{ cluster_category }}' category_description: '{{ cluster_category }} description' state: present diff --git a/test/integration/targets/prepare_vmware_tests/tasks/setup_cluster.yml b/test/integration/targets/prepare_vmware_tests/tasks/setup_cluster.yml index 7cdada7fa80..81653a53777 100644 --- a/test/integration/targets/prepare_vmware_tests/tasks/setup_cluster.yml +++ b/test/integration/targets/prepare_vmware_tests/tasks/setup_cluster.yml @@ -1,18 +1,10 @@ - name: Create Cluster vmware_cluster: - hostname: '{{ vcenter_hostname }}' - username: '{{ vcenter_username }}' - password: '{{ vcenter_password }}' datacenter_name: '{{ dc1 }}' cluster_name: '{{ ccr1 }}' - validate_certs: no - name: Enable DRS on Cluster vmware_cluster_drs: - hostname: '{{ vcenter_hostname }}' - username: '{{ vcenter_username }}' - password: '{{ vcenter_password }}' datacenter_name: '{{ dc1 }}' cluster_name: '{{ ccr1 }}' enable_drs: yes - validate_certs: no diff --git a/test/integration/targets/prepare_vmware_tests/tasks/setup_content_library.yml b/test/integration/targets/prepare_vmware_tests/tasks/setup_content_library.yml index 02a5514551a..8c139eec61c 100644 --- a/test/integration/targets/prepare_vmware_tests/tasks/setup_content_library.yml +++ b/test/integration/targets/prepare_vmware_tests/tasks/setup_content_library.yml @@ -1,11 +1,7 @@ - name: Create Content Library vmware_content_library_manager: - hostname: '{{ vcenter_hostname }}' - username: '{{ vcenter_username }}' - password: '{{ vcenter_password }}' library_name: test-content-lib library_description: 'Library created by the prepare_vmware_tests role' library_type: local datastore_name: '{{ ds2 }}' - validate_certs: False state: present diff --git a/test/integration/targets/prepare_vmware_tests/tasks/setup_datacenter.yml b/test/integration/targets/prepare_vmware_tests/tasks/setup_datacenter.yml index 7b655160459..a5f3eafe511 100644 --- a/test/integration/targets/prepare_vmware_tests/tasks/setup_datacenter.yml +++ b/test/integration/targets/prepare_vmware_tests/tasks/setup_datacenter.yml @@ -1,19 +1,11 @@ - name: Create Datacenter vmware_datacenter: - hostname: '{{ vcenter_hostname }}' - username: '{{ vcenter_username }}' - password: '{{ vcenter_password }}' datacenter_name: '{{ dc1 }}' state: present - validate_certs: no - name: Create a VM folder on given Datacenter vcenter_folder: - hostname: '{{ vcenter_hostname }}' - username: '{{ vcenter_username }}' - password: '{{ vcenter_password }}' datacenter: '{{ dc1 }}' folder_name: '{{ f0 }}' folder_type: vm state: present - validate_certs: no diff --git a/test/integration/targets/prepare_vmware_tests/tasks/setup_datastore.yml b/test/integration/targets/prepare_vmware_tests/tasks/setup_datastore.yml index ee0957579b1..11e69f0c9b6 100644 --- a/test/integration/targets/prepare_vmware_tests/tasks/setup_datastore.yml +++ b/test/integration/targets/prepare_vmware_tests/tasks/setup_datastore.yml @@ -30,9 +30,6 @@ - name: The vcenter needs a bit of time to refresh the DS list vmware_datastore_info: validate_certs: false - hostname: '{{ vcenter_hostname }}' - username: '{{ vcenter_username }}' - password: '{{ vcenter_password }}' cluster: '{{ ccr1 }}' register: setup_datastore_datatstore_info failed_when: setup_datastore_datatstore_info.datastores|selectattr('type', 'equalto', 'NFS')|list|length != 2 diff --git a/test/integration/targets/prepare_vmware_tests/tasks/setup_dvswitch.yml b/test/integration/targets/prepare_vmware_tests/tasks/setup_dvswitch.yml index 0dc58d57c05..ba36a461961 100644 --- a/test/integration/targets/prepare_vmware_tests/tasks/setup_dvswitch.yml +++ b/test/integration/targets/prepare_vmware_tests/tasks/setup_dvswitch.yml @@ -1,10 +1,6 @@ --- - name: Create the DVSwitch vmware_dvswitch: - validate_certs: no - hostname: "{{ vcenter_hostname }}" - username: "{{ vcenter_username }}" - password: "{{ vcenter_password }}" datacenter_name: '{{ dc1 }}' switch_name: '{{ dvswitch1 }}' switch_version: 6.0.0 @@ -15,9 +11,6 @@ state: present - name: Attach the hosts to the DVSwitch vmware_dvs_host: - hostname: '{{ vcenter_hostname }}' - username: '{{ vcenter_username }}' - password: '{{ vcenter_password }}' esxi_hostname: "{{ item }}" switch_name: '{{ dvswitch1 }}' vmnics: diff --git a/test/integration/targets/prepare_vmware_tests/tasks/setup_resource_pool.yml b/test/integration/targets/prepare_vmware_tests/tasks/setup_resource_pool.yml index 7cab8804c32..060785d17ab 100644 --- a/test/integration/targets/prepare_vmware_tests/tasks/setup_resource_pool.yml +++ b/test/integration/targets/prepare_vmware_tests/tasks/setup_resource_pool.yml @@ -1,9 +1,6 @@ --- - name: Add resource pool to vCenter vmware_resource_pool: - hostname: '{{ vcenter_hostname }}' - username: '{{ vcenter_username }}' - password: '{{ vcenter_password }}' datacenter: '{{ dc1 }}' cluster: '{{ ccr1 }}' resource_pool: DC0_C0_RP1 diff --git a/test/integration/targets/prepare_vmware_tests/tasks/setup_switch.yml b/test/integration/targets/prepare_vmware_tests/tasks/setup_switch.yml index a7b640ef2a3..c63a28c52b0 100644 --- a/test/integration/targets/prepare_vmware_tests/tasks/setup_switch.yml +++ b/test/integration/targets/prepare_vmware_tests/tasks/setup_switch.yml @@ -1,10 +1,6 @@ --- - name: Add a VMware vSwitchs vmware_vswitch: - validate_certs: no - hostname: '{{ vcenter_hostname }}' - username: '{{ vcenter_username }}' - password: '{{ vcenter_password }}' esxi_hostname: '{{ item }}' switch_name: "{{ switch1 }}" state: present diff --git a/test/integration/targets/prepare_vmware_tests/tasks/setup_tag.yml b/test/integration/targets/prepare_vmware_tests/tasks/setup_tag.yml index 142248a7c01..31b495c0f4a 100644 --- a/test/integration/targets/prepare_vmware_tests/tasks/setup_tag.yml +++ b/test/integration/targets/prepare_vmware_tests/tasks/setup_tag.yml @@ -1,9 +1,5 @@ - name: Get Category facts vmware_category_info: - hostname: '{{ vcenter_hostname }}' - username: '{{ vcenter_username }}' - password: '{{ vcenter_password }}' - validate_certs: False register: cat_info - name: Get Category id for {{ cluster_category }} @@ -12,10 +8,6 @@ - name: Create a tag for cluster vmware_tag: - hostname: '{{ vcenter_hostname }}' - username: '{{ vcenter_username }}' - password: '{{ vcenter_password }}' - validate_certs: False category_id: '{{ cluster_category_id }}' tag_name: '{{ cluster_tag }}' tag_description: '{{ cluster_tag }} Description' diff --git a/test/integration/targets/prepare_vmware_tests/tasks/setup_virtualmachines.yml b/test/integration/targets/prepare_vmware_tests/tasks/setup_virtualmachines.yml index d4391ee5252..a60ccd281cb 100644 --- a/test/integration/targets/prepare_vmware_tests/tasks/setup_virtualmachines.yml +++ b/test/integration/targets/prepare_vmware_tests/tasks/setup_virtualmachines.yml @@ -1,11 +1,7 @@ --- - name: Create VMs vmware_guest: - hostname: "{{ vcenter_hostname }}" - username: "{{ vcenter_username }}" - password: "{{ vcenter_password }}" datacenter: "{{ dc1 }}" - validate_certs: no folder: '{{ item.folder }}' name: '{{ item.name }}' state: poweredoff @@ -28,11 +24,7 @@ - name: Create VMs in cluster vmware_guest: - hostname: "{{ vcenter_hostname }}" - username: "{{ vcenter_username }}" - password: "{{ vcenter_password }}" datacenter: "{{ dc1 }}" - validate_certs: no folder: '{{ item.folder }}' cluster: '{{ item.cluster }}' name: '{{ item.name }}' diff --git a/test/integration/targets/prepare_vmware_tests/tasks/teardown.yml b/test/integration/targets/prepare_vmware_tests/tasks/teardown.yml index a16e69b4fd8..70ec9929e19 100644 --- a/test/integration/targets/prepare_vmware_tests/tasks/teardown.yml +++ b/test/integration/targets/prepare_vmware_tests/tasks/teardown.yml @@ -1,10 +1,6 @@ --- - name: Remove the VM prepared by prepare_vmware_tests vmware_guest: - hostname: "{{ vcenter_hostname }}" - username: "{{ vcenter_username }}" - password: "{{ vcenter_password }}" - validate_certs: no name: "{{ item.name }}" force: yes state: absent @@ -12,10 +8,6 @@ - name: Remove the test_vm* VMs vmware_guest: - hostname: "{{ vcenter_hostname }}" - username: "{{ vcenter_username }}" - password: "{{ vcenter_password }}" - validate_certs: no name: "{{ item }}" force: yes state: absent @@ -26,10 +18,6 @@ - name: Remove the DVSwitch vmware_dvswitch: - validate_certs: no - hostname: "{{ vcenter_hostname }}" - username: "{{ vcenter_username }}" - password: "{{ vcenter_password }}" datacenter_name: '{{ dc1 }}' state: absent switch_name: '{{ item }}' @@ -41,7 +29,6 @@ - name: Remove the vSwitches vmware_vswitch: - validate_certs: no hostname: '{{ item }}' username: '{{ esxi_user }}' password: '{{ esxi_password }}' @@ -52,16 +39,12 @@ - name: Remove ESXi Hosts to vCenter vmware_host: - hostname: '{{ vcenter_hostname }}' - username: '{{ vcenter_username }}' - password: '{{ vcenter_password }}' datacenter_name: '{{ dc1 }}' cluster_name: ccr1 esxi_hostname: '{{ item }}' esxi_username: '{{ esxi_user }}' esxi_password: '{{ esxi_password }}' state: absent - validate_certs: no with_items: "{{ esxi_hosts }}" ignore_errors: yes @@ -73,7 +56,6 @@ esxi_hostname: '{{ item }}' # Won't be necessary with https://github.com/ansible/ansible/pull/56516 datastore_name: '{{ ds1 }}' state: absent - validate_certs: no with_items: "{{ esxi_hosts }}" - name: Umount NFS datastores to ESXi (2/2) @@ -84,15 +66,10 @@ esxi_hostname: '{{ item }}' # Won't be necessary with https://github.com/ansible/ansible/pull/56516 datastore_name: '{{ ds2 }}' state: absent - validate_certs: no with_items: "{{ esxi_hosts }}" - name: Delete a datastore cluster to datacenter vmware_datastore_cluster: - hostname: '{{ vcenter_hostname }}' - username: '{{ vcenter_username }}' - password: '{{ vcenter_password }}' - validate_certs: no datacenter_name: "{{ dc1 }}" datastore_cluster_name: '{{ item }}' state: absent @@ -103,10 +80,6 @@ - name: Remove the datacenter vmware_datacenter: - validate_certs: no - hostname: '{{ vcenter_hostname }}' - username: '{{ vcenter_username }}' - password: '{{ vcenter_password }}' datacenter_name: '{{ item }}' state: absent when: vcsim is not defined diff --git a/test/lib/ansible_test/_internal/cloud/vcenter.py b/test/lib/ansible_test/_internal/cloud/vcenter.py index c4f88574784..f622de09643 100644 --- a/test/lib/ansible_test/_internal/cloud/vcenter.py +++ b/test/lib/ansible_test/_internal/cloud/vcenter.py @@ -272,4 +272,12 @@ class VcenterEnvironment(CloudEnvironment): return CloudEnvironmentConfig( env_vars=env_vars, ansible_vars=ansible_vars, + module_defaults={ + 'group/vmware': { + 'hostname': env_vars['VCENTER_HOSTNAME'], + 'username': env_vars['VCENTER_USERNAME'], + 'password': env_vars['VCENTER_PASSWORD'], + 'validate_certs': env_vars.get('VMWARE_VALIDATE_CERTS', 'no'), + }, + }, )