diff --git a/manifests/inspector.pp b/manifests/inspector.pp index 1970b314..ee8ed0eb 100644 --- a/manifests/inspector.pp +++ b/manifests/inspector.pp @@ -315,66 +315,66 @@ # Defaults to false # class ironic::inspector ( - $package_ensure = 'present', - Boolean $manage_service = true, - Boolean $enabled = true, - $listen_address = $facts['os_service_default'], - Enum['http', 'tftp'] $pxe_transfer_protocol = 'tftp', - Boolean $dhcp_debug = false, - $auth_strategy = 'keystone', - $timeout = $facts['os_service_default'], - $api_max_limit = $facts['os_service_default'], - $dnsmasq_interface = 'br-ctlplane', - $ramdisk_logs_dir = '/var/log/ironic-inspector/ramdisk/', - $always_store_ramdisk_logs = $facts['os_service_default'], - $add_ports = $facts['os_service_default'], - $keep_ports = $facts['os_service_default'], - $store_data = $facts['os_service_default'], - Array[Hash] $dnsmasq_ip_subnets = [], - $dnsmasq_local_ip = '192.168.0.1', - Boolean $dnsmasq_dhcp_sequential_ip = true, - $dnsmasq_dhcp_hostsdir = undef, - $dnsmasq_log_facility = undef, - Boolean $sync_db = true, - Optional[String[1]] $ramdisk_collectors = undef, - String[1] $ramdisk_filename = 'agent.ramdisk', - String[1] $kernel_filename = 'agent.kernel', - $additional_processing_hooks = undef, - String $ramdisk_kernel_args = '', - Integer[0] $ipxe_timeout = 0, - $http_port = '8088', - $detect_boot_mode = $facts['os_service_default'], - Stdlib::Absolutepath $tftp_root = '/tftpboot', - Stdlib::Absolutepath $http_root = '/httpboot', - $node_not_found_hook = $facts['os_service_default'], - $discovery_default_driver = $facts['os_service_default'], - Boolean $enable_ppc64le = false, - Hash $port_physnet_cidr_map = {}, - $uefi_ipxe_bootfile_name = $::ironic::params::uefi_ipxe_bootfile_name, - $control_exchange = $facts['os_service_default'], - $executor_thread_pool_size = $facts['os_service_default'], - $rpc_response_timeout = $facts['os_service_default'], - $rpc_transport = $facts['os_service_default'], - $default_transport_url = 'fake://', - $rabbit_use_ssl = $facts['os_service_default'], - $rabbit_heartbeat_timeout_threshold = $facts['os_service_default'], - $rabbit_heartbeat_rate = $facts['os_service_default'], - $rabbit_heartbeat_in_pthread = $facts['os_service_default'], - $rabbit_ha_queues = $facts['os_service_default'], - $rabbit_quorum_queue = $facts['os_service_default'], - $rabbit_transient_quorum_queue = $facts['os_service_default'], - $rabbit_quorum_delivery_limit = $facts['os_service_default'], - $rabbit_quorum_max_memory_length = $facts['os_service_default'], - $rabbit_quorum_max_memory_bytes = $facts['os_service_default'], - $kombu_ssl_ca_certs = $facts['os_service_default'], - $kombu_ssl_certfile = $facts['os_service_default'], - $kombu_ssl_keyfile = $facts['os_service_default'], - $kombu_ssl_version = $facts['os_service_default'], - $kombu_reconnect_delay = $facts['os_service_default'], - $kombu_failover_strategy = $facts['os_service_default'], - $kombu_compression = $facts['os_service_default'], - $amqp_durable_queues = $facts['os_service_default'], - Boolean $standalone = true, + $package_ensure = 'present', + Boolean $manage_service = true, + Boolean $enabled = true, + $listen_address = $facts['os_service_default'], + Enum['http', 'tftp'] $pxe_transfer_protocol = 'tftp', + Boolean $dhcp_debug = false, + $auth_strategy = 'keystone', + $timeout = $facts['os_service_default'], + $api_max_limit = $facts['os_service_default'], + $dnsmasq_interface = 'br-ctlplane', + $ramdisk_logs_dir = '/var/log/ironic-inspector/ramdisk/', + $always_store_ramdisk_logs = $facts['os_service_default'], + $add_ports = $facts['os_service_default'], + $keep_ports = $facts['os_service_default'], + $store_data = $facts['os_service_default'], + Array[Hash] $dnsmasq_ip_subnets = [], + $dnsmasq_local_ip = '192.168.0.1', + Boolean $dnsmasq_dhcp_sequential_ip = true, + Optional[Stdlib::Absolutepath] $dnsmasq_dhcp_hostsdir = undef, + $dnsmasq_log_facility = undef, + Boolean $sync_db = true, + Optional[String[1]] $ramdisk_collectors = undef, + String[1] $ramdisk_filename = 'agent.ramdisk', + String[1] $kernel_filename = 'agent.kernel', + $additional_processing_hooks = undef, + String $ramdisk_kernel_args = '', + Integer[0] $ipxe_timeout = 0, + $http_port = '8088', + $detect_boot_mode = $facts['os_service_default'], + Stdlib::Absolutepath $tftp_root = '/tftpboot', + Stdlib::Absolutepath $http_root = '/httpboot', + $node_not_found_hook = $facts['os_service_default'], + $discovery_default_driver = $facts['os_service_default'], + Boolean $enable_ppc64le = false, + Hash $port_physnet_cidr_map = {}, + $uefi_ipxe_bootfile_name = $::ironic::params::uefi_ipxe_bootfile_name, + $control_exchange = $facts['os_service_default'], + $executor_thread_pool_size = $facts['os_service_default'], + $rpc_response_timeout = $facts['os_service_default'], + $rpc_transport = $facts['os_service_default'], + $default_transport_url = 'fake://', + $rabbit_use_ssl = $facts['os_service_default'], + $rabbit_heartbeat_timeout_threshold = $facts['os_service_default'], + $rabbit_heartbeat_rate = $facts['os_service_default'], + $rabbit_heartbeat_in_pthread = $facts['os_service_default'], + $rabbit_ha_queues = $facts['os_service_default'], + $rabbit_quorum_queue = $facts['os_service_default'], + $rabbit_transient_quorum_queue = $facts['os_service_default'], + $rabbit_quorum_delivery_limit = $facts['os_service_default'], + $rabbit_quorum_max_memory_length = $facts['os_service_default'], + $rabbit_quorum_max_memory_bytes = $facts['os_service_default'], + $kombu_ssl_ca_certs = $facts['os_service_default'], + $kombu_ssl_certfile = $facts['os_service_default'], + $kombu_ssl_keyfile = $facts['os_service_default'], + $kombu_ssl_version = $facts['os_service_default'], + $kombu_reconnect_delay = $facts['os_service_default'], + $kombu_failover_strategy = $facts['os_service_default'], + $kombu_compression = $facts['os_service_default'], + $amqp_durable_queues = $facts['os_service_default'], + Boolean $standalone = true, ) inherits ironic::params { include ironic::deps @@ -544,6 +544,18 @@ class ironic::inspector ( include ironic::inspector::db::sync } + if $dnsmasq_dhcp_hostsdir { + file { 'ironic-inspector-dnsmasq-dhcp-hostsdir': + ensure => directory, + path => $dnsmasq_dhcp_hostsdir, + owner => $::ironic::params::inspector_user, + group => $::ironic::params::inspector_group, + mode => '0750', + require => Anchor['ironic-inspector::config::begin'], + before => Anchor['ironic-inspector::config::end'] + } + } + if $manage_service { if $enabled { $ensure = 'running' diff --git a/spec/classes/ironic_inspector_spec.rb b/spec/classes/ironic_inspector_spec.rb index 8adb3a73..ddddb507 100644 --- a/spec/classes/ironic_inspector_spec.rb +++ b/spec/classes/ironic_inspector_spec.rb @@ -154,6 +154,10 @@ describe 'ironic::inspector' do ) end + it 'should not contain dhcp hostsdir' do + is_expected.not_to contain_file('ironic-inspector-dnsmasq-dhcp-hostsdir') + end + it 'should contain file /etc/ironic-inspector/dnsmasq.conf' do is_expected.to contain_file('/etc/ironic-inspector/dnsmasq.conf').with( 'ensure' => 'present', @@ -196,6 +200,9 @@ describe 'ironic::inspector' do is_expected.not_to contain_file('/etc/ironic-inspector/dnsmasq.conf').with_content( /^log-facility=.*$/ ) + is_expected.not_to contain_file('/etc/ironic-inspector/dnsmasq.conf').with_content( + /^dhcp-hostsdir=.*$/ + ) end it 'should contain file /tftpboot/pxelinux.cfg/default' do is_expected.to contain_file('/tftpboot/pxelinux.cfg/default').with( @@ -229,6 +236,7 @@ describe 'ironic::inspector' do :discovery_default_driver => 'pxe_ipmitool', :dnsmasq_ip_subnets => [{'ip_range' => '192.168.0.100,192.168.0.120'}], :dnsmasq_dhcp_sequential_ip => false, + :dnsmasq_dhcp_hostsdir => '/etc/ironic-inspector/dhcp-hostsdir', :dnsmasq_log_facility => '/var/log/ironic-inspector/dnsmasq.log', :add_ports => 'all', :always_store_ramdisk_logs => true, @@ -293,6 +301,15 @@ describe 'ironic::inspector' do ) end + it 'should contain dhcp hostsdir' do + is_expected.to contain_file('ironic-inspector-dnsmasq-dhcp-hostsdir').with( + :ensure => 'directory', + :path => '/etc/ironic-inspector/dhcp-hostsdir', + :owner => 'ironic-inspector', + :group => 'ironic-inspector', + ) + end + it 'should contain file /etc/ironic-inspector/dnsmasq.conf' do is_expected.to contain_file('/etc/ironic-inspector/dnsmasq.conf').with( 'ensure' => 'present', @@ -329,6 +346,9 @@ describe 'ironic::inspector' do is_expected.to contain_file('/etc/ironic-inspector/dnsmasq.conf').with_content( /^dhcp-option=tag:efi6,tag:!ipxe6,option6:bootfile-url,tftp:\/\/.*\/otherpxe.efi$/ ) + is_expected.to contain_file('/etc/ironic-inspector/dnsmasq.conf').with_content( + /^dhcp-hostsdir=\/etc\/ironic-inspector\/dhcp-hostsdir$/ + ) end it 'should contain file /var/www/httpboot/inspector.ipxe' do