diff --git a/manifests/neutron.pp b/manifests/neutron.pp index f78c834c..04eb95bf 100644 --- a/manifests/neutron.pp +++ b/manifests/neutron.pp @@ -49,6 +49,15 @@ # The endpoint URL for requests for this client # Defaults to $::os_service_default # +# [*dhcpv6_stateful_address_count*] +# Number of IPv6 addresses to allocate for ports created for provisioning, +# cleaning, rescue or inspection on DHCPv6-stateful networks. Different stages +# of the chain-loading process will request addresses with different +# CLID/IAID. Due to non-identical identifiers multiple addresses must be +# reserved for the host to ensure each step of the boot process can +# successfully lease addresses. +# Defaults to $::os_service_default +# # DEPRECATED PARAMETERS # # [*api_endpoint*] @@ -56,17 +65,18 @@ # Defaults to undef # class ironic::neutron ( - $auth_type = 'password', - $auth_url = $::os_service_default, - $project_name = 'services', - $username = 'ironic', - $password = $::os_service_default, - $user_domain_name = 'Default', - $project_domain_name = 'Default', - $region_name = $::os_service_default, - $endpoint_override = $::os_service_default, + $auth_type = 'password', + $auth_url = $::os_service_default, + $project_name = 'services', + $username = 'ironic', + $password = $::os_service_default, + $user_domain_name = 'Default', + $project_domain_name = 'Default', + $region_name = $::os_service_default, + $endpoint_override = $::os_service_default, + $dhcpv6_stateful_address_count = $::os_service_default, # DEPRECATED PARAMETERS - $api_endpoint = undef, + $api_endpoint = undef, ) { if $api_endpoint { @@ -75,14 +85,15 @@ has no effect. Please use ironic::neutron::endpoint_override instead.") } ironic_config { - 'neutron/auth_type': value => $auth_type; - 'neutron/username': value => $username; - 'neutron/password': value => $password, secret => true; - 'neutron/auth_url': value => $auth_url; - 'neutron/project_name': value => $project_name; - 'neutron/user_domain_name': value => $user_domain_name; - 'neutron/project_domain_name': value => $project_domain_name; - 'neutron/region_name': value => $region_name; - 'neutron/endpoint_override': value => $endpoint_override; + 'neutron/auth_type': value => $auth_type; + 'neutron/username': value => $username; + 'neutron/password': value => $password, secret => true; + 'neutron/auth_url': value => $auth_url; + 'neutron/project_name': value => $project_name; + 'neutron/user_domain_name': value => $user_domain_name; + 'neutron/project_domain_name': value => $project_domain_name; + 'neutron/region_name': value => $region_name; + 'neutron/endpoint_override': value => $endpoint_override; + 'neutron/dhcpv6_stateful_address_count': value => $dhcpv6_stateful_address_count; } } diff --git a/releasenotes/notes/dhcpv6-stateful-address-count-af55208639ad7264.yaml b/releasenotes/notes/dhcpv6-stateful-address-count-af55208639ad7264.yaml new file mode 100644 index 00000000..31a5e00d --- /dev/null +++ b/releasenotes/notes/dhcpv6-stateful-address-count-af55208639ad7264.yaml @@ -0,0 +1,8 @@ +--- +features: + - | + For baremetal operations on DHCPv6-stateful networks multiple IPv6 addresses + can now be allocated for neutron ports created for provisioning, cleaning, + rescue or inspection. The new parameter + ``ironic::neutron::dhcpv6_stateful_address_count`` controls the number of + addresses to allocate. diff --git a/spec/classes/ironic_neutron_spec.rb b/spec/classes/ironic_neutron_spec.rb index 9b296695..02fe2d43 100644 --- a/spec/classes/ironic_neutron_spec.rb +++ b/spec/classes/ironic_neutron_spec.rb @@ -43,20 +43,22 @@ describe 'ironic::neutron' do is_expected.to contain_ironic_config('neutron/project_domain_name').with_value('Default') is_expected.to contain_ironic_config('neutron/region_name').with_value('') is_expected.to contain_ironic_config('neutron/endpoint_override').with_value('') + is_expected.to contain_ironic_config('neutron/dhcpv6_stateful_address_count').with_value('') end context 'when overriding parameters' do before :each do params.merge!( - :auth_type => 'noauth', - :auth_url => 'http://example.com', - :project_name => 'project1', - :username => 'admin', - :password => 'pa$$w0rd', - :user_domain_name => 'NonDefault', - :project_domain_name => 'NonDefault', - :region_name => 'regionTwo', - :endpoint_override => 'http://example2.com', + :auth_type => 'noauth', + :auth_url => 'http://example.com', + :project_name => 'project1', + :username => 'admin', + :password => 'pa$$w0rd', + :user_domain_name => 'NonDefault', + :project_domain_name => 'NonDefault', + :region_name => 'regionTwo', + :endpoint_override => 'http://example2.com', + :dhcpv6_stateful_address_count => 8, ) end @@ -70,6 +72,7 @@ describe 'ironic::neutron' do is_expected.to contain_ironic_config('neutron/project_domain_name').with_value(p[:project_domain_name]) is_expected.to contain_ironic_config('neutron/region_name').with_value(p[:region_name]) is_expected.to contain_ironic_config('neutron/endpoint_override').with_value(p[:endpoint_override]) + is_expected.to contain_ironic_config('neutron/dhcpv6_stateful_address_count').with_value(p[:dhcpv6_stateful_address_count]) end end