Wire-in max_client_requests for libvirt

Libvirt setting for (admin_/)max_client_requests is an important
configuration to be tweaked when serving long running requests.

Signed-off-by: Bogdan Dobrelya <bdobreli@redhat.com>
Change-Id: I2d0ab2472f940ef6edac662e167033881ab09086
This commit is contained in:
Bogdan Dobrelya 2022-08-29 15:00:32 +02:00
parent 3b6a8ccf9d
commit de886cd1dd
11 changed files with 196 additions and 96 deletions

View File

@ -28,6 +28,15 @@
# on administrative socket.
# Defaults to $::os_service_default
#
# [*max_client_requests*]
# Limit on concurrent requests from a single client connection.
# Defaults to $::os_service_default
#
# [*admin_max_client_requests*]
# Limit on concurrent requests from a single client connection
# for the admin interface.
# Defaults to $::os_service_default
#
# [*tls_priority*]
# (optional) Override the compile time default TLS priority string. The
# default is usually "NORMAL" unless overridden at build time.
@ -40,13 +49,15 @@
# Defaults to $::os_service_default
#
class nova::compute::libvirt::libvirtd (
$log_level = $::os_service_default,
$log_filters = $::os_service_default,
$log_outputs = $::os_service_default,
$max_clients = $::os_service_default,
$admin_max_clients = $::os_service_default,
$tls_priority = $::os_service_default,
$ovs_timeout = $::os_service_default,
$log_level = $::os_service_default,
$log_filters = $::os_service_default,
$log_outputs = $::os_service_default,
$max_clients = $::os_service_default,
$admin_max_clients = $::os_service_default,
$max_client_requests = $::os_service_default,
$admin_max_client_requests = $::os_service_default,
$tls_priority = $::os_service_default,
$ovs_timeout = $::os_service_default,
) {
include nova::deps
@ -57,12 +68,14 @@ class nova::compute::libvirt::libvirtd (
$ovs_timeout_real = pick($::nova::compute::libvirt::ovs_timeout, $ovs_timeout)
libvirtd_config {
'log_level': value => $log_level;
'log_filters': value => $log_filters_real, quote => true;
'log_outputs': value => $log_outputs_real, quote => true;
'max_clients': value => $max_clients;
'admin_max_clients': value => $admin_max_clients;
'tls_priority': value => $tls_priority_real, quote => true;
'ovs_timeout': value => $ovs_timeout_real;
'log_level': value => $log_level;
'log_filters': value => $log_filters_real, quote => true;
'log_outputs': value => $log_outputs_real, quote => true;
'max_clients': value => $max_clients;
'admin_max_clients': value => $admin_max_clients;
'max_client_requests': value => $max_client_requests;
'admin_max_client_requests': value => $admin_max_client_requests;
'tls_priority': value => $tls_priority_real, quote => true;
'ovs_timeout': value => $ovs_timeout_real;
}
}

View File

@ -28,27 +28,40 @@
# on administrative socket.
# Defaults to $::os_service_default
#
# [*max_client_requests*]
# Limit on concurrent requests from a single client connection.
# Defaults to $::os_service_default
#
# [*admin_max_client_requests*]
# Limit on concurrent requests from a single client connection
# for the admin interface.
# Defaults to $::os_service_default
#
# [*ovs_timeout*]
# (optional) A timeout for openvswitch calls made by libvirt
# Defaults to $::os_service_default
#
class nova::compute::libvirt::virtnodedevd (
$log_level = $::os_service_default,
$log_filters = $::os_service_default,
$log_outputs = $::os_service_default,
$max_clients = $::os_service_default,
$admin_max_clients = $::os_service_default,
$ovs_timeout = $::os_service_default,
$log_level = $::os_service_default,
$log_filters = $::os_service_default,
$log_outputs = $::os_service_default,
$max_clients = $::os_service_default,
$admin_max_clients = $::os_service_default,
$max_client_requests = $::os_service_default,
$admin_max_client_requests = $::os_service_default,
$ovs_timeout = $::os_service_default,
) {
include nova::deps
virtnodedevd_config {
'log_level': value => $log_level;
'log_filters': value => $log_filters, quote => true;
'log_outputs': value => $log_outputs, quote => true;
'max_clients': value => $max_clients;
'admin_max_clients': value => $admin_max_clients;
'ovs_timeout': value => $ovs_timeout;
'log_level': value => $log_level;
'log_filters': value => $log_filters, quote => true;
'log_outputs': value => $log_outputs, quote => true;
'max_clients': value => $max_clients;
'admin_max_clients': value => $admin_max_clients;
'max_client_requests': value => $max_client_requests;
'admin_max_client_requests': value => $admin_max_client_requests;
'ovs_timeout': value => $ovs_timeout;
}
}

View File

@ -28,6 +28,15 @@
# on administrative socket.
# Defaults to $::os_service_default
#
# [*max_client_requests*]
# Limit on concurrent requests from a single client connection.
# Defaults to $::os_service_default
#
# [*admin_max_client_requests*]
# Limit on concurrent requests from a single client connection
# for the admin interface.
# Defaults to $::os_service_default
#
# [*ovs_timeout*]
# (optional) A timeout for openvswitch calls made by libvirt
# Defaults to $::os_service_default
@ -40,24 +49,28 @@
# Defaults to $::os_service_default
#
class nova::compute::libvirt::virtproxyd (
$log_level = $::os_service_default,
$log_filters = $::os_service_default,
$log_outputs = $::os_service_default,
$max_clients = $::os_service_default,
$admin_max_clients = $::os_service_default,
$ovs_timeout = $::os_service_default,
$tls_priority = $::os_service_default,
$log_level = $::os_service_default,
$log_filters = $::os_service_default,
$log_outputs = $::os_service_default,
$max_clients = $::os_service_default,
$admin_max_clients = $::os_service_default,
$max_client_requests = $::os_service_default,
$admin_max_client_requests = $::os_service_default,
$ovs_timeout = $::os_service_default,
$tls_priority = $::os_service_default,
) {
include nova::deps
virtproxyd_config {
'log_level': value => $log_level;
'log_filters': value => $log_filters, quote => true;
'log_outputs': value => $log_outputs, quote => true;
'max_clients': value => $max_clients;
'admin_max_clients': value => $admin_max_clients;
'ovs_timeout': value => $ovs_timeout;
'tls_priority': value => $tls_priority, quote => true;
'log_level': value => $log_level;
'log_filters': value => $log_filters, quote => true;
'log_outputs': value => $log_outputs, quote => true;
'max_clients': value => $max_clients;
'admin_max_clients': value => $admin_max_clients;
'max_client_requests': value => $max_client_requests;
'admin_max_client_requests': value => $admin_max_client_requests;
'ovs_timeout': value => $ovs_timeout;
'tls_priority': value => $tls_priority, quote => true;
}
}

View File

@ -28,28 +28,41 @@
# on administrative socket.
# Defaults to $::os_service_default
#
# [*max_client_requests*]
# Limit on concurrent requests from a single client connection.
# Defaults to $::os_service_default
#
# [*admin_max_client_requests*]
# Limit on concurrent requests from a single client connection
# for the admin interface.
# Defaults to $::os_service_default
#
# [*ovs_timeout*]
# (optional) A timeout for openvswitch calls made by libvirt
# Defaults to $::os_service_default
#
#
class nova::compute::libvirt::virtqemud (
$log_level = $::os_service_default,
$log_filters = $::os_service_default,
$log_outputs = $::os_service_default,
$max_clients = $::os_service_default,
$admin_max_clients = $::os_service_default,
$ovs_timeout = $::os_service_default,
$log_level = $::os_service_default,
$log_filters = $::os_service_default,
$log_outputs = $::os_service_default,
$max_clients = $::os_service_default,
$admin_max_clients = $::os_service_default,
$max_client_requests = $::os_service_default,
$admin_max_client_requests = $::os_service_default,
$ovs_timeout = $::os_service_default,
) {
include nova::deps
virtqemud_config {
'log_level': value => $log_level;
'log_filters': value => $log_filters, quote => true;
'log_outputs': value => $log_outputs, quote => true;
'max_clients': value => $max_clients;
'admin_max_clients': value => $admin_max_clients;
'ovs_timeout': value => $ovs_timeout;
'log_level': value => $log_level;
'log_filters': value => $log_filters, quote => true;
'log_outputs': value => $log_outputs, quote => true;
'max_clients': value => $max_clients;
'admin_max_clients': value => $admin_max_clients;
'max_client_requests': value => $max_client_requests;
'admin_max_client_requests': value => $admin_max_client_requests;
'ovs_timeout': value => $ovs_timeout;
}
}

View File

@ -28,27 +28,40 @@
# on administrative socket.
# Defaults to $::os_service_default
#
# [*max_client_requests*]
# Limit on concurrent requests from a single client connection.
# Defaults to $::os_service_default
#
# [*admin_max_client_requests*]
# Limit on concurrent requests from a single client connection
# for the admin interface.
# Defaults to $::os_service_default
#
# [*ovs_timeout*]
# (optional) A timeout for openvswitch calls made by libvirt
# Defaults to $::os_service_default
#
class nova::compute::libvirt::virtsecretd (
$log_level = $::os_service_default,
$log_filters = $::os_service_default,
$log_outputs = $::os_service_default,
$max_clients = $::os_service_default,
$admin_max_clients = $::os_service_default,
$ovs_timeout = $::os_service_default,
$log_level = $::os_service_default,
$log_filters = $::os_service_default,
$log_outputs = $::os_service_default,
$max_clients = $::os_service_default,
$admin_max_clients = $::os_service_default,
$max_client_requests = $::os_service_default,
$admin_max_client_requests = $::os_service_default,
$ovs_timeout = $::os_service_default,
) {
include nova::deps
virtsecretd_config {
'log_level': value => $log_level;
'log_filters': value => $log_filters, quote => true;
'log_outputs': value => $log_outputs, quote => true;
'max_clients': value => $max_clients;
'admin_max_clients': value => $admin_max_clients;
'ovs_timeout': value => $ovs_timeout;
'log_level': value => $log_level;
'log_filters': value => $log_filters, quote => true;
'log_outputs': value => $log_outputs, quote => true;
'max_clients': value => $max_clients;
'admin_max_clients': value => $admin_max_clients;
'max_client_requests': value => $max_client_requests;
'admin_max_client_requests': value => $admin_max_client_requests;
'ovs_timeout': value => $ovs_timeout;
}
}

View File

@ -0,0 +1,5 @@
---
features:
- |
New parameters ``max_client_requests`` and ``admin_max_client_requests``
allow to configure corresponding settings for libvirt.

View File

@ -27,19 +27,23 @@ eos
it { is_expected.to contain_libvirtd_config('log_filters').with_value('<SERVICE DEFAULT>').with_quote(true)}
it { is_expected.to contain_libvirtd_config('max_clients').with_value('<SERVICE DEFAULT>')}
it { is_expected.to contain_libvirtd_config('admin_max_clients').with_value('<SERVICE DEFAULT>')}
it { is_expected.to contain_libvirtd_config('max_client_requests').with_value('<SERVICE DEFAULT>')}
it { is_expected.to contain_libvirtd_config('admin_max_client_requests').with_value('<SERVICE DEFAULT>')}
it { is_expected.to contain_libvirtd_config('tls_priority').with_value('<SERVICE DEFAULT>').with_quote(true)}
it { is_expected.to contain_libvirtd_config('ovs_timeout').with_value('<SERVICE DEFAULT>')}
end
context 'with specified parameters' do
let :params do
{ :log_level => 3,
:log_outputs => '3:syslog',
:log_filters => '1:logging 4:object 4:json 4:event 1:util',
:max_clients => 1024,
:admin_max_clients => 5,
:tls_priority => 'NORMAL',
:ovs_timeout => 20,
{ :log_level => 3,
:log_outputs => '3:syslog',
:log_filters => '1:logging 4:object 4:json 4:event 1:util',
:max_clients => 1024,
:admin_max_clients => 5,
:max_client_requests => 42,
:admin_max_client_requests => 55,
:tls_priority => 'NORMAL',
:ovs_timeout => 20,
}
end
@ -51,6 +55,8 @@ eos
it { is_expected.to contain_libvirtd_config('log_filters').with_value(params[:log_filters]).with_quote(true)}
it { is_expected.to contain_libvirtd_config('max_clients').with_value(params[:max_clients])}
it { is_expected.to contain_libvirtd_config('admin_max_clients').with_value(params[:admin_max_clients])}
it { is_expected.to contain_libvirtd_config('max_client_requests').with_value(params[:max_client_requests])}
it { is_expected.to contain_libvirtd_config('admin_max_client_requests').with_value(params[:admin_max_client_requests])}
it { is_expected.to contain_libvirtd_config('tls_priority').with_value(params[:tls_priority]).with_quote(true)}
it { is_expected.to contain_libvirtd_config('ovs_timeout').with_value(params[:ovs_timeout])}
end

View File

@ -18,17 +18,21 @@ describe 'nova::compute::libvirt::virtnodedevd' do
it { is_expected.to contain_virtnodedevd_config('log_filters').with_value('<SERVICE DEFAULT>').with_quote(true)}
it { is_expected.to contain_virtnodedevd_config('max_clients').with_value('<SERVICE DEFAULT>')}
it { is_expected.to contain_virtnodedevd_config('admin_max_clients').with_value('<SERVICE DEFAULT>')}
it { is_expected.to contain_virtnodedevd_config('max_client_requests').with_value('<SERVICE DEFAULT>')}
it { is_expected.to contain_virtnodedevd_config('admin_max_client_requests').with_value('<SERVICE DEFAULT>')}
it { is_expected.to contain_virtnodedevd_config('ovs_timeout').with_value('<SERVICE DEFAULT>')}
end
context 'with specified parameters' do
let :params do
{ :log_level => 3,
:log_outputs => '3:syslog',
:log_filters => '1:logging 4:object 4:json 4:event 1:util',
:max_clients => 1024,
:admin_max_clients => 5,
:ovs_timeout => 10,
{ :log_level => 3,
:log_outputs => '3:syslog',
:log_filters => '1:logging 4:object 4:json 4:event 1:util',
:max_clients => 1024,
:admin_max_clients => 5,
:max_client_requests => 42,
:admin_max_client_requests => 55,
:ovs_timeout => 10,
}
end
@ -39,6 +43,8 @@ describe 'nova::compute::libvirt::virtnodedevd' do
it { is_expected.to contain_virtnodedevd_config('log_filters').with_value(params[:log_filters]).with_quote(true)}
it { is_expected.to contain_virtnodedevd_config('max_clients').with_value(params[:max_clients])}
it { is_expected.to contain_virtnodedevd_config('admin_max_clients').with_value(params[:admin_max_clients])}
it { is_expected.to contain_virtnodedevd_config('max_client_requests').with_value(params[:max_client_requests])}
it { is_expected.to contain_virtnodedevd_config('admin_max_client_requests').with_value(params[:admin_max_client_requests])}
it { is_expected.to contain_virtnodedevd_config('ovs_timeout').with_value(params[:ovs_timeout])}
end
end

View File

@ -18,19 +18,23 @@ describe 'nova::compute::libvirt::virtproxyd' do
it { is_expected.to contain_virtproxyd_config('log_filters').with_value('<SERVICE DEFAULT>').with_quote(true)}
it { is_expected.to contain_virtproxyd_config('max_clients').with_value('<SERVICE DEFAULT>')}
it { is_expected.to contain_virtproxyd_config('admin_max_clients').with_value('<SERVICE DEFAULT>')}
it { is_expected.to contain_virtproxyd_config('max_client_requests').with_value('<SERVICE DEFAULT>')}
it { is_expected.to contain_virtproxyd_config('admin_max_client_requests').with_value('<SERVICE DEFAULT>')}
it { is_expected.to contain_virtproxyd_config('ovs_timeout').with_value('<SERVICE DEFAULT>')}
it { is_expected.to contain_virtproxyd_config('tls_priority').with_value('<SERVICE DEFAULT>').with_quote(true)}
end
context 'with specified parameters' do
let :params do
{ :log_level => 3,
:log_outputs => '3:syslog',
:log_filters => '1:logging 4:object 4:json 4:event 1:util',
:max_clients => 1024,
:admin_max_clients => 5,
:ovs_timeout => 10,
:tls_priority => 'NORMAL:-VERS-SSL3.0',
{ :log_level => 3,
:log_outputs => '3:syslog',
:log_filters => '1:logging 4:object 4:json 4:event 1:util',
:max_clients => 1024,
:admin_max_clients => 5,
:max_client_requests => 42,
:admin_max_client_requests => 55,
:ovs_timeout => 10,
:tls_priority => 'NORMAL:-VERS-SSL3.0',
}
end
@ -41,6 +45,8 @@ describe 'nova::compute::libvirt::virtproxyd' do
it { is_expected.to contain_virtproxyd_config('log_filters').with_value(params[:log_filters]).with_quote(true)}
it { is_expected.to contain_virtproxyd_config('max_clients').with_value(params[:max_clients])}
it { is_expected.to contain_virtproxyd_config('admin_max_clients').with_value(params[:admin_max_clients])}
it { is_expected.to contain_virtproxyd_config('max_client_requests').with_value(params[:max_client_requests])}
it { is_expected.to contain_virtproxyd_config('admin_max_client_requests').with_value(params[:admin_max_client_requests])}
it { is_expected.to contain_virtproxyd_config('ovs_timeout').with_value(params[:ovs_timeout])}
it { is_expected.to contain_virtproxyd_config('tls_priority').with_value(params[:tls_priority]).with_quote(true)}
end

View File

@ -18,17 +18,21 @@ describe 'nova::compute::libvirt::virtqemud' do
it { is_expected.to contain_virtqemud_config('log_filters').with_value('<SERVICE DEFAULT>').with_quote(true)}
it { is_expected.to contain_virtqemud_config('max_clients').with_value('<SERVICE DEFAULT>')}
it { is_expected.to contain_virtqemud_config('admin_max_clients').with_value('<SERVICE DEFAULT>')}
it { is_expected.to contain_virtqemud_config('max_client_requests').with_value('<SERVICE DEFAULT>')}
it { is_expected.to contain_virtqemud_config('admin_max_client_requests').with_value('<SERVICE DEFAULT>')}
it { is_expected.to contain_virtqemud_config('ovs_timeout').with_value('<SERVICE DEFAULT>')}
end
context 'with specified parameters' do
let :params do
{ :log_level => 3,
:log_outputs => '3:syslog',
:log_filters => '1:logging 4:object 4:json 4:event 1:util',
:max_clients => 1024,
:admin_max_clients => 5,
:ovs_timeout => 10,
{ :log_level => 3,
:log_outputs => '3:syslog',
:log_filters => '1:logging 4:object 4:json 4:event 1:util',
:max_clients => 1024,
:admin_max_clients => 5,
:max_client_requests => 42,
:admin_max_client_requests => 55,
:ovs_timeout => 10,
}
end
@ -39,6 +43,8 @@ describe 'nova::compute::libvirt::virtqemud' do
it { is_expected.to contain_virtqemud_config('log_filters').with_value(params[:log_filters]).with_quote(true)}
it { is_expected.to contain_virtqemud_config('max_clients').with_value(params[:max_clients])}
it { is_expected.to contain_virtqemud_config('admin_max_clients').with_value(params[:admin_max_clients])}
it { is_expected.to contain_virtqemud_config('max_client_requests').with_value(params[:max_client_requests])}
it { is_expected.to contain_virtqemud_config('admin_max_client_requests').with_value(params[:admin_max_client_requests])}
it { is_expected.to contain_virtqemud_config('ovs_timeout').with_value(params[:ovs_timeout])}
end
end

View File

@ -18,17 +18,21 @@ describe 'nova::compute::libvirt::virtsecretd' do
it { is_expected.to contain_virtsecretd_config('log_filters').with_value('<SERVICE DEFAULT>').with_quote(true)}
it { is_expected.to contain_virtsecretd_config('max_clients').with_value('<SERVICE DEFAULT>')}
it { is_expected.to contain_virtsecretd_config('admin_max_clients').with_value('<SERVICE DEFAULT>')}
it { is_expected.to contain_virtsecretd_config('max_client_requests').with_value('<SERVICE DEFAULT>')}
it { is_expected.to contain_virtsecretd_config('admin_max_client_requests').with_value('<SERVICE DEFAULT>')}
it { is_expected.to contain_virtsecretd_config('ovs_timeout').with_value('<SERVICE DEFAULT>')}
end
context 'with specified parameters' do
let :params do
{ :log_level => 3,
:log_outputs => '3:syslog',
:log_filters => '1:logging 4:object 4:json 4:event 1:util',
:max_clients => 1024,
:admin_max_clients => 5,
:ovs_timeout => 10,
{ :log_level => 3,
:log_outputs => '3:syslog',
:log_filters => '1:logging 4:object 4:json 4:event 1:util',
:max_clients => 1024,
:admin_max_clients => 5,
:max_client_requests => 42,
:admin_max_client_requests => 55,
:ovs_timeout => 10,
}
end
@ -39,6 +43,8 @@ describe 'nova::compute::libvirt::virtsecretd' do
it { is_expected.to contain_virtsecretd_config('log_filters').with_value(params[:log_filters]).with_quote(true)}
it { is_expected.to contain_virtsecretd_config('max_clients').with_value(params[:max_clients])}
it { is_expected.to contain_virtsecretd_config('admin_max_clients').with_value(params[:admin_max_clients])}
it { is_expected.to contain_virtsecretd_config('max_client_requests').with_value(params[:max_client_requests])}
it { is_expected.to contain_virtsecretd_config('admin_max_client_requests').with_value(params[:admin_max_client_requests])}
it { is_expected.to contain_virtsecretd_config('ovs_timeout').with_value(params[:ovs_timeout])}
end
end