Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Component Audit - VMware api e2e provisioning test #14969

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions conf/vmware.yaml.template
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
115 changes: 115 additions & 0 deletions tests/foreman/api/test_computeresource_vmware.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
"""
: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('[8]')
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.
shubhamsg199 marked this conversation as resolved.
Show resolved Hide resolved

: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

:CaseImportance: Critical
shubhamsg199 marked this conversation as resolved.
Show resolved Hide resolved

:Verifies: SAT-23417

:customerscenario: true

:BZ: 2186114
Gauravtalreja1 marked this conversation as resolved.
Show resolved Hide resolved
"""
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,
'firmware': 'bios' if pxe_loader.vm_firmware == 'bios' else 'efi',
'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}',
shubhamsg199 marked this conversation as resolved.
Show resolved Hide resolved
},
},
},
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))
assert host.name == f'{name}.{module_provisioning_sat.domain.name}'
# check if vm is created on vmware
assert vmwareclient.does_vm_exist(host.name) is True
# check the build status
wait_for(
lambda: host.read().build_status_label != 'Pending installation',
timeout=1500,
delay=10,
)
assert host.read().build_status_label == 'Installed'