diff --git a/tests/integration/targets/vcenter_vm_clone_on_library/.gitignore b/tests/integration/targets/vcenter_vm_clone_on_library/.gitignore deleted file mode 100644 index 447ef9f48..000000000 --- a/tests/integration/targets/vcenter_vm_clone_on_library/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.vmdk-4 diff --git a/tests/integration/targets/vcenter_vm_clone_on_library/aliases b/tests/integration/targets/vcenter_vm_clone_on_library/aliases deleted file mode 100644 index 6fc59307a..000000000 --- a/tests/integration/targets/vcenter_vm_clone_on_library/aliases +++ /dev/null @@ -1,4 +0,0 @@ -network/vmware_rest -zuul/vmware/vcenter_1esxi_with_nested -# cannot run in the CI yet -disabled diff --git a/tests/integration/targets/vcenter_vm_clone_on_library/changelogs/fragments/2.2.0.yml b/tests/integration/targets/vcenter_vm_clone_on_library/changelogs/fragments/2.2.0.yml deleted file mode 100644 index 5667dfaa2..000000000 --- a/tests/integration/targets/vcenter_vm_clone_on_library/changelogs/fragments/2.2.0.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- -minor_changes: -- "vcenter_vm - Add new examples (clone and instant clone)." diff --git a/tests/integration/targets/vcenter_vm_clone_on_library/meta/main.yml b/tests/integration/targets/vcenter_vm_clone_on_library/meta/main.yml deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/integration/targets/vcenter_vm_clone_on_library/playbook.yml b/tests/integration/targets/vcenter_vm_clone_on_library/playbook.yml deleted file mode 100644 index 1069c00a8..000000000 --- a/tests/integration/targets/vcenter_vm_clone_on_library/playbook.yml +++ /dev/null @@ -1,10 +0,0 @@ -- hosts: localhost - gather_facts: no - collections: - - vmware.vmware_rest - - community.vmware - tasks: - - import_role: - name: prepare_lab - - import_role: - name: vcenter_vm_clone_on_library diff --git a/tests/integration/targets/vcenter_vm_clone_on_library/refresh_RETURN_block.sh b/tests/integration/targets/vcenter_vm_clone_on_library/refresh_RETURN_block.sh deleted file mode 100755 index 95bf3d4ea..000000000 --- a/tests/integration/targets/vcenter_vm_clone_on_library/refresh_RETURN_block.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env bash -# shellcheck disable=SC2155 -set -eux - -export ANSIBLE_CALLBACK_WHITELIST=goneri.utils.collect_task_outputs -export COLLECT_TASK_OUTPUTS_COLLECTION=vmware.vmware_rest -export COLLECT_TASK_OUTPUTS_TARGET_DIR=$(realpath ../../../../manual/source/vmware_rest_scenarios/task_outputs/) -export INVENTORY_PATH=/tmp/inventory-vmware_rest - -source ../init.sh -exec ansible-playbook -i ${INVENTORY_PATH} playbook.yaml -e wait_for_vm=1 -vvv diff --git a/tests/integration/targets/vcenter_vm_clone_on_library/runme.sh b/tests/integration/targets/vcenter_vm_clone_on_library/runme.sh deleted file mode 100755 index 2c96a6abd..000000000 --- a/tests/integration/targets/vcenter_vm_clone_on_library/runme.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash -source ../init.sh -exec ansible-playbook playbook.yaml diff --git a/tests/integration/targets/vcenter_vm_clone_on_library/tasks/main.yml b/tests/integration/targets/vcenter_vm_clone_on_library/tasks/main.yml deleted file mode 100644 index de7aedb48..000000000 --- a/tests/integration/targets/vcenter_vm_clone_on_library/tasks/main.yml +++ /dev/null @@ -1,160 +0,0 @@ -- name: Create a content library based on a DataStore - vmware.vmware_rest.content_locallibrary: - name: my_library_on_datastore - description: automated - publish_info: - published: true - authentication_method: 'NONE' - storage_backings: - - datastore_id: "{{ lookup('vmware.vmware_rest.datastore_moid', '/my_dc/datastore/local') }}" - type: 'DATASTORE' - state: present - register: nfs_lib - -- ansible.builtin.set_fact: - disk_name: rhel-8.5 - -- name: Fetch the root disk - ansible.builtin.get_url: - url: "https://s3.us-east-2.amazonaws.com/ansible-team-cloud-images/{{ disk_name }}.vmdk-4" - dest: "../{{ disk_name }}.vmdk-4" - checksum: sha256:e28616764ae9eb7e302f4642cace10f1596d8c7c254e2b9c4038c4cd726262ff - -- name: Copy the disk on the ESXi local datastore - ansible.builtin.copy: - src: "../{{ disk_name }}.vmdk-4" - dest: "/vmfs/volumes/local/{{ disk_name }}.vmdk-4" - delegate_to: esxi1.test - vars: - ansible_user: root - ansible_python_interpreter: /bin/python3 - ansible_remote_tmp: /vmfs/volumes/local - -- name: Create the test_vm1 directory - ansible.builtin.file: - path: /vmfs/volumes/local/test_vm1 - state: directory - delegate_to: esxi1.test - vars: - ansible_user: root - ansible_python_interpreter: /bin/python3 - ansible_remote_tmp: /vmfs/volumes/local - -- name: Stat disk file - ansible.builtin.stat: - path: "/vmfs/volumes/local/test_vm1/{{ disk_name }}.vmdk-4" - register: vmdk_stat - delegate_to: esxi1.test - vars: - ansible_user: root - ansible_python_interpreter: /bin/python3 - ansible_remote_tmp: /vmfs/volumes/local -- ansible.builtin.debug: var=vmdk_stat -- name: Prepare the VMDK file - ansible.builtin.command: "vmkfstools -i /vmfs/volumes/local/{{ disk_name }}.vmdk-4 /vmfs/volumes/local/test_vm1/{{ disk_name }}.vmdk -d thin" - delegate_to: esxi1.test - vars: - ansible_user: root - ansible_python_interpreter: /bin/python3 - when: not vmdk_stat.stat.exists|bool - -- name: Create a VM - vmware.vmware_rest.vcenter_vm: - placement: - cluster: "{{ lookup('vmware.vmware_rest.cluster_moid', '/my_dc/host/my_cluster') }}" - datastore: "{{ lookup('vmware.vmware_rest.datastore_moid', '/my_dc/datastore/local') }}" - folder: "{{ lookup('vmware.vmware_rest.folder_moid', '/my_dc/vm') }}" - resource_pool: "{{ lookup('vmware.vmware_rest.resource_pool_moid', '/my_dc/host/my_cluster/Resources') }}" - name: test_vm1 - guest_OS: RHEL_7_64 - hardware_version: VMX_11 - memory: - hot_add_enabled: true - size_MiB: 1024 - disks: - - type: SATA - backing: - type: VMDK_FILE - vmdk_file: "[local] test_vm1/{{ disk_name }}.vmdk" - - type: SATA - new_vmdk: - name: second_disk - capacity: 32000000000 - cdroms: - - type: SATA - sata: - bus: 0 - unit: 2 - nics: - - backing: - type: STANDARD_PORTGROUP - network: "{{ lookup('vmware.vmware_rest.network_moid', '/my_dc/network/VM Network') }}" - register: my_vm - -- name: Create a VM template on the library - vmware.vmware_rest.vcenter_vmtemplate_libraryitems: - name: golden-template - library: "{{ nfs_lib.id }}" - source_vm: "{{ my_vm.id }}" - placement: - cluster: "{{ lookup('vmware.vmware_rest.cluster_moid', '/my_dc/host/my_cluster') }}" - folder: "{{ lookup('vmware.vmware_rest.folder_moid', '/my_dc/vm') }}" - resource_pool: "{{ lookup('vmware.vmware_rest.resource_pool_moid', '/my_dc/host/my_cluster/Resources') }}" - register: mylib_item -- debug: var=mylib_item -- assert: - that: - - mylib_item is changed - - -- name: _Create the same template again - vmware.vmware_rest.vcenter_vmtemplate_libraryitems: - name: golden-template - library: "{{ nfs_lib.id }}" - source_vm: "{{ my_vm.id }}" - placement: - cluster: "{{ lookup('vmware.vmware_rest.cluster_moid', '/my_dc/host/my_cluster') }}" - folder: "{{ lookup('vmware.vmware_rest.folder_moid', '/my_dc/vm') }}" - resource_pool: "{{ lookup('vmware.vmware_rest.resource_pool_moid', '/my_dc/host/my_cluster/Resources') }}" - register: _result -- debug: var=_result -- assert: - that: - - not (_result is changed) - -- name: Get the list of items of the NFS library - vmware.vmware_rest.content_library_item_info: - library_id: '{{ nfs_lib.id }}' - register: lib_items - -- debug: - var: all_content_libraries - -- name: Use the name to identify the item - set_fact: - my_template_item: "{{ lib_items.value | selectattr('name', 'equalto', 'golden-template')|first }}" - -- assert: - that: - - mylib_item.id == my_template_item.id - - -- name: Deploy a new VM based on the template - vmware.vmware_rest.vcenter_vmtemplate_libraryitems: - name: vm-from-template - library: "{{ nfs_lib.id }}" - template_library_item: "{{ my_template_item.id }}" - placement: - cluster: "{{ lookup('vmware.vmware_rest.cluster_moid', '/my_dc/host/my_cluster') }}" - folder: "{{ lookup('vmware.vmware_rest.folder_moid', '/my_dc/vm') }}" - resource_pool: "{{ lookup('vmware.vmware_rest.resource_pool_moid', '/my_dc/host/my_cluster/Resources') }}" - state: deploy - register: my_new_vm -- debug: var=my_new_vm - -- name: Retrieve all the details about the new VM - vmware.vmware_rest.vcenter_vm: - vm: "{{ my_new_vm.value }}" - register: my_new_vm_info - -- debug: var=my_new_vm_info diff --git a/tests/integration/targets/vmware_rest_vcenter_vm_clone_on_library/defaults/main.yml b/tests/integration/targets/vmware_rest_vcenter_vm_clone_on_library/defaults/main.yml new file mode 100644 index 000000000..5c6c6db1a --- /dev/null +++ b/tests/integration/targets/vmware_rest_vcenter_vm_clone_on_library/defaults/main.yml @@ -0,0 +1,5 @@ +--- +resource_pool_name: "{{ tiny_prefix }}-clone-on-library-resource-pool" +vm_name: "{{ tiny_prefix }}-clone-on-library-vm" +vm_from_template_name: "{{ tiny_prefix }}-vm-from-template" +library_name: "{{ tiny_prefix }}-library-on-datastore" \ No newline at end of file diff --git a/tests/integration/targets/vmware_rest_vcenter_vm_clone_on_library/playbook.yml b/tests/integration/targets/vmware_rest_vcenter_vm_clone_on_library/playbook.yml new file mode 100644 index 000000000..f8e3f620a --- /dev/null +++ b/tests/integration/targets/vmware_rest_vcenter_vm_clone_on_library/playbook.yml @@ -0,0 +1,14 @@ +- hosts: localhost + gather_facts: no + + tasks: + - name: Import eco-vcenter credentials + ansible.builtin.include_vars: + file: ../group_vars.yml + tags: eco-vcenter-ci + + - name: Import vmware_rest_lookup_plugin test + ansible.builtin.import_role: + name: vmware_rest_vcenter_vm_clone_on_library + tags: + - eco-vcenter-ci diff --git a/tests/integration/targets/vmware_rest_vcenter_vm_clone_on_library/tasks/main.yml b/tests/integration/targets/vmware_rest_vcenter_vm_clone_on_library/tasks/main.yml new file mode 100644 index 000000000..e98404882 --- /dev/null +++ b/tests/integration/targets/vmware_rest_vcenter_vm_clone_on_library/tasks/main.yml @@ -0,0 +1,133 @@ +--- +- name: Test VM clone on library + block: + - name: Create a content library based on a DataStore + vmware.vmware_rest.content_locallibrary: + name: "{{ library_name }}" + description: automated + publish_info: + published: true + authentication_method: 'NONE' + storage_backings: + - datastore_id: "{{ lookup('vmware.vmware_rest.datastore_moid', '/' + vcenter_datacenter + '/' + eco_nfs_datastore_iso) }}" + type: 'DATASTORE' + state: present + register: nfs_lib + + - name: Create a generic resource pool + vmware.vmware_rest.vcenter_resourcepool: + name: "{{ resource_pool_name }}" + parent: "{{ lookup('vmware.vmware_rest.resource_pool_moid', '/' + vcenter_datacenter + '/' + vcenter_cluster_name + '/' + vcenter_resource_pool) }}" + register: resource_pool_info + + - name: Create a VM + vmware.vmware_rest.vcenter_vm: + placement: + cluster: "{{ lookup('vmware.vmware_rest.cluster_moid', '/' + vcenter_datacenter + '/' + vcenter_cluster_name) }}" + datastore: "{{ lookup('vmware.vmware_rest.datastore_moid', '/' + vcenter_datacenter + '/' + shared_storage_01) }}" + folder: "{{ lookup('vmware.vmware_rest.folder_moid', '/' + vcenter_datacenter + '/' + vcenter_vm_folder) }}" + resource_pool: "{{ resource_pool_info.id }}" + name: "{{ vm_name }}" + guest_OS: RHEL_9_64 + hardware_version: VMX_21 + memory: + hot_add_enabled: true + size_MiB: 2000 + nics: + - type: VMXNET3 + backing: + type: DISTRIBUTED_PORTGROUP + network: "{{ lookup('vmware.vmware_rest.network_moid', '/' + vcenter_datacenter + '/' + vm_network_name) }}" + start_connected: true + cdroms: + - backing: + type: ISO_FILE + iso_file: "{{ rhel_9_3_iso_path }}" + start_connected: true + register: test_vm + + - name: Create a VM template on the library + vmware.vmware_rest.vcenter_vmtemplate_libraryitems: + name: "{{ vm_name }}-template" + library: "{{ nfs_lib.id }}" + source_vm: "{{ test_vm.id }}" + placement: + cluster: "{{ lookup('vmware.vmware_rest.cluster_moid', '/' + vcenter_datacenter + '/' + vcenter_cluster_name) }}" + folder: "{{ lookup('vmware.vmware_rest.folder_moid', '/' + vcenter_datacenter + '/' + vcenter_vm_folder) }}" + resource_pool: "{{ resource_pool_info.id }}" + register: nfs_lib_item + + - name: Verify VM template added to the library + ansible.builtin.assert: + that: + - nfs_lib_item is changed + + - name: _Create the same template again + vmware.vmware_rest.vcenter_vmtemplate_libraryitems: + name: "{{ vm_name }}-template" + library: "{{ nfs_lib.id }}" + source_vm: "{{ test_vm.id }}" + placement: + cluster: "{{ lookup('vmware.vmware_rest.cluster_moid', '/' + vcenter_datacenter + '/' + vcenter_cluster_name) }}" + folder: "{{ lookup('vmware.vmware_rest.folder_moid', '/' + vcenter_datacenter + '/' + vcenter_vm_folder) }}" + resource_pool: "{{ resource_pool_info.id }}" + register: _result + + - name: Verify no VM template added to the library + ansible.builtin.assert: + that: + - not (_result is changed) + + - name: Get the list of items of the NFS library + vmware.vmware.content_library_item_info: + library_id: '{{ nfs_lib.id }}' + register: nfs_lib_items + + - name: Verify VM template name + ansible.builtin.assert: + that: + - nfs_lib_items.library_item_info[0].name == "{{ vm_name }}-template" + + - name: Deploy a new VM based on the template + vmware.vmware_rest.vcenter_vmtemplate_libraryitems: + name: "{{ vm_from_template_name }}" + library: "{{ nfs_lib.id }}" + template_library_item: "{{ nfs_lib_item.id }}" + placement: + cluster: "{{ lookup('vmware.vmware_rest.cluster_moid', '/' + vcenter_datacenter + '/' + vcenter_cluster_name) }}" + folder: "{{ lookup('vmware.vmware_rest.folder_moid', '/' + vcenter_datacenter + '/' + vcenter_vm_folder) }}" + resource_pool: "{{ resource_pool_info.id }}" + state: deploy + register: vm_from_template + + - name: Retrieve all the details about the new VM + vmware.vmware_rest.vcenter_vm: + vm: "{{ vm_from_template.value }}" + register: vm_from_template_info + + - name: Verify VM from template name + ansible.builtin.assert: + that: + - vm_from_template_info.value.name == vm_from_template_name + + always: + - name: Delete test VM's + vmware.vmware_rest.vcenter_vm: + vm: "{{ lookup('vmware.vmware_rest.vm_moid', '/' + vcenter_datacenter + '/' + vcenter_cluster_name + '/' + vm_name) }}" + state: absent + + - name: Delete VM from template + vmware.vmware_rest.vcenter_vm: + vm: "{{ lookup('vmware.vmware_rest.vm_moid', '/' + vcenter_datacenter + '/' + vcenter_cluster_name + '/' + vm_from_template_name) }}" + state: absent + + - name: Delete nfs library + vmware.vmware_rest.content_locallibrary: + library_id: "{{ nfs_lib.id }}" + state: absent + when: nfs_lib is defined + + - name: Delete resource pool + vmware.vmware_rest.vcenter_resourcepool: + resource_pool: "{{ lookup('vmware.vmware_rest.resource_pool_moid', '/' + vcenter_datacenter + '/' + vcenter_cluster_name + '/' + resource_pool_name) }}" + state: absent