From 5a2d67f581102dfde240bffef61720526cdcbcd9 Mon Sep 17 00:00:00 2001 From: dosas Date: Mon, 8 Apr 2024 11:47:14 +0200 Subject: [PATCH] Make default_os name and major versions configurable also enable searching for os names other than redhat os --- conf/supportability.yaml | 1 + pytest_fixtures/component/os.py | 33 ++++++++++++++++----------------- robottelo/config/validators.py | 5 ++++- 3 files changed, 21 insertions(+), 18 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 af64b0b0883..82a62269955 100644 --- a/pytest_fixtures/component/os.py +++ b/pytest_fixtures/component/os.py @@ -2,7 +2,7 @@ from nailgun import entities import pytest -from robottelo import constants +from robottelo.config import settings @pytest.fixture(scope='session') @@ -10,25 +10,26 @@ 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 = constants.DEFAULT_OS_SEARCH_QUERY - 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') @@ -38,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=''),