Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package openQA for openSUSE:Factory checked in at 2026-01-22 15:14:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openQA (Old) and /work/SRC/openSUSE:Factory/.openQA.new.1928 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openQA" Thu Jan 22 15:14:07 2026 rev:798 rq:1328515 version:5.1768996386.e3f58202 Changes: -------- --- /work/SRC/openSUSE:Factory/openQA/openQA.changes 2026-01-21 14:17:29.287230592 +0100 +++ /work/SRC/openSUSE:Factory/.openQA.new.1928/openQA.changes 2026-01-22 15:16:09.023161657 +0100 @@ -2 +2 @@ -Tue Jan 20 20:12:31 UTC 2026 - [email protected] +Wed Jan 21 13:01:48 UTC 2026 - [email protected] @@ -4 +4,8 @@ -- Update to version 5.1768919350.40d92537: +- Update to version 5.1768996386.e3f58202: + * fix: Avoid Perl warning if product spec contains undef values + * GenericBug: Add [QE] to the subject + * doc: Mention version lookup of mediums and special value `*` + * doc: Wrap section about medium types consistently at 80 characters + * doc: Remove surplus white-space + * chore: Improve indentation/wrapping of comment + * feat: Improve error message when product contains no templates Old: ---- openQA-5.1768919350.40d92537.obscpio New: ---- openQA-5.1768996386.e3f58202.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openQA-client-test.spec ++++++ --- /var/tmp/diff_new_pack.MppEEs/_old 2026-01-22 15:16:11.963283929 +0100 +++ /var/tmp/diff_new_pack.MppEEs/_new 2026-01-22 15:16:11.963283929 +0100 @@ -18,7 +18,7 @@ %define short_name openQA-client Name: %{short_name}-test -Version: 5.1768919350.40d92537 +Version: 5.1768996386.e3f58202 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-devel-test.spec ++++++ --- /var/tmp/diff_new_pack.MppEEs/_old 2026-01-22 15:16:11.995285260 +0100 +++ /var/tmp/diff_new_pack.MppEEs/_new 2026-01-22 15:16:11.999285426 +0100 @@ -18,7 +18,7 @@ %define short_name openQA-devel Name: %{short_name}-test -Version: 5.1768919350.40d92537 +Version: 5.1768996386.e3f58202 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-test.spec ++++++ --- /var/tmp/diff_new_pack.MppEEs/_old 2026-01-22 15:16:12.039287090 +0100 +++ /var/tmp/diff_new_pack.MppEEs/_new 2026-01-22 15:16:12.039287090 +0100 @@ -18,7 +18,7 @@ %define short_name openQA Name: %{short_name}-test -Version: 5.1768919350.40d92537 +Version: 5.1768996386.e3f58202 Release: 0 Summary: Test package for openQA License: GPL-2.0-or-later ++++++ openQA-worker-test.spec ++++++ --- /var/tmp/diff_new_pack.MppEEs/_old 2026-01-22 15:16:12.075288588 +0100 +++ /var/tmp/diff_new_pack.MppEEs/_new 2026-01-22 15:16:12.075288588 +0100 @@ -18,7 +18,7 @@ %define short_name openQA-worker Name: %{short_name}-test -Version: 5.1768919350.40d92537 +Version: 5.1768996386.e3f58202 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA.spec ++++++ --- /var/tmp/diff_new_pack.MppEEs/_old 2026-01-22 15:16:12.123290583 +0100 +++ /var/tmp/diff_new_pack.MppEEs/_new 2026-01-22 15:16:12.127290750 +0100 @@ -99,7 +99,7 @@ %define devel_requires %devel_no_selenium_requires chromedriver Name: openQA -Version: 5.1768919350.40d92537 +Version: 5.1768996386.e3f58202 Release: 0 Summary: The openQA web-frontend, scheduler and tools License: GPL-2.0-or-later ++++++ openQA-5.1768919350.40d92537.obscpio -> openQA-5.1768996386.e3f58202.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1768919350.40d92537/docs/UsersGuide.asciidoc new/openQA-5.1768996386.e3f58202/docs/UsersGuide.asciidoc --- old/openQA-5.1768919350.40d92537/docs/UsersGuide.asciidoc 2026-01-20 15:29:10.000000000 +0100 +++ new/openQA-5.1768996386.e3f58202/docs/UsersGuide.asciidoc 2026-01-21 12:53:06.000000000 +0100 @@ -41,7 +41,7 @@ 5. Select individual 'Job groups' and decide what combinations make sense and need to be tested -Machines, mediums, test suites and job templates can all set various +Machines, mediums, test suites and job templates can all set various configuration variables. The so called job templates within the job groups define how the test suites, mediums and machines should be combined in various ways to produce individual 'jobs'. All the variables from the test suite, @@ -97,22 +97,29 @@ === Medium Types (products) A medium type (product) in openQA is a simple description without any concrete -meaning. It basically consists of a name and a set of variables that -define or characterize this product in os-autoinst. +meaning. It basically consists of a name and a set of variables that define or +characterize this product in os-autoinst. Some example variables used by openSUSE are: -* `ISO_MAXSIZE` contains the maximum size of the product. There is a - test that checks that the current size of the product is less or - equal than this variable. +* `ISO_MAXSIZE` contains the maximum size of the product. There is a test that + checks that the current size of the product is less or equal than this + variable. * `DVD` if it is set to 1, this indicates that the medium is a DVD. -* `LIVECD` if it is set to 1, this indicates that the medium is a live - image (can be a CD or USB) -* `GNOME` this variable, if it is set to 1, indicates that it is a GNOME - only distribution. +* `LIVECD` if it is set to 1, this indicates that the medium is a live image + (can be a CD or USB) +* `GNOME` this variable, if it is set to 1, indicates that it is a GNOME only + distribution. * `PROMO` marks the promotional product. * `RESCUECD` is set to 1 for rescue CD images. +The version of a medium can be set to `\*`. Then this medium is considered if a +product is scheduled with a `VERSION` parameter that does not match any other +medium. This allows having only one medium per version. Note that having a +medium with a concrete version and one with `*` at the same time is usually not +a good idea as you will likely run into the scheduling error `no templates found +for product …` (unless you actually have job templates for all these medium +types). === Test Suites @@ -1145,6 +1152,11 @@ `FLAVOR` and `ARCH` more parameters can be specified. Those additional parameters will be added as jobs settings in all triggered jobs. +If there is no medium type matching the specified `VERSION`, the lookup falls +back to matching any medium with version `*`. Check out +<<UsersGuide.asciidoc#_medium_types_products,the section about medium types>> +for details. + The parameters `MACHINE` and `TEST` additionally act as filters and `TEST` supports multiple comma-separated values. So adding e.g. `TEST=foo,bar` will only consider the test suites `foo` and `bar`. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1768919350.40d92537/lib/OpenQA/Schema/Result/ScheduledProducts.pm new/openQA-5.1768996386.e3f58202/lib/OpenQA/Schema/Result/ScheduledProducts.pm --- old/openQA-5.1768919350.40d92537/lib/OpenQA/Schema/Result/ScheduledProducts.pm 2026-01-20 15:29:10.000000000 +0100 +++ new/openQA-5.1768996386.e3f58202/lib/OpenQA/Schema/Result/ScheduledProducts.pm 2026-01-21 12:53:06.000000000 +0100 @@ -590,14 +590,13 @@ my @templates = $templates->all; unless (@templates) { - my $error = 'no templates found for ' . join('-', map { $args->{$_} } qw(DISTRI FLAVOR ARCH)); - push(@$notes, $error); + push @$notes, my $error = 'no templates found for product ' . $product->name; return {error_message => $error, error_code => 404}; } for my $job_template (@templates) { # compose settings from product, machine, testsuite and job template itself - # note: That order also defines the precedence from lowest to highest. The only exception is the WORKER_CLASS - # variable where all occurrences are merged. + # note: That order also defines the precedence from lowest to highest. The only exception is the + # WORKER_CLASS variable where all occurrences are merged. my %settings; my %params = ( settings => \%settings, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1768919350.40d92537/lib/OpenQA/Schema/ResultSet/JobTemplates.pm new/openQA-5.1768996386.e3f58202/lib/OpenQA/Schema/ResultSet/JobTemplates.pm --- old/openQA-5.1768919350.40d92537/lib/OpenQA/Schema/ResultSet/JobTemplates.pm 2026-01-20 15:29:10.000000000 +0100 +++ new/openQA-5.1768996386.e3f58202/lib/OpenQA/Schema/ResultSet/JobTemplates.pm 2026-01-21 12:53:06.000000000 +0100 @@ -35,8 +35,12 @@ return { error => sprintf( "Product '%s' not found in database (arch: '%s', distri: '%s', flavor: '%s', version: '%s')", - $args->{product_name}, $args->{arch}, $args->{product_spec}->{distri}, - $args->{product_spec}->{flavor}, $args->{product_spec}->{version})} + $args->{product_name}, + $args->{arch}, + $args->{product_spec}->{distri} // '?', + $args->{product_spec}->{flavor} // '?', + $args->{product_spec}->{version} // '?' + )} unless $product; my $test_suite; if (defined $args->{testsuite_name}) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1768919350.40d92537/lib/OpenQA/WebAPI/Plugin/IssueReporter/OpenSuseGenericBug.pm new/openQA-5.1768996386.e3f58202/lib/OpenQA/WebAPI/Plugin/IssueReporter/OpenSuseGenericBug.pm --- old/openQA-5.1768919350.40d92537/lib/OpenQA/WebAPI/Plugin/IssueReporter/OpenSuseGenericBug.pm 2026-01-20 15:29:10.000000000 +0100 +++ new/openQA-5.1768996386.e3f58202/lib/OpenQA/WebAPI/Plugin/IssueReporter/OpenSuseGenericBug.pm 2026-01-21 12:53:06.000000000 +0100 @@ -36,7 +36,7 @@ my $url = Mojo::URL->new($bugzilla_url)->query( { - short_desc => "[Build $ctx->{build}] openQA test fails in $ctx->{module}", + short_desc => "[QE][Build $ctx->{build}] openQA test fails in $ctx->{module}", comment => $body, product => "$distri_name $bugzilla_product", bug_file_loc => $ctx->{step_url}, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1768919350.40d92537/t/api/02-iso.t new/openQA-5.1768996386.e3f58202/t/api/02-iso.t --- old/openQA-5.1768919350.40d92537/t/api/02-iso.t 2026-01-20 15:29:10.000000000 +0100 +++ new/openQA-5.1768996386.e3f58202/t/api/02-iso.t 2026-01-21 12:53:06.000000000 +0100 @@ -1054,11 +1054,11 @@ $schema->txn_rollback; }; +my %prod_params = (distri => 'opensuse', version => '*', flavor => 'DVD', arch => 'i586', name => 'generic'); +my $product = $products->create(\%prod_params); +my $job_template = $job_templates->create({@job_template_params, product_id => $product->id}); + subtest 'fallback to version "*"' => sub { - my %prod_params = (distri => 'opensuse', version => '*', flavor => 'DVD', arch => 'i586', name => 'generic'); - my $product = $products->create(\%prod_params); - ok $product->id, 'generic product created ' . $product->id; - my $job_template = $job_templates->create({@job_template_params, product_id => $product->id}); my $res = schedule_iso($t, {%iso, VERSION => 'foobar', _GROUP => 'opensuse test'}); my $scheduled_product = $scheduled_products->find($res->json->{scheduled_product_id}); my $results = $scheduled_product->results; @@ -1067,4 +1067,14 @@ or always_explain $results; }; +subtest 'no templates found for product' => sub { + $job_template->delete; # assume no job template exists + my $res = schedule_iso($t, {%iso, VERSION => 'foobar', _GROUP => 'opensuse test'}, 404); + my $scheduled_product = $scheduled_products->find($res->json->{scheduled_product_id}); + my $results = $scheduled_product->results; + is @{$results->{successful_job_ids}}, 0, 'no jobs scheduled'; + is $results->{error}, 'no templates found for product opensuse-*-DVD-i586', 'error contains considered product' + or always_explain $results; +}; + done_testing(); ++++++ openQA.obsinfo ++++++ --- /var/tmp/diff_new_pack.MppEEs/_old 2026-01-22 15:16:24.059786993 +0100 +++ /var/tmp/diff_new_pack.MppEEs/_new 2026-01-22 15:16:24.067787326 +0100 @@ -1,5 +1,5 @@ name: openQA -version: 5.1768919350.40d92537 -mtime: 1768919350 -commit: 40d92537397df4eca165e7fe85a057842a1dd2a6 +version: 5.1768996386.e3f58202 +mtime: 1768996386 +commit: e3f58202e1fd12a5063a6dfb2cdce7c83bf1956f
