Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package openQA for openSUSE:Factory checked in at 2025-02-07 23:04:16 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openQA (Old) and /work/SRC/openSUSE:Factory/.openQA.new.2316 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openQA" Fri Feb 7 23:04:16 2025 rev:669 rq:1244010 version:4.6.1738861231.e206546d Changes: -------- --- /work/SRC/openSUSE:Factory/openQA/openQA.changes 2025-02-06 22:08:16.901179015 +0100 +++ /work/SRC/openSUSE:Factory/.openQA.new.2316/openQA.changes 2025-02-07 23:10:01.961955539 +0100 @@ -1,0 +2,8 @@ +Thu Feb 06 21:13:03 UTC 2025 - ok...@suse.com + +- Update to version 4.6.1738861231.e206546d: + * Update default config with OAuth2 new "id_from" option + * Support OpenID Connect better in the OAuth2 'custom' provider + * Add SYNC_ASSETS_HOOK support + +------------------------------------------------------------------- Old: ---- openQA-4.6.1738778990.12e43905.obscpio New: ---- openQA-4.6.1738861231.e206546d.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openQA-client-test.spec ++++++ --- /var/tmp/diff_new_pack.XbCqrR/_old 2025-02-07 23:10:02.997998179 +0100 +++ /var/tmp/diff_new_pack.XbCqrR/_new 2025-02-07 23:10:03.001998343 +0100 @@ -18,7 +18,7 @@ %define short_name openQA-client Name: %{short_name}-test -Version: 4.6.1738778990.12e43905 +Version: 4.6.1738861231.e206546d Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-devel-test.spec ++++++ --- /var/tmp/diff_new_pack.XbCqrR/_old 2025-02-07 23:10:03.025999331 +0100 +++ /var/tmp/diff_new_pack.XbCqrR/_new 2025-02-07 23:10:03.025999331 +0100 @@ -18,7 +18,7 @@ %define short_name openQA-devel Name: %{short_name}-test -Version: 4.6.1738778990.12e43905 +Version: 4.6.1738861231.e206546d Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-test.spec ++++++ --- /var/tmp/diff_new_pack.XbCqrR/_old 2025-02-07 23:10:03.054000484 +0100 +++ /var/tmp/diff_new_pack.XbCqrR/_new 2025-02-07 23:10:03.054000484 +0100 @@ -18,7 +18,7 @@ %define short_name openQA Name: %{short_name}-test -Version: 4.6.1738778990.12e43905 +Version: 4.6.1738861231.e206546d Release: 0 Summary: Test package for openQA License: GPL-2.0-or-later ++++++ openQA-worker-test.spec ++++++ --- /var/tmp/diff_new_pack.XbCqrR/_old 2025-02-07 23:10:03.078001471 +0100 +++ /var/tmp/diff_new_pack.XbCqrR/_new 2025-02-07 23:10:03.082001636 +0100 @@ -18,7 +18,7 @@ %define short_name openQA-worker Name: %{short_name}-test -Version: 4.6.1738778990.12e43905 +Version: 4.6.1738861231.e206546d Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA.spec ++++++ --- /var/tmp/diff_new_pack.XbCqrR/_old 2025-02-07 23:10:03.106002624 +0100 +++ /var/tmp/diff_new_pack.XbCqrR/_new 2025-02-07 23:10:03.110002788 +0100 @@ -90,7 +90,7 @@ %define devel_requires %devel_no_selenium_requires chromedriver Name: openQA -Version: 4.6.1738778990.12e43905 +Version: 4.6.1738861231.e206546d Release: 0 Summary: The openQA web-frontend, scheduler and tools License: GPL-2.0-or-later ++++++ openQA-4.6.1738778990.12e43905.obscpio -> openQA-4.6.1738861231.e206546d.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-4.6.1738778990.12e43905/docs/Installing.asciidoc new/openQA-4.6.1738861231.e206546d/docs/Installing.asciidoc --- old/openQA-4.6.1738778990.12e43905/docs/Installing.asciidoc 2025-02-05 19:09:50.000000000 +0100 +++ new/openQA-4.6.1738861231.e206546d/docs/Installing.asciidoc 2025-02-06 18:00:31.000000000 +0100 @@ -1049,6 +1049,27 @@ systemctl enable --now rsyncd -------------------------------------------------------------------------------- +=== Alternative caching implementations + +Caching described above works well for a single worker host, but in case of +several hosts in a single site (that is remote from the main openQA webui +instance) it results in downloading the same assets several times. In +such case, one can setup local cache on their own (without using +openqa-worker-cacheservice service) and share it with workers using +some network filesystem (see <<Installing.asciidoc#Configuring remote workers>> +section above). +Such setups can use `SYNC_ASSETS_HOOK` in `/etc/openqa/workers.ini` to ensure +the cache is up to date before starting the job (or resuming test in developer +mode). The setting takes a shell command that is executed just before +evaluating assets. It is up to the system administrator to decide what it +should do, but there are few suggestions: + +* Call rsync, possibly via ssh on the cache host +* Wait for a lock file signaling that cache download is in progress to disappear + +If the command exits with code 32, re-downloading needles in developer mode +will be skipped. + === Enable linking files referred by job settings Specific job settings might refer to files within the test distribution. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-4.6.1738778990.12e43905/etc/openqa/openqa.ini new/openQA-4.6.1738861231.e206546d/etc/openqa/openqa.ini --- old/openQA-4.6.1738778990.12e43905/etc/openqa/openqa.ini 2025-02-05 19:09:50.000000000 +0100 +++ new/openQA-4.6.1738861231.e206546d/etc/openqa/openqa.ini 2025-02-06 18:00:31.000000000 +0100 @@ -148,7 +148,11 @@ #user_url = https://salsa.debian.org/api/v4/user #token_scope = read_user #token_label = Bearer +#id_from = id #nickname_from = username +# +# The default value for `id_from` is "id" for backwards compatibility. +# For OpenID Connect, the value should be "sub", following the OpenID Connect ID Token standard. [logging] ## logging is to stderr (so systemd journal) by default diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-4.6.1738778990.12e43905/lib/OpenQA/Setup.pm new/openQA-4.6.1738861231.e206546d/lib/OpenQA/Setup.pm --- old/openQA-4.6.1738778990.12e43905/lib/OpenQA/Setup.pm 2025-02-05 19:09:50.000000000 +0100 +++ new/openQA-4.6.1738861231.e206546d/lib/OpenQA/Setup.pm 2025-02-06 18:00:31.000000000 +0100 @@ -96,6 +96,7 @@ token_label => '', nickname_from => '', unique_name => '', + id_from => 'id', }, hypnotoad => { listen => ['http://localhost:9526/'], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-4.6.1738778990.12e43905/lib/OpenQA/WebAPI/Auth/OAuth2.pm new/openQA-4.6.1738861231.e206546d/lib/OpenQA/WebAPI/Auth/OAuth2.pm --- old/openQA-4.6.1738778990.12e43905/lib/OpenQA/WebAPI/Auth/OAuth2.pm 2025-02-05 19:09:50.000000000 +0100 +++ new/openQA-4.6.1738861231.e206546d/lib/OpenQA/WebAPI/Auth/OAuth2.pm 2025-02-06 18:00:31.000000000 +0100 @@ -44,6 +44,7 @@ user_url => $config->{user_url}, token_scope => $config->{token_scope}, token_label => $config->{token_label}, + id_from => $config->{id_from}, nickname_from => $config->{nickname_from}, unique_name => $config->{unique_name}, }, @@ -69,16 +70,18 @@ return $controller->render(text => $msg, status => 403); # return always 403 for consistency } my $details = $tx->res->json; - if (ref $details ne 'HASH' || !$details->{id} || !$details->{$provider_config->{nickname_from}}) { + my $id_field = $provider_config->{id_from}; + my $nickname_field = $provider_config->{nickname_from}; + if (ref $details ne 'HASH' || !$details->{$id_field} || !$details->{$nickname_field}) { log_debug('OAuth2 user provider returned: ' . dumper($details)); return $controller->render(text => 'User data returned by OAuth2 provider is insufficient', status => 403); } my $provider_name = $main_config->{provider}; $provider_name = $provider_config->{unique_name} || $provider_name if $provider_name eq 'custom'; my $user = $controller->schema->resultset('Users')->create_user( - $details->{id}, + $details->{$id_field}, provider => "oauth2\@$provider_name", - nickname => $details->{$provider_config->{nickname_from}}, + nickname => $details->{$nickname_field}, fullname => $details->{name}, email => $details->{email}); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-4.6.1738778990.12e43905/lib/OpenQA/Worker/Engines/isotovideo.pm new/openQA-4.6.1738861231.e206546d/lib/OpenQA/Worker/Engines/isotovideo.pm --- old/openQA-4.6.1738778990.12e43905/lib/OpenQA/Worker/Engines/isotovideo.pm 2025-02-05 19:09:50.000000000 +0100 +++ new/openQA-4.6.1738861231.e206546d/lib/OpenQA/Worker/Engines/isotovideo.pm 2025-02-06 18:00:31.000000000 +0100 @@ -326,6 +326,12 @@ log_debug "Job settings:\n" . format_settings(\%vars); + # start pre-job hook if any + if ($job_settings->{SYNC_ASSETS_HOOK}) { + log_debug 'Running SYNC_ASSETS_HOOK'; + system($job_settings->{SYNC_ASSETS_HOOK}); + } + # cache/locate assets, set ASSETDIR my $assetkeys = detect_asset_keys(\%vars); if (my $cache_dir = $global_settings->{CACHEDIRECTORY}) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-4.6.1738778990.12e43905/t/03-auth.t new/openQA-4.6.1738861231.e206546d/t/03-auth.t --- old/openQA-4.6.1738778990.12e43905/t/03-auth.t 2025-02-05 19:09:50.000000000 +0100 +++ new/openQA-4.6.1738861231.e206546d/t/03-auth.t 2025-02-06 18:00:31.000000000 +0100 @@ -116,7 +116,7 @@ $ua_mock->redefine(get => sub { shift; push @get_args, [@_]; $get_tx }); my %main_cfg = (provider => 'custom'); - my %provider_cfg = (user_url => 'http://does-not-exist', token_label => 'bar', nickname_from => 'login'); + my %provider_cfg = (user_url => 'http://does-not-exist', token_label => 'bar', id_from => 'id', nickname_from => 'login'); my %data = (access_token => 'some-token'); my %expected_user = (username => 42, provider => 'oauth2@custom', nickname => 'Demo'); my $users = $t->app->schema->resultset('Users'); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-4.6.1738778990.12e43905/t/24-worker-engine.t new/openQA-4.6.1738861231.e206546d/t/24-worker-engine.t --- old/openQA-4.6.1738778990.12e43905/t/24-worker-engine.t 2025-02-05 19:09:50.000000000 +0100 +++ new/openQA-4.6.1738861231.e206546d/t/24-worker-engine.t 2025-02-06 18:00:31.000000000 +0100 @@ -27,6 +27,7 @@ use Mojo::File qw(path tempdir); use Mojo::JSON 'decode_json'; use OpenQA::Utils qw(testcasedir productdir needledir locate_asset base_host); +use Cwd qw(getcwd); # define fake packages for testing asset caching { @@ -511,14 +512,18 @@ }; subtest 'link asset' => sub { + my $cwd = getcwd; my $pool_directory = tempdir('poolXXXX'); my $worker = OpenQA::Test::FakeWorker->new(pool_directory => $pool_directory); my $client = Test::FakeClient->new; + # just in case cleanup the symlink to really check if it gets re-created + unlink 't/data/openqa/share/factory/hdd/symlink.qcow2' if -e 't/data/openqa/share/factory/hdd/symlink.qcow2'; my $settings = { JOBTOKEN => 'token000', ISO => 'openSUSE-13.1-DVD-x86_64-Build0091-Media.iso', HDD_1 => 'foo.qcow2', HDD_2 => 'symlink.qcow2', + SYNC_ASSETS_HOOK => "ln -s foo.qcow2 $cwd/t/data/openqa/share/factory/hdd/symlink.qcow2" }; my $job = OpenQA::Worker::Job->new($worker, $client, {id => 16, settings => $settings}); combined_like { my $result = _run_engine($job) } @@ -537,6 +542,7 @@ is $vars_data->{ISO}, 'openSUSE-13.1-DVD-x86_64-Build0091-Media.iso', 'the value of ISO is basename when doing link'; is $vars_data->{HDD_1}, 'foo.qcow2', 'the value of HDD_1 is basename when doing link'; + unlink 't/data/openqa/share/factory/hdd/symlink.qcow2'; }; subtest 'using cgroupv2' => sub { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-4.6.1738778990.12e43905/t/config.t new/openQA-4.6.1738861231.e206546d/t/config.t --- old/openQA-4.6.1738778990.12e43905/t/config.t 2025-02-05 19:09:50.000000000 +0100 +++ new/openQA-4.6.1738861231.e206546d/t/config.t 2025-02-06 18:00:31.000000000 +0100 @@ -87,6 +87,7 @@ user_url => '', token_scope => '', token_label => '', + id_from => 'id', nickname_from => '', unique_name => '', }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-4.6.1738778990.12e43905/t/data/openqa/share/factory/hdd/symlink.qcow2 new/openQA-4.6.1738861231.e206546d/t/data/openqa/share/factory/hdd/symlink.qcow2 --- old/openQA-4.6.1738778990.12e43905/t/data/openqa/share/factory/hdd/symlink.qcow2 2025-02-07 23:10:03.678026165 +0100 +++ new/openQA-4.6.1738861231.e206546d/t/data/openqa/share/factory/hdd/symlink.qcow2 1970-01-01 01:00:00.000000000 +0100 @@ -1 +0,0 @@ -symbolic link to foo.qcow2 ++++++ openQA.obsinfo ++++++ --- /var/tmp/diff_new_pack.XbCqrR/_old 2025-02-07 23:10:14.978491247 +0100 +++ /var/tmp/diff_new_pack.XbCqrR/_new 2025-02-07 23:10:14.982491411 +0100 @@ -1,5 +1,5 @@ name: openQA -version: 4.6.1738778990.12e43905 -mtime: 1738778990 -commit: 12e4390545baed290ba52c681489cf42cf39ab5f +version: 4.6.1738861231.e206546d +mtime: 1738861231 +commit: e206546d4dd50fb5de9f801d1e155af03467b5ce