Add support for [conductor] error_on_ramdisk_config_inconsistency

This option was introduced during this cycle.

Depends-on: https://review.opendev.org/941611
Change-Id: I2459d50438c23303255808c779ef55adc31fd851
Signed-off-by: Takashi Kajinami <kajinamit@oss.nttdata.com>
This commit is contained in:
Takashi Kajinami
2025-07-30 23:16:29 +09:00
parent 194e20d0ac
commit f4eb838b55
3 changed files with 145 additions and 130 deletions

View File

@@ -222,6 +222,11 @@
# containing EFI boot loader.
# Defaults to $facts['os_service_default']
#
# [*error_on_ramdisk_config_inconsistency*]
# (optional) Determine if Ironic should fail to boot ramdisk in situation
# where configuration is ambiguous.
# Defaults to $facts['os_service_default']
#
# [*allow_provisioning_in_maintenance*]
# (optional) Whether to allow nodes to enter or undergo deploy or cleaning
# when in maintenance mode. If this option is set to False, and a node enters
@@ -259,54 +264,55 @@
# Defaults to $facts['os_service_default']
#
class ironic::conductor (
$package_ensure = 'present',
Boolean $enabled = true,
Boolean $manage_service = true,
$enabled_hardware_types = $facts['os_service_default'],
$force_power_state_during_sync = $facts['os_service_default'],
$http_url = $facts['os_service_default'],
Stdlib::Absolutepath $http_root = '/httpboot',
$force_raw_images = $facts['os_service_default'],
$automated_clean = $facts['os_service_default'],
$cleaning_network = $facts['os_service_default'],
$package_ensure = 'present',
Boolean $enabled = true,
Boolean $manage_service = true,
$enabled_hardware_types = $facts['os_service_default'],
$force_power_state_during_sync = $facts['os_service_default'],
$http_url = $facts['os_service_default'],
Stdlib::Absolutepath $http_root = '/httpboot',
$force_raw_images = $facts['os_service_default'],
$automated_clean = $facts['os_service_default'],
$cleaning_network = $facts['os_service_default'],
Optional[Enum['full', 'metadata', 'none']] $cleaning_disk_erase
= undef,
$continue_if_disk_secure_erase_fails = $facts['os_service_default'],
$provisioning_network = $facts['os_service_default'],
$rescuing_network = $facts['os_service_default'],
$inspection_network = $facts['os_service_default'],
$configdrive_use_object_store = $facts['os_service_default'],
$configdrive_swift_container = $facts['os_service_default'],
$inspect_wait_timeout = $facts['os_service_default'],
$default_boot_option = $facts['os_service_default'],
$default_boot_mode = $facts['os_service_default'],
$port_setup_delay = $facts['os_service_default'],
$soft_power_off_timeout = $facts['os_service_default'],
$power_state_change_timeout = $facts['os_service_default'],
$sync_power_state_interval = $facts['os_service_default'],
$sync_power_state_workers = $facts['os_service_default'],
$power_state_sync_max_retries = $facts['os_service_default'],
$power_failure_recovery_interval = $facts['os_service_default'],
$periodic_max_workers = $facts['os_service_default'],
$graceful_shutdown_timeout = $facts['os_service_default'],
$conductor_group = $facts['os_service_default'],
$deploy_kernel = $facts['os_service_default'],
$deploy_ramdisk = $facts['os_service_default'],
$deploy_kernel_by_arch = $facts['os_service_default'],
$deploy_ramdisk_by_arch = $facts['os_service_default'],
$rescue_kernel = $facts['os_service_default'],
$rescue_ramdisk = $facts['os_service_default'],
$rescue_kernel_by_arch = $facts['os_service_default'],
$rescue_ramdisk_by_arch = $facts['os_service_default'],
$bootloader = $facts['os_service_default'],
$bootloader_by_arch = $facts['os_service_default'],
$allow_provisioning_in_maintenance = $facts['os_service_default'],
$image_download_concurrency = $facts['os_service_default'],
$deploy_callback_timeout = $facts['os_service_default'],
$heartbeat_interval = $facts['os_service_default'],
$heartbeat_timeout = $facts['os_service_default'],
$max_concurrent_deploy = $facts['os_service_default'],
$max_concurrent_clean = $facts['os_service_default'],
$continue_if_disk_secure_erase_fails = $facts['os_service_default'],
$provisioning_network = $facts['os_service_default'],
$rescuing_network = $facts['os_service_default'],
$inspection_network = $facts['os_service_default'],
$configdrive_use_object_store = $facts['os_service_default'],
$configdrive_swift_container = $facts['os_service_default'],
$inspect_wait_timeout = $facts['os_service_default'],
$default_boot_option = $facts['os_service_default'],
$default_boot_mode = $facts['os_service_default'],
$port_setup_delay = $facts['os_service_default'],
$soft_power_off_timeout = $facts['os_service_default'],
$power_state_change_timeout = $facts['os_service_default'],
$sync_power_state_interval = $facts['os_service_default'],
$sync_power_state_workers = $facts['os_service_default'],
$power_state_sync_max_retries = $facts['os_service_default'],
$power_failure_recovery_interval = $facts['os_service_default'],
$periodic_max_workers = $facts['os_service_default'],
$graceful_shutdown_timeout = $facts['os_service_default'],
$conductor_group = $facts['os_service_default'],
$deploy_kernel = $facts['os_service_default'],
$deploy_ramdisk = $facts['os_service_default'],
$deploy_kernel_by_arch = $facts['os_service_default'],
$deploy_ramdisk_by_arch = $facts['os_service_default'],
$rescue_kernel = $facts['os_service_default'],
$rescue_ramdisk = $facts['os_service_default'],
$rescue_kernel_by_arch = $facts['os_service_default'],
$rescue_ramdisk_by_arch = $facts['os_service_default'],
$bootloader = $facts['os_service_default'],
$bootloader_by_arch = $facts['os_service_default'],
$error_on_ramdisk_config_inconsistency = $facts['os_service_default'],
$allow_provisioning_in_maintenance = $facts['os_service_default'],
$image_download_concurrency = $facts['os_service_default'],
$deploy_callback_timeout = $facts['os_service_default'],
$heartbeat_interval = $facts['os_service_default'],
$heartbeat_timeout = $facts['os_service_default'],
$max_concurrent_deploy = $facts['os_service_default'],
$max_concurrent_clean = $facts['os_service_default'],
) {
include ironic::deps
@@ -364,47 +370,48 @@ class ironic::conductor (
# Configure ironic.conf
ironic_config {
'DEFAULT/enabled_hardware_types': value => join(any2array($enabled_hardware_types), ',');
'conductor/force_power_state_during_sync': value => $force_power_state_during_sync;
'conductor/automated_clean': value => $automated_clean;
'deploy/http_url': value => $http_url;
'deploy/http_root': value => $http_root_real;
'DEFAULT/force_raw_images': value => $force_raw_images;
'deploy/erase_devices_priority': value => $erase_devices_priority;
'deploy/erase_devices_metadata_priority': value => $erase_devices_metadata_priority;
'deploy/continue_if_disk_secure_erase_fails': value => $continue_if_disk_secure_erase_fails;
'deploy/configdrive_use_object_store': value => $configdrive_use_object_store;
'conductor/configdrive_swift_container': value => $configdrive_swift_container;
'conductor/inspect_wait_timeout': value => $inspect_wait_timeout;
'deploy/default_boot_option': value => $default_boot_option;
'deploy/default_boot_mode': value => $default_boot_mode;
'neutron/port_setup_delay': value => $port_setup_delay;
'conductor/soft_power_off_timeout': value => $soft_power_off_timeout;
'conductor/power_state_change_timeout': value => $power_state_change_timeout;
'conductor/sync_power_state_interval': value => $sync_power_state_interval;
'conductor/sync_power_state_workers': value => $sync_power_state_workers;
'conductor/power_state_sync_max_retries': value => $power_state_sync_max_retries;
'conductor/power_failure_recovery_interval': value => $power_failure_recovery_interval;
'conductor/periodic_max_workers': value => $periodic_max_workers;
'conductor/graceful_shutdown_timeout': value => $graceful_shutdown_timeout;
'conductor/conductor_group': value => $conductor_group;
'conductor/deploy_kernel': value => $deploy_kernel;
'conductor/deploy_ramdisk': value => $deploy_ramdisk;
'conductor/deploy_kernel_by_arch': value => $deploy_kernel_by_arch_real;
'conductor/deploy_ramdisk_by_arch': value => $deploy_ramdisk_by_arch_real;
'conductor/rescue_kernel': value => $rescue_kernel;
'conductor/rescue_ramdisk': value => $rescue_ramdisk;
'conductor/rescue_kernel_by_arch': value => $rescue_kernel_by_arch_real;
'conductor/rescue_ramdisk_by_arch': value => $rescue_ramdisk_by_arch_real;
'conductor/bootloader': value => $bootloader;
'conductor/bootloader_by_arch': value => $bootloader_by_arch_real;
'conductor/allow_provisioning_in_maintenance': value => $allow_provisioning_in_maintenance;
'DEFAULT/image_download_concurrency': value => $image_download_concurrency;
'conductor/deploy_callback_timeout': value => $deploy_callback_timeout;
'conductor/heartbeat_interval': value => $heartbeat_interval;
'conductor/heartbeat_timeout': value => $heartbeat_timeout;
'conductor/max_concurrent_deploy': value => $max_concurrent_deploy;
'conductor/max_concurrent_clean': value => $max_concurrent_clean;
'DEFAULT/enabled_hardware_types': value => join(any2array($enabled_hardware_types), ',');
'conductor/force_power_state_during_sync': value => $force_power_state_during_sync;
'conductor/automated_clean': value => $automated_clean;
'deploy/http_url': value => $http_url;
'deploy/http_root': value => $http_root_real;
'DEFAULT/force_raw_images': value => $force_raw_images;
'deploy/erase_devices_priority': value => $erase_devices_priority;
'deploy/erase_devices_metadata_priority': value => $erase_devices_metadata_priority;
'deploy/continue_if_disk_secure_erase_fails': value => $continue_if_disk_secure_erase_fails;
'deploy/configdrive_use_object_store': value => $configdrive_use_object_store;
'conductor/configdrive_swift_container': value => $configdrive_swift_container;
'conductor/inspect_wait_timeout': value => $inspect_wait_timeout;
'deploy/default_boot_option': value => $default_boot_option;
'deploy/default_boot_mode': value => $default_boot_mode;
'neutron/port_setup_delay': value => $port_setup_delay;
'conductor/soft_power_off_timeout': value => $soft_power_off_timeout;
'conductor/power_state_change_timeout': value => $power_state_change_timeout;
'conductor/sync_power_state_interval': value => $sync_power_state_interval;
'conductor/sync_power_state_workers': value => $sync_power_state_workers;
'conductor/power_state_sync_max_retries': value => $power_state_sync_max_retries;
'conductor/power_failure_recovery_interval': value => $power_failure_recovery_interval;
'conductor/periodic_max_workers': value => $periodic_max_workers;
'conductor/graceful_shutdown_timeout': value => $graceful_shutdown_timeout;
'conductor/conductor_group': value => $conductor_group;
'conductor/deploy_kernel': value => $deploy_kernel;
'conductor/deploy_ramdisk': value => $deploy_ramdisk;
'conductor/deploy_kernel_by_arch': value => $deploy_kernel_by_arch_real;
'conductor/deploy_ramdisk_by_arch': value => $deploy_ramdisk_by_arch_real;
'conductor/rescue_kernel': value => $rescue_kernel;
'conductor/rescue_ramdisk': value => $rescue_ramdisk;
'conductor/rescue_kernel_by_arch': value => $rescue_kernel_by_arch_real;
'conductor/rescue_ramdisk_by_arch': value => $rescue_ramdisk_by_arch_real;
'conductor/bootloader': value => $bootloader;
'conductor/bootloader_by_arch': value => $bootloader_by_arch_real;
'conductor/error_on_ramdisk_config_inconsistency': value => $error_on_ramdisk_config_inconsistency;
'conductor/allow_provisioning_in_maintenance': value => $allow_provisioning_in_maintenance;
'DEFAULT/image_download_concurrency': value => $image_download_concurrency;
'conductor/deploy_callback_timeout': value => $deploy_callback_timeout;
'conductor/heartbeat_interval': value => $heartbeat_interval;
'conductor/heartbeat_timeout': value => $heartbeat_timeout;
'conductor/max_concurrent_deploy': value => $max_concurrent_deploy;
'conductor/max_concurrent_clean': value => $max_concurrent_clean;
}
ironic_config {

View File

@@ -0,0 +1,5 @@
---
features:
- |
The new ``ironic::conductor::error_on_ramdisk_config_inconsistency``
parameter has been added.

View File

@@ -101,6 +101,7 @@ describe 'ironic::conductor' do
is_expected.to contain_ironic_config('conductor/rescue_ramdisk_by_arch').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_ironic_config('conductor/bootloader').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_ironic_config('conductor/bootloader_by_arch').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_ironic_config('conductor/error_on_ramdisk_config_inconsistency').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_ironic_config('DEFAULT/image_download_concurrency').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_ironic_config('conductor/deploy_callback_timeout').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_ironic_config('conductor/heartbeat_interval').with(:value => '<SERVICE DEFAULT>')
@@ -112,49 +113,50 @@ describe 'ironic::conductor' do
context 'when overriding parameters' do
before :each do
params.merge!(
:enabled_hardware_types => ['ipmi', 'irmc'],
:force_power_state_during_sync => false,
:automated_clean => false,
:cleaning_network => '00000000-0000-0000-0000-000000000000',
:provisioning_network => '00000000-0000-0000-0000-000000000000',
:rescuing_network => '00000000-0000-0000-0000-000000000000',
:inspection_network => '00000000-0000-0000-0000-000000000000',
:cleaning_disk_erase => 'metadata',
:http_url => 'http://host:port',
:http_root => '/src/www',
:force_raw_images => false,
:configdrive_use_object_store => true,
:configdrive_swift_container => 'cont',
:inspect_wait_timeout => 600,
:default_boot_option => 'local',
:default_boot_mode => 'uefi',
:port_setup_delay => '15',
:soft_power_off_timeout => 600,
:power_state_change_timeout => '300',
:sync_power_state_interval => 120,
:sync_power_state_workers => 2,
:power_state_sync_max_retries => 5,
:power_failure_recovery_interval => 120,
:periodic_max_workers => 4,
:graceful_shutdown_timeout => 60,
:conductor_group => 'in-the-closet-to-the-left',
:deploy_kernel => 'http://host/deploy.kernel',
:deploy_ramdisk => 'http://host/deploy.ramdisk',
:deploy_kernel_by_arch => {'x86_64' => 'http://host/deploy.kernel'},
:deploy_ramdisk_by_arch => {'x86_64' => 'http://host/deploy.ramdisk'},
:rescue_kernel => 'http://host/rescue.kernel',
:rescue_ramdisk => 'http://host/rescue.ramdisk',
:rescue_kernel_by_arch => {'x86_64' => 'http://host/rescue.kernel'},
:rescue_ramdisk_by_arch => {'x86_64' => 'http://host/rescue.ramdisk'},
:bootloader => 'http://host/bootloader',
:bootloader_by_arch => {'x86_64' => 'http://host/bootloader'},
:allow_provisioning_in_maintenance => false,
:image_download_concurrency => 20,
:deploy_callback_timeout => 1800,
:heartbeat_interval => 10,
:heartbeat_timeout => 60,
:max_concurrent_deploy => 250,
:max_concurrent_clean => 50,
:enabled_hardware_types => ['ipmi', 'irmc'],
:force_power_state_during_sync => false,
:automated_clean => false,
:cleaning_network => '00000000-0000-0000-0000-000000000000',
:provisioning_network => '00000000-0000-0000-0000-000000000000',
:rescuing_network => '00000000-0000-0000-0000-000000000000',
:inspection_network => '00000000-0000-0000-0000-000000000000',
:cleaning_disk_erase => 'metadata',
:http_url => 'http://host:port',
:http_root => '/src/www',
:force_raw_images => false,
:configdrive_use_object_store => true,
:configdrive_swift_container => 'cont',
:inspect_wait_timeout => 600,
:default_boot_option => 'local',
:default_boot_mode => 'uefi',
:port_setup_delay => '15',
:soft_power_off_timeout => 600,
:power_state_change_timeout => '300',
:sync_power_state_interval => 120,
:sync_power_state_workers => 2,
:power_state_sync_max_retries => 5,
:power_failure_recovery_interval => 120,
:periodic_max_workers => 4,
:graceful_shutdown_timeout => 60,
:conductor_group => 'in-the-closet-to-the-left',
:deploy_kernel => 'http://host/deploy.kernel',
:deploy_ramdisk => 'http://host/deploy.ramdisk',
:deploy_kernel_by_arch => {'x86_64' => 'http://host/deploy.kernel'},
:deploy_ramdisk_by_arch => {'x86_64' => 'http://host/deploy.ramdisk'},
:rescue_kernel => 'http://host/rescue.kernel',
:rescue_ramdisk => 'http://host/rescue.ramdisk',
:rescue_kernel_by_arch => {'x86_64' => 'http://host/rescue.kernel'},
:rescue_ramdisk_by_arch => {'x86_64' => 'http://host/rescue.ramdisk'},
:bootloader => 'http://host/bootloader',
:bootloader_by_arch => {'x86_64' => 'http://host/bootloader'},
:error_on_ramdisk_config_inconsistency => false,
:allow_provisioning_in_maintenance => false,
:image_download_concurrency => 20,
:deploy_callback_timeout => 1800,
:heartbeat_interval => 10,
:heartbeat_timeout => 60,
:max_concurrent_deploy => 250,
:max_concurrent_clean => 50,
)
end
it 'should replace default parameter with new value' do
@@ -195,6 +197,7 @@ describe 'ironic::conductor' do
is_expected.to contain_ironic_config('conductor/rescue_ramdisk_by_arch').with_value('x86_64:http://host/rescue.ramdisk')
is_expected.to contain_ironic_config('conductor/bootloader').with_value(p[:bootloader])
is_expected.to contain_ironic_config('conductor/bootloader_by_arch').with_value('x86_64:http://host/bootloader')
is_expected.to contain_ironic_config('conductor/error_on_ramdisk_config_inconsistency').with_value(false)
is_expected.to contain_ironic_config('conductor/allow_provisioning_in_maintenance').with_value(p[:allow_provisioning_in_maintenance])
is_expected.to contain_ironic_config('DEFAULT/image_download_concurrency').with_value(p[:image_download_concurrency])
is_expected.to contain_ironic_config('conductor/deploy_callback_timeout').with_value(p[:deploy_callback_timeout])