diff --git a/manifests/agents/n1kv_vem.pp b/manifests/agents/n1kv_vem.pp index 35113a917..1159a0505 100644 --- a/manifests/agents/n1kv_vem.pp +++ b/manifests/agents/n1kv_vem.pp @@ -9,6 +9,10 @@ # (required) N1KV VSM(Virtual Supervisor Module) VM's IP. # Defaults to 127.0.0.1 # +# [*n1kv_vsm_ipv6*] +# (required) N1KV VSM(Virtual Supervisor Module) VM's IP. +# Defaults to ::1 +# # [*n1kv_vsm_domainid*] # (required) N1KV VSM DomainID. # Defaults to 1000 @@ -101,6 +105,7 @@ # class neutron::agents::n1kv_vem ( $n1kv_vsm_ip = '127.0.0.1', + $n1kv_vsm_ipv6 = '::1', $n1kv_vsm_domain_id = 1000, $host_mgmt_intf = 'eth1', $uplink_profile = {}, diff --git a/spec/classes/neutron_agents_n1kv_vem_spec.rb b/spec/classes/neutron_agents_n1kv_vem_spec.rb index 484b63638..1e68817ae 100644 --- a/spec/classes/neutron_agents_n1kv_vem_spec.rb +++ b/spec/classes/neutron_agents_n1kv_vem_spec.rb @@ -67,6 +67,7 @@ describe 'neutron::agents::n1kv_vem' do let :params do { :n1kv_vsm_ip => '9.0.0.1', + :n1kv_vsm_ipv6 => '::3', :n1kv_vsm_domain_id => 900, :host_mgmt_intf => 'eth9', :portdb => 'ovs', @@ -76,6 +77,8 @@ describe 'neutron::agents::n1kv_vem' do it do is_expected.to contain_file('/etc/n1kv/n1kv.conf') \ .with_content(/^l3control-ipaddr 9.0.0.1/) + is_expected.to contain_file('/etc/n1kv/n1kv.conf') \ + .with_content(/^l3control-ipv6addr ::3/) is_expected.to contain_file('/etc/n1kv/n1kv.conf') \ .with_content(/^switch-domain 900/) is_expected.to contain_file('/etc/n1kv/n1kv.conf') \ @@ -93,6 +96,30 @@ describe 'neutron::agents::n1kv_vem' do end end + context 'verify n1kv.conf svs-mode with default IPv6 address' do + let :params do + { + :n1kv_vsm_ipv6 => '::1' + } + end + it do + is_expected.to contain_file('/etc/n1kv/n1kv.conf') \ + .without_content(/^svs-mode V6/) + end + end + + context 'verify n1kv.conf svs-mode with non-default IPv6 address' do + let :params do + { + :n1kv_vsm_ipv6 => '::3' + } + end + it do + is_expected.to contain_file('/etc/n1kv/n1kv.conf') \ + .with_content(/^svs-mode V6/) + end + end + context 'verify node_type' do let :params do { diff --git a/templates/n1kv.conf.erb b/templates/n1kv.conf.erb index dd9409432..c2fccc340 100644 --- a/templates/n1kv.conf.erb +++ b/templates/n1kv.conf.erb @@ -29,6 +29,21 @@ switch-domain <%= @n1kv_vsm_domain_id %> # restart_on_modify: No l3control-ipaddr <%= @n1kv_vsm_ip %> +# TAG: l3control-ipv6addr +# Description: IPv6 Address of VSM Mgmt I/F +# Optional: No +# Default: ::1 +# restart_on_modify: No +l3control-ipv6addr <%= @n1kv_vsm_ipv6 %> + +# Set svs-mode to V6 if IPv6 address for VSM +# is set to something other than default ::1. +# This tells VEM to communicate with VSM on +# IPv6 instead of the default IPv4 option +<% if @n1kv_vsm_ipv6 != '::1' -%> +svs-mode V6 +<% end -%> + # TAG: host-mgmt-intf # Description: Management interface of the Host # Optional: No (on N1KV, we need this