From 9e5eb909159174f51f32aefc70ff7120f6a06cc2 Mon Sep 17 00:00:00 2001 From: shwsingh Date: Thu, 15 Feb 2024 12:55:20 +0530 Subject: [PATCH] Test leapp upgrade with non-admin user BZ#2257302 --- tests/foreman/cli/test_leapp_client.py | 115 +++++++++++++++++++++++++ 1 file changed, 115 insertions(+) diff --git a/tests/foreman/cli/test_leapp_client.py b/tests/foreman/cli/test_leapp_client.py index 6ab248b0f92..4dc8acfc77a 100644 --- a/tests/foreman/cli/test_leapp_client.py +++ b/tests/foreman/cli/test_leapp_client.py @@ -12,6 +12,7 @@ """ from broker import Broker +from fauxfactory import gen_string import pytest from robottelo.config import settings @@ -286,3 +287,117 @@ def test_leapp_upgrade_rhel( custom_leapp_host.clean_cached_properties() new_ver = str(custom_leapp_host.os_version) assert new_ver == upgrade_path['target_version'] + + +@pytest.mark.parametrize( + 'upgrade_path', + [ + {'source_version': RHEL8_VER, 'target_version': RHEL9_VER}, + ], + ids=lambda upgrade_path: f'{upgrade_path["source_version"]}' + f'_to_{upgrade_path["target_version"]}', +) +def test_leapp_upgrade_rhel_non_admin( + module_target_sat, + module_sca_manifest_org, + default_location, + custom_leapp_host, + upgrade_path, + verify_target_repo_on_satellite, + precondition_check_upgrade_and_install_leapp_tool, +): + """Test to upgrade RHEL host to next major RHEL release using leapp preupgrade and leapp upgrade + job templates + + :id: afd295ca-4b0e-439f-b880-ae92c300fd9f + + :BZ: 2257302 + + :customerscenario: true + + :steps: + 1. Import a subscription manifest and enable, sync source & target repositories + 2. Create LCE, Create CV, add repositories to it, publish and promote CV, Create AK, etc. + 3. Register content host with AK + 4. Verify that target rhel repositories are enabled on Satellite + 5. Update all packages, install leapp tool and fix inhibitors + 6. Create a non-admin user with "Organization admin" role assigned to it. + 7. Run Leapp Preupgrade and Leapp Upgrade job template from the user created in step 6. + + :expectedresults: + 1. Update RHEL OS major version to another major version from non-admin user role. + """ + login = gen_string('alpha') + password = gen_string('alpha') + user = module_target_sat.cli_factory.user( + {'admin': False, 'login': login, 'password': password} + ) + module_target_sat.cli.User.add_role( + {'id': user['id'], 'login': login, 'role': 'Organization admin'} + ) + module_target_sat.cli.User.update( + { + 'id': user['id'], + 'organizations': module_sca_manifest_org.name, + } + ) + # user = module_target_sat.api.User(role="Organization Admin").create() + # Fixing known inhibitors for source rhel version 8 + if custom_leapp_host.os_version.major == 8: + # Inhibitor - Firewalld Configuration AllowZoneDrifting Is Unsupported + custom_leapp_host.run( + 'sed -i "s/^AllowZoneDrifting=.*/AllowZoneDrifting=no/" /etc/firewalld/firewalld.conf' + ) + # Run LEAPP-PREUPGRADE Job Template- + template_id = ( + module_target_sat.api.JobTemplate() + .search(query={'search': 'name="Run preupgrade via Leapp"'})[0] + .id + ) + job = module_target_sat.api.JobInvocation().run( + synchronous=False, + data={ + 'job_template_id': template_id, + 'targeting_type': 'static_query', + 'search_query': f'name = {custom_leapp_host.hostname}', + 'effective-user': f'{login}', + 'effective-user-password': f'{password}', + 'organization_id': module_sca_manifest_org.id, + }, + ) + module_target_sat.wait_for_tasks( + f'resource_type = JobInvocation and resource_id = {job["id"]}', poll_timeout=1800 + ) + result = module_target_sat.api.JobInvocation(id=job['id']).read() + assert result.succeeded == 1 + + # Run LEAPP-UPGRADE Job Template- + template_id = ( + module_target_sat.api.JobTemplate() + .search(query={'search': 'name="Run upgrade via Leapp"'})[0] + .id + ) + job = module_target_sat.api.JobInvocation().run( + synchronous=False, + data={ + 'job_template_id': template_id, + 'targeting_type': 'static_query', + 'search_query': f'name = {custom_leapp_host.hostname}', + 'effective-user': f'{login}', + 'effective-user-password': f'{password}', + 'organization_id': module_sca_manifest_org.id, + 'location_id': default_location.id, + 'inputs': {'Reboot': 'true'}, + }, + ) + module_target_sat.wait_for_tasks( + f'resource_type = JobInvocation and resource_id = {job["id"]}', poll_timeout=1800 + ) + result = module_target_sat.api.JobInvocation(id=job['id']).read() + assert result.succeeded == 1 + # Wait for the host to be rebooted and SSH daemon to be started. + custom_leapp_host.wait_for_connection() + + custom_leapp_host.clean_cached_properties() + new_ver = str(custom_leapp_host.os_version) + assert new_ver == upgrade_path['target_version']