From d94fae121dfdda670d46b3088692c7b34eb40ce5 Mon Sep 17 00:00:00 2001 From: Marius Kittler Date: Wed, 29 Nov 2023 14:50:11 +0100 Subject: [PATCH] Show FQDN in VNC command if available via `WORKER_HOSTNAME` The `WORKER_HOSTNAME` variable usually contains the worker host's FQDN so it makes sense to show it (instead of just the `host` column) in the VNC instruction. Related ticket: https://progress.opensuse.org/issues/151576 --- lib/OpenQA/Schema/Result/Workers.pm | 6 ++++++ lib/OpenQA/WebAPI/Controller/Test.pm | 2 +- t/38-workers-table.t | 8 ++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/OpenQA/Schema/Result/Workers.pm b/lib/OpenQA/Schema/Result/Workers.pm index 1abb976c7d1..a8a6014f9eb 100644 --- a/lib/OpenQA/Schema/Result/Workers.pm +++ b/lib/OpenQA/Schema/Result/Workers.pm @@ -286,4 +286,10 @@ sub reschedule_assigned_jobs { } } +sub vnc_argument ($self) { + my $hostname = $self->get_property('WORKER_HOSTNAME') // $self->host; + my $instance = $self->instance + 5990; + return "$hostname:$instance"; +} + 1; diff --git a/lib/OpenQA/WebAPI/Controller/Test.pm b/lib/OpenQA/WebAPI/Controller/Test.pm index 6e00ec746fb..d42e12ac637 100644 --- a/lib/OpenQA/WebAPI/Controller/Test.pm +++ b/lib/OpenQA/WebAPI/Controller/Test.pm @@ -363,7 +363,7 @@ sub live ($self) { my $job = $self->_stash_job or return $self->reply->not_found; my $current_user = $self->current_user; my $worker = $job->worker; - my $worker_vnc = ($worker ? $worker->host . ':' . (5990 + $worker->instance) : undef); + my $worker_vnc = $worker ? $worker->vnc_argument : undef; $self->stash( { ws_developer_url => determine_web_ui_web_socket_url($job->id), diff --git a/t/38-workers-table.t b/t/38-workers-table.t index bdd95cc26db..748f2593051 100644 --- a/t/38-workers-table.t +++ b/t/38-workers-table.t @@ -121,4 +121,12 @@ subtest 'tmpdir handling when assigning multiple jobs to a worker' => sub { ok !-d $tmpdir, 'previous tmpdir removed'; path($worker->get_property('WORKER_TMPDIR'))->remove_tree; }; + +subtest 'VNC argument' => sub { + my $worker = $workers->first; + is $worker->vnc_argument, 'remotehost:5991', 'host:instance returned'; + $worker->set_property(WORKER_HOSTNAME => 'remotehost.foo.bar'); + is $worker->vnc_argument, 'remotehost.foo.bar:5991', 'WORKER_HOSTNAME used if set'; +}; + done_testing();