Add support for jobboard etcd backend
Depends-on: https://review.opendev.org/915834 Change-Id: I1977abce2196db0126db1917c141cd8fcabdf1ea
This commit is contained in:
@@ -25,6 +25,7 @@ class octavia::params {
|
||||
$octavia_wsgi_script_source = '/usr/bin/octavia-wsgi'
|
||||
$python_redis_package_name = 'python3-redis'
|
||||
$python_kazoo_package_name = 'python3-kazoo'
|
||||
$python_etcd3gw_package_name = 'python3-etcd3gw'
|
||||
}
|
||||
'Debian': {
|
||||
$common_package_name = 'octavia-common'
|
||||
@@ -37,6 +38,7 @@ class octavia::params {
|
||||
$octavia_wsgi_script_source = '/usr/bin/octavia-wsgi'
|
||||
$python_redis_package_name = 'python3-redis'
|
||||
$python_kazoo_package_name = 'python3-kazoo'
|
||||
$python_etcd3gw_package_name = 'python3-etcd3gw'
|
||||
}
|
||||
default: {
|
||||
fail("Unsupported osfamily: ${facts['os']['family']}")
|
||||
|
@@ -73,6 +73,18 @@
|
||||
# (optional) Zookeeper jobboard backend ssl configuration options.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*jobboard_etcd_ssl_options*]
|
||||
# (optional) Etcd jobboard backend ssl configuration options.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*jobboard_etcd_timeout*]
|
||||
# (optional) Timeout when communicating with the Etcd backend.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*jobboard_etcd_api_path*]
|
||||
# (optional) API Path of the Etcd server.
|
||||
# Defaults to $facts['os_service_default']
|
||||
#
|
||||
# [*jobboard_expiration_time*]
|
||||
# (optional) Expiration time in seconds for jobboard tasks.
|
||||
# Defaults to $facts['os_service_default']
|
||||
@@ -111,6 +123,9 @@ class octavia::task_flow (
|
||||
$jobboard_redis_backend_ssl_options = $facts['os_service_default'],
|
||||
$jobboard_redis_sentinel_ssl_options = $facts['os_service_default'],
|
||||
$jobboard_zookeeper_ssl_options = $facts['os_service_default'],
|
||||
$jobboard_etcd_ssl_options = $facts['os_service_default'],
|
||||
$jobboard_etcd_timeout = $facts['os_service_default'],
|
||||
$jobboard_etcd_api_path = $facts['os_service_default'],
|
||||
$jobboard_expiration_time = $facts['os_service_default'],
|
||||
$jobboard_save_logbook = $facts['os_service_default'],
|
||||
$persistence_connection = $facts['os_service_default'],
|
||||
@@ -133,6 +148,10 @@ class octavia::task_flow (
|
||||
Hash => join(join_keys_to_values($jobboard_zookeeper_ssl_options, ':'), ','),
|
||||
default => join(any2array($jobboard_zookeeper_ssl_options), ','),
|
||||
}
|
||||
$jobboard_etcd_ssl_options_real = $jobboard_etcd_ssl_options ? {
|
||||
Hash => join(join_keys_to_values($jobboard_etcd_ssl_options, ':'), ','),
|
||||
default => join(any2array($jobboard_etcd_ssl_options), ','),
|
||||
}
|
||||
|
||||
if $manage_backend_package {
|
||||
$jobboard_backend_driver_real = is_service_default($jobboard_backend_driver) ? {
|
||||
@@ -151,6 +170,16 @@ class octavia::task_flow (
|
||||
-> Package['python-kazoo']
|
||||
-> Anchor['octavia::install::end']
|
||||
}
|
||||
'etcd_taskflow_driver': {
|
||||
ensure_packages('python-etcd3gw', {
|
||||
name => $::octavia::params::python_etcd3gw_package_name,
|
||||
ensure => $package_ensure,
|
||||
tag => ['openstack'],
|
||||
})
|
||||
Anchor['octavia::install::begin']
|
||||
-> Package['python-etcd3gw']
|
||||
-> Anchor['octavia::install::end']
|
||||
}
|
||||
'redis_taskflow_driver': {
|
||||
ensure_packages('python-redis', {
|
||||
name => $::octavia::params::python_redis_package_name,
|
||||
@@ -185,6 +214,9 @@ class octavia::task_flow (
|
||||
'task_flow/jobboard_redis_backend_ssl_options' : value => $jobboard_redis_backend_ssl_options_real;
|
||||
'task_flow/jobboard_redis_sentinel_ssl_options' : value => $jobboard_redis_sentinel_ssl_options_real;
|
||||
'task_flow/jobboard_zookeeper_ssl_options' : value => $jobboard_zookeeper_ssl_options_real;
|
||||
'task_flow/jobboard_etcd_ssl_options' : value => $jobboard_etcd_ssl_options_real;
|
||||
'task_flow/jobboard_etcd_timeout' : value => $jobboard_etcd_timeout;
|
||||
'task_flow/jobboard_etcd_api_path' : value => $jobboard_etcd_api_path;
|
||||
'task_flow/jobboard_expiration_time' : value => $jobboard_expiration_time;
|
||||
'task_flow/jobboard_save_logbook' : value => $jobboard_save_logbook;
|
||||
'task_flow/persistence_connection' : value => $persistence_connection;
|
||||
|
@@ -0,0 +1,5 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
The ``octavia::task_flow`` class now supports configuring jobboard etcd
|
||||
backend.
|
@@ -21,6 +21,9 @@ describe 'octavia::task_flow' do
|
||||
should contain_octavia_config('task_flow/jobboard_redis_backend_ssl_options').with_value('<SERVICE DEFAULT>')
|
||||
should contain_octavia_config('task_flow/jobboard_redis_sentinel_ssl_options').with_value('<SERVICE DEFAULT>')
|
||||
should contain_octavia_config('task_flow/jobboard_zookeeper_ssl_options').with_value('<SERVICE DEFAULT>')
|
||||
should contain_octavia_config('task_flow/jobboard_etcd_ssl_options').with_value('<SERVICE DEFAULT>')
|
||||
should contain_octavia_config('task_flow/jobboard_etcd_timeout').with_value('<SERVICE DEFAULT>')
|
||||
should contain_octavia_config('task_flow/jobboard_etcd_api_path').with_value('<SERVICE DEFAULT>')
|
||||
should contain_octavia_config('task_flow/jobboard_expiration_time').with_value('<SERVICE DEFAULT>')
|
||||
should contain_octavia_config('task_flow/jobboard_save_logbook').with_value('<SERVICE DEFAULT>')
|
||||
should contain_octavia_config('task_flow/persistence_connection').with_value('<SERVICE DEFAULT>')
|
||||
@@ -37,6 +40,9 @@ describe 'octavia::task_flow' do
|
||||
it 'should not install python-kazoo' do
|
||||
should_not contain_package('python-kazoo')
|
||||
end
|
||||
it 'should not install python-etcd3gw' do
|
||||
should_not contain_package('python-etcd3gw')
|
||||
end
|
||||
end
|
||||
|
||||
context 'with specified parameters' do
|
||||
@@ -59,6 +65,9 @@ describe 'octavia::task_flow' do
|
||||
:jobboard_redis_backend_ssl_options => ['ssl:false', 'ssl_keyfile:None'],
|
||||
:jobboard_redis_sentinel_ssl_options => ['ssl:false', 'ssl_keyfile:None'],
|
||||
:jobboard_zookeeper_ssl_options => ['use_ssl:false', 'keyfile:None'],
|
||||
:jobboard_etcd_ssl_options => ['use_ssl:false', 'cert_key:None'],
|
||||
:jobboard_etcd_timeout => 60,
|
||||
:jobboard_etcd_api_path => '/v1',
|
||||
:jobboard_expiration_time => 30,
|
||||
:jobboard_save_logbook => false,
|
||||
:persistence_connection => 'sqlite://',
|
||||
@@ -83,6 +92,9 @@ describe 'octavia::task_flow' do
|
||||
should contain_octavia_config('task_flow/jobboard_redis_backend_ssl_options').with_value('ssl:false,ssl_keyfile:None')
|
||||
should contain_octavia_config('task_flow/jobboard_redis_sentinel_ssl_options').with_value('ssl:false,ssl_keyfile:None')
|
||||
should contain_octavia_config('task_flow/jobboard_zookeeper_ssl_options').with_value('use_ssl:false,keyfile:None')
|
||||
should contain_octavia_config('task_flow/jobboard_etcd_ssl_options').with_value('use_ssl:false,cert_key:None')
|
||||
should contain_octavia_config('task_flow/jobboard_etcd_timeout').with_value(60)
|
||||
should contain_octavia_config('task_flow/jobboard_etcd_api_path').with_value('/v1')
|
||||
should contain_octavia_config('task_flow/jobboard_expiration_time').with_value(30)
|
||||
should contain_octavia_config('task_flow/jobboard_save_logbook').with_value(false)
|
||||
should contain_octavia_config('task_flow/persistence_connection').with_value('sqlite://')
|
||||
@@ -99,6 +111,9 @@ describe 'octavia::task_flow' do
|
||||
it 'should not install python-kazoo' do
|
||||
should_not contain_package('python-kazoo')
|
||||
end
|
||||
it 'should not install python-etcd3gw' do
|
||||
should_not contain_package('python-etcd3gw')
|
||||
end
|
||||
end
|
||||
|
||||
context 'with zookeeper driver' do
|
||||
@@ -119,6 +134,34 @@ describe 'octavia::task_flow' do
|
||||
:tag => ['openstack'],
|
||||
)
|
||||
end
|
||||
|
||||
it 'should not install python-etcd3gw' do
|
||||
should_not contain_package('python-etcd3gw')
|
||||
end
|
||||
end
|
||||
|
||||
context 'with etcd driver' do
|
||||
let :params do
|
||||
{
|
||||
:jobboard_backend_driver => 'etcd_taskflow_driver',
|
||||
}
|
||||
end
|
||||
|
||||
it 'should not install python-redis' do
|
||||
should_not contain_package('python-redis')
|
||||
end
|
||||
|
||||
it 'should install python-kazoo' do
|
||||
should_not contain_package('python-kazoo')
|
||||
end
|
||||
|
||||
it 'should install python-etcd3gw' do
|
||||
should contain_package('python-etcd3gw').with(
|
||||
:ensure => 'installed',
|
||||
:name => platform_params[:python_etcd3gw_package_name],
|
||||
:tag => ['openstack'],
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
context 'with ssl options set to dict' do
|
||||
@@ -136,6 +179,10 @@ describe 'octavia::task_flow' do
|
||||
'use_ssl' => 'false',
|
||||
'keyfile' => 'None'
|
||||
},
|
||||
:jobboard_etcd_ssl_options => {
|
||||
'use_ssl' => 'false',
|
||||
'cert_key' => 'None',
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
@@ -143,6 +190,7 @@ describe 'octavia::task_flow' do
|
||||
should contain_octavia_config('task_flow/jobboard_redis_backend_ssl_options').with_value('ssl:false,ssl_keyfile:None')
|
||||
should contain_octavia_config('task_flow/jobboard_redis_sentinel_ssl_options').with_value('ssl:false,ssl_keyfile:None')
|
||||
should contain_octavia_config('task_flow/jobboard_zookeeper_ssl_options').with_value('use_ssl:false,keyfile:None')
|
||||
should contain_octavia_config('task_flow/jobboard_etcd_ssl_options').with_value('use_ssl:false,cert_key:None')
|
||||
}
|
||||
end
|
||||
end
|
||||
@@ -159,13 +207,15 @@ describe 'octavia::task_flow' do
|
||||
case facts[:os]['family']
|
||||
when 'Debian'
|
||||
{
|
||||
:python_redis_package_name => 'python3-redis',
|
||||
:python_kazoo_package_name => 'python3-kazoo'
|
||||
:python_redis_package_name => 'python3-redis',
|
||||
:python_kazoo_package_name => 'python3-kazoo',
|
||||
:python_etcd3gw_package_name => 'python3-etcd3gw'
|
||||
}
|
||||
when 'RedHat'
|
||||
{
|
||||
:python_redis_package_name => 'python3-redis',
|
||||
:python_kazoo_package_name => 'python3-kazoo'
|
||||
:python_redis_package_name => 'python3-redis',
|
||||
:python_kazoo_package_name => 'python3-kazoo',
|
||||
:python_etcd3gw_package_name => 'python3-etcd3gw'
|
||||
}
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user