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-08-14 22:08:03 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openQA (Old) and /work/SRC/openSUSE:Factory/.openQA.new.1258 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openQA" Fri Aug 14 22:08:03 2026 rev:873 rq:1371076 version:5.1786629850.d1bdb83d Changes: -------- --- /work/SRC/openSUSE:Factory/openQA/openQA.changes 2026-08-12 16:12:11.989692245 +0200 +++ /work/SRC/openSUSE:Factory/.openQA.new.1258/openQA.changes 2026-08-14 22:08:18.938910858 +0200 @@ -1,0 +2,13 @@ +Thu Aug 13 16:02:41 UTC 2026 - [email protected] + +- Update to version 5.1786629850.d1bdb83d: + * feat(job_group_overview): Limit builds_limit for crawler protection + * chore(deps): Dependency cron 2026-08-13 + * test: Use .invalid domain in privacy policy test + * test: Fix race conditions in developer mode fullstack test + * test: Revert "Work around command processing issues of os-autoinst" + * chore(deps): Dependency cron 2026-08-12 + * chore(deps): bump js-yaml from 4.3.0 to 4.3.1 (#7734) + * feat: Add NGINX-level rate limiting for details_ajax route + +------------------------------------------------------------------- Old: ---- openQA-5.1786454525.528632ee.obscpio New: ---- openQA-5.1786629850.d1bdb83d.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openQA-client-test.spec ++++++ --- /var/tmp/diff_new_pack.V14NsA/_old 2026-08-14 22:08:22.678042506 +0200 +++ /var/tmp/diff_new_pack.V14NsA/_new 2026-08-14 22:08:22.685042753 +0200 @@ -18,7 +18,7 @@ %define short_name openQA-client Name: %{short_name}-test -Version: 5.1786454525.528632ee +Version: 5.1786629850.d1bdb83d Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-devel-test.spec ++++++ --- /var/tmp/diff_new_pack.V14NsA/_old 2026-08-14 22:08:22.796046661 +0200 +++ /var/tmp/diff_new_pack.V14NsA/_new 2026-08-14 22:08:22.806047013 +0200 @@ -18,7 +18,7 @@ %define short_name openQA-devel Name: %{short_name}-test -Version: 5.1786454525.528632ee +Version: 5.1786629850.d1bdb83d Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-test.spec ++++++ --- /var/tmp/diff_new_pack.V14NsA/_old 2026-08-14 22:08:22.917050922 +0200 +++ /var/tmp/diff_new_pack.V14NsA/_new 2026-08-14 22:08:22.921051062 +0200 @@ -18,7 +18,7 @@ %define short_name openQA Name: %{short_name}-test -Version: 5.1786454525.528632ee +Version: 5.1786629850.d1bdb83d Release: 0 Summary: Test package for openQA License: GPL-2.0-or-later ++++++ openQA-worker-test.spec ++++++ --- /var/tmp/diff_new_pack.V14NsA/_old 2026-08-14 22:08:22.981053175 +0200 +++ /var/tmp/diff_new_pack.V14NsA/_new 2026-08-14 22:08:22.984053281 +0200 @@ -18,7 +18,7 @@ %define short_name openQA-worker Name: %{short_name}-test -Version: 5.1786454525.528632ee +Version: 5.1786629850.d1bdb83d Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA.spec ++++++ --- /var/tmp/diff_new_pack.V14NsA/_old 2026-08-14 22:08:23.035055076 +0200 +++ /var/tmp/diff_new_pack.V14NsA/_new 2026-08-14 22:08:23.039055217 +0200 @@ -104,7 +104,7 @@ %define devel_requires %devel_no_selenium_requires chromedriver Name: openQA -Version: 5.1786454525.528632ee +Version: 5.1786629850.d1bdb83d Release: 0 Summary: Framework for automated system-level testing (web-frontend, scheduler and tools) Group: Development/Tools/Other ++++++ node_modules.obscpio ++++++ Binary files old/js-yaml-4.3.0.tgz and new/js-yaml-4.3.0.tgz differ Binary files old/js-yaml-4.3.1.tgz and new/js-yaml-4.3.1.tgz differ ++++++ node_modules.spec.inc ++++++ --- /var/tmp/diff_new_pack.V14NsA/_old 2026-08-14 22:08:24.768116094 +0200 +++ /var/tmp/diff_new_pack.V14NsA/_new 2026-08-14 22:08:24.774116306 +0200 @@ -163,7 +163,7 @@ Source1162: https://registry.npmjs.org/jquery/-/jquery-4.0.0.tgz#/jquery-4.0.0.tgz Source1163: https://registry.npmjs.org/jquery-ujs/-/jquery-ujs-1.2.3.tgz#/jquery-ujs-1.2.3.tgz Source1164: https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#/js-tokens-4.0.0.tgz -Source1165: https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz#/js-yaml-4.3.0.tgz +Source1165: https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz#/js-yaml-4.3.1.tgz Source1166: https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz#/json-buffer-3.0.1.tgz Source1167: https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#/json-parse-even-better-errors-2.3.1.tgz Source1168: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#/json-schema-traverse-0.4.1.tgz ++++++ openQA-5.1786454525.528632ee.obscpio -> openQA-5.1786629850.d1bdb83d.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1786454525.528632ee/docs/Installing.md new/openQA-5.1786629850.d1bdb83d/docs/Installing.md --- old/openQA-5.1786454525.528632ee/docs/Installing.md 2026-08-11 15:22:05.000000000 +0200 +++ new/openQA-5.1786629850.d1bdb83d/docs/Installing.md 2026-08-13 16:04:10.000000000 +0200 @@ -489,6 +489,33 @@ For openQA you need to set `httpsonly = 0` as described in the TLS/SSL section below, if you do not setup NGINX for SSL. +#### Rate limiting +The example NGINX configurations include a rate-limiting setup for the +potentially resource-intensive `/tests/<testid:num>/details_ajax` endpoint to +protect the web UI from being overwhelmed by too many simultaneous Ajax requests +(e.g., from automated scripts or heavy browser sessions). + +This is configured in: +* `openqa.conf.template` via the `limit_req_zone` directive, defining a shared + memory zone `details_ajax_limit`. +* `openqa-endpoints.inc` via the matching location block applying `limit_req`. + +##### Load balancer and reverse proxy consideration +If your openQA instance is hosted behind an upstream load balancer or an +external reverse proxy (like HAProxy, AWS ALB, or Cloudflare), NGINX's +`$binary_remote_addr` will evaluate to the IP address of that load balancer +instead of the actual client's IP. This would cause all client requests to share +the same rate-limiting bucket, causing premature HTTP `429 Too Many Requests` +responses. + +To resolve this, make sure the NGINX `real_ip` module is configured in your main +NGINX setup to extract the true client IP from the `X-Forwarded-For` header: + +```nginx +real_ip_header X-Forwarded-For; +set_real_ip_from <your-balancer-ip-or-subnet>; +``` + ### TLS/SSL By default openQA expects to be run with HTTPS. The `openqa-ssl.conf.template` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1786454525.528632ee/etc/nginx/vhosts.d/openqa-endpoints.inc new/openQA-5.1786629850.d1bdb83d/etc/nginx/vhosts.d/openqa-endpoints.inc --- old/openQA-5.1786454525.528632ee/etc/nginx/vhosts.d/openqa-endpoints.inc 2026-08-11 15:22:05.000000000 +0200 +++ new/openQA-5.1786629850.d1bdb83d/etc/nginx/vhosts.d/openqa-endpoints.inc 2026-08-13 16:04:10.000000000 +0200 @@ -10,6 +10,16 @@ # Default is exact which would need an exact match of Last-Modified if_modified_since before; +# Default proxy settings inherited by locations forwarding to Mojolicious +tcp_nodelay on; +proxy_read_timeout 900; +proxy_send_timeout 900; +proxy_set_header Host $host; +proxy_set_header X-Forwarded-Host $host:$server_port; +proxy_set_header X-Forwarded-Server $host; +proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; +proxy_set_header X-Forwarded-Proto $scheme; + ## Optional to make use of auth_request to require authentication for asset downloads #location /api/v1/auth { # internal; @@ -58,27 +68,20 @@ location / { proxy_pass "http://webui"; - tcp_nodelay on; - proxy_read_timeout 900; - proxy_send_timeout 900; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-Host $host:$server_port; - proxy_set_header X-Forwarded-Server $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; } location ~ /tests/[0-9]+/(livelog|liveterminal)$ { - # Duplicate settings for location /, nginx can't merge locations :-( + # Default settings inherited from server block; only buffering needs tuning here proxy_pass "http://webui"; - tcp_nodelay on; - proxy_read_timeout 900; - proxy_send_timeout 900; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-Host $host:$server_port; - proxy_set_header X-Forwarded-Server $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_buffering off; } + +location ~ ^/tests/[0-9]+/details_ajax$ { + # Apply rate limiting to details_ajax + limit_req zone=details_ajax_limit burst=10 nodelay; + limit_req_status 429; + add_header Retry-After 5 always; + + # Backend settings are inherited from the server block + proxy_pass "http://webui"; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1786454525.528632ee/etc/nginx/vhosts.d/openqa.conf.template new/openQA-5.1786629850.d1bdb83d/etc/nginx/vhosts.d/openqa.conf.template --- old/openQA-5.1786454525.528632ee/etc/nginx/vhosts.d/openqa.conf.template 2026-08-11 15:22:05.000000000 +0200 +++ new/openQA-5.1786629850.d1bdb83d/etc/nginx/vhosts.d/openqa.conf.template 2026-08-13 16:04:10.000000000 +0200 @@ -1,5 +1,8 @@ include vhosts.d/openqa-upstreams.inc; +# Define rate limiting zone for details_ajax endpoint (10MB zone allows ~160,000 IPs) +limit_req_zone $binary_remote_addr zone=details_ajax_limit:10m rate=5r/s; + server { listen 80 default_server; listen [::]:80 default_server; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1786454525.528632ee/etc/openqa/openqa.ini new/openQA-5.1786629850.d1bdb83d/etc/openqa/openqa.ini --- old/openQA-5.1786454525.528632ee/etc/openqa/openqa.ini 2026-08-11 15:22:05.000000000 +0200 +++ new/openQA-5.1786629850.d1bdb83d/etc/openqa/openqa.ini 2026-08-13 16:04:10.000000000 +0200 @@ -397,12 +397,12 @@ #scheduled_product_min_storage_duration = 34 ## Throttling: set a comma-separated list of test parameters that trigger throttling ## of scheduled openQA jobs by priority. Example: PARAM1:SCALE1[:THRESH1][,...] -## Set a scale that a parameter value, minus an optional threshold, is multiplied by +## Set a scale that a parameter value, minus an optional threshold, is multiplied by ## and added to each job prio, as: '$base_prio + $scale# * ($param# - $thresh#)'. ## MAX_JOB_TIME also is configured here: to encourage tests with shorter runtime, ## when MAX_JOB_TIME > DEFAULT_MAX_JOB_TIME, a configured SCALE > 0 is applied; otherwise ## SCALE = 0 (or empty) to disable throttling or < 0 to prioritize long running jobs. -## To configure a custom set of scaling parameters, add also the below default +## To configure a custom set of scaling parameters, add also the below default ## rule, e.g. "prio_throttling_parameters = MAX_JOB_TIME:0.007,FOO:3:2000" #prio_throttling_parameters = MAX_JOB_TIME:0.007 ## Number of consecutive failures before throttling kicks in; set to 0 to disable @@ -431,6 +431,9 @@ ## Concurrency limit of archive generation (ZIP creation) jobs in parallel #create_zip_archive_limit = 2 +## Maximum allowed builds_limit for logged out users on (parent) job group overview page +#job_group_overview_max_unauth_builds_limit = 400 + [archiving] ## Moves logs of jobs which are preserved during the cleanup because they are ## considered important to diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1786454525.528632ee/lib/OpenQA/Setup.pm new/openQA-5.1786629850.d1bdb83d/lib/OpenQA/Setup.pm --- old/openQA-5.1786454525.528632ee/lib/OpenQA/Setup.pm 2026-08-11 15:22:05.000000000 +0200 +++ new/openQA-5.1786629850.d1bdb83d/lib/OpenQA/Setup.pm 2026-08-13 16:04:10.000000000 +0200 @@ -320,6 +320,7 @@ prio_throttling_data => undef, prio_group_parameters => 'full_name:Development:50', prio_group_data => undef, + job_group_overview_max_unauth_builds_limit => 400, }, archiving => { archive_preserved_important_jobs => 0, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1786454525.528632ee/lib/OpenQA/WebAPI/Controller/Main.pm new/openQA-5.1786629850.d1bdb83d/lib/OpenQA/WebAPI/Controller/Main.pm --- old/openQA-5.1786454525.528632ee/lib/OpenQA/WebAPI/Controller/Main.pm 2026-08-11 15:22:05.000000000 +0200 +++ new/openQA-5.1786629850.d1bdb83d/lib/OpenQA/WebAPI/Controller/Main.pm 2026-08-13 16:04:10.000000000 +0200 @@ -137,7 +137,10 @@ my $interval = $validation->param('interval') // ONE_MINUTE; my $current_user = $self->current_user; - my @limit_builds_preset = LIMIT_BUILDS; + my $max_unauth_builds_limit = $self->app->config->{misc_limits}->{job_group_overview_max_unauth_builds_limit}; + my @limit_builds_preset = ($current_user) ? LIMIT_BUILDS : grep { $_ <= $max_unauth_builds_limit } LIMIT_BUILDS; + push @limit_builds_preset, $max_unauth_builds_limit + if (!$current_user && !any { $_ == $max_unauth_builds_limit } @limit_builds_preset); if ($current_user && !any { $_ == $limit_builds } @limit_builds_preset) { push @limit_builds_preset, $limit_builds; @limit_builds_preset = (sort { $a <=> $b } @limit_builds_preset); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1786454525.528632ee/package-lock.json new/openQA-5.1786629850.d1bdb83d/package-lock.json --- old/openQA-5.1786454525.528632ee/package-lock.json 2026-08-11 15:22:05.000000000 +0200 +++ new/openQA-5.1786629850.d1bdb83d/package-lock.json 2026-08-13 16:04:10.000000000 +0200 @@ -2130,9 +2130,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz", - "integrity": "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz", + "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==", "dev": true, "funding": [ { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1786454525.528632ee/t/22-dashboard.t new/openQA-5.1786629850.d1bdb83d/t/22-dashboard.t --- old/openQA-5.1786454525.528632ee/t/22-dashboard.t 2026-08-11 15:22:05.000000000 +0200 +++ new/openQA-5.1786629850.d1bdb83d/t/22-dashboard.t 2026-08-13 16:04:10.000000000 +0200 @@ -613,9 +613,9 @@ ->attr_like('#footer-legal a', 'href', qr|docs/PrivacyPolicy.md|); my $original_url = $t->app->config->{global}->{privacy_policy_url}; - $t->app->config->{global}->{privacy_policy_url} = 'https://custom-privacy-policy.org'; + $t->app->config->{global}->{privacy_policy_url} = 'https://custom-privacy-policy.invalid'; $t->get_ok('/')->status_is(200)->text_like('#footer-legal a', qr/Privacy Policy/) - ->attr_like('#footer-legal a', 'href', qr|^https://custom-privacy-policy\.org$|); + ->attr_like('#footer-legal a', 'href', qr|^https://custom-privacy-policy\.invalid$|); $t->app->config->{global}->{privacy_policy_url} = $original_url; }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1786454525.528632ee/t/33-developer_mode.t new/openQA-5.1786629850.d1bdb83d/t/33-developer_mode.t --- old/openQA-5.1786454525.528632ee/t/33-developer_mode.t 2026-08-11 15:22:05.000000000 +0200 +++ new/openQA-5.1786629850.d1bdb83d/t/33-developer_mode.t 2026-08-13 16:04:10.000000000 +0200 @@ -201,12 +201,29 @@ 'paused after assert_screen timeout' ); + # clear console so subsequent wait_for_developer_console_like calls don't see old output + $driver->execute_script('document.getElementById("log").value = ""'); + # try to resume enter_developer_console_cmd $driver, '{"cmd":"resume_test_execution"}'; wait_for_developer_console_like($driver, qr/\"resume_test_execution\":/, 'resume'); + # run some command immediately after resuming to stress test command processing + # note: This might not have an effect as the backend might not be on the next assert screen yet. + # However, the backend must also not crash or get stuck just because we send a command immediately + # after resuming (like in https://progress.opensuse.org/issues/205206). + enter_developer_console_cmd $driver, '{"cmd":"set_assert_screen_timeout","timeout":1000}'; + + # wait until asserting 'on_prompt' again + # note: Do not just skip the timeout directly after resuming; we need to wait for the backend to + # enter the state where it asserts something before we can skip the assertion. + wait_for_developer_console_like( + $driver, + qr/(\"tags\":\[\"on_prompt\"\]|\"mustmatch\":\"on_prompt\")/, + 'asserting on_prompt' + ); + # skip timeout (again) - sleep 5; # workaround command processing issue, see https://progress.opensuse.org/issues/205206 enter_developer_console_cmd $driver, '{"cmd":"set_assert_screen_timeout","timeout":0}'; wait_for_developer_console_like( $driver, @@ -335,8 +352,8 @@ # go back to the live view $driver->get($job_page_url); $driver->find_element_by_link_text('Live View')->click(); - wait_for_session_info(qr/owned by Demo.*2 tabs open/, - '2 browser tabs open (live view and tab from previous subtest)'); + wait_for_session_info(qr/owned by Demo.*([2-9]|1\d+) tabs open/, + 'more than one browser tab open (live view and tab from previous subtest)'); # open developer console $driver->get($developer_console_url); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1786454525.528632ee/t/ui/14-dashboard.t new/openQA-5.1786629850.d1bdb83d/t/ui/14-dashboard.t --- old/openQA-5.1786454525.528632ee/t/ui/14-dashboard.t 2026-08-11 15:22:05.000000000 +0200 +++ new/openQA-5.1786629850.d1bdb83d/t/ui/14-dashboard.t 2026-08-13 16:04:10.000000000 +0200 @@ -9,6 +9,7 @@ use lib "$FindBin::Bin/../lib", "$FindBin::Bin/../../external/os-autoinst-common/lib"; use Test::Mojo; use Test::Warnings ':report_warnings'; +use Mojo::File qw(tempdir); use OpenQA::Log 'log_debug'; use OpenQA::Test::TimeLimit '30'; use OpenQA::Test::Case; @@ -17,6 +18,10 @@ my $test_case = OpenQA::Test::Case->new; my $schema = $test_case->init_data(fixtures_glob => '01-jobs.pl 02-workers.pl 03-users.pl'); +$ENV{OPENQA_CONFIG} = my $config_dir = tempdir("$FindBin::Script-XXXX"); +my $cfg = "[misc_limits]\njob_group_overview_max_unauth_builds_limit = 300"; +$config_dir->child('openqa.ini')->spew($cfg); + driver_missing unless my $driver = call_driver; # DO NOT MOVE THIS INTO A 'use' FUNCTION CALL! It will cause the tests @@ -78,12 +83,18 @@ $driver->get('/group_overview/1002'); is scalar @{$driver->find_elements('#group_description', 'css')}, 0, 'group description frame is not shown if none present'; +is scalar @{$driver->find_elements('option[value*="400"]', 'css')}, 0, + 'job_limit 400 below job_group_overview_max_unauth_builds_limit not shown'; +is scalar @{$driver->find_elements('option[value*="300"]', 'css')}, 1, + 'job_limit 300 = job_group_overview_max_unauth_builds_limit is shown'; is $driver->get($build_url . '?limit_builds=2'), 1, 'group overview page accepts query parameter, too'; $driver->get($build_url . '?limit_builds=4711'); like $driver->find_element('body')->get_text(), qr/limit_builds invalid/, 'custom limit_builds value invalid when logged out'; $driver->get($build_url . '?fullscreen=1&interval=4711'); like $driver->find_element('body')->get_text(), qr/interval invalid/, 'custom interval value invalid when logged out'; +$driver->get($build_url . '?limit_builds=400'); +like $driver->find_element('body')->get_text(), qr/limit_builds invalid/, 'too high limit_builds value when logged out'; $driver->get('/login'); $driver->get($build_url . '?fullscreen=1&interval=4711'); is $driver->find_element('select[name=interval] option[value*="4711"][selected]')->get_text(), 4711, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1786454525.528632ee/tools/ci/autoinst.sha new/openQA-5.1786629850.d1bdb83d/tools/ci/autoinst.sha --- old/openQA-5.1786454525.528632ee/tools/ci/autoinst.sha 2026-08-11 15:22:05.000000000 +0200 +++ new/openQA-5.1786629850.d1bdb83d/tools/ci/autoinst.sha 2026-08-13 16:04:10.000000000 +0200 @@ -1 +1 @@ -5.044000-c0f0630c166834ebae41c5b1d56a850e2c24e911 \ No newline at end of file +5.044000-93ba8ca76e07943f6f7c9873a02a87ecd7a483fc \ No newline at end of file ++++++ openQA.obsinfo ++++++ --- /var/tmp/diff_new_pack.V14NsA/_old 2026-08-14 22:08:34.344453260 +0200 +++ /var/tmp/diff_new_pack.V14NsA/_new 2026-08-14 22:08:34.349453436 +0200 @@ -1,5 +1,5 @@ name: openQA -version: 5.1786454525.528632ee -mtime: 1786454525 -commit: 528632ee272de3e74ac1325403ddaa3b533051a2 +version: 5.1786629850.d1bdb83d +mtime: 1786629850 +commit: d1bdb83db24dcca85d541d11a9035a98f665d53a
