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

Coverage for autoprovision and reboot of discovered host #12815

Merged
merged 3 commits into from
Oct 11, 2023
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
1 change: 1 addition & 0 deletions conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
'pytest_fixtures.component.computeprofile',
'pytest_fixtures.component.contentview',
'pytest_fixtures.component.domain',
'pytest_fixtures.component.discovery',
'pytest_fixtures.component.host',
'pytest_fixtures.component.hostgroup',
'pytest_fixtures.component.http_proxy',
Expand Down
31 changes: 31 additions & 0 deletions pytest_fixtures/component/discovery.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
from fauxfactory import gen_string
import pytest


@pytest.fixture(scope='module')
def module_discovery_hostgroup(module_org, module_location, module_target_sat):
host = module_target_sat.api.Host(organization=module_org, location=module_location).create()
return module_target_sat.api.HostGroup(
organization=[module_org],
location=[module_location],
medium=host.medium,
root_pass=gen_string('alpha'),
operatingsystem=host.operatingsystem,
ptable=host.ptable,
domain=host.domain,
architecture=host.architecture,
).create()


@pytest.fixture(scope='module')
def discovery_org(module_org, module_target_sat):
discovery_org = module_target_sat.update_setting('discovery_organization', module_org.name)
yield module_org
module_target_sat.update_setting('discovery_organization', discovery_org)


@pytest.fixture(scope='module')
def discovery_location(module_location, module_target_sat):
discovery_loc = module_target_sat.update_setting('discovery_location', module_location.name)
yield module_location
module_target_sat.update_setting('discovery_location', discovery_loc)
71 changes: 57 additions & 14 deletions tests/foreman/api/test_discoveredhost.py
Original file line number Diff line number Diff line change
Expand Up @@ -247,8 +247,6 @@ def test_positive_provision_pxe_less_host(

:expectedresults: Host should be provisioned successfully

:CaseAutomation: NotAutomated

:CaseImportance: Critical
"""
sat = module_discovery_sat.sat
Expand All @@ -274,9 +272,10 @@ def test_positive_provision_pxe_less_host(
assert not sat.api.Host().search(query={"search": f'name={host.name}'})
pxeless_discovery_host.blank = True

@pytest.mark.stubbed
@pytest.mark.tier3
def test_positive_auto_provision_pxe_host(self):
def test_positive_auto_provision_pxe_host(
self, module_discovery_hostgroup, module_target_sat, discovery_org, discovery_location
):
"""Auto provision a pxe-based host by executing discovery rules

:id: c93fd7c9-41ef-4eb5-8042-f72e87e67e10
Expand All @@ -290,14 +289,24 @@ def test_positive_auto_provision_pxe_host(self):

:expectedresults: Selected Host should be auto-provisioned successfully

:CaseAutomation: Automated

:CaseImportance: Critical
"""
discovered_host = module_target_sat.api_factory.create_discovered_host()

rule = module_target_sat.api.DiscoveryRule(
max_count=1,
hostgroup=module_discovery_hostgroup,
search_=f'name = {discovered_host["name"]}',
location=[discovery_location],
organization=[discovery_org],
).create()
result = module_target_sat.api.DiscoveredHost(id=discovered_host['id']).auto_provision()
assert f'provisioned with rule {rule.name}' in result['message']

@pytest.mark.stubbed
@pytest.mark.tier3
def test_positive_auto_provision_all(self):
def test_positive_auto_provision_all(
self, module_discovery_hostgroup, module_target_sat, discovery_org, discovery_location
):
"""Auto provision all host by executing discovery rules

:id: 954d3688-62d9-47f7-9106-a4fff8825ffa
Expand All @@ -314,6 +323,19 @@ def test_positive_auto_provision_all(self):

:CaseImportance: High
"""
module_target_sat.api.DiscoveryRule(
max_count=25,
hostgroup=module_discovery_hostgroup,
search_=f'location = "{discovery_location.name}"',
location=[discovery_location],
organization=[discovery_org],
).create()

for _ in range(2):
module_target_sat.api_factory.create_discovered_host()

result = module_target_sat.api.DiscoveredHost().auto_provision_all()
assert '2 discovered hosts were provisioned' in result['message']

@pytest.mark.stubbed
@pytest.mark.tier3
Expand All @@ -337,9 +359,19 @@ def test_positive_refresh_facts_pxe_host(self):
:CaseImportance: High
"""

@pytest.mark.stubbed
@pytest.mark.on_premises_provisioning
@pytest.mark.parametrize('module_provisioning_sat', ['discovery'], indirect=True)
@pytest.mark.parametrize('pxe_loader', ['bios', 'uefi'], indirect=True)
@pytest.mark.rhel_ver_match('9')
@pytest.mark.tier3
def test_positive_reboot_pxe_host(self):
def test_positive_reboot_pxe_host(
self,
module_provisioning_rhel_content,
module_discovery_sat,
provisioning_host,
provisioning_hostgroup,
pxe_loader,
):
"""Rebooting a pxe based discovered host

:id: 69c807f8-5646-4aa6-8b3c-5ecab69560fc
Expand All @@ -352,10 +384,23 @@ def test_positive_reboot_pxe_host(self):

:expectedresults: Selected host should be rebooted successfully

:CaseAutomation: Automated

:CaseImportance: Medium
"""
sat = module_discovery_sat.sat
provisioning_host.power_control(ensure=False)
mac = provisioning_host._broker_args['provisioning_nic_mac_addr']
wait_for(
lambda: sat.api.DiscoveredHost().search(query={'mac': mac}) != [],
timeout=240,
delay=20,
)
discovered_host = sat.api.DiscoveredHost().search(query={'mac': mac})[0]
discovered_host.hostgroup = provisioning_hostgroup
discovered_host.location = provisioning_hostgroup.location[0]
discovered_host.organization = provisioning_hostgroup.organization[0]
discovered_host.build = True
result = sat.api.DiscoveredHost(id=discovered_host.id).reboot()
assert 'Unable to perform reboot' not in result
adarshdubey-star marked this conversation as resolved.
Show resolved Hide resolved

@pytest.mark.stubbed
@pytest.mark.tier3
Expand All @@ -381,8 +426,6 @@ def test_positive_reboot_all_pxe_hosts(self):
class TestFakeDiscoveryTests:
"""Tests that use fake discovered host.

:CaseAutomation: Automated

:CaseImportance: High
"""

Expand Down
4 changes: 1 addition & 3 deletions tests/foreman/api/test_repositories.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,7 @@
from robottelo import constants
from robottelo.cli.base import CLIReturnCodeError
from robottelo.config import settings
from robottelo.constants import DEFAULT_ARCHITECTURE
from robottelo.constants import MIRRORING_POLICIES
from robottelo.constants import REPOS
from robottelo.constants import DEFAULT_ARCHITECTURE, MIRRORING_POLICIES, REPOS
from robottelo.utils.datafactory import parametrized


Expand Down
Loading