From 4598e037119fb5a01389430bac7a8ffe6cf23cf6 Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Sun, 2 Feb 2025 23:18:47 +0900 Subject: [PATCH] task_flow: Hard-code default jobboard_backend_driver Hard-code the default driver name instead of guessing it for service default, to make the current logic more robust in potential change of the default value in octavia. Change-Id: Ie732af84f03770e3f665dd4b489f7bb6396762f4 --- manifests/task_flow.pp | 64 ++++++++----------- spec/classes/octavia_task_flow_spec.rb | 2 +- .../jobboardbackenddriver_spec.rb | 32 ++++++++++ types/jobboardbackenddriver.pp | 5 ++ 4 files changed, 66 insertions(+), 37 deletions(-) create mode 100644 spec/type_aliases/jobboardbackenddriver_spec.rb create mode 100644 types/jobboardbackenddriver.pp diff --git a/manifests/task_flow.pp b/manifests/task_flow.pp index 7e76598d..b18982b3 100644 --- a/manifests/task_flow.pp +++ b/manifests/task_flow.pp @@ -23,7 +23,7 @@ # # [*jobboard_backend_driver*] # (optional) Jobboard backend driver that will monitor job state. -# Defaults to $facts['os_service_default'] +# Defaults to 'redis_taskflow_driver' # # [*jobboard_backend_hosts*] # (optional) IP addresses of the redis backend for jobboard. @@ -106,31 +106,31 @@ # Defaults to 'present' # class octavia::task_flow ( - $engine = $facts['os_service_default'], - $max_workers = $facts['os_service_default'], - $disable_revert = $facts['os_service_default'], - $jobboard_enabled = $facts['os_service_default'], - $jobboard_backend_driver = $facts['os_service_default'], - $jobboard_backend_hosts = $facts['os_service_default'], - $jobboard_backend_port = $facts['os_service_default'], - $jobboard_backend_username = $facts['os_service_default'], - $jobboard_backend_password = $facts['os_service_default'], - $jobboard_backend_namespace = $facts['os_service_default'], - $jobboard_redis_backend_db = $facts['os_service_default'], - $jobboard_redis_sentinel = $facts['os_service_default'], - $jobboard_redis_sentinel_username = $facts['os_service_default'], - $jobboard_redis_sentinel_password = $facts['os_service_default'], - $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'], - Boolean $manage_backend_package = true, - $package_ensure = 'present', + $engine = $facts['os_service_default'], + $max_workers = $facts['os_service_default'], + $disable_revert = $facts['os_service_default'], + $jobboard_enabled = $facts['os_service_default'], + Octavia::JobboardBackendDriver $jobboard_backend_driver = 'redis_taskflow_driver', + $jobboard_backend_hosts = $facts['os_service_default'], + $jobboard_backend_port = $facts['os_service_default'], + $jobboard_backend_username = $facts['os_service_default'], + $jobboard_backend_password = $facts['os_service_default'], + $jobboard_backend_namespace = $facts['os_service_default'], + $jobboard_redis_backend_db = $facts['os_service_default'], + $jobboard_redis_sentinel = $facts['os_service_default'], + $jobboard_redis_sentinel_username = $facts['os_service_default'], + $jobboard_redis_sentinel_password = $facts['os_service_default'], + $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'], + Boolean $manage_backend_package = true, + $package_ensure = 'present', ) { include octavia::deps @@ -154,12 +154,7 @@ class octavia::task_flow ( } if $manage_backend_package { - $jobboard_backend_driver_real = is_service_default($jobboard_backend_driver) ? { - true => 'redis_taskflow_driver', - default => $jobboard_backend_driver, - } - - case $jobboard_backend_driver_real { + case $jobboard_backend_driver { 'zookeeper_taskflow_driver': { ensure_packages('python-kazoo', { name => $::octavia::params::python_kazoo_package_name, @@ -180,7 +175,7 @@ class octavia::task_flow ( -> Package['python-etcd3gw'] -> Anchor['octavia::install::end'] } - 'redis_taskflow_driver': { + default: { ensure_packages('python-redis', { name => $::octavia::params::python_redis_package_name, ensure => $package_ensure, @@ -190,9 +185,6 @@ class octavia::task_flow ( -> Package['python-redis'] -> Anchor['octavia::install::end'] } - default: { - fail('unsupported taskflow backend') - } } } diff --git a/spec/classes/octavia_task_flow_spec.rb b/spec/classes/octavia_task_flow_spec.rb index ec9fbf1f..9b89fe1a 100644 --- a/spec/classes/octavia_task_flow_spec.rb +++ b/spec/classes/octavia_task_flow_spec.rb @@ -7,7 +7,7 @@ describe 'octavia::task_flow' do should contain_octavia_config('task_flow/engine').with_value('') should contain_octavia_config('task_flow/max_workers').with_value('') should contain_octavia_config('task_flow/disable_revert').with_value('') - should contain_octavia_config('task_flow/jobboard_backend_driver').with_value('') + should contain_octavia_config('task_flow/jobboard_backend_driver').with_value('redis_taskflow_driver') should contain_octavia_config('task_flow/jobboard_enabled').with_value('') should contain_octavia_config('task_flow/jobboard_backend_hosts').with_value('') should contain_octavia_config('task_flow/jobboard_backend_port').with_value('') diff --git a/spec/type_aliases/jobboardbackenddriver_spec.rb b/spec/type_aliases/jobboardbackenddriver_spec.rb new file mode 100644 index 00000000..4112fd48 --- /dev/null +++ b/spec/type_aliases/jobboardbackenddriver_spec.rb @@ -0,0 +1,32 @@ +require 'spec_helper' + +describe 'Octavia::JobboardBackendDriver' do + describe 'valid types' do + context 'with valid types' do + [ + 'etcd_taskflow_driver', + 'redis_taskflow_driver', + 'zookeeper_taskflow_driver' + ].each do |value| + describe value.inspect do + it { is_expected.to allow_value(value) } + end + end + end + end + + describe 'invalid types' do + context 'with garbage inputs' do + [ + 'bad_taskflow_driver', + 'bad', + '' + ].each do |value| + describe value.inspect do + it { is_expected.not_to allow_value(value) } + end + end + end + end +end + diff --git a/types/jobboardbackenddriver.pp b/types/jobboardbackenddriver.pp new file mode 100644 index 00000000..b6a85a1d --- /dev/null +++ b/types/jobboardbackenddriver.pp @@ -0,0 +1,5 @@ +type Octavia::JobboardBackendDriver = Enum[ + 'etcd_taskflow_driver', + 'redis_taskflow_driver', + 'zookeeper_taskflow_driver' +]