From d10267af7a402b268390a09cd28cffe2c0fff8ad Mon Sep 17 00:00:00 2001 From: Shubham Ganar Date: Mon, 6 May 2024 17:48:03 +0530 Subject: [PATCH] VMware api e2e provisioning test Signed-off-by: Shubham Ganar --- conf/vmware.yaml.template | 2 + .../api/test_computeresource_vmware.py | 112 ++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 tests/foreman/api/test_computeresource_vmware.py diff --git a/conf/vmware.yaml.template b/conf/vmware.yaml.template index 55a8b7f5e6d..3f3684e7e46 100644 --- a/conf/vmware.yaml.template +++ b/conf/vmware.yaml.template @@ -21,6 +21,8 @@ VMWARE: CLUSTER: # DATASTORE: vmware datastore DATASTORE: + # datastore_cluster: storage datastore cluster + DATASTORE_CLUSTER: # VM_NAME: Name of VM to power On/Off & delete VM_NAME: # VMware Compute resource image data diff --git a/tests/foreman/api/test_computeresource_vmware.py b/tests/foreman/api/test_computeresource_vmware.py new file mode 100644 index 00000000000..82940000eea --- /dev/null +++ b/tests/foreman/api/test_computeresource_vmware.py @@ -0,0 +1,112 @@ +""" +:Requirement: Computeresource Vmware + +:CaseComponent: ComputeResources-VMWare + +:Team: Rocket + +:CaseImportance: High + +:CaseAutomation: Automated + +""" + +from fauxfactory import gen_string +import pytest +from wait_for import wait_for + +from robottelo.config import settings + + +@pytest.mark.e2e +@pytest.mark.on_premises_provisioning +@pytest.mark.parametrize('setting_update', ['destroy_vm_on_host_delete=True'], indirect=True) +@pytest.mark.parametrize('vmware', ['vmware7', 'vmware8'], indirect=True) +@pytest.mark.parametrize('pxe_loader', ['bios', 'uefi'], indirect=True) +@pytest.mark.parametrize('provision_method', ['build', 'bootdisk']) +@pytest.mark.rhel_ver_match('[^6]') +def test_positive_provision_end_to_end( + request, + setting_update, + module_provisioning_rhel_content, + module_provisioning_sat, + module_sca_manifest_org, + module_location, + pxe_loader, + module_vmware_cr, + module_vmware_hostgroup, + provision_method, + vmware, + vmwareclient, +): + """Provision a host on vmware compute resource with + the help of hostgroup. + + :id: 6985e7c0-d258-4fc4-833b-e680804b55e8 + + :steps: + + 1. Configure provisioning setup. + 2. Create VMware CR + 3. Configure host group setup. + 4. Provision a host on VMware + 5. Verify created host on VMware with wrapanapi + + :expectedresults: Host is provisioned succesfully with hostgroup + + :CaseAutomation: Automated + + :BZ: 2186114 + """ + sat = module_provisioning_sat.sat + name = gen_string('alpha').lower() + host = sat.api.Host( + hostgroup=module_vmware_hostgroup, + organization=module_sca_manifest_org, + location=module_location, + name=name, + operatingsystem=module_provisioning_rhel_content.os, + subnet=module_provisioning_sat.subnet, + compute_attributes={ + "path": "/Datacenters/SatQE-Datacenter/vm/", + "cpus": 2, + "memory_mb": 6000, + "cluster": f"{settings.vmware.cluster}", + "start": "1", + 'guest_id': 'rhel8_64Guest', + "volumes_attributes": { + "0": { + "size_gb": 10, + "thin": "1", + "storage_pod": f"{settings.vmware.datastore_cluster}", + }, + }, + }, + interfaces_attributes={ + "0": { + "type": "interface", + "primary": True, + "managed": True, + "compute_attributes": { + "model": "VirtualVmxnet3", + "network": f"VLAN {settings.provisioning.vlan_id}", + }, + } + }, + provision_method=provision_method, + build=True, + ).create(create_missing=False) + + request.addfinalizer(lambda: sat.provisioning_cleanup(host.name)) + hostname = f'{name}.{module_provisioning_sat.domain.name}' + assert hostname == host.name + # check if vm is created on vmware + assert vmwareclient.does_vm_exist(hostname) is True + # check the build status + wait_for( + lambda: host.read().build_status_label != 'Pending installation', + timeout=1500, + delay=10, + ) + host = host.read() + assert host.build_status_label == 'Installed'