diff --git a/pytest_fixtures/core/sat_cap_factory.py b/pytest_fixtures/core/sat_cap_factory.py index 436d8b6d443..5ced39e6c25 100644 --- a/pytest_fixtures/core/sat_cap_factory.py +++ b/pytest_fixtures/core/sat_cap_factory.py @@ -277,7 +277,7 @@ def module_sat_ready_rhels(request): @pytest.fixture def cap_ready_rhel(): - rhel_version = Version(settings.capsule.version.release) + rhel_version = Version(settings.capsule.version.rhel_version) deploy_args = { 'deploy_rhel_version': rhel_version.base_version, 'deploy_flavor': settings.flavors.default, diff --git a/robottelo/hosts.py b/robottelo/hosts.py index b4e4fdcc0cd..0abe5f93b12 100644 --- a/robottelo/hosts.py +++ b/robottelo/hosts.py @@ -108,7 +108,9 @@ def get_sat_rhel_version(): return Version(rhel_version) -def setup_capsule(satellite, capsule, org, registration_args=None, installation_args=None): +def setup_capsule( + satellite, capsule, org, registration_args=None, installation_args=None, enable_fapolicyd=False +): """Given satellite and capsule instances, run the commands needed to set up the capsule Note: This does not perform content setup actions on the Satellite @@ -152,6 +154,9 @@ def setup_capsule(satellite, capsule, org, registration_args=None, installation_ ) capsule.install_katello_ca(satellite) capsule.register_contenthost(**registration_args) + if enable_fapolicyd: + capsule.execute('dnf -y install fapolicyd && systemctl enable --now fapolicyd').status == 0 + capsule.execute('rpm -q foreman-proxy-fapolicyd').status == 0 return capsule.install(cmd_args) diff --git a/tests/foreman/installer/test_installer.py b/tests/foreman/installer/test_installer.py index c8268fd3882..a24d0e25808 100644 --- a/tests/foreman/installer/test_installer.py +++ b/tests/foreman/installer/test_installer.py @@ -1343,11 +1343,14 @@ def common_sat_install_assertions(satellite): result = satellite.execute(r'grep -iR "error" /var/log/candlepin/*') assert len(result.stdout) == 0 + httpd_log = satellite.execute('journalctl --unit=httpd') + assert "WARNING" not in httpd_log.stdout + result = satellite.cli.Health.check() assert 'FAIL' not in result.stdout -def install_satellite(satellite, installer_args): +def install_satellite(satellite, installer_args, enable_fapolicyd=False): # Register for RHEL8 repos, get Ohsnap repofile, and enable and download satellite satellite.register_to_cdn() satellite.download_repofile( @@ -1355,6 +1358,12 @@ def install_satellite(satellite, installer_args): release=settings.server.version.release, snap=settings.server.version.snap, ) + if enable_fapolicyd: + satellite.execute( + 'dnf -y install fapolicyd && systemctl enable --now fapolicyd' + ).status == 0 + satellite.execute('rpm -q foreman-fapolicyd').status == 0 + satellite.execute('rpm -q foreman-proxy-fapolicyd').status == 0 satellite.execute('dnf -y module enable satellite:el8 && dnf -y install satellite') # Configure Satellite firewall to open communication satellite.execute( @@ -1368,36 +1377,48 @@ def install_satellite(satellite, installer_args): @pytest.fixture(scope='module') -def sat_default_install(module_sat_ready_rhels): +def sat_default_install(request, module_sat_ready_rhels): """Install Satellite with default options""" + enable_fapolicyd = False + if hasattr(request, 'param'): + enable_fapolicyd = request.param installer_args = [ 'scenario satellite', f'foreman-initial-admin-password {settings.server.admin_password}', ] - install_satellite(module_sat_ready_rhels[0], installer_args) - yield module_sat_ready_rhels[0] + install_satellite(module_sat_ready_rhels[0], installer_args, enable_fapolicyd=enable_fapolicyd) + yield module_sat_ready_rhels[0], enable_fapolicyd common_sat_install_assertions(module_sat_ready_rhels[0]) @pytest.fixture(scope='module') -def sat_non_default_install(module_sat_ready_rhels): +def sat_non_default_install(request, module_sat_ready_rhels): """Install Satellite with various options""" + enable_fapolicyd = False + if hasattr(request, 'param'): + enable_fapolicyd = request.param installer_args = [ 'scenario satellite', f'foreman-initial-admin-password {settings.server.admin_password}', 'foreman-rails-cache-store type:file', 'foreman-proxy-content-pulpcore-hide-guarded-distributions false', ] - install_satellite(module_sat_ready_rhels[1], installer_args) - yield module_sat_ready_rhels[1] + install_satellite(module_sat_ready_rhels[1], installer_args, enable_fapolicyd=enable_fapolicyd) + yield module_sat_ready_rhels[1], enable_fapolicyd common_sat_install_assertions(module_sat_ready_rhels[1]) @pytest.mark.e2e @pytest.mark.tier1 @pytest.mark.pit_client +@pytest.mark.parametrize( + "sat_default_install", + [True, False], + indirect=True, + ids=['fapolicyd_enabled', 'fapolicyd_disabled'], +) def test_capsule_installation(sat_default_install, cap_ready_rhel, default_org): - """Run a basic Capsule installation + """Run a basic Capsule installation w/ and w/o fapolicyd :id: 64fa85b6-96e6-4fea-bea4-a30539d59e65 @@ -1414,6 +1435,7 @@ def test_capsule_installation(sat_default_install, cap_ready_rhel, default_org): :CaseImportance: Critical """ + sat_default_install, enable_fapolicyd = sat_default_install # Get Capsule repofile, and enable and download satellite-capsule cap_ready_rhel.register_to_cdn() cap_ready_rhel.download_repofile( @@ -1428,7 +1450,7 @@ def test_capsule_installation(sat_default_install, cap_ready_rhel, default_org): org = sat_default_install.api.Organization().search(query={'search': f'name="{DEFAULT_ORG}"'})[ 0 ] - setup_capsule(sat_default_install, cap_ready_rhel, org) + setup_capsule(sat_default_install, cap_ready_rhel, org, enable_fapolicyd=enable_fapolicyd) assert sat_default_install.api.Capsule().search( query={'search': f'name={cap_ready_rhel.hostname}'} )[0] @@ -1455,14 +1477,23 @@ def test_capsule_installation(sat_default_install, cap_ready_rhel, default_org): result = cap_ready_rhel.execute(r'grep -iR "error" /var/log/foreman-proxy/*') assert len(result.stdout) == 0 + httpd_log = cap_ready_rhel.execute('journalctl --unit=httpd') + assert "WARNING" not in httpd_log.stdout + result = cap_ready_rhel.cli.Health.check() assert 'FAIL' not in result.stdout @pytest.mark.e2e @pytest.mark.tier1 +@pytest.mark.parametrize( + "sat_non_default_install", + [True, False], + indirect=True, + ids=['fapolicyd_enabled', 'fapolicyd_disabled'], +) def test_foreman_rails_cache_store(sat_non_default_install): - """Test foreman-rails-cache-store option + """Test foreman-rails-cache-store option. Also tests installation w/ and w/o fapolicyd. :id: 379a2fe8-1085-4a7f-8ac3-24c421412f12 @@ -1475,8 +1506,9 @@ def test_foreman_rails_cache_store(sat_non_default_install): :customerscenario: true - :BZ: 2063717, 2165092 + :BZ: 2063717, 2165092, 2244370 """ + sat_non_default_install, enable_fapolicyd = sat_non_default_install # Verify foreman-rails-cache-store option works assert sat_non_default_install.execute('rpm -q foreman-redis').status == 1 settings_file = sat_non_default_install.load_remote_yaml_file(FOREMAN_SETTINGS_YML) @@ -1507,6 +1539,8 @@ def test_content_guarded_distributions_option( :BZ: 2063717, 2088559 """ + sat_non_default_install, enable_fapolicyd = sat_non_default_install + sat_default_install, enable_fapolicyd = sat_non_default_install # Verify that no content is listed on https://sat-fqdn/pulp/content/. result = requests.get(f'https://{sat_default_install.hostname}/pulp/content/', verify=False) assert 'Default_Organization' not in result.text