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-04-10 17:52:48 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openQA (Old) and /work/SRC/openSUSE:Factory/.openQA.new.21863 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openQA" Fri Apr 10 17:52:48 2026 rev:834 rq:1345676 version:5.1775753240.e466faa2 Changes: -------- --- /work/SRC/openSUSE:Factory/openQA/openQA.changes 2026-04-08 17:18:00.785553336 +0200 +++ /work/SRC/openSUSE:Factory/.openQA.new.21863/openQA.changes 2026-04-10 18:01:36.223125622 +0200 @@ -1,0 +2,7 @@ +Thu Apr 09 16:47:28 UTC 2026 - [email protected] + +- Update to version 5.1775753240.e466faa2: + * fix: Reference schema files from the installed package for helm lint + * feat: limit job results on group overview and dashboard + +------------------------------------------------------------------- Old: ---- openQA-5.1775643384.e9cf2643.obscpio New: ---- openQA-5.1775753240.e466faa2.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openQA-client-test.spec ++++++ --- /var/tmp/diff_new_pack.I1oBdo/_old 2026-04-10 18:01:37.579181457 +0200 +++ /var/tmp/diff_new_pack.I1oBdo/_new 2026-04-10 18:01:37.579181457 +0200 @@ -18,7 +18,7 @@ %define short_name openQA-client Name: %{short_name}-test -Version: 5.1775643384.e9cf2643 +Version: 5.1775753240.e466faa2 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-devel-test.spec ++++++ --- /var/tmp/diff_new_pack.I1oBdo/_old 2026-04-10 18:01:37.623183268 +0200 +++ /var/tmp/diff_new_pack.I1oBdo/_new 2026-04-10 18:01:37.627183433 +0200 @@ -18,7 +18,7 @@ %define short_name openQA-devel Name: %{short_name}-test -Version: 5.1775643384.e9cf2643 +Version: 5.1775753240.e466faa2 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-test.spec ++++++ --- /var/tmp/diff_new_pack.I1oBdo/_old 2026-04-10 18:01:37.663184915 +0200 +++ /var/tmp/diff_new_pack.I1oBdo/_new 2026-04-10 18:01:37.663184915 +0200 @@ -18,7 +18,7 @@ %define short_name openQA Name: %{short_name}-test -Version: 5.1775643384.e9cf2643 +Version: 5.1775753240.e466faa2 Release: 0 Summary: Test package for openQA License: GPL-2.0-or-later ++++++ openQA-worker-test.spec ++++++ --- /var/tmp/diff_new_pack.I1oBdo/_old 2026-04-10 18:01:37.699186398 +0200 +++ /var/tmp/diff_new_pack.I1oBdo/_new 2026-04-10 18:01:37.703186562 +0200 @@ -18,7 +18,7 @@ %define short_name openQA-worker Name: %{short_name}-test -Version: 5.1775643384.e9cf2643 +Version: 5.1775753240.e466faa2 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA.spec ++++++ --- /var/tmp/diff_new_pack.I1oBdo/_old 2026-04-10 18:01:37.739188045 +0200 +++ /var/tmp/diff_new_pack.I1oBdo/_new 2026-04-10 18:01:37.743188209 +0200 @@ -99,7 +99,7 @@ %define devel_requires %devel_no_selenium_requires chromedriver Name: openQA -Version: 5.1775643384.e9cf2643 +Version: 5.1775753240.e466faa2 Release: 0 Summary: The openQA web-frontend, scheduler and tools License: GPL-2.0-or-later ++++++ openQA-5.1775643384.e9cf2643.obscpio -> openQA-5.1775753240.e466faa2.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1775643384.e9cf2643/etc/openqa/openqa.ini new/openQA-5.1775753240.e466faa2/etc/openqa/openqa.ini --- old/openQA-5.1775643384.e9cf2643/etc/openqa/openqa.ini 2026-04-08 12:16:24.000000000 +0200 +++ new/openQA-5.1775753240.e466faa2/etc/openqa/openqa.ini 2026-04-09 18:47:20.000000000 +0200 @@ -326,6 +326,10 @@ ## Initial number of job group names to show in summary header box on tests ## overview page (clickable to expand to show all) #tests_overview_summary_max_groups = 7 + +## Maximum number of jobs to include in job group overview and dashboard pages +## (to prevent performance issues) +#job_groups_overview_max_jobs = 10000 ## Default number of jobs to include in table of finished jobs on "All tests" ## page #all_tests_default_finished_jobs = 500 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1775643384.e9cf2643/lib/OpenQA/BuildResults.pm new/openQA-5.1775753240.e466faa2/lib/OpenQA/BuildResults.pm --- old/openQA-5.1775643384.e9cf2643/lib/OpenQA/BuildResults.pm 2026-04-08 12:16:24.000000000 +0200 +++ new/openQA-5.1775753240.e466faa2/lib/OpenQA/BuildResults.pm 2026-04-09 18:47:20.000000000 +0200 @@ -104,15 +104,21 @@ return filter_subgroups($group, $subgroup_filter); } -sub compute_build_results ($group, $limit, $time_limit_days, $tags, $subgroup_filter, $show_tags) { +sub compute_build_results ($group, $limit, $time_limit_days, $tags, $subgroup_filter, $show_tags, + $max_jobs_limit = undef) +{ # find relevant child groups taking filter into account my $child_groups = find_child_groups($group, $subgroup_filter); my $group_ids = $child_groups->{group_ids}; my $children = $child_groups->{children}; + + my $total_jobs_seen = 0; + my $limit_exceeded = 0; my @sorted_results; my %result = ( build_results => \@sorted_results, max_jobs => 0, + limit_exceeded => 0, children => [map { {id => $_->id, name => $_->name} } @$children], group => { id => $group->id, @@ -163,8 +169,15 @@ my $max_jobs = 0; my $newest = ($buildver_sort_mode == BUILD_SORT_BY_OLDEST_JOB || $buildver_sort_mode == BUILD_SORT_BY_NAME) ? 0 : 1; for my $build (@builds) { - last if defined($limit) && (--$limit < 0); + if (defined $max_jobs_limit && $total_jobs_seen >= $max_jobs_limit) { + $limit_exceeded = 1; + last; + } + last if defined $limit && (--$limit < 0); my ($version, $buildnr) = ($build->VERSION, $build->BUILD); + my $remaining = defined $max_jobs_limit ? $max_jobs_limit - $total_jobs_seen : undef; + my %search_opts = (order_by => 'me.id DESC'); + $search_opts{rows} = $remaining + 1 if defined $remaining; my $jobs = $jobs_resultset->search( { VERSION => $version, @@ -172,7 +185,8 @@ group_id => {in => $group_ids}, clone_id => undef, }, - {order_by => 'me.id DESC'}); + \%search_opts + ); my %jr = ( key => $build->{key}, build => $buildnr, @@ -182,10 +196,15 @@ init_job_figures(\%jr); init_job_figures($jr{children}->{$_->id} = {}) for @$children; my %seen; + my @all_jobs = $jobs->all; + if (defined $remaining && @all_jobs > $remaining) { + $limit_exceeded = 1; + pop @all_jobs; + } my @jobs = map { my $key = $_->TEST . '-' . $_->ARCH . '-' . $_->FLAVOR . '-' . ($_->MACHINE // ''); $seen{$key}++ ? () : $_; - } $jobs->all; + } @all_jobs; next unless @jobs; my $comment_data = $group->result_source->schema->resultset('Comments')->comment_data_for_jobs(\@jobs); for my $job (@jobs) { @@ -206,6 +225,7 @@ add_review_badge($child); } } + $total_jobs_seen += $jr{total}; $jr{date} = delete $jr{oldest_newest}; $jr{escaped_version} = $jr{version}; $jr{escaped_version} =~ s/\W/_/g; @@ -217,6 +237,8 @@ $max_jobs = $jr{total} if ($jr{total} > $max_jobs); } $result{max_jobs} = $max_jobs; + $result{total_jobs} = $total_jobs_seen; + $result{limit_exceeded} = $limit_exceeded ? 1 : 0; _map_tags_into_build($result{build_results}, $show_tags) if $show_tags; return \%result; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1775643384.e9cf2643/lib/OpenQA/Setup.pm new/openQA-5.1775753240.e466faa2/lib/OpenQA/Setup.pm --- old/openQA-5.1775643384.e9cf2643/lib/OpenQA/Setup.pm 2026-04-08 12:16:24.000000000 +0200 +++ new/openQA-5.1775753240.e466faa2/lib/OpenQA/Setup.pm 2026-04-09 18:47:20.000000000 +0200 @@ -268,6 +268,7 @@ generic_max_limit => 100000, tests_overview_max_jobs => 2000, tests_overview_summary_max_groups => 7, + job_groups_overview_max_jobs => 10000, all_tests_default_finished_jobs => 500, all_tests_max_finished_jobs => 5000, list_templates_default_limit => 5000, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1775643384.e9cf2643/lib/OpenQA/WebAPI/Controller/API/V1/JobGroup.pm new/openQA-5.1775753240.e466faa2/lib/OpenQA/WebAPI/Controller/API/V1/JobGroup.pm --- old/openQA-5.1775643384.e9cf2643/lib/OpenQA/WebAPI/Controller/API/V1/JobGroup.pm 2026-04-08 12:16:24.000000000 +0200 +++ new/openQA-5.1775753240.e466faa2/lib/OpenQA/WebAPI/Controller/API/V1/JobGroup.pm 2026-04-09 18:47:20.000000000 +0200 @@ -401,10 +401,12 @@ my $show_tags = $validation->param('show_tags') // $only_tagged; my $tags = $show_tags ? $group->tags : undef; + my $max_jobs_limit = $self->app->config->{misc_limits}->{job_groups_overview_max_jobs}; my $cbr = OpenQA::BuildResults::compute_build_results($group, $limit_builds, $time_limit_days, $only_tagged ? $tags : undef, - [], $tags); + [], $tags, $max_jobs_limit); + $cbr->{limit_exceeded} = $cbr->{limit_exceeded} ? $max_jobs_limit : 0; $self->render(json => $cbr); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1775643384.e9cf2643/lib/OpenQA/WebAPI/Controller/Main.pm new/openQA-5.1775753240.e466faa2/lib/OpenQA/WebAPI/Controller/Main.pm --- old/openQA-5.1775643384.e9cf2643/lib/OpenQA/WebAPI/Controller/Main.pm 2026-04-08 12:16:24.000000000 +0200 +++ new/openQA-5.1775753240.e466faa2/lib/OpenQA/WebAPI/Controller/Main.pm 2026-04-09 18:47:20.000000000 +0200 @@ -38,20 +38,36 @@ my $groups = $self->stash('job_groups_and_parents'); + my $max_jobs_limit = $self->app->config->{misc_limits}->{job_groups_overview_max_jobs}; + my $total_jobs_seen = 0; + my $limit_reached = 0; my @results; try { for my $group (@$groups) { if (@$group_params) { next unless grep { $_ eq '' || $group->matches_nested($_) } @$group_params; } + if (defined $max_jobs_limit && $total_jobs_seen >= $max_jobs_limit) { + $limit_reached = 1; + last; + } my $tags = $show_tags || $only_tagged ? $group->tags : undef; - my $build_results - = OpenQA::BuildResults::compute_build_results($group, $limit_builds, $time_limit_days, - $only_tagged ? $tags : undef, - $group_params, $show_tags ? $tags : undef); + my $build_results = OpenQA::BuildResults::compute_build_results( + $group, $limit_builds, $time_limit_days, $only_tagged ? $tags : undef, + $group_params, + $show_tags ? $tags : undef, + defined $max_jobs_limit ? $max_jobs_limit - $total_jobs_seen : undef + ); my $build_results_for_group = $build_results->{build_results}; - push @results, $build_results if @{$build_results_for_group}; + if (@{$build_results_for_group}) { + push @results, $build_results; + $total_jobs_seen += $build_results->{total_jobs}; + } + if ($build_results->{limit_exceeded}) { + $limit_reached = 1; + last; + } } } catch ($e) { @@ -62,10 +78,11 @@ $self->stash( default_expanded => $default_expanded, results => \@results, + limit_exceeded => $limit_reached ? $max_jobs_limit : 0, ); $self->respond_to( - json => {json => {results => \@results}}, + json => {json => {results => \@results, limit_exceeded => $limit_reached ? $max_jobs_limit : 0}}, html => {template => 'main/dashboard_build_results'}); } @@ -137,12 +154,13 @@ my @pinned_comments = grep { $_->user->is_operator } $comments->search({text => $pinned_cond})->all; my $tags = $group->tags; + my $max_jobs_limit = $self->app->config->{misc_limits}->{job_groups_overview_max_jobs}; my $cbr; try { $cbr = OpenQA::BuildResults::compute_build_results($group, $limit_builds, $time_limit_days, $only_tagged ? $tags : undef, - $group_params, $tags); + $group_params, $tags, $max_jobs_limit); } catch ($e) { die $e unless $e =~ qr/^invalid regex: /; @@ -150,9 +168,14 @@ } my $build_results = $cbr->{build_results}; my $max_jobs = $cbr->{max_jobs}; + my $limit_exceeded = $cbr->{limit_exceeded}; $self->stash(children => $cbr->{children}); - $self->stash(build_results => $build_results, max_jobs => $max_jobs); + $self->stash( + build_results => $build_results, + max_jobs => $max_jobs, + limit_exceeded => $limit_exceeded ? $max_jobs_limit : 0 + ); my $is_parent_group = $group->can('children'); my $comment_context = $is_parent_group ? 'parent_group' : 'group'; @@ -162,7 +185,8 @@ name => $group->name, full_name => $group->name, is_parent => $is_parent_group, - rendered_description => $group->rendered_description + rendered_description => $group->rendered_description, + limit_exceeded => $limit_exceeded ? $max_jobs_limit : 0, }; if (!$is_parent_group && (my $parent = $group->parent)) { $group_hash->{parent_id} = $parent->id; @@ -190,6 +214,7 @@ group => $group_hash, build_results => $build_results, max_jobs => $max_jobs, + limit_exceeded => $limit_exceeded ? $max_jobs_limit : 0, description => $group->description, comments => \@comments, pinned_comments => \@pinned_comments diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1775643384.e9cf2643/t/22-dashboard.t new/openQA-5.1775753240.e466faa2/t/22-dashboard.t --- old/openQA-5.1775643384.e9cf2643/t/22-dashboard.t 2026-04-08 12:16:24.000000000 +0200 +++ new/openQA-5.1775753240.e466faa2/t/22-dashboard.t 2026-04-09 18:47:20.000000000 +0200 @@ -17,6 +17,8 @@ use OpenQA::Constants qw(BUILD_SORT_BY_NEWEST_JOB BUILD_SORT_BY_OLDEST_JOB); use OpenQA::Utils qw(regex_match); use Mojo::File qw(tempfile); +use Date::Format; +use Time::Seconds qw(ONE_HOUR); # init test case my $test_case = OpenQA::Test::Case->new; @@ -636,4 +638,88 @@ is $jr->{total}, 1, 'Total jobs incremented'; }; +subtest 'Group overview limit' => sub { + $t->get_ok('/group_overview/1001')->status_is(200)->element_exists_not('#max-jobs-limit'); + $t->app->config->{misc_limits}->{job_groups_overview_max_jobs} = 1; + $t->get_ok('/group_overview/1001')->status_is(200)->element_exists('#max-jobs-limit') + ->text_like('#max-jobs-limit', qr/Only 1 results included/); +}; + +subtest 'Parent group overview limit' => sub { + $t->get_ok('/parent_group_overview/1')->status_is(200)->element_exists('#max-jobs-limit') + ->text_like('#max-jobs-limit', qr/Only 1 results included/); +}; + +subtest 'Dashboard limit' => sub { + $t->get_ok('/dashboard_build_results')->status_is(200)->element_exists('#max-jobs-limit') + ->text_like('#max-jobs-limit', qr/Only 1 results included/); +}; + +subtest 'API V1 JobGroup limit' => sub { + $t->get_ok('/api/v1/job_groups/1001/build_results')->status_is(200)->json_is('/limit_exceeded' => 1); +}; + +subtest 'Dashboard limit reached between groups' => sub { + # 'opensuse' (1001) has 2 jobs in the first 2 builds (87.5011 and 0048@0815) + # when clones are not included. + $t->app->config->{misc_limits}->{job_groups_overview_max_jobs} = 2; + $t->get_ok('/dashboard_build_results.json?limit_builds=2')->status_is(200)->json_is('/limit_exceeded' => 2); + $t->get_ok('/dashboard_build_results?limit_builds=2')->status_is(200)->element_exists('#max-jobs-limit') + ->text_like('#max-jobs-limit', qr/Only 2 results included/); + + # Coverage for check between groups + my $group_aaa = $job_groups->create({name => 'AAA', sort_order => -1}); + $jobs->create( + { + group_id => $group_aaa->id, + priority => 50, + result => 'passed', + TEST => 'test', + state => 'done', + BUILD => '1', + VERSION => '1', + ARCH => 'x86_64', + FLAVOR => 'flavor', + MACHINE => 'machine', + }); + $t->app->config->{misc_limits}->{job_groups_overview_max_jobs} = 1; + $t->get_ok('/dashboard_build_results.json')->status_is(200)->json_is('/limit_exceeded' => 1); + # AAA should be present, others not + my $res = $t->tx->res->json; + is scalar @{$res->{results}}, 1, 'Only one group returned'; + is $res->{results}->[0]->{group}->{name}, 'AAA', 'The correct group is returned'; +}; + +subtest 'Group overview JSON and comments coverage' => sub { + $opensuse_group->comments->create({text => 'some comment', user_id => 99901}); + $opensuse_group->comments->create({text => 'pinned-description: some info', user_id => 99901}); + $t->app->config->{misc_limits}->{job_groups_overview_max_jobs} = 2; + $t->get_ok('/group_overview/1001.json')->status_is(200)->json_has('/group')->json_has('/build_results') + ->json_is('/limit_exceeded' => 2); + my $res = $t->tx->res->json; + ok scalar @{$res->{comments}} > 0, 'comments are returned'; + ok scalar @{$res->{pinned_comments}} > 0, 'pinned comments are returned'; +}; + +subtest 'Parent group overview JSON' => sub { + $t->get_ok('/parent_group_overview/1.json')->status_is(200)->json_has('/group')->json_has('/build_results') + ->json_is('/limit_exceeded' => 2); +}; + +subtest 'dashboard_build_results coverage' => sub { + my $build_results_mock = Test::MockModule->new('OpenQA::BuildResults'); + $build_results_mock->redefine( + compute_build_results => sub { die 'invalid regex: fake regex error after validation' }); + $t->get_ok('/group_overview/1001')->status_is(400) + ->content_like(qr/invalid regex: fake regex error after validation/i); + $build_results_mock->unmock('compute_build_results'); + + $t->get_ok('/dashboard_build_results.json?group=opensuse')->status_is(200); + $t->get_ok('/dashboard_build_results.json?show_tags=1')->status_is(200); + $t->get_ok('/dashboard_build_results.json?only_tagged=1')->status_is(200); + $t->get_ok('/dashboard_build_results.json')->status_is(200); + my $res = $t->tx->res->json; + ok scalar @{$res->{results}} > 0, 'results are returned'; +}; + done_testing; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1775643384.e9cf2643/t/config.t new/openQA-5.1775753240.e466faa2/t/config.t --- old/openQA-5.1775643384.e9cf2643/t/config.t 2026-04-08 12:16:24.000000000 +0200 +++ new/openQA-5.1775753240.e466faa2/t/config.t 2026-04-09 18:47:20.000000000 +0200 @@ -45,7 +45,6 @@ $app->mode('test'); my $config = read_config($app, 'reading config from default with mode test'); is length($config->{_openid_secret}), 16, 'config has openid_secret'; - my $test_config = dclone(OpenQA::Setup::default_config()); # apply transformations done in read_config $test_config->{global}->{recognized_referers} = []; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1775643384.e9cf2643/templates/webapi/layouts/limit_warning.html.ep new/openQA-5.1775753240.e466faa2/templates/webapi/layouts/limit_warning.html.ep --- old/openQA-5.1775643384.e9cf2643/templates/webapi/layouts/limit_warning.html.ep 1970-01-01 01:00:00.000000000 +0100 +++ new/openQA-5.1775753240.e466faa2/templates/webapi/layouts/limit_warning.html.ep 2026-04-09 18:47:20.000000000 +0200 @@ -0,0 +1,5 @@ +% if (my $limit_exceeded = stash('limit_exceeded')) { + <div class="alert alert-warning" id="max-jobs-limit" role="alert"> + <i class="fa-solid fa-circle-exclamation"></i> Only <%= $limit_exceeded %> results included, please narrow down your search parameters. + </div> +% } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1775643384.e9cf2643/templates/webapi/main/dashboard_build_results.html.ep new/openQA-5.1775753240.e466faa2/templates/webapi/main/dashboard_build_results.html.ep --- old/openQA-5.1775643384.e9cf2643/templates/webapi/main/dashboard_build_results.html.ep 2026-04-08 12:16:24.000000000 +0200 +++ new/openQA-5.1775753240.e466faa2/templates/webapi/main/dashboard_build_results.html.ep 2026-04-09 18:47:20.000000000 +0200 @@ -1,3 +1,5 @@ +%= include 'layouts/limit_warning' + % for my $groupresults (@$results) { % my $group = $groupresults->{group}; % my $build_results = $groupresults->{build_results}; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1775643384.e9cf2643/templates/webapi/main/group_overview.html.ep new/openQA-5.1775753240.e466faa2/templates/webapi/main/group_overview.html.ep --- old/openQA-5.1775643384.e9cf2643/templates/webapi/main/group_overview.html.ep 2026-04-08 12:16:24.000000000 +0200 +++ new/openQA-5.1775753240.e466faa2/templates/webapi/main/group_overview.html.ep 2026-04-09 18:47:20.000000000 +0200 @@ -10,6 +10,8 @@ alignBuildLabels(); % end +%= include 'layouts/limit_warning' + % if (is_admin) { <form action="<%= url_for('admin_job_templates', groupid => $group->{id}) %>" class="corner-buttons"> <button type="submit" class="btn btn-light" title="Edit media, description, and other properties"> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1775643384.e9cf2643/templates/webapi/main/parent_group_overview.html.ep new/openQA-5.1775753240.e466faa2/templates/webapi/main/parent_group_overview.html.ep --- old/openQA-5.1775643384.e9cf2643/templates/webapi/main/parent_group_overview.html.ep 2026-04-08 12:16:24.000000000 +0200 +++ new/openQA-5.1775753240.e466faa2/templates/webapi/main/parent_group_overview.html.ep 2026-04-09 18:47:20.000000000 +0200 @@ -9,6 +9,8 @@ setupParentGroupOverviewAssets('<%= $group->{id} %>'); % end +%= include 'layouts/limit_warning' + % if (is_admin) { <form action="<%= url_for('admin_edit_parent_group', groupid => $group->{id}) %>" class="corner-buttons"> <button type="submit" class="btn btn-light" title="Edit description, and other properties"> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1775643384.e9cf2643/templates/webapi/test/overview.html.ep new/openQA-5.1775753240.e466faa2/templates/webapi/test/overview.html.ep --- old/openQA-5.1775643384.e9cf2643/templates/webapi/test/overview.html.ep 2026-04-08 12:16:24.000000000 +0200 +++ new/openQA-5.1775753240.e466faa2/templates/webapi/test/overview.html.ep 2026-04-09 18:47:20.000000000 +0200 @@ -9,11 +9,7 @@ setupOverview({metaMapping: <%== Mojo::JSON::to_json($meta_mapping) %>}); % end -% if ($limit_exceeded) { - <div class="alert alert-warning" id="max-jobs-limit" role="alert"> - <i class="fa-solid fa-circle-exclamation"></i> Only <%= $limit_exceeded %> results included, please narrow down your search parameters. - </div> -% } +%= include 'layouts/limit_warning' <div> <h2>Test result overview</h2> <div id="summary" class="card <%= ($aggregate_status =~ /^(?:failed|not_complete)$/) ? 'border-danger' : 'border-success' %>"> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1775643384.e9cf2643/tools/test_helm_chart new/openQA-5.1775753240.e466faa2/tools/test_helm_chart --- old/openQA-5.1775643384.e9cf2643/tools/test_helm_chart 2026-04-08 12:16:24.000000000 +0200 +++ new/openQA-5.1775753240.e466faa2/tools/test_helm_chart 2026-04-09 18:47:20.000000000 +0200 @@ -4,9 +4,24 @@ which helm > /dev/null || echo "Error: Helm is not installed" which ct > /dev/null || echo "Error: ct is not installed" -cd container/helm +cd container/helm/ + +ct_common_args=() +# Reference schema files from the installed package if they are not in the default locations +for schema in chart_schema.yaml lintconf.yaml; do + if [[ ! -f "$schema" && ! -f "$HOME/.ct/$schema" && ! -f "/etc/ct/$schema" ]]; then + pkg_schema="/usr/share/doc/packages/chart-testing/$schema" + if [[ -f "$pkg_schema" ]]; then + if [[ "$schema" == "chart_schema.yaml" ]]; then + ct_common_args+=(--chart-yaml-schema "$pkg_schema") + else + ct_common_args+=(--lint-conf "$pkg_schema") + fi + fi + fi +done ct_extra=(--helm-extra-set-args "--set=gateway.enabled=false --set=image.pullPolicy=IfNotPresent --set=worker.image.pullPolicy=IfNotPresent") -ct_install_args=() -[[ "${1:-lint}" != "lint" ]] && ct_install_args=("${ct_extra[@]}") +ct_install_args=("${ct_common_args[@]}") +[[ "${1:-lint}" != "lint" ]] && ct_install_args+=("${ct_extra[@]}") ct "${1:-lint}" --debug --all --config ct.yaml "${ct_install_args[@]}" ++++++ openQA.obsinfo ++++++ --- /var/tmp/diff_new_pack.I1oBdo/_old 2026-04-10 18:01:52.155781631 +0200 +++ /var/tmp/diff_new_pack.I1oBdo/_new 2026-04-10 18:01:52.175782455 +0200 @@ -1,5 +1,5 @@ name: openQA -version: 5.1775643384.e9cf2643 -mtime: 1775643384 -commit: e9cf2643a809d4429843d924729fa374c5a09e88 +version: 5.1775753240.e466faa2 +mtime: 1775753240 +commit: e466faa222210dc534a7f484da9a1d5aa01686e1
