From e931cfa0a57a1aeadc3ace2d273c6cfdc31e4c99 Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Fri, 20 Apr 2018 10:12:01 -0700 Subject: [PATCH] Test FreeIPA upgrade on updates This adds the FreeIPA server and client upgrade tests to a new updates-server-upgrade flavor which fedora_openqa will schedule for updates. This way, we can test whether updates break FreeIPA upgrades, which is a request the FreeIPA team made to me. This has been deployed on staging for the last week or so and appears to work fine. Signed-off-by: Adam Williamson --- lib/utils.pm | 53 ++++++++++++++++++++++------------------ templates | 6 ++--- templates-updates | 62 ++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 94 insertions(+), 27 deletions(-) diff --git a/lib/utils.pm b/lib/utils.pm index 79a8fee2..8a4c6944 100644 --- a/lib/utils.pm +++ b/lib/utils.pm @@ -345,6 +345,28 @@ sub _repo_setup_compose { script_run "cat /etc/yum.repos.d/{fedora,fedora-rawhide,fedora-modular,fedora-rawhide-modular}.repo", 0; } +sub _repo_setup_updates_development { + # Fix URL for fedora.repo if this is a development release + # This is rather icky, but I can't think of any better way + # The problem is that the 'baseurl' line in fedora.repo is + # always left as the correct URL for a *stable* release, we + # don't change it to the URL for a Branched release while the + # release is Branched, as it's too much annoying package work + assert_script_run "sed -i -e 's,/releases/,/development/,g' /etc/yum.repos.d/fedora.repo"; + # Disable updates-testing so other bad updates don't break us + assert_script_run "dnf config-manager --set-disabled updates-testing"; + # https://pagure.io/fedora-repos/issue/70 + # this is the easiest workaround, it's not wrong as the repo + # is empty for branched anyway + assert_script_run "dnf config-manager --set-disabled updates"; + # same for Modular, if appropriate + unless (script_run 'test -f /etc/yum.repos.d/fedora-updates-modular.repo') { + assert_script_run "sed -i -e 's,/releases/,/development/,g' /etc/yum.repos.d/fedora-modular.repo"; + assert_script_run "dnf config-manager --set-disabled updates-testing-modular"; + assert_script_run "dnf config-manager --set-disabled updates-modular"; + } +} + sub _repo_setup_updates { # Appropriate repo setup steps for testing a Bodhi update # Check if we already ran, bail if so @@ -360,27 +382,9 @@ sub _repo_setup_updates { # to download.fedoraproject.org/pub/fedora-secondary/... script_run "sed -i -e 's,/pub/fedora/linux/,/pub/fedora-secondary/,g' /etc/yum.repos.d/fedora*.repo", 0; } - if (get_var("DEVELOPMENT")) { - # Fix URL for fedora.repo if this is a development release - # This is rather icky, but I can't think of any better way - # The problem is that the 'baseurl' line in fedora.repo is - # always left as the correct URL for a *stable* release, we - # don't change it to the URL for a Branched release while the - # release is Branched, as it's too much annoying package work - assert_script_run "sed -i -e 's,/releases/,/development/,g' /etc/yum.repos.d/fedora.repo"; - # Disable updates-testing so other bad updates don't break us - assert_script_run "dnf config-manager --set-disabled updates-testing"; - # https://pagure.io/fedora-repos/issue/70 - # this is the easiest workaround, it's not wrong as the repo - # is empty for branched anyway - assert_script_run "dnf config-manager --set-disabled updates"; - # same for Modular, if appropriate - unless (script_run 'test -f /etc/yum.repos.d/fedora-updates-modular.repo') { - assert_script_run "sed -i -e 's,/releases/,/development/,g' /etc/yum.repos.d/fedora-modular.repo"; - assert_script_run "dnf config-manager --set-disabled updates-testing-modular"; - assert_script_run "dnf config-manager --set-disabled updates-modular"; - } - } + # for non-upgrade tests, we want to do the 'development' changes + # *before* we set up the update repo... + _repo_setup_updates_development if (get_var("DEVELOPMENT") &! get_var("UPGRADE")); # Set up an additional repo containing the update packages. We do # this rather than simply running a one-time update because it may # be the case that a package from the update isn't installed *now* @@ -404,6 +408,9 @@ sub _repo_setup_updates { assert_script_run "git clone https://github.com/fedora-infra/python-fedora.git"; assert_script_run "PYTHONPATH=python-fedora/ bodhi -D " . get_var("ADVISORY"), 600; } + # for upgrade tests, we want to do the 'development' changes *after* + # we set up the update repo + _repo_setup_updates_development if (get_var("DEVELOPMENT") && get_var("UPGRADE")); # log the exact packages in the update at test time, with their # source packages and epochs. log is uploaded by _advisory_update # and used for later comparison by _advisory_post @@ -412,8 +419,8 @@ sub _repo_setup_updates { assert_script_run "createrepo ."; # write a repo config file assert_script_run 'printf "[advisory]\nname=Advisory repo\nbaseurl=file:///opt/update_repo\nenabled=1\nmetadata_expire=3600\ngpgcheck=0" > /etc/yum.repos.d/advisory.repo'; - # run an update now - script_run "dnf -y update", 600; + # run an update now (except for upgrade tests) + script_run "dnf -y update", 600 unless (get_var("UPGRADE")); } sub repo_setup { diff --git a/templates b/templates index 3e4d0d4e..725712aa 100755 --- a/templates +++ b/templates @@ -4849,7 +4849,7 @@ name => "upgrade_server_domain_controller", settings => [ { key => "ROOT_PASSWORD", value => "weakpassword" }, - { key => "HDD_1", value => "disk_f%CURRREL%_server_3_x86_64.img" }, + { key => "+HDD_1", value => "disk_f%CURRREL%_server_3_x86_64.img" }, { key => "UPGRADE", value => "1" }, { key => "TEST_TARGET", value => "COMPOSE" }, { key => "PREUPGRADE", value => "role_deploy_domain_controller" }, @@ -4867,7 +4867,7 @@ name => "upgrade_realmd_client", settings => [ { key => "ROOT_PASSWORD", value => "weakpassword" }, - { key => "HDD_1", value => "disk_f%CURRREL%_server_3_x86_64.img" }, + { key => "+HDD_1", value => "disk_f%CURRREL%_server_3_x86_64.img" }, { key => "UPGRADE", value => "1" }, { key => "TEST_TARGET", value => "COMPOSE" }, { key => "PREUPGRADE", value => "realmd_join_sssd" }, @@ -4889,7 +4889,7 @@ { key => "USER_LOGIN", value => "test" }, { key => "USER_PASSWORD", value => "weakpassword" }, { key => "BOOTFROM", value => "c" }, - { key => "HDD_1", value => "disk_f%CURRREL%_kde_3_x86_64.img" }, + { key => "+HDD_1", value => "disk_f%CURRREL%_kde_3_x86_64.img" }, { key => "UPGRADE", value => "1" }, { key => "DESKTOP", value => "kde" }, { key => "TEST_TARGET", value => "COMPOSE" }, diff --git a/templates-updates b/templates-updates index 73ba0444..cade61c9 100755 --- a/templates-updates +++ b/templates-updates @@ -282,6 +282,30 @@ }, test_suite => { name => "realmd_join_sssd" }, }, + { + group_name => "Fedora Updates", + machine => { name => "64bit" }, + prio => 40, + product => { + arch => "x86_64", + distri => "fedora", + flavor => "updates-server-upgrade", + version => "*", + }, + test_suite => { name => "upgrade_server_domain_controller" }, + }, + { + group_name => "Fedora Updates", + machine => { name => "64bit" }, + prio => 30, + product => { + arch => "x86_64", + distri => "fedora", + flavor => "updates-server-upgrade", + version => "*", + }, + test_suite => { name => "upgrade_realmd_client" }, + }, { group_name => "Fedora Updates", machine => { name => "64bit" }, @@ -781,6 +805,15 @@ ], version => "*", }, + { + arch => "x86_64", + distri => "fedora", + flavor => "updates-server-upgrade", + name => "", + settings => [ + ], + version => "*", + }, { arch => "ppc64le", distri => "fedora", @@ -790,6 +823,15 @@ ], version => "*", }, + { + arch => "ppc64le", + distri => "fedora", + flavor => "updates-server-upgrade", + name => "", + settings => [ + ], + version => "*", + }, { arch => "ppc64", distri => "fedora", @@ -799,7 +841,16 @@ ], version => "*", }, - { + { + arch => "ppc64", + distri => "fedora", + flavor => "updates-server-upgrade", + name => "", + settings => [ + ], + version => "*", + }, + { arch => "aarch64", distri => "fedora", flavor => "updates-server", @@ -808,5 +859,14 @@ ], version => "*", }, + { + arch => "aarch64", + distri => "fedora", + flavor => "updates-server-upgrade", + name => "", + settings => [ + ], + version => "*", + }, ], }