Skip to content

Commit

Permalink
Make default_os name and major versions configurable
Browse files Browse the repository at this point in the history
also enable searching for os names other than redhat os
  • Loading branch information
dosas committed Apr 16, 2024
1 parent ca8ab78 commit 9f12a7e
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 8 deletions.
1 change: 1 addition & 0 deletions conf/supportability.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
supportability:
content_hosts:
default_os_name: "RedHat"
rhel:
versions: [6, 7,'7_fips', 8, '8_fips', 9, '9_fips']
27 changes: 20 additions & 7 deletions pytest_fixtures/component/os.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,16 @@
from nailgun import entities
import pytest

from robottelo.config import settings


@pytest.fixture(scope='session')
def default_os(
default_architecture,
default_partitiontable,
default_pxetemplate,
request,
session_target_sat,
):
"""Returns an Operating System entity read from searching Redhat family
Expand All @@ -17,16 +20,28 @@ def default_os(
"""
os = getattr(request, 'param', None)
if os is None:
search_string = 'name="RedHat" AND (major="6" OR major="7" OR major="8")'
default_name = settings.supportability.content_hosts.default_os_name
default_major_versions = " OR ".join(
[f'major="{v}"' for v in settings.supportability.content_hosts.rhel.versions]
)
search_string = f'name="{default_name}" AND ({default_major_versions})'
else:
version = os.split(' ')[1].split('.')
search_string = f'family="Redhat" AND major="{version[0]}" AND minor="{version[1]}"'
os = entities.OperatingSystem().search(query={'search': search_string})[0].read()
name, version = os.split(' ')
version = version.split('.')
search_string = f'name="{name}" AND major="{version[0]}" AND minor="{version[1]}"'
try:
os = (
session_target_sat.api.OperatingSystem()
.search(query={'search': search_string})[0]
.read()
)
except IndexError as e:
raise RuntimeError(f"Could not find operating system for '{search_string}'") from e
os.architecture.append(default_architecture)
os.ptable.append(default_partitiontable)
os.provisioning_template.append(default_pxetemplate)
os.update(['architecture', 'ptable', 'provisioning_template'])
return entities.OperatingSystem(id=os.id).read()
return session_target_sat.api.OperatingSystem(id=os.id).read()


@pytest.fixture(scope='module')
Expand All @@ -36,8 +51,6 @@ def module_os():

@pytest.fixture(scope='module')
def os_path(default_os):
from robottelo.config import settings

# Check what OS was found to use correct media
if default_os.major == "6":
os_distr_url = settings.repos.rhel6_os
Expand Down
5 changes: 4 additions & 1 deletion robottelo/config/validators.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@

VALIDATORS = dict(
supportability=[
Validator('supportability.content_hosts.rhel.versions', must_exist=True, is_type_of=list)
Validator('supportability.content_hosts.rhel.versions', must_exist=True, is_type_of=list),
Validator(
'supportability.content_hosts.default_os_name', must_exist=True, default='RedHat'
),
],
server=[
Validator('server.hostname', default=''),
Expand Down

0 comments on commit 9f12a7e

Please sign in to comment.