From 0626d0d379f33568925962dd30187a61dd355ea4 Mon Sep 17 00:00:00 2001 From: dosas Date: Mon, 6 May 2024 12:10:57 +0200 Subject: [PATCH] Make default_os name and major versions configurable (#14670) also enable searching for os names other than redhat os (cherry picked from commit 56441e096da498084b3831ac72c98faeb363a5a1) --- conf/supportability.yaml | 1 + pytest_fixtures/component/os.py | 33 +++++++++++++++++---------------- robottelo/config/validators.py | 5 ++++- 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/conf/supportability.yaml b/conf/supportability.yaml index 5e6c6680895..81fab5824f9 100644 --- a/conf/supportability.yaml +++ b/conf/supportability.yaml @@ -1,4 +1,5 @@ supportability: content_hosts: + default_os_name: "RedHat" rhel: versions: [6, 7,'7_fips', 8, '8_fips', 9, '9_fips'] diff --git a/pytest_fixtures/component/os.py b/pytest_fixtures/component/os.py index 0c94baa09ce..82a62269955 100644 --- a/pytest_fixtures/component/os.py +++ b/pytest_fixtures/component/os.py @@ -2,31 +2,34 @@ 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 - - Indirect parametrization should pass an operating system version string like 'RHEL 7.9' - Default operating system will find the first RHEL6 or RHEL7 entity - """ - os = getattr(request, 'param', None) - if os is None: - search_string = 'name="RedHat" AND (major="6" OR major="7" OR major="8")' - 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() + """Returns an Operating System entity read from searching for supportability.content_host.default_os_name""" + search_string = f'name="{settings.supportability.content_hosts.default_os_name}"' + + 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') @@ -36,8 +39,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 diff --git a/robottelo/config/validators.py b/robottelo/config/validators.py index 1a6a6d7f4aa..a47dba2e211 100644 --- a/robottelo/config/validators.py +++ b/robottelo/config/validators.py @@ -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=''),