Skip to content

Commit

Permalink
Provide parallel_one_host_only via workers config file
Browse files Browse the repository at this point in the history
  • Loading branch information
b10n1k committed Jun 13, 2024
1 parent 21904f8 commit ab04ef5
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 5 deletions.
4 changes: 2 additions & 2 deletions docs/WritingTests.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -672,8 +672,8 @@ eventually workers can be held back for the cluster.
It is possible to ensure that all jobs within the same _parallel_ cluster are
executed on the same worker host. This is useful for connecting the SUTs without
having to connect the physical worker hosts. Use `PARALLEL_ONE_HOST_ONLY=1` to
enable this. Note that adding this setting in `workers.ini` has currently *no*
effect.
enable this. It is also possible to enable this setting as a global in
`workers.ini`.

WARNING: You need to provide enough worker slots on single worker hosts to fit
an entire cluster. So this feature is mainly intended to workaround situations
Expand Down
12 changes: 12 additions & 0 deletions etc/openqa/workers.ini
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@
[global]
# space separated list of webuis to connect to (empty defaults to localhost)
#HOST = http://openqa.example.host
HOST = http://localhost:9526

# Ensure that Multimachine jobs are scheduled on the same worker host.
#PARALLEL_ONE_HOST_ONLY = 1
# Specify a cache directory for assets and tests to sync them automatically via
# http/rsync; the specified path is just an example but what you would usually
# use on a normal setup
Expand Down Expand Up @@ -83,6 +86,15 @@

# The section ids are the instance of the workers.
# The key/value pairs will appear in vars.json
[1]
WORKER_CLASS = qemu_x86_64_staging,qemu_x86_64,tap

[2]
WORKER_CLASS = qemu_x86_64_staging,qemu_x86_64,tap
#PARALLEL_ONE_HOST_ONLY = 1
[3]
WORKER_CLASS = qemu_x86_64_staging,qemu_x86_64,tap

#[1]
#WORKER_CLASS = 64bit-ipmi

Expand Down
6 changes: 3 additions & 3 deletions lib/OpenQA/WebAPI/Controller/API/V1/Worker.pm
Original file line number Diff line number Diff line change
Expand Up @@ -173,18 +173,18 @@ sub create {
my ($self) = @_;
my $validation = $self->validation;
my @validation_params
= qw(cpu_arch cpu_modelname cpu_opmode cpu_flags mem_max isotovideo_interface_version websocket_api_version worker_class);
= qw(cpu_arch cpu_modelname cpu_opmode cpu_flags mem_max isotovideo_interface_version websocket_api_version worker_class parallel_one_host_only);
$validation->required($_) for qw(host instance cpu_arch mem_max worker_class);
$validation->optional($_)
for qw(cpu_modelname cpu_opmode cpu_flags isotovideo_interface_version job_id websocket_api_version);
for qw(cpu_modelname cpu_opmode cpu_flags isotovideo_interface_version job_id websocket_api_version parallel_one_host_only);
return $self->reply->validation_error({format => 'json'}) if $validation->has_error;

my $host = $validation->param('host');
my $instance = $validation->param('instance');
my $job_ids = $validation->every_param('job_id');
my $caps = {};
$caps->{$_} = $validation->param($_) for @validation_params;

#print "CAPS == $caps";
my $id;
try {
$id = $self->_register($self->schema, $host, $instance, $caps, $job_ids);
Expand Down
1 change: 1 addition & 0 deletions lib/OpenQA/Worker.pm
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,7 @@ sub capabilities ($self) {
$caps->{worker_class}
= join(',', map { 'qemu_' . $_ } @{$supported_archs_by_cpu_archs{$caps->{cpu_arch}} // [$caps->{cpu_arch}]});
# TODO: check installed qemu and kvm?
$caps->{parallel_one_host_only} = $global_settings->{PARALLEL_ONE_HOST_ONLY} if exists $global_settings->{PARALLEL_ONE_HOST_ONLY};
}

return $self->{_caps} = $caps;
Expand Down

0 comments on commit ab04ef5

Please sign in to comment.