diff --git a/manifests/conductor.pp b/manifests/conductor.pp index 05c27c53..17794aee 100644 --- a/manifests/conductor.pp +++ b/manifests/conductor.pp @@ -167,6 +167,18 @@ # the default deploy image. # Defaults to $facts['os_service_default'] # +# [*deploy_kernel_by_arch*] +# (optional) A dictionary of key-value paris of each architecture with +# tle Glance ID, http:// or file:// URL of the kernel of the default +# deploy image. +# Defaults to $facts['os_service_default'] +# +# [*deploy_ramdisk_by_arch*] +# (optional) A dictionary of key-value paris of each architecture with +# tle Glance ID, http:// or file:// URL of the initramfs of the default +# deploy image. +# Defaults to $facts['os_service_default'] +# # [*rescue_kernel*] # (optional) Glance UUID, http:// or file:// URL of the kernel of # the default rescue image. @@ -177,6 +189,18 @@ # the default rescue image. # Defaults to $facts['os_service_default'] # +# [*rescue_kernel_by_arch*] +# (optional) A dictionary of key-value paris of each architecture with +# tle Glance ID, http:// or file:// URL of the kernel of the default +# rescue image. +# Defaults to $facts['os_service_default'] +# +# [*rescue_ramdisk_by_arch*] +# (optional) A dictionary of key-value paris of each architecture with +# tle Glance ID, http:// or file:// URL of the initramfs of the default +# rescue image. +# Defaults to $facts['os_service_default'] +# # [*bootloader*] # (optional) Glance ID, http:// or file:// URL of the EFI system partition # image containing EFI boot loader. @@ -240,8 +264,12 @@ class ironic::conductor ( $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'], $allow_provisioning_in_maintenance = $facts['os_service_default'], $image_download_concurrency = $facts['os_service_default'], @@ -282,6 +310,23 @@ class ironic::conductor ( include ironic::pxe::common $http_root_real = pick($::ironic::pxe::common::http_root, $http_root) + $deploy_kernel_by_arch_real = $deploy_kernel_by_arch ? { + Hash => join(join_keys_to_values($deploy_kernel_by_arch, ':'), ','), + default => join(any2array($deploy_kernel_by_arch), ','), + } + $deploy_ramdisk_by_arch_real = $deploy_ramdisk_by_arch ? { + Hash => join(join_keys_to_values($deploy_ramdisk_by_arch, ':'), ','), + default => join(any2array($deploy_ramdisk_by_arch), ','), + } + $rescue_kernel_by_arch_real = $rescue_kernel_by_arch ? { + Hash => join(join_keys_to_values($rescue_kernel_by_arch, ':'), ','), + default => join(any2array($rescue_kernel_by_arch), ','), + } + $rescue_ramdisk_by_arch_real = $rescue_ramdisk_by_arch ? { + Hash => join(join_keys_to_values($rescue_ramdisk_by_arch, ':'), ','), + default => join(any2array($rescue_ramdisk_by_arch), ','), + } + # Configure ironic.conf ironic_config { 'DEFAULT/enabled_hardware_types': value => join(any2array($enabled_hardware_types), ','); @@ -308,8 +353,12 @@ class ironic::conductor ( '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/allow_provisioning_in_maintenance': value => $allow_provisioning_in_maintenance; 'DEFAULT/image_download_concurrency': value => $image_download_concurrency; diff --git a/releasenotes/notes/kernel-ramdisk-by-arch-18d8203cd7d47e38.yaml b/releasenotes/notes/kernel-ramdisk-by-arch-18d8203cd7d47e38.yaml new file mode 100644 index 00000000..1f2f25db --- /dev/null +++ b/releasenotes/notes/kernel-ramdisk-by-arch-18d8203cd7d47e38.yaml @@ -0,0 +1,10 @@ +--- +features: + - | + The following parameters have been added to the ``ironic::conductor`` + class. + + - ``deploy_kernel_by_arch`` + - ``deploy_ramdisk_by_arch`` + - ``ramdisk_kernel_by_arch`` + - ``ramdisk_ramdisk_by_arch`` diff --git a/spec/classes/ironic_conductor_spec.rb b/spec/classes/ironic_conductor_spec.rb index df59e617..3c42ced6 100644 --- a/spec/classes/ironic_conductor_spec.rb +++ b/spec/classes/ironic_conductor_spec.rb @@ -92,8 +92,12 @@ describe 'ironic::conductor' do is_expected.to contain_ironic_config('conductor/conductor_group').with(:value => '') is_expected.to contain_ironic_config('conductor/deploy_kernel').with(:value => '') is_expected.to contain_ironic_config('conductor/deploy_ramdisk').with(:value => '') + is_expected.to contain_ironic_config('conductor/deploy_kernel_by_arch').with(:value => '') + is_expected.to contain_ironic_config('conductor/deploy_ramdisk_by_arch').with(:value => '') is_expected.to contain_ironic_config('conductor/rescue_kernel').with(:value => '') is_expected.to contain_ironic_config('conductor/rescue_ramdisk').with(:value => '') + is_expected.to contain_ironic_config('conductor/rescue_kernel_by_arch').with(:value => '') + is_expected.to contain_ironic_config('conductor/rescue_ramdisk_by_arch').with(:value => '') is_expected.to contain_ironic_config('conductor/bootloader').with(:value => '') is_expected.to contain_ironic_config('DEFAULT/image_download_concurrency').with(:value => '') is_expected.to contain_ironic_config('conductor/deploy_callback_timeout').with(:value => '') @@ -130,8 +134,12 @@ describe 'ironic::conductor' do :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', :allow_provisioning_in_maintenance => false, :image_download_concurrency => 20, @@ -168,8 +176,12 @@ describe 'ironic::conductor' do is_expected.to contain_ironic_config('conductor/conductor_group').with_value(p[:conductor_group]) is_expected.to contain_ironic_config('conductor/deploy_kernel').with_value(p[:deploy_kernel]) is_expected.to contain_ironic_config('conductor/deploy_ramdisk').with_value(p[:deploy_ramdisk]) + is_expected.to contain_ironic_config('conductor/deploy_kernel_by_arch').with_value('x86_64:http://host/deploy.kernel') + is_expected.to contain_ironic_config('conductor/deploy_ramdisk_by_arch').with_value('x86_64:http://host/deploy.ramdisk') is_expected.to contain_ironic_config('conductor/rescue_kernel').with_value(p[:rescue_kernel]) is_expected.to contain_ironic_config('conductor/rescue_ramdisk').with_value(p[:rescue_ramdisk]) + is_expected.to contain_ironic_config('conductor/rescue_kernel_by_arch').with_value('x86_64:http://host/rescue.kernel') + 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/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])