Convert to rspec-puppet-facts

Change-Id: I780200a2520a87c8a6556cf57313ce11e29aabc3
This commit is contained in:
Tobias Urdin 2018-11-28 17:43:42 +01:00
parent 94347e2ac1
commit b48763cd7e
75 changed files with 3116 additions and 3748 deletions

View File

@ -19,19 +19,20 @@ require 'spec_helper'
describe 'neutron::agents::bagpipe' do describe 'neutron::agents::bagpipe' do
let :params do let :params do
{ :my_as => 64512, {
:api_port => 8082, :my_as => 64512,
:dataplane_driver_ipvpn => 'ovs', :api_port => 8082,
:enabled => true, :dataplane_driver_ipvpn => 'ovs',
:enable_rtc => true, :enabled => true,
:manage_service => true, :enable_rtc => true,
:mpls_interface => '*gre*', :manage_service => true,
:ovs_bridge => 'br-mpls', :mpls_interface => '*gre*',
:package_ensure => 'present', :ovs_bridge => 'br-mpls',
:peers => '192.168.0.101', :package_ensure => 'present',
:proxy_arp => false, :peers => '192.168.0.101',
:purge_config => false, :proxy_arp => false,
:local_address => '127.0.0.1' :purge_config => false,
:local_address => '127.0.0.1'
} }
end end
@ -39,43 +40,38 @@ describe 'neutron::agents::bagpipe' do
{} {}
end end
let :test_facts do shared_examples 'neutron bgpvpn bagpipe agent' do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
}
end
shared_examples_for 'neutron bgpvpn bagpipe agent' do
let :p do let :p do
default_params.merge(params) default_params.merge(params)
end end
it 'passes purge to resource' do it 'passes purge to resource' do
is_expected.to contain_resources('neutron_bgpvpn_bagpipe_config').with({ should contain_resources('neutron_bgpvpn_bagpipe_config').with({
:purge => false :purge => false
}) })
end end
it 'installs bgpvpn bagpipe package' do it 'installs bgpvpn bagpipe package' do
is_expected.to contain_package('openstack-bagpipe-bgp').with( should contain_package('openstack-bagpipe-bgp').with(
:ensure => p[:package_ensure], :ensure => p[:package_ensure],
:name => platform_params[:bagpipe_bgp_package], :name => platform_params[:bagpipe_bgp_package],
) )
end end
it 'configures bgp.conf' do it 'configures bgp.conf' do
is_expected.to contain_neutron_bgpvpn_bagpipe_config('api/port').with_value(p[:api_port]) should contain_neutron_bgpvpn_bagpipe_config('api/port').with_value(p[:api_port])
is_expected.to contain_neutron_bgpvpn_bagpipe_config('bgp/local_address').with_value(p[:local_address]) should contain_neutron_bgpvpn_bagpipe_config('bgp/local_address').with_value(p[:local_address])
is_expected.to contain_neutron_bgpvpn_bagpipe_config('bgp/peers').with_value(p[:peers]) should contain_neutron_bgpvpn_bagpipe_config('bgp/peers').with_value(p[:peers])
is_expected.to contain_neutron_bgpvpn_bagpipe_config('bgp/my_as').with_value(p[:my_as]) should contain_neutron_bgpvpn_bagpipe_config('bgp/my_as').with_value(p[:my_as])
is_expected.to contain_neutron_bgpvpn_bagpipe_config('bgp/enable_rtc').with_value(p[:enable_rtc]) should contain_neutron_bgpvpn_bagpipe_config('bgp/enable_rtc').with_value(p[:enable_rtc])
is_expected.to contain_neutron_bgpvpn_bagpipe_config('dataplane_driver_ipvpn/dataplane_driver').with_value(p[:dataplane_driver_ipvpn]) should contain_neutron_bgpvpn_bagpipe_config('dataplane_driver_ipvpn/dataplane_driver').with_value(p[:dataplane_driver_ipvpn])
is_expected.to contain_neutron_bgpvpn_bagpipe_config('dataplane_driver_ipvpn/ovs_bridge').with_value(p[:ovs_bridge]) should contain_neutron_bgpvpn_bagpipe_config('dataplane_driver_ipvpn/ovs_bridge').with_value(p[:ovs_bridge])
is_expected.to contain_neutron_bgpvpn_bagpipe_config('dataplane_driver_ipvpn/proxy_arp').with_value(p[:proxy_arp]) should contain_neutron_bgpvpn_bagpipe_config('dataplane_driver_ipvpn/proxy_arp').with_value(p[:proxy_arp])
is_expected.to contain_neutron_bgpvpn_bagpipe_config('dataplane_driver_ipvpn/mpls_interface').with_value(p[:mpls_interface]) should contain_neutron_bgpvpn_bagpipe_config('dataplane_driver_ipvpn/mpls_interface').with_value(p[:mpls_interface])
end end
it 'bagpipe service running' do it 'bagpipe service running' do
is_expected.to contain_service('bagpipe-bgp').with_ensure('running') should contain_service('bagpipe-bgp').with_ensure('running')
end end
context 'with multiple peers' do context 'with multiple peers' do
@ -86,7 +82,7 @@ describe 'neutron::agents::bagpipe' do
end end
it 'configures multiple peers in bgp.conf' do it 'configures multiple peers in bgp.conf' do
is_expected.to contain_neutron_bgpvpn_bagpipe_config( should contain_neutron_bgpvpn_bagpipe_config(
'bgp/peers' 'bgp/peers'
).with_value(p[:peers].join(',')) ).with_value(p[:peers].join(','))
end end
@ -110,7 +106,7 @@ describe 'neutron::agents::bagpipe' do
end end
end end
it_configures 'neutron bgpvpn bagpipe agent' it_behaves_like 'neutron bgpvpn bagpipe agent'
end end
end end
end end

View File

@ -17,7 +17,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::agents::bgp_dragent' do describe 'neutron::agents::bgp_dragent' do
let :default_params do let :default_params do
{ {
:package_ensure => 'present', :package_ensure => 'present',
@ -29,8 +28,7 @@ describe 'neutron::agents::bgp_dragent' do
end end
let :params do let :params do
{ {}
}
end end
shared_examples 'neutron::agents::bgp_dragent' do shared_examples 'neutron::agents::bgp_dragent' do

View File

@ -1,114 +1,89 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::agents::bigswitch' do describe 'neutron::agents::bigswitch' do
let :pre_condition do let :pre_condition do
"class { 'neutron': }" "class { 'neutron': }"
end end
let :test_facts do shared_examples 'neutron::agents::bigswitch' do
{ context 'neutron bigswitch base' do
:operatingsystem => 'default', it 'should have' do
:operatingsystemrelease => 'default', should contain_package('python-networking-bigswitch').with(
:package_ensure => 'present', :ensure => 'present',
} :tag => 'openstack'
end )
end
end
shared_examples_for 'neutron bigswitch base' do context 'neutron-bsn-agent only' do
it 'should have' do let :params do
is_expected.to contain_package('python-networking-bigswitch').with( {
:ensure => 'present', :lldp_enabled => false,
:tag => 'openstack' :agent_enabled => true
) }
end
it 'enable neutron-bsn-agent service' do
should contain_service('bigswitch-agent').with(
:enable => params[:agent_enabled],
:ensure =>'running',
:tag =>'neutron-service',
)
end
it 'disable neutron-bsn-lldp service' do
should contain_service('bigswitch-lldp').with(
:enable => params[:lldp_enabled],
:ensure =>'stopped',
:tag =>'neutron-service',
)
end
end
context 'neutron-bsn-lldp only' do
let :params do
{
:lldp_enabled => true,
:agent_enabled => false
}
end
it 'disable neutron-bsn-agent service' do
should contain_service('bigswitch-agent').with(
:enable => params[:agent_enabled],
:ensure =>'stopped',
:tag =>'neutron-service',
)
end
it 'enable neutron-bsn-lldp service' do
should contain_service('bigswitch-lldp').with(
:enable => params[:lldp_enabled],
:ensure =>'running',
:tag =>'neutron-service',
)
end
end end
end end
context 'neutron-bsn-agent only' do shared_examples 'neutron::agents::bigswitch on Debian' do
let :facts do it { should raise_error(Puppet::Error, /Unsupported osfamily Debian/) }
@default_facts.merge(test_facts.merge({
:osfamily => 'RedHat',
:operatingsystemrelease => '7'
}))
end
let :params do
{
:lldp_enabled => false,
:agent_enabled => true
}
end
it_configures 'neutron bigswitch base'
it 'enable neutron-bsn-agent service' do
is_expected.to contain_service('bigswitch-agent').with(
:enable => params[:agent_enabled],
:ensure =>'running',
:tag =>'neutron-service',
)
end
it 'disable neutron-bsn-lldp service' do
is_expected.to contain_service('bigswitch-lldp').with(
:enable => params[:lldp_enabled],
:ensure =>'stopped',
:tag =>'neutron-service',
)
end
end end
context 'neutron-bsn-lldp only' do on_supported_os({
let :facts do :supported_os => OSDefaults.get_supported_os
@default_facts.merge(test_facts.merge({ }).each do |os,facts|
:osfamily => 'RedHat', context "on #{os}" do
:operatingsystemrelease => '7' let (:facts) do
})) facts.merge!(OSDefaults.get_facts())
end
if facts[:osfamily] == 'Debian'
it_behaves_like 'neutron::agents::bigswitch on Debian'
else
it_behaves_like 'neutron::agents::bigswitch'
end
end end
let :params do
{
:lldp_enabled => true,
:agent_enabled => false
}
end
it_configures 'neutron bigswitch base'
it 'disable neutron-bsn-agent service' do
is_expected.to contain_service('bigswitch-agent').with(
:enable => params[:agent_enabled],
:ensure =>'stopped',
:tag =>'neutron-service',
)
end
it 'enable neutron-bsn-lldp service' do
is_expected.to contain_service('bigswitch-lldp').with(
:enable => params[:lldp_enabled],
:ensure =>'running',
:tag =>'neutron-service',
)
end
end end
context 'on Debian platforms' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'Debian'
}))
end
let :params do
{
:lldp_enabled => false,
:agent_enabled => false
}
end
it { is_expected.to raise_error(Puppet::Error, /Unsupported osfamily Debian/) }
end
end end

View File

@ -1,7 +1,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::agents::dhcp' do describe 'neutron::agents::dhcp' do
let :pre_condition do let :pre_condition do
"class { 'neutron': }" "class { 'neutron': }"
end end
@ -11,7 +10,8 @@ describe 'neutron::agents::dhcp' do
end end
let :default_params do let :default_params do
{ :package_ensure => 'present', {
:package_ensure => 'present',
:enabled => true, :enabled => true,
:state_path => '/var/lib/neutron', :state_path => '/var/lib/neutron',
:resync_interval => 30, :resync_interval => 30,
@ -19,72 +19,67 @@ describe 'neutron::agents::dhcp' do
:root_helper => 'sudo neutron-rootwrap /etc/neutron/rootwrap.conf', :root_helper => 'sudo neutron-rootwrap /etc/neutron/rootwrap.conf',
:enable_isolated_metadata => false, :enable_isolated_metadata => false,
:enable_metadata_network => false, :enable_metadata_network => false,
:purge_config => false } :purge_config => false
end
let :test_facts do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
} }
end end
shared_examples_for 'neutron dhcp agent' do shared_examples 'neutron dhcp agent' do
let :p do let :p do
default_params.merge(params) default_params.merge(params)
end end
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it 'configures dhcp_agent.ini' do it 'configures dhcp_agent.ini' do
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/debug').with_value('<SERVICE DEFAULT>'); should contain_neutron_dhcp_agent_config('DEFAULT/debug').with_value('<SERVICE DEFAULT>');
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/state_path').with_value(p[:state_path]); should contain_neutron_dhcp_agent_config('DEFAULT/state_path').with_value(p[:state_path]);
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/resync_interval').with_value(p[:resync_interval]); should contain_neutron_dhcp_agent_config('DEFAULT/resync_interval').with_value(p[:resync_interval]);
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/interface_driver').with_value(p[:interface_driver]); should contain_neutron_dhcp_agent_config('DEFAULT/interface_driver').with_value(p[:interface_driver]);
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/dhcp_driver').with_value('<SERVICE DEFAULT>'); should contain_neutron_dhcp_agent_config('DEFAULT/dhcp_driver').with_value('<SERVICE DEFAULT>');
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/root_helper').with_value(p[:root_helper]); should contain_neutron_dhcp_agent_config('DEFAULT/root_helper').with_value(p[:root_helper]);
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/enable_isolated_metadata').with_value(p[:enable_isolated_metadata]); should contain_neutron_dhcp_agent_config('DEFAULT/enable_isolated_metadata').with_value(p[:enable_isolated_metadata]);
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/force_metadata').with_value('<SERVICE DEFAULT>'); should contain_neutron_dhcp_agent_config('DEFAULT/force_metadata').with_value('<SERVICE DEFAULT>');
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/enable_metadata_network').with_value(p[:enable_metadata_network]); should contain_neutron_dhcp_agent_config('DEFAULT/enable_metadata_network').with_value(p[:enable_metadata_network]);
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/dhcp_broadcast_reply').with_value('<SERVICE DEFAULT>'); should contain_neutron_dhcp_agent_config('DEFAULT/dhcp_broadcast_reply').with_value('<SERVICE DEFAULT>');
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/ovs_integration_bridge').with_value('<SERVICE DEFAULT>'); should contain_neutron_dhcp_agent_config('DEFAULT/ovs_integration_bridge').with_value('<SERVICE DEFAULT>');
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/dnsmasq_local_resolv').with_value('<SERVICE DEFAULT>'); should contain_neutron_dhcp_agent_config('DEFAULT/dnsmasq_local_resolv').with_value('<SERVICE DEFAULT>');
is_expected.to contain_neutron_dhcp_agent_config('AGENT/availability_zone').with_value('<SERVICE DEFAULT>'); should contain_neutron_dhcp_agent_config('AGENT/availability_zone').with_value('<SERVICE DEFAULT>');
is_expected.to contain_neutron_dhcp_agent_config('OVS/ovsdb_connection').with_value('<SERVICE DEFAULT>'); should contain_neutron_dhcp_agent_config('OVS/ovsdb_connection').with_value('<SERVICE DEFAULT>');
is_expected.to contain_neutron_dhcp_agent_config('OVS/ssl_key_file').with_value('<SERVICE DEFAULT>'); should contain_neutron_dhcp_agent_config('OVS/ssl_key_file').with_value('<SERVICE DEFAULT>');
is_expected.to contain_neutron_dhcp_agent_config('OVS/ssl_cert_file').with_value('<SERVICE DEFAULT>'); should contain_neutron_dhcp_agent_config('OVS/ssl_cert_file').with_value('<SERVICE DEFAULT>');
is_expected.to contain_neutron_dhcp_agent_config('OVS/ssl_ca_cert_file').with_value('<SERVICE DEFAULT>'); should contain_neutron_dhcp_agent_config('OVS/ssl_ca_cert_file').with_value('<SERVICE DEFAULT>');
end end
it 'installs neutron dhcp agent package' do it 'installs neutron dhcp agent package' do
if platform_params.has_key?(:dhcp_agent_package) if platform_params.has_key?(:dhcp_agent_package)
is_expected.to contain_package('neutron-dhcp-agent').with( should contain_package('neutron-dhcp-agent').with(
:name => platform_params[:dhcp_agent_package], :name => platform_params[:dhcp_agent_package],
:ensure => p[:package_ensure], :ensure => p[:package_ensure],
:tag => ['openstack', 'neutron-package'], :tag => ['openstack', 'neutron-package'],
) )
is_expected.to contain_package('neutron').that_requires('Anchor[neutron::install::begin]') should contain_package('neutron').that_requires('Anchor[neutron::install::begin]')
is_expected.to contain_package('neutron').that_notifies('Anchor[neutron::install::end]') should contain_package('neutron').that_notifies('Anchor[neutron::install::end]')
is_expected.to contain_package('neutron-dhcp-agent').that_requires('Anchor[neutron::install::begin]') should contain_package('neutron-dhcp-agent').that_requires('Anchor[neutron::install::begin]')
is_expected.to contain_package('neutron-dhcp-agent').that_notifies('Anchor[neutron::install::end]') should contain_package('neutron-dhcp-agent').that_notifies('Anchor[neutron::install::end]')
else else
is_expected.to contain_package('neutron').that_requires('Anchor[neutron::install::begin]') should contain_package('neutron').that_requires('Anchor[neutron::install::begin]')
is_expected.to contain_package('neutron').that_notifies('Anchor[neutron::install::end]') should contain_package('neutron').that_notifies('Anchor[neutron::install::end]')
end end
end end
it 'configures neutron dhcp agent service' do it 'configures neutron dhcp agent service' do
is_expected.to contain_service('neutron-dhcp-service').with( should contain_service('neutron-dhcp-service').with(
:name => platform_params[:dhcp_agent_service], :name => platform_params[:dhcp_agent_service],
:enable => true, :enable => true,
:ensure => 'running', :ensure => 'running',
:tag => 'neutron-service', :tag => 'neutron-service',
) )
is_expected.to contain_service('neutron-dhcp-service').that_subscribes_to('Anchor[neutron::service::begin]') should contain_service('neutron-dhcp-service').that_subscribes_to('Anchor[neutron::service::begin]')
is_expected.to contain_service('neutron-dhcp-service').that_notifies('Anchor[neutron::service::end]') should contain_service('neutron-dhcp-service').that_notifies('Anchor[neutron::service::end]')
end end
it 'passes purge to resource' do it 'passes purge to resource' do
is_expected.to contain_resources('neutron_dhcp_agent_config').with({ should contain_resources('neutron_dhcp_agent_config').with({
:purge => false :purge => false
}) })
end end
@ -94,7 +89,7 @@ describe 'neutron::agents::dhcp' do
params.merge!(:manage_service => false) params.merge!(:manage_service => false)
end end
it 'should not start/stop service' do it 'should not start/stop service' do
is_expected.to contain_service('neutron-dhcp-service').without_ensure should contain_service('neutron-dhcp-service').without_ensure
end end
end end
@ -103,8 +98,8 @@ describe 'neutron::agents::dhcp' do
params.merge!(:enable_isolated_metadata => true, :enable_metadata_network => false) params.merge!(:enable_isolated_metadata => true, :enable_metadata_network => false)
end end
it 'should enable isolated_metadata only' do it 'should enable isolated_metadata only' do
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/enable_isolated_metadata').with_value('true'); should contain_neutron_dhcp_agent_config('DEFAULT/enable_isolated_metadata').with_value('true');
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/enable_metadata_network').with_value('false'); should contain_neutron_dhcp_agent_config('DEFAULT/enable_metadata_network').with_value('false');
end end
end end
@ -113,8 +108,8 @@ describe 'neutron::agents::dhcp' do
params.merge!(:enable_isolated_metadata => true, :enable_metadata_network => true) params.merge!(:enable_isolated_metadata => true, :enable_metadata_network => true)
end end
it 'should enable both isolated_metadata and metadata_network' do it 'should enable both isolated_metadata and metadata_network' do
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/enable_isolated_metadata').with_value('true'); should contain_neutron_dhcp_agent_config('DEFAULT/enable_isolated_metadata').with_value('true');
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/enable_metadata_network').with_value('true'); should contain_neutron_dhcp_agent_config('DEFAULT/enable_metadata_network').with_value('true');
end end
end end
@ -123,7 +118,7 @@ describe 'neutron::agents::dhcp' do
params.merge!(:enable_isolated_metadata => false, :enable_force_metadata => false, :enable_metadata_network => true) params.merge!(:enable_isolated_metadata => false, :enable_force_metadata => false, :enable_metadata_network => true)
end end
it_raises 'a Puppet::Error', /enable_metadata_network to true requires enable_isolated_metadata or enable_force_metadata also enabled./ it { should raise_error(Puppet::Error, /enable_metadata_network to true requires enable_isolated_metadata or enable_force_metadata also enabled./) }
end end
context 'when enabling force metadata only' do context 'when enabling force metadata only' do
@ -131,8 +126,8 @@ describe 'neutron::agents::dhcp' do
params.merge!(:enable_force_metadata => true, :enable_metadata_network => false) params.merge!(:enable_force_metadata => true, :enable_metadata_network => false)
end end
it 'should enable force_metadata only' do it 'should enable force_metadata only' do
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/force_metadata').with_value('true'); should contain_neutron_dhcp_agent_config('DEFAULT/force_metadata').with_value('true');
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/enable_metadata_network').with_value('false'); should contain_neutron_dhcp_agent_config('DEFAULT/enable_metadata_network').with_value('false');
end end
end end
@ -141,8 +136,8 @@ describe 'neutron::agents::dhcp' do
params.merge!(:enable_force_metadata => true, :enable_metadata_network => true) params.merge!(:enable_force_metadata => true, :enable_metadata_network => true)
end end
it 'should enable both force_metadata and metadata_network' do it 'should enable both force_metadata and metadata_network' do
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/force_metadata').with_value('true'); should contain_neutron_dhcp_agent_config('DEFAULT/force_metadata').with_value('true');
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/enable_metadata_network').with_value('true'); should contain_neutron_dhcp_agent_config('DEFAULT/enable_metadata_network').with_value('true');
end end
end end
@ -151,7 +146,7 @@ describe 'neutron::agents::dhcp' do
params.merge!(:availability_zone => 'zone1') params.merge!(:availability_zone => 'zone1')
end end
it 'should configure availability zone' do it 'should configure availability zone' do
is_expected.to contain_neutron_dhcp_agent_config('AGENT/availability_zone').with_value(p[:availability_zone]); should contain_neutron_dhcp_agent_config('AGENT/availability_zone').with_value(p[:availability_zone]);
end end
end end
@ -165,10 +160,10 @@ describe 'neutron::agents::dhcp' do
}) })
end end
it 'configures neutron SSL settings' do it 'configures neutron SSL settings' do
is_expected.to contain_neutron_dhcp_agent_config('OVS/ovsdb_connection').with_value(params[:ovsdb_connection]) should contain_neutron_dhcp_agent_config('OVS/ovsdb_connection').with_value(params[:ovsdb_connection])
is_expected.to contain_neutron_dhcp_agent_config('OVS/ssl_key_file').with_value(params[:ovsdb_agent_ssl_key_file]) should contain_neutron_dhcp_agent_config('OVS/ssl_key_file').with_value(params[:ovsdb_agent_ssl_key_file])
is_expected.to contain_neutron_dhcp_agent_config('OVS/ssl_cert_file').with_value(params[:ovsdb_agent_ssl_cert_file]) should contain_neutron_dhcp_agent_config('OVS/ssl_cert_file').with_value(params[:ovsdb_agent_ssl_cert_file])
is_expected.to contain_neutron_dhcp_agent_config('OVS/ssl_ca_cert_file').with_value(params[:ovsdb_agent_ssl_ca_file]) should contain_neutron_dhcp_agent_config('OVS/ssl_ca_cert_file').with_value(params[:ovsdb_agent_ssl_ca_file])
end end
end end
@ -179,80 +174,79 @@ describe 'neutron::agents::dhcp' do
}) })
end end
it 'fails to configure' do it 'fails to configure' do
is_expected.to raise_error(Puppet::Error) should raise_error(Puppet::Error)
end end
end end
end end
shared_examples_for 'neutron dhcp agent with dnsmasq_config_file specified' do shared_examples 'neutron dhcp agent with dnsmasq_config_file specified' do
before do before do
params.merge!( params.merge!(
:dnsmasq_config_file => '/foo' :dnsmasq_config_file => '/foo'
) )
end end
it 'configures dnsmasq_config_file' do it 'configures dnsmasq_config_file' do
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/dnsmasq_config_file').with_value(params[:dnsmasq_config_file]) should contain_neutron_dhcp_agent_config('DEFAULT/dnsmasq_config_file').with_value(params[:dnsmasq_config_file])
end end
end end
shared_examples_for 'enable advertisement of the DNS resolver on the host.' do shared_examples 'enable advertisement of the DNS resolver on the host.' do
before do before do
params.merge!( params.merge!(
:dnsmasq_local_resolv => true :dnsmasq_local_resolv => true
) )
end end
it 'configures dnsmasq_local_resolv' do it 'configures dnsmasq_local_resolv' do
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/dnsmasq_local_resolv').with_value(params[:dnsmasq_config_file]) should contain_neutron_dhcp_agent_config('DEFAULT/dnsmasq_local_resolv').with_value(params[:dnsmasq_config_file])
end end
end end
shared_examples_for 'neutron dhcp agent with dnsmasq_dns_servers set' do shared_examples 'neutron dhcp agent with dnsmasq_dns_servers set' do
before do before do
params.merge!( params.merge!(
:dnsmasq_dns_servers => ['1.2.3.4','5.6.7.8'] :dnsmasq_dns_servers => ['1.2.3.4','5.6.7.8']
) )
end end
it 'should set dnsmasq_dns_servers' do it 'should set dnsmasq_dns_servers' do
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/dnsmasq_dns_servers').with_value(params[:dnsmasq_dns_servers].join(',')) should contain_neutron_dhcp_agent_config('DEFAULT/dnsmasq_dns_servers').with_value(params[:dnsmasq_dns_servers].join(','))
end end
end end
context 'on Debian platforms' do shared_examples 'neutron::agents::dhcp on Debian' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'Debian',
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } },
}))
end
let :platform_params do
{ :dhcp_agent_package => 'neutron-dhcp-agent',
:dhcp_agent_service => 'neutron-dhcp-agent' }
end
it_configures 'neutron dhcp agent'
it_configures 'neutron dhcp agent with dnsmasq_config_file specified'
it_configures 'neutron dhcp agent with dnsmasq_dns_servers set'
it 'configures subscription to neutron-dhcp-agent package' do it 'configures subscription to neutron-dhcp-agent package' do
is_expected.to contain_service('neutron-dhcp-service').that_subscribes_to('Anchor[neutron::service::begin]') should contain_service('neutron-dhcp-service').that_subscribes_to('Anchor[neutron::service::begin]')
end end
end end
context 'on RedHat platforms' do on_supported_os({
let :facts do :supported_os => OSDefaults.get_supported_os
@default_facts.merge(test_facts.merge({ }).each do |os,facts|
:osfamily => 'RedHat', context "on #{os}" do
:operatingsystemrelease => '7', let (:facts) do
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } }, facts.merge!(OSDefaults.get_facts())
})) end
end
let :platform_params do let (:platform_params) do
{ :dhcp_agent_service => 'neutron-dhcp-agent' } case facts[:osfamily]
end when 'Debian'
{
:dhcp_agent_package => 'neutron-dhcp-agent',
:dhcp_agent_service => 'neutron-dhcp-agent'
}
when 'RedHat'
{
:dhcp_agent_service => 'neutron-dhcp-agent'
}
end
end
it_configures 'neutron dhcp agent' it_behaves_like 'neutron dhcp agent'
it_configures 'neutron dhcp agent with dnsmasq_config_file specified' it_behaves_like 'neutron dhcp agent with dnsmasq_config_file specified'
it_configures 'neutron dhcp agent with dnsmasq_dns_servers set' it_behaves_like 'neutron dhcp agent with dnsmasq_dns_servers set'
if facts[:osfamily] == 'Debian'
it_behaves_like 'neutron::agents::dhcp on Debian'
end
end
end end
end end

View File

@ -17,7 +17,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::agents::l2gw' do describe 'neutron::agents::l2gw' do
let :default_params do let :default_params do
{ :package_ensure => 'present', { :package_ensure => 'present',
:purge_config => false, :purge_config => false,
@ -33,44 +32,39 @@ describe 'neutron::agents::l2gw' do
{} {}
end end
let :test_facts do shared_examples 'neutron l2 gateway agent' do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
}
end
shared_examples_for 'neutron l2 gateway agent' do
let :p do let :p do
default_params.merge(params) default_params.merge(params)
end end
it 'passes purge to resource' do it 'passes purge to resource' do
is_expected.to contain_resources('neutron_l2gw_agent_config').with({ should contain_resources('neutron_l2gw_agent_config').with({
:purge => false :purge => false
}) })
end end
it 'installs l2gw agent package' do it 'installs l2gw agent package' do
is_expected.to contain_package('neutron-l2gw-agent').with( should contain_package('neutron-l2gw-agent').with(
:ensure => p[:package_ensure], :ensure => p[:package_ensure],
:name => platform_params[:l2gw_agent_package_name], :name => platform_params[:l2gw_agent_package_name],
) )
end end
it 'configures l2gw_plugin.ini' do it 'configures l2gw_plugin.ini' do
is_expected.to contain_neutron_l2gw_agent_config('DEFAULT/debug').with_value('<SERVICE DEFAULT>') should contain_neutron_l2gw_agent_config('DEFAULT/debug').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_l2gw_agent_config('ovsdb/enable_manager').with_value(p[:enable_manager]) should contain_neutron_l2gw_agent_config('ovsdb/enable_manager').with_value(p[:enable_manager])
is_expected.to contain_neutron_l2gw_agent_config('ovsdb/manager_table_listening_port').with_value(p[:manager_table_listening_port]) should contain_neutron_l2gw_agent_config('ovsdb/manager_table_listening_port').with_value(p[:manager_table_listening_port])
is_expected.to contain_neutron_l2gw_agent_config('ovsdb/l2_gw_agent_priv_key_base_path').with_value('<SERVICE DEFAULT>') should contain_neutron_l2gw_agent_config('ovsdb/l2_gw_agent_priv_key_base_path').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_l2gw_agent_config('ovsdb/l2_gw_agent_cert_base_path').with_value('<SERVICE DEFAULT>') should contain_neutron_l2gw_agent_config('ovsdb/l2_gw_agent_cert_base_path').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_l2gw_agent_config('ovsdb/l2_gw_agent_ca_cert_base_path').with_value('<SERVICE DEFAULT>') should contain_neutron_l2gw_agent_config('ovsdb/l2_gw_agent_ca_cert_base_path').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_l2gw_agent_config('ovsdb/periodic_interval').with_value('<SERVICE DEFAULT>') should contain_neutron_l2gw_agent_config('ovsdb/periodic_interval').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_l2gw_agent_config('ovsdb/max_connection_retries').with_value('<SERVICE DEFAULT>') should contain_neutron_l2gw_agent_config('ovsdb/max_connection_retries').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_l2gw_agent_config('ovsdb/socket_timeout').with_value(p[:socket_timeout]) should contain_neutron_l2gw_agent_config('ovsdb/socket_timeout').with_value(p[:socket_timeout])
is_expected.to contain_neutron_l2gw_agent_config('ovsdb/ovsdb_hosts').with_value('<SERVICE DEFAULT>') should contain_neutron_l2gw_agent_config('ovsdb/ovsdb_hosts').with_value('<SERVICE DEFAULT>')
end end
it 'l2 agent service running' do it 'l2 agent service running' do
is_expected.to contain_service('neutron-l2gw-agent').with_ensure('running') should contain_service('neutron-l2gw-agent').with_ensure('running')
end end
context 'with multiple ovsdb_hosts' do context 'with multiple ovsdb_hosts' do
@ -81,7 +75,7 @@ describe 'neutron::agents::l2gw' do
end end
it 'configures multiple ovsdb_hosts in l2gateway_agent.ini' do it 'configures multiple ovsdb_hosts in l2gateway_agent.ini' do
is_expected.to contain_neutron_l2gw_agent_config( should contain_neutron_l2gw_agent_config(
'ovsdb/ovsdb_hosts' 'ovsdb/ovsdb_hosts'
).with_value(p[:ovsdb_hosts].join(',')) ).with_value(p[:ovsdb_hosts].join(','))
end end
@ -105,7 +99,7 @@ describe 'neutron::agents::l2gw' do
end end
end end
it_configures 'neutron l2 gateway agent' it_behaves_like 'neutron l2 gateway agent'
end end
end end
end end

View File

@ -1,70 +1,65 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::agents::l3' do describe 'neutron::agents::l3' do
let :pre_condition do let :pre_condition do
"class { 'neutron': }" "class { 'neutron': }"
end end
let :default_params do let :default_params do
{ :package_ensure => 'present', {
:package_ensure => 'present',
:enabled => true, :enabled => true,
:interface_driver => 'neutron.agent.linux.interface.OVSInterfaceDriver', :interface_driver => 'neutron.agent.linux.interface.OVSInterfaceDriver',
:ha_enabled => false, :ha_enabled => false,
:ha_vrrp_auth_type => 'PASS', :ha_vrrp_auth_type => 'PASS',
:ha_vrrp_advert_int => '3', :ha_vrrp_advert_int => '3',
:agent_mode => 'legacy', :agent_mode => 'legacy',
:purge_config => false } :purge_config => false
end
let :test_facts do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
} }
end end
let :params do let :params do
{ } {}
end end
shared_examples_for 'neutron l3 agent' do shared_examples 'neutron l3 agent' do
let :p do let :p do
default_params.merge(params) default_params.merge(params)
end end
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it 'configures l3_agent.ini' do it 'configures l3_agent.ini' do
is_expected.to contain_neutron_l3_agent_config('DEFAULT/debug').with_value('<SERVICE DEFAULT>') should contain_neutron_l3_agent_config('DEFAULT/debug').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_l3_agent_config('DEFAULT/interface_driver').with_value(p[:interface_driver]) should contain_neutron_l3_agent_config('DEFAULT/interface_driver').with_value(p[:interface_driver])
is_expected.to contain_neutron_l3_agent_config('DEFAULT/gateway_external_network_id').with_value('<SERVICE DEFAULT>') should contain_neutron_l3_agent_config('DEFAULT/gateway_external_network_id').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_l3_agent_config('DEFAULT/handle_internal_only_routers').with_value('<SERVICE DEFAULT>') should contain_neutron_l3_agent_config('DEFAULT/handle_internal_only_routers').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_l3_agent_config('DEFAULT/metadata_port').with_value('<SERVICE DEFAULT>') should contain_neutron_l3_agent_config('DEFAULT/metadata_port').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_l3_agent_config('DEFAULT/periodic_interval').with_value('<SERVICE DEFAULT>') should contain_neutron_l3_agent_config('DEFAULT/periodic_interval').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_l3_agent_config('DEFAULT/periodic_fuzzy_delay').with_value('<SERVICE DEFAULT>') should contain_neutron_l3_agent_config('DEFAULT/periodic_fuzzy_delay').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_l3_agent_config('DEFAULT/enable_metadata_proxy').with_value('<SERVICE DEFAULT>') should contain_neutron_l3_agent_config('DEFAULT/enable_metadata_proxy').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_l3_agent_config('AGENT/availability_zone').with_value('<SERVICE DEFAULT>') should contain_neutron_l3_agent_config('AGENT/availability_zone').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_l3_agent_config('AGENT/extensions').with_value('<SERVICE DEFAULT>') should contain_neutron_l3_agent_config('AGENT/extensions').with_value('<SERVICE DEFAULT>')
end end
it 'passes purge to resource' do it 'passes purge to resource' do
is_expected.to contain_resources('neutron_l3_agent_config').with({ should contain_resources('neutron_l3_agent_config').with({
:purge => false :purge => false
}) })
end end
it 'installs neutron l3 agent package' do it 'installs neutron l3 agent package' do
if platform_params.has_key?(:l3_agent_package) if platform_params.has_key?(:l3_agent_package)
is_expected.to contain_package('neutron-l3').with( should contain_package('neutron-l3').with(
:name => platform_params[:l3_agent_package], :name => platform_params[:l3_agent_package],
:ensure => p[:package_ensure], :ensure => p[:package_ensure],
:tag => ['openstack', 'neutron-package'], :tag => ['openstack', 'neutron-package'],
) )
is_expected.to contain_package('neutron-l3').that_requires('Anchor[neutron::install::begin]') should contain_package('neutron-l3').that_requires('Anchor[neutron::install::begin]')
is_expected.to contain_package('neutron-l3').that_notifies('Anchor[neutron::install::end]') should contain_package('neutron-l3').that_notifies('Anchor[neutron::install::end]')
else else
is_expected.to contain_package('neutron').that_requires('Anchor[neutron::install::begin]') should contain_package('neutron').that_requires('Anchor[neutron::install::begin]')
is_expected.to contain_package('neutron').that_notifies('Anchor[neutron::install::end]') should contain_package('neutron').that_notifies('Anchor[neutron::install::end]')
end end
end end
@ -73,14 +68,14 @@ describe 'neutron::agents::l3' do
params.merge!(:manage_service => true) params.merge!(:manage_service => true)
end end
it 'configures neutron l3 agent service' do it 'configures neutron l3 agent service' do
is_expected.to contain_service('neutron-l3').with( should contain_service('neutron-l3').with(
:name => platform_params[:l3_agent_service], :name => platform_params[:l3_agent_service],
:enable => true, :enable => true,
:ensure => 'running', :ensure => 'running',
:tag => 'neutron-service', :tag => 'neutron-service',
) )
is_expected.to contain_service('neutron-l3').that_subscribes_to('Anchor[neutron::service::begin]') should contain_service('neutron-l3').that_subscribes_to('Anchor[neutron::service::begin]')
is_expected.to contain_service('neutron-l3').that_notifies('Anchor[neutron::service::end]') should contain_service('neutron-l3').that_notifies('Anchor[neutron::service::end]')
end end
end end
@ -89,7 +84,7 @@ describe 'neutron::agents::l3' do
params.merge!(:agent_mode => 'dvr') params.merge!(:agent_mode => 'dvr')
end end
it 'should enable DVR mode' do it 'should enable DVR mode' do
is_expected.to contain_neutron_l3_agent_config('DEFAULT/agent_mode').with_value(p[:agent_mode]) should contain_neutron_l3_agent_config('DEFAULT/agent_mode').with_value(p[:agent_mode])
end end
end end
@ -99,9 +94,9 @@ describe 'neutron::agents::l3' do
:ha_vrrp_auth_password => 'secrete') :ha_vrrp_auth_password => 'secrete')
end end
it 'should configure VRRP' do it 'should configure VRRP' do
is_expected.to contain_neutron_l3_agent_config('DEFAULT/ha_vrrp_auth_type').with_value(p[:ha_vrrp_auth_type]) should contain_neutron_l3_agent_config('DEFAULT/ha_vrrp_auth_type').with_value(p[:ha_vrrp_auth_type])
is_expected.to contain_neutron_l3_agent_config('DEFAULT/ha_vrrp_auth_password').with_value(p[:ha_vrrp_auth_password]) should contain_neutron_l3_agent_config('DEFAULT/ha_vrrp_auth_password').with_value(p[:ha_vrrp_auth_password])
is_expected.to contain_neutron_l3_agent_config('DEFAULT/ha_vrrp_advert_int').with_value(p[:ha_vrrp_advert_int]) should contain_neutron_l3_agent_config('DEFAULT/ha_vrrp_advert_int').with_value(p[:ha_vrrp_advert_int])
end end
end end
@ -111,44 +106,41 @@ describe 'neutron::agents::l3' do
end end
it 'configures availability zone' do it 'configures availability zone' do
is_expected.to contain_neutron_l3_agent_config('AGENT/availability_zone').with_value(p[:availability_zone]) should contain_neutron_l3_agent_config('AGENT/availability_zone').with_value(p[:availability_zone])
end end
end end
end end
context 'on Debian platforms' do shared_examples 'neutron::agents::l3 on Debian' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'Debian',
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } },
}))
end
let :platform_params do
{ :l3_agent_package => 'neutron-l3-agent',
:l3_agent_service => 'neutron-l3-agent' }
end
it_configures 'neutron l3 agent'
it 'configures neutron-l3 package subscription' do it 'configures neutron-l3 package subscription' do
is_expected.to contain_service('neutron-l3').that_subscribes_to('Anchor[neutron::service::begin]') should contain_service('neutron-l3').that_subscribes_to('Anchor[neutron::service::begin]')
is_expected.to contain_service('neutron-l3').that_notifies('Anchor[neutron::service::end]') should contain_service('neutron-l3').that_notifies('Anchor[neutron::service::end]')
end end
end end
context 'on RedHat platforms' do on_supported_os({
let :facts do :supported_os => OSDefaults.get_supported_os
@default_facts.merge(test_facts.merge({ }).each do |os,facts|
:osfamily => 'RedHat', context "on #{os}" do
:operatingsystemrelease => '7', let (:facts) do
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } }, facts.merge!(OSDefaults.get_facts())
})) end
end
let :platform_params do let (:platform_params) do
{ :l3_agent_service => 'neutron-l3-agent' } case facts[:osfamily]
end when 'Debian'
{
:l3_agent_package => 'neutron-l3-agent',
:l3_agent_service => 'neutron-l3-agent'
}
when 'RedHat'
{
:l3_agent_service => 'neutron-l3-agent'
}
end
end
it_configures 'neutron l3 agent' it_behaves_like 'neutron l3 agent'
end
end end
end end

View File

@ -1,7 +1,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::agents::lbaas' do describe 'neutron::agents::lbaas' do
let :pre_condition do let :pre_condition do
"class { 'neutron': }" "class { 'neutron': }"
end end
@ -20,55 +19,48 @@ describe 'neutron::agents::lbaas' do
} }
end end
let :test_facts do shared_examples 'neutron lbaas agent' do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
}
end
shared_examples_for 'neutron lbaas agent' do
let :p do let :p do
default_params.merge(params) default_params.merge(params)
end end
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it_configures 'haproxy lbaas_driver' it_behaves_like 'haproxy lbaas_driver'
it_configures 'haproxy lbaas_driver without package' it_behaves_like 'haproxy lbaas_driver without package'
it 'passes purge to resource' do it 'passes purge to resource' do
is_expected.to contain_resources('neutron_lbaas_agent_config').with({ should contain_resources('neutron_lbaas_agent_config').with({
:purge => false :purge => false
}) })
end end
it 'configures lbaas_agent.ini' do it 'configures lbaas_agent.ini' do
is_expected.to contain_neutron_lbaas_agent_config('DEFAULT/debug').with_value('<SERVICE DEFAULT>'); should contain_neutron_lbaas_agent_config('DEFAULT/debug').with_value('<SERVICE DEFAULT>');
is_expected.to contain_neutron_lbaas_agent_config('DEFAULT/interface_driver').with_value(p[:interface_driver]); should contain_neutron_lbaas_agent_config('DEFAULT/interface_driver').with_value(p[:interface_driver]);
is_expected.to contain_neutron_lbaas_agent_config('DEFAULT/device_driver').with_value(p[:device_driver]); should contain_neutron_lbaas_agent_config('DEFAULT/device_driver').with_value(p[:device_driver]);
is_expected.to contain_neutron_lbaas_agent_config('haproxy/user_group').with_value(platform_params[:nobody_user_group]); should contain_neutron_lbaas_agent_config('haproxy/user_group').with_value(platform_params[:nobody_user_group]);
is_expected.to contain_neutron_lbaas_agent_config('DEFAULT/ovs_use_veth').with_value('<SERVICE DEFAULT>'); should contain_neutron_lbaas_agent_config('DEFAULT/ovs_use_veth').with_value('<SERVICE DEFAULT>');
end end
it 'installs neutron lbaas agent package' do it 'installs neutron lbaas agent package' do
is_expected.to contain_package('neutron-lbaasv2-agent').with( should contain_package('neutron-lbaasv2-agent').with(
:name => platform_params[:lbaas_agent_package], :name => platform_params[:lbaas_agent_package],
:ensure => p[:package_ensure], :ensure => p[:package_ensure],
:tag => ['openstack', 'neutron-package'], :tag => ['openstack', 'neutron-package'],
) )
is_expected.to contain_package('neutron').with_before(/Package\[neutron-lbaasv2-agent\]/) should contain_package('neutron').with_before(/Package\[neutron-lbaasv2-agent\]/)
end end
it 'configures neutron lbaas agent service' do it 'configures neutron lbaas agent service' do
is_expected.to contain_service('neutron-lbaasv2-service').with( should contain_service('neutron-lbaasv2-service').with(
:name => platform_params[:lbaas_agent_service], :name => platform_params[:lbaas_agent_service],
:enable => true, :enable => true,
:ensure => 'running', :ensure => 'running',
:tag => 'neutron-service', :tag => 'neutron-service',
) )
is_expected.to contain_service('neutron-lbaasv2-service').that_subscribes_to('Anchor[neutron::service::begin]') should contain_service('neutron-lbaasv2-service').that_subscribes_to('Anchor[neutron::service::begin]')
is_expected.to contain_service('neutron-lbaasv2-service').that_notifies('Anchor[neutron::service::end]') should contain_service('neutron-lbaasv2-service').that_notifies('Anchor[neutron::service::end]')
end end
context 'with manage_service as false' do context 'with manage_service as false' do
@ -76,7 +68,7 @@ describe 'neutron::agents::lbaas' do
params.merge!(:manage_service => false) params.merge!(:manage_service => false)
end end
it 'should not start/stop service' do it 'should not start/stop service' do
is_expected.to contain_service('neutron-lbaasv2-service').with( should contain_service('neutron-lbaasv2-service').with(
:ensure => 'stopped', :ensure => 'stopped',
) )
end end
@ -87,7 +79,7 @@ describe 'neutron::agents::lbaas' do
params.merge!(:ovs_use_veth => false) params.merge!(:ovs_use_veth => false)
end end
it 'should have ovs_use_veth set to false' do it 'should have ovs_use_veth set to false' do
is_expected.to contain_neutron_lbaas_agent_config('DEFAULT/ovs_use_veth').with_value(false); should contain_neutron_lbaas_agent_config('DEFAULT/ovs_use_veth').with_value(false);
end end
end end
@ -96,23 +88,23 @@ describe 'neutron::agents::lbaas' do
params.merge!(:device_driver => '<SERVICE DEFAULT>') params.merge!(:device_driver => '<SERVICE DEFAULT>')
end end
it 'should have devcie_driver set to $::os_service_default' do it 'should have devcie_driver set to $::os_service_default' do
is_expected.to contain_neutron_lbaas_agent_config('DEFAULT/device_driver').with_value('<SERVICE DEFAULT>'); should contain_neutron_lbaas_agent_config('DEFAULT/device_driver').with_value('<SERVICE DEFAULT>');
end end
end end
end end
shared_examples_for 'haproxy lbaas_driver' do shared_examples 'haproxy lbaas_driver' do
it 'installs haproxy packages' do it 'installs haproxy packages' do
if platform_params.has_key?(:lbaas_agent_package) if platform_params.has_key?(:lbaas_agent_package)
is_expected.to contain_package(platform_params[:haproxy_package]).with_before(['Package[neutron-lbaasv2-agent]']) should contain_package(platform_params[:haproxy_package]).with_before(['Package[neutron-lbaasv2-agent]'])
end end
is_expected.to contain_package(platform_params[:haproxy_package]).with( should contain_package(platform_params[:haproxy_package]).with(
:ensure => 'present' :ensure => 'present'
) )
end end
end end
shared_examples_for 'haproxy lbaas_driver without package' do shared_examples 'haproxy lbaas_driver without package' do
let :pre_condition do let :pre_condition do
"package { 'haproxy': "package { 'haproxy':
ensure => 'present' ensure => 'present'
@ -123,50 +115,40 @@ describe 'neutron::agents::lbaas' do
params.merge!(:manage_haproxy_package => false) params.merge!(:manage_haproxy_package => false)
end end
it 'installs haproxy package via haproxy module' do it 'installs haproxy package via haproxy module' do
is_expected.to contain_package(platform_params[:haproxy_package]).with( should contain_package(platform_params[:haproxy_package]).with(
:ensure => 'present' :ensure => 'present'
) )
end end
end end
context 'on Debian platforms' do on_supported_os({
let :facts do :supported_os => OSDefaults.get_supported_os
@default_facts.merge(test_facts.merge( }).each do |os,facts|
{ :osfamily => 'Debian', context "on #{os}" do
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } }, let (:facts) do
:concat_basedir => '/dne' facts.merge!(OSDefaults.get_facts( :concat_basedir => '/dne' ))
} end
))
let (:platform_params) do
case facts[:osfamily]
when 'Debian'
{
:haproxy_package => 'haproxy',
:lbaas_agent_package => 'neutron-lbaasv2-agent',
:nobody_user_group => 'nogroup',
:lbaas_agent_service => 'neutron-lbaasv2-agent'
}
when 'RedHat'
{
:haproxy_package => 'haproxy',
:lbaas_agent_package => 'openstack-neutron-lbaas',
:nobody_user_group => 'nobody',
:lbaas_agent_service => 'neutron-lbaasv2-agent'
}
end
end
it_behaves_like 'neutron lbaas agent'
end end
let :platform_params do
{ :haproxy_package => 'haproxy',
:lbaas_agent_package => 'neutron-lbaasv2-agent',
:nobody_user_group => 'nogroup',
:lbaas_agent_service => 'neutron-lbaasv2-agent' }
end
it_configures 'neutron lbaas agent'
end
context 'on RedHat platforms' do
let :facts do
@default_facts.merge(test_facts.merge(
{ :osfamily => 'RedHat',
:operatingsystemrelease => '7',
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
:concat_basedir => '/dne'
}
))
end
let :platform_params do
{ :haproxy_package => 'haproxy',
:lbaas_agent_package => 'openstack-neutron-lbaas',
:nobody_user_group => 'nobody',
:lbaas_agent_service => 'neutron-lbaasv2-agent' }
end
it_configures 'neutron lbaas agent'
end end
end end

View File

@ -1,75 +1,71 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::agents::metadata' do describe 'neutron::agents::metadata' do
let :pre_condition do let :pre_condition do
"class { 'neutron': }" "class { 'neutron': }"
end end
let :params do let :params do
{ :package_ensure => 'present', {
:enabled => true, :package_ensure => 'present',
:shared_secret => 'metadata-secret', :enabled => true,
:purge_config => false, :shared_secret => 'metadata-secret',
:purge_config => false,
} }
end end
let :test_facts do shared_examples 'neutron metadata agent' do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default',
}
end
shared_examples_for 'neutron metadata agent' do it { should contain_class('neutron::params') }
it { is_expected.to contain_class('neutron::params') }
it 'configures neutron metadata agent service' do it 'configures neutron metadata agent service' do
is_expected.to contain_service('neutron-metadata').with( should contain_service('neutron-metadata').with(
:name => platform_params[:metadata_agent_service], :name => platform_params[:metadata_agent_service],
:enable => params[:enabled], :enable => params[:enabled],
:ensure => 'running', :ensure => 'running',
:tag => 'neutron-service', :tag => 'neutron-service',
) )
is_expected.to contain_service('neutron-metadata').that_subscribes_to('Anchor[neutron::service::begin]') should contain_service('neutron-metadata').that_subscribes_to('Anchor[neutron::service::begin]')
is_expected.to contain_service('neutron-metadata').that_notifies('Anchor[neutron::service::end]') should contain_service('neutron-metadata').that_notifies('Anchor[neutron::service::end]')
end end
context 'with manage_service as false' do context 'with manage_service as false' do
before :each do before :each do
params.merge!(:manage_service => false) params.merge!(:manage_service => false)
end end
it 'should not start/stop service' do it 'should not start/stop service' do
is_expected.to contain_service('neutron-metadata').without_ensure should contain_service('neutron-metadata').without_ensure
end end
end end
it 'passes purge to resource' do it 'passes purge to resource' do
is_expected.to contain_resources('neutron_metadata_agent_config').with({ should contain_resources('neutron_metadata_agent_config').with({
:purge => false :purge => false
}) })
end end
it 'configures metadata_agent.ini' do it 'configures metadata_agent.ini' do
is_expected.to contain_neutron_metadata_agent_config('DEFAULT/debug').with(:value => '<SERVICE DEFAULT>') should contain_neutron_metadata_agent_config('DEFAULT/debug').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_neutron_metadata_agent_config('DEFAULT/auth_ca_cert').with(:value => '<SERVICE DEFAULT>') should contain_neutron_metadata_agent_config('DEFAULT/auth_ca_cert').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_neutron_metadata_agent_config('DEFAULT/nova_client_cert').with(:value => '<SERVICE DEFAULT>') should contain_neutron_metadata_agent_config('DEFAULT/nova_client_cert').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_neutron_metadata_agent_config('DEFAULT/nova_client_priv_key').with(:value => '<SERVICE DEFAULT>') should contain_neutron_metadata_agent_config('DEFAULT/nova_client_priv_key').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_neutron_metadata_agent_config('DEFAULT/nova_metadata_ip').with(:value => '<SERVICE DEFAULT>') should contain_neutron_metadata_agent_config('DEFAULT/nova_metadata_ip').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_neutron_metadata_agent_config('DEFAULT/nova_metadata_host').with(:value => '<SERVICE DEFAULT>') should contain_neutron_metadata_agent_config('DEFAULT/nova_metadata_host').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_neutron_metadata_agent_config('DEFAULT/nova_metadata_port').with(:value => '<SERVICE DEFAULT>') should contain_neutron_metadata_agent_config('DEFAULT/nova_metadata_port').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_neutron_metadata_agent_config('DEFAULT/nova_metadata_protocol').with(:value => '<SERVICE DEFAULT>') should contain_neutron_metadata_agent_config('DEFAULT/nova_metadata_protocol').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_neutron_metadata_agent_config('DEFAULT/metadata_workers').with(:value => facts[:os_workers]) should contain_neutron_metadata_agent_config('DEFAULT/metadata_workers').with(:value => facts[:os_workers])
is_expected.to contain_neutron_metadata_agent_config('DEFAULT/metadata_backlog').with(:value => '<SERVICE DEFAULT>') should contain_neutron_metadata_agent_config('DEFAULT/metadata_backlog').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_neutron_metadata_agent_config('DEFAULT/nova_metadata_insecure').with(:value => '<SERVICE DEFAULT>') should contain_neutron_metadata_agent_config('DEFAULT/nova_metadata_insecure').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_neutron_metadata_agent_config('DEFAULT/metadata_proxy_shared_secret').with(:value => params[:shared_secret]).with_secret(true) should contain_neutron_metadata_agent_config('DEFAULT/metadata_proxy_shared_secret').with(:value => params[:shared_secret]).with_secret(true)
is_expected.to contain_neutron_metadata_agent_config('DEFAULT/cache_url').with(:ensure => 'absent') should contain_neutron_metadata_agent_config('DEFAULT/cache_url').with(:ensure => 'absent')
end end
end end
shared_examples_for 'neutron metadata agent with auth_ca_cert set' do shared_examples 'neutron metadata agent with auth_ca_cert set' do
let :params do let :params do
{ :auth_ca_cert => '/some/cert', {
:auth_ca_cert => '/some/cert',
:shared_secret => '42', :shared_secret => '42',
:nova_client_cert => '/nova/cert', :nova_client_cert => '/nova/cert',
:nova_client_priv_key => '/nova/key', :nova_client_priv_key => '/nova/key',
@ -78,56 +74,56 @@ describe 'neutron::agents::metadata' do
end end
it 'configures certificate' do it 'configures certificate' do
is_expected.to contain_neutron_metadata_agent_config('DEFAULT/auth_ca_cert').with_value('/some/cert') should contain_neutron_metadata_agent_config('DEFAULT/auth_ca_cert').with_value('/some/cert')
is_expected.to contain_neutron_metadata_agent_config('DEFAULT/nova_client_cert').with_value('/nova/cert') should contain_neutron_metadata_agent_config('DEFAULT/nova_client_cert').with_value('/nova/cert')
is_expected.to contain_neutron_metadata_agent_config('DEFAULT/nova_client_priv_key').with_value('/nova/key') should contain_neutron_metadata_agent_config('DEFAULT/nova_client_priv_key').with_value('/nova/key')
is_expected.to contain_neutron_metadata_agent_config('DEFAULT/nova_metadata_insecure').with_value(true) should contain_neutron_metadata_agent_config('DEFAULT/nova_metadata_insecure').with_value(true)
end end
end end
context 'on Debian platforms' do shared_examples 'neutron::agents::metadata on Debian' do
let :facts do
@default_facts.merge(test_facts.merge(
{ :osfamily => 'Debian',
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } } }
))
end
let :platform_params do
{ :metadata_agent_package => 'neutron-metadata-agent',
:metadata_agent_service => 'neutron-metadata-agent' }
end
it 'installs neutron metadata agent package' do it 'installs neutron metadata agent package' do
is_expected.to contain_package('neutron-metadata').with( should contain_package('neutron-metadata').with(
:ensure => params[:package_ensure], :ensure => params[:package_ensure],
:name => platform_params[:metadata_agent_package], :name => platform_params[:metadata_agent_package],
:tag => ['openstack', 'neutron-package'], :tag => ['openstack', 'neutron-package'],
) )
end end
it_configures 'neutron metadata agent'
it_configures 'neutron metadata agent with auth_ca_cert set'
it 'configures subscription to neutron-metadata package' do it 'configures subscription to neutron-metadata package' do
is_expected.to contain_service('neutron-metadata').that_subscribes_to('Anchor[neutron::service::begin]') should contain_service('neutron-metadata').that_subscribes_to('Anchor[neutron::service::begin]')
is_expected.to contain_service('neutron-metadata').that_notifies('Anchor[neutron::service::end]') should contain_service('neutron-metadata').that_notifies('Anchor[neutron::service::end]')
end end
end end
context 'on Red Hat platforms' do on_supported_os({
let :facts do :supported_os => OSDefaults.get_supported_os
@default_facts.merge(test_facts.merge({ }).each do |os,facts|
:osfamily => 'RedHat', context "on #{os}" do
:operatingsystemrelease => '7', let (:facts) do
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } }, facts.merge!(OSDefaults.get_facts())
})) end
end
let :platform_params do let (:platform_params) do
{ :metadata_agent_service => 'neutron-metadata-agent' } case facts[:osfamily]
end when 'Debian'
{
:metadata_agent_package => 'neutron-metadata-agent',
:metadata_agent_service => 'neutron-metadata-agent'
}
when 'RedHat'
{
:metadata_agent_service => 'neutron-metadata-agent'
}
end
end
it_configures 'neutron metadata agent' it_behaves_like 'neutron metadata agent'
it_configures 'neutron metadata agent with auth_ca_cert set' it_behaves_like 'neutron metadata agent with auth_ca_cert set'
if facts[:osfamily] == 'Debian'
it_behaves_like 'neutron::agents::metadata on Debian'
end
end
end end
end end

View File

@ -21,10 +21,10 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::agents::metering' do describe 'neutron::agents::metering' do
let :pre_condition do let :pre_condition do
"class { 'neutron': "class { 'neutron':
service_plugins => ['neutron.services.metering.metering_plugin.MeteringPlugin'] }" service_plugins => ['neutron.services.metering.metering_plugin.MeteringPlugin']
}"
end end
let :params do let :params do
@ -32,7 +32,8 @@ describe 'neutron::agents::metering' do
end end
let :default_params do let :default_params do
{ :package_ensure => 'present', {
:package_ensure => 'present',
:enabled => true, :enabled => true,
:interface_driver => 'neutron.agent.linux.interface.OVSInterfaceDriver', :interface_driver => 'neutron.agent.linux.interface.OVSInterfaceDriver',
:driver => 'neutron.services.metering.drivers.noop.noop_driver.NoopMeteringDriver', :driver => 'neutron.services.metering.drivers.noop.noop_driver.NoopMeteringDriver',
@ -40,62 +41,57 @@ describe 'neutron::agents::metering' do
} }
end end
let :test_facts do shared_examples 'neutron metering agent' do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
}
end
shared_examples_for 'neutron metering agent' do
let :p do let :p do
default_params.merge(params) default_params.merge(params)
end end
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it 'passes purge to resource' do it 'passes purge to resource' do
is_expected.to contain_resources('neutron_metering_agent_config').with({ should contain_resources('neutron_metering_agent_config').with({
:purge => false :purge => false
}) })
end end
it 'configures metering_agent.ini' do it 'configures metering_agent.ini' do
is_expected.to contain_neutron_metering_agent_config('DEFAULT/debug').with_value('<SERVICE DEFAULT>'); should contain_neutron_metering_agent_config('DEFAULT/debug').with_value('<SERVICE DEFAULT>');
is_expected.to contain_neutron_metering_agent_config('DEFAULT/interface_driver').with_value(p[:interface_driver]); should contain_neutron_metering_agent_config('DEFAULT/interface_driver').with_value(p[:interface_driver]);
is_expected.to contain_neutron_metering_agent_config('DEFAULT/driver').with_value(p[:driver]); should contain_neutron_metering_agent_config('DEFAULT/driver').with_value(p[:driver]);
is_expected.to contain_neutron_metering_agent_config('DEFAULT/measure_interval').with_value('<SERVICE DEFAULT>'); should contain_neutron_metering_agent_config('DEFAULT/measure_interval').with_value('<SERVICE DEFAULT>');
is_expected.to contain_neutron_metering_agent_config('DEFAULT/report_interval').with_value('<SERVICE DEFAULT>'); should contain_neutron_metering_agent_config('DEFAULT/report_interval').with_value('<SERVICE DEFAULT>');
end end
it 'installs neutron metering agent package' do it 'installs neutron metering agent package' do
if platform_params.has_key?(:metering_agent_package) if platform_params.has_key?(:metering_agent_package)
is_expected.to contain_package('neutron-metering-agent').with( should contain_package('neutron-metering-agent').with(
:name => platform_params[:metering_agent_package], :name => platform_params[:metering_agent_package],
:ensure => p[:package_ensure], :ensure => p[:package_ensure],
:tag => ['openstack', 'neutron-package'], :tag => ['openstack', 'neutron-package'],
) )
is_expected.to contain_package('neutron').that_requires('Anchor[neutron::install::begin]') should contain_package('neutron').that_requires('Anchor[neutron::install::begin]')
is_expected.to contain_package('neutron').that_notifies('Anchor[neutron::install::end]') should contain_package('neutron').that_notifies('Anchor[neutron::install::end]')
end end
end end
it 'configures neutron metering agent service' do it 'configures neutron metering agent service' do
is_expected.to contain_service('neutron-metering-service').with( should contain_service('neutron-metering-service').with(
:name => platform_params[:metering_agent_service], :name => platform_params[:metering_agent_service],
:enable => true, :enable => true,
:ensure => 'running', :ensure => 'running',
:tag => 'neutron-service', :tag => 'neutron-service',
) )
is_expected.to contain_service('neutron-metering-service').that_subscribes_to('Anchor[neutron::service::begin]') should contain_service('neutron-metering-service').that_subscribes_to('Anchor[neutron::service::begin]')
is_expected.to contain_service('neutron-metering-service').that_notifies('Anchor[neutron::service::end]') should contain_service('neutron-metering-service').that_notifies('Anchor[neutron::service::end]')
end end
context 'with manage_service as false' do context 'with manage_service as false' do
before :each do before :each do
params.merge!(:manage_service => false) params.merge!(:manage_service => false)
end end
it 'should not start/stop service' do it 'should not start/stop service' do
is_expected.to contain_service('neutron-metering-service').without_ensure should contain_service('neutron-metering-service').without_ensure
end end
end end
@ -103,46 +99,48 @@ describe 'neutron::agents::metering' do
before :each do before :each do
params.merge!(:driver => 'neutron.services.metering.drivers.iptables.iptables_driver.IptablesMeteringDriver') params.merge!(:driver => 'neutron.services.metering.drivers.iptables.iptables_driver.IptablesMeteringDriver')
end end
it 'should properly set driver option' do it 'should properly set driver option' do
is_expected.to contain_neutron_metering_agent_config('DEFAULT/driver').with_value(p[:driver]) should contain_neutron_metering_agent_config('DEFAULT/driver').with_value(p[:driver])
end end
end end
end end
context 'on Debian platforms' do shared_examples 'neutron metering agent on Debian' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'Debian',
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } },
}))
end
let :platform_params do
{ :metering_agent_package => 'neutron-metering-agent',
:metering_agent_service => 'neutron-metering-agent' }
end
it_configures 'neutron metering agent'
it 'configures subscription to neutron-metering-agent package' do it 'configures subscription to neutron-metering-agent package' do
is_expected.to contain_service('neutron-metering-service').that_subscribes_to('Anchor[neutron::service::begin]') should contain_service('neutron-metering-service').that_subscribes_to('Anchor[neutron::service::begin]')
is_expected.to contain_service('neutron-metering-service').that_notifies('Anchor[neutron::service::end]') should contain_service('neutron-metering-service').that_notifies('Anchor[neutron::service::end]')
end end
end end
context 'on RedHat platforms' do on_supported_os({
let :facts do :supported_os => OSDefaults.get_supported_os
@default_facts.merge(test_facts.merge({ }).each do |os,facts|
:osfamily => 'RedHat', context "on #{os}" do
:operatingsystemrelease => '7', let (:facts) do
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } }, facts.merge!(OSDefaults.get_facts())
})) end
end
let :platform_params do let (:platform_params) do
{ :metering_agent_package => 'openstack-neutron-metering-agent', case facts[:osfamily]
:metering_agent_service => 'neutron-metering-agent' } when 'Debian'
end {
:metering_agent_package => 'neutron-metering-agent',
:metering_agent_service => 'neutron-metering-agent'
}
when 'RedHat'
{
:metering_agent_package => 'openstack-neutron-metering-agent',
:metering_agent_service => 'neutron-metering-agent'
}
end
end
it_configures 'neutron metering agent' it_behaves_like 'neutron metering agent'
if facts[:osfamily] == 'Debian'
it_behaves_like 'neutron metering agent on Debian'
end
end
end end
end end

View File

@ -1,13 +1,13 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::agents::ml2::linuxbridge' do describe 'neutron::agents::ml2::linuxbridge' do
let :pre_condition do let :pre_condition do
"class { 'neutron': }" "class { 'neutron': }"
end end
let :default_params do let :default_params do
{ :package_ensure => 'present', {
:package_ensure => 'present',
:enabled => true, :enabled => true,
:manage_service => true, :manage_service => true,
:tunnel_types => [], :tunnel_types => [],
@ -18,33 +18,26 @@ describe 'neutron::agents::ml2::linuxbridge' do
:purge_config => false,} :purge_config => false,}
end end
let :test_facts do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
}
end
let :params do let :params do
{} {}
end end
shared_examples_for 'neutron plugin linuxbridge agent with ml2 plugin' do shared_examples 'neutron plugin linuxbridge agent with ml2 plugin' do
context 'with default parameters' do context 'with default parameters' do
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it 'passes purge to resource' do it 'passes purge to resource' do
is_expected.to contain_resources('neutron_agent_linuxbridge').with({ should contain_resources('neutron_agent_linuxbridge').with({
:purge => false :purge => false
}) })
end end
it 'configures ml2_conf.ini' do it 'configures ml2_conf.ini' do
is_expected.to contain_neutron_agent_linuxbridge('agent/polling_interval').with_value('<SERVICE DEFAULT>') should contain_neutron_agent_linuxbridge('agent/polling_interval').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_agent_linuxbridge('linux_bridge/physical_interface_mappings').with_value(default_params[:physical_interface_mappings].join(',')) should contain_neutron_agent_linuxbridge('linux_bridge/physical_interface_mappings').with_value(default_params[:physical_interface_mappings].join(','))
is_expected.to contain_neutron_agent_linuxbridge('linux_bridge/bridge_mappings').with_ensure('absent') should contain_neutron_agent_linuxbridge('linux_bridge/bridge_mappings').with_ensure('absent')
is_expected.to contain_neutron_agent_linuxbridge('securitygroup/firewall_driver').with_value(default_params[:firewall_driver]) should contain_neutron_agent_linuxbridge('securitygroup/firewall_driver').with_value(default_params[:firewall_driver])
is_expected.to contain_neutron_agent_linuxbridge('agent/tunnel_types').with_ensure('absent') should contain_neutron_agent_linuxbridge('agent/tunnel_types').with_ensure('absent')
end end
it 'installs neutron linuxbridge agent package' do it 'installs neutron linuxbridge agent package' do
@ -54,23 +47,22 @@ describe 'neutron::agents::ml2::linuxbridge' do
linuxbridge_agent_package = platform_params[:linuxbridge_server_package] linuxbridge_agent_package = platform_params[:linuxbridge_server_package]
end end
is_expected.to contain_package('neutron-plugin-linuxbridge-agent').with( should contain_package('neutron-plugin-linuxbridge-agent').with(
:name => linuxbridge_agent_package, :name => linuxbridge_agent_package,
:ensure => default_params[:package_ensure], :ensure => default_params[:package_ensure],
:tag => ['openstack', 'neutron-package'], :tag => ['openstack', 'neutron-package'],
) )
end end
it 'configures neutron linuxbridge agent service' do it 'configures neutron linuxbridge agent service' do
is_expected.to contain_service('neutron-plugin-linuxbridge-agent').with( should contain_service('neutron-plugin-linuxbridge-agent').with(
:name => platform_params[:linuxbridge_agent_service], :name => platform_params[:linuxbridge_agent_service],
:enable => true, :enable => true,
:ensure => 'running', :ensure => 'running',
:tag => 'neutron-service', :tag => 'neutron-service',
) )
is_expected.to contain_service('neutron-plugin-linuxbridge-agent').that_subscribes_to('Anchor[neutron::service::begin]') should contain_service('neutron-plugin-linuxbridge-agent').that_subscribes_to('Anchor[neutron::service::begin]')
is_expected.to contain_service('neutron-plugin-linuxbridge-agent').that_notifies('Anchor[neutron::service::end]') should contain_service('neutron-plugin-linuxbridge-agent').that_notifies('Anchor[neutron::service::end]')
end end
context 'with manage_service as false' do context 'with manage_service as false' do
@ -78,15 +70,15 @@ describe 'neutron::agents::ml2::linuxbridge' do
params.merge!(:manage_service => false) params.merge!(:manage_service => false)
end end
it 'should not start/stop service' do it 'should not start/stop service' do
is_expected.to contain_service('neutron-plugin-linuxbridge-agent').without_ensure should contain_service('neutron-plugin-linuxbridge-agent').without_ensure
end end
end end
it 'does not configre VXLAN tunneling' do it 'does not configre VXLAN tunneling' do
is_expected.to contain_neutron_agent_linuxbridge('vxlan/enable_vxlan').with_value(false) should contain_neutron_agent_linuxbridge('vxlan/enable_vxlan').with_value(false)
is_expected.to contain_neutron_agent_linuxbridge('vxlan/local_ip').with_ensure('absent') should contain_neutron_agent_linuxbridge('vxlan/local_ip').with_ensure('absent')
is_expected.not_to contain_neutron_agent_linuxbridge('vxlan/vxlan_group') should_not contain_neutron_agent_linuxbridge('vxlan/vxlan_group')
is_expected.not_to contain_neutron_agent_linuxbridge('vxlan/l2_population') should_not contain_neutron_agent_linuxbridge('vxlan/l2_population')
end end
end end
@ -100,12 +92,12 @@ describe 'neutron::agents::ml2::linuxbridge' do
context 'when providing all parameters' do context 'when providing all parameters' do
it 'configures ml2_conf.ini' do it 'configures ml2_conf.ini' do
is_expected.to contain_neutron_agent_linuxbridge('vxlan/local_ip').with_value(params[:local_ip]) should contain_neutron_agent_linuxbridge('vxlan/local_ip').with_value(params[:local_ip])
is_expected.to contain_neutron_agent_linuxbridge('vxlan/vxlan_group').with_value('<SERVICE DEFAULT>') should contain_neutron_agent_linuxbridge('vxlan/vxlan_group').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_agent_linuxbridge('vxlan/ttl').with_value('<SERVICE DEFAULT>') should contain_neutron_agent_linuxbridge('vxlan/ttl').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_agent_linuxbridge('vxlan/tos').with_value('<SERVICE DEFAULT>') should contain_neutron_agent_linuxbridge('vxlan/tos').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_agent_linuxbridge('vxlan/l2_population').with_value('<SERVICE DEFAULT>') should contain_neutron_agent_linuxbridge('vxlan/l2_population').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_agent_linuxbridge('agent/tunnel_types').with_value(params[:tunnel_types]) should contain_neutron_agent_linuxbridge('agent/tunnel_types').with_value(params[:tunnel_types])
end end
end end
@ -120,11 +112,11 @@ describe 'neutron::agents::ml2::linuxbridge' do
end end
it 'configures ml2_conf.ini' do it 'configures ml2_conf.ini' do
is_expected.to contain_neutron_agent_linuxbridge('vxlan/local_ip').with_value(params[:local_ip]) should contain_neutron_agent_linuxbridge('vxlan/local_ip').with_value(params[:local_ip])
is_expected.to contain_neutron_agent_linuxbridge('vxlan/vxlan_group').with_value(params[:vxlan_group]) should contain_neutron_agent_linuxbridge('vxlan/vxlan_group').with_value(params[:vxlan_group])
is_expected.to contain_neutron_agent_linuxbridge('vxlan/ttl').with_value(params[:vxlan_ttl]) should contain_neutron_agent_linuxbridge('vxlan/ttl').with_value(params[:vxlan_ttl])
is_expected.to contain_neutron_agent_linuxbridge('vxlan/tos').with_value(params[:vxlan_tos]) should contain_neutron_agent_linuxbridge('vxlan/tos').with_value(params[:vxlan_tos])
is_expected.to contain_neutron_agent_linuxbridge('vxlan/l2_population').with_value(params[:l2_population]) should contain_neutron_agent_linuxbridge('vxlan/l2_population').with_value(params[:l2_population])
end end
end end
end end
@ -135,7 +127,7 @@ describe 'neutron::agents::ml2::linuxbridge' do
end end
it 'configures physical interface mappings' do it 'configures physical interface mappings' do
is_expected.to contain_neutron_agent_linuxbridge('linux_bridge/physical_interface_mappings').with_value( should contain_neutron_agent_linuxbridge('linux_bridge/physical_interface_mappings').with_value(
params[:physical_interface_mappings].join(',') params[:physical_interface_mappings].join(',')
) )
end end
@ -147,7 +139,7 @@ describe 'neutron::agents::ml2::linuxbridge' do
end end
it 'configures bridge mappings' do it 'configures bridge mappings' do
is_expected.to contain_neutron_agent_linuxbridge('linux_bridge/bridge_mappings').with_value( should contain_neutron_agent_linuxbridge('linux_bridge/bridge_mappings').with_value(
params[:bridge_mappings].join(',') params[:bridge_mappings].join(',')
) )
end end
@ -158,39 +150,35 @@ describe 'neutron::agents::ml2::linuxbridge' do
params.merge!(:firewall_driver => false) params.merge!(:firewall_driver => false)
end end
it 'removes firewall driver configuration' do it 'removes firewall driver configuration' do
is_expected.to contain_neutron_agent_linuxbridge('securitygroup/firewall_driver').with_ensure('absent') should contain_neutron_agent_linuxbridge('securitygroup/firewall_driver').with_ensure('absent')
end end
end end
end end
context 'on Debian platforms' do on_supported_os({
let :facts do :supported_os => OSDefaults.get_supported_os
@default_facts.merge(test_facts.merge({ }).each do |os,facts|
:osfamily => 'Debian', context "on #{os}" do
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } }, let (:facts) do
})) facts.merge!(OSDefaults.get_facts())
end end
let :platform_params do let (:platform_params) do
{ :linuxbridge_agent_package => 'neutron-linuxbridge-agent', case facts[:osfamily]
:linuxbridge_agent_service => 'neutron-linuxbridge-agent' } when 'Debian'
end {
:linuxbridge_agent_package => 'neutron-linuxbridge-agent',
:linuxbridge_agent_service => 'neutron-linuxbridge-agent'
}
when 'RedHat'
{
:linuxbridge_server_package => 'openstack-neutron-linuxbridge',
:linuxbridge_agent_service => 'neutron-linuxbridge-agent'
}
end
end
it_configures 'neutron plugin linuxbridge agent with ml2 plugin' it_behaves_like 'neutron plugin linuxbridge agent with ml2 plugin'
end
context 'on RedHat platforms' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'RedHat',
:operatingsystemrelease => '7',
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
}))
end
let :platform_params do
{ :linuxbridge_server_package => 'openstack-neutron-linuxbridge',
:linuxbridge_agent_service => 'neutron-linuxbridge-agent' }
end end
end end
end end

View File

@ -1,9 +1,9 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::agents::ml2::networking_baremetal' do describe 'neutron::agents::ml2::networking_baremetal' do
let :default_params do let :default_params do
{ :enabled => true, {
:enabled => true,
:manage_service => true, :manage_service => true,
:package_ensure => 'present', :package_ensure => 'present',
:auth_type => 'password', :auth_type => 'password',
@ -18,69 +18,64 @@ describe 'neutron::agents::ml2::networking_baremetal' do
} }
end end
let :test_facts do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
}
end
let :params do let :params do
{ :password => 'passw0rd', {
:password => 'passw0rd',
} }
end end
shared_examples_for 'networking-baremetal ironic-neutron-agent with ml2 plugin' do shared_examples 'networking-baremetal ironic-neutron-agent with ml2 plugin' do
let :p do let :p do
default_params.merge(params) default_params.merge(params)
end end
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it 'passes purge to resource' do it 'passes purge to resource' do
is_expected.to contain_resources('ironic_neutron_agent_config').with({ should contain_resources('ironic_neutron_agent_config').with({
:purge => false :purge => false
}) })
end end
it 'configures /etc/neutron/plugins/ml2/ironic_neutron_agent.ini' do it 'configures /etc/neutron/plugins/ml2/ironic_neutron_agent.ini' do
is_expected.to contain_ironic_neutron_agent_config('ironic/auth_strategy').with_value('<SERVICE DEFAULT>') should contain_ironic_neutron_agent_config('ironic/auth_strategy').with_value('<SERVICE DEFAULT>')
is_expected.to contain_ironic_neutron_agent_config('ironic/ironic_url').with_value('<SERVICE DEFAULT>') should contain_ironic_neutron_agent_config('ironic/ironic_url').with_value('<SERVICE DEFAULT>')
is_expected.to contain_ironic_neutron_agent_config('ironic/cafile').with_value('<SERVICE DEFAULT>') should contain_ironic_neutron_agent_config('ironic/cafile').with_value('<SERVICE DEFAULT>')
is_expected.to contain_ironic_neutron_agent_config('ironic/certfile').with_value('<SERVICE DEFAULT>') should contain_ironic_neutron_agent_config('ironic/certfile').with_value('<SERVICE DEFAULT>')
is_expected.to contain_ironic_neutron_agent_config('ironic/keyfile').with_value('<SERVICE DEFAULT>') should contain_ironic_neutron_agent_config('ironic/keyfile').with_value('<SERVICE DEFAULT>')
is_expected.to contain_ironic_neutron_agent_config('ironic/auth_type').with_value(p[:auth_type]) should contain_ironic_neutron_agent_config('ironic/auth_type').with_value(p[:auth_type])
is_expected.to contain_ironic_neutron_agent_config('ironic/auth_url').with_value(p[:auth_url]) should contain_ironic_neutron_agent_config('ironic/auth_url').with_value(p[:auth_url])
is_expected.to contain_ironic_neutron_agent_config('ironic/username').with_value(p[:username]) should contain_ironic_neutron_agent_config('ironic/username').with_value(p[:username])
is_expected.to contain_ironic_neutron_agent_config('ironic/password').with_value(p[:password]) should contain_ironic_neutron_agent_config('ironic/password').with_value(p[:password])
is_expected.to contain_ironic_neutron_agent_config('ironic/project_domain_id').with_value(p[:project_domain_id]) should contain_ironic_neutron_agent_config('ironic/project_domain_id').with_value(p[:project_domain_id])
is_expected.to contain_ironic_neutron_agent_config('ironic/project_domain_name').with_value(p[:project_domain_name]) should contain_ironic_neutron_agent_config('ironic/project_domain_name').with_value(p[:project_domain_name])
is_expected.to contain_ironic_neutron_agent_config('ironic/project_name').with_value(p[:project_name]) should contain_ironic_neutron_agent_config('ironic/project_name').with_value(p[:project_name])
is_expected.to contain_ironic_neutron_agent_config('ironic/user_domain_id').with_value(p[:user_domain_id]) should contain_ironic_neutron_agent_config('ironic/user_domain_id').with_value(p[:user_domain_id])
is_expected.to contain_ironic_neutron_agent_config('ironic/user_domain_name').with_value(p[:user_domain_name]) should contain_ironic_neutron_agent_config('ironic/user_domain_name').with_value(p[:user_domain_name])
is_expected.to contain_ironic_neutron_agent_config('ironic/region_name').with_value('<SERVICE DEFAULT>') should contain_ironic_neutron_agent_config('ironic/region_name').with_value('<SERVICE DEFAULT>')
is_expected.to contain_ironic_neutron_agent_config('ironic/retry_interval').with_value('<SERVICE DEFAULT>') should contain_ironic_neutron_agent_config('ironic/retry_interval').with_value('<SERVICE DEFAULT>')
is_expected.to contain_ironic_neutron_agent_config('ironic/max_retries').with_value('<SERVICE DEFAULT>') should contain_ironic_neutron_agent_config('ironic/max_retries').with_value('<SERVICE DEFAULT>')
end end
it 'installs ironic-neutron-agent agent package' do it 'installs ironic-neutron-agent agent package' do
is_expected.to contain_package('python2-ironic-neutron-agent').with( should contain_package('python2-ironic-neutron-agent').with(
:name => platform_params[:networking_baremetal_agent_package], :name => platform_params[:networking_baremetal_agent_package],
:ensure => p[:package_ensure], :ensure => p[:package_ensure],
:tag => ['openstack', 'neutron-package'], :tag => ['openstack', 'neutron-package'],
) )
is_expected.to contain_package('python2-ironic-neutron-agent').that_requires('Anchor[neutron::install::begin]') should contain_package('python2-ironic-neutron-agent').that_requires('Anchor[neutron::install::begin]')
is_expected.to contain_package('python2-ironic-neutron-agent').that_notifies('Anchor[neutron::install::end]') should contain_package('python2-ironic-neutron-agent').that_notifies('Anchor[neutron::install::end]')
end end
it 'configures networking-baremetal ironic-neutron-agent service' do it 'configures networking-baremetal ironic-neutron-agent service' do
is_expected.to contain_service('ironic-neutron-agent-service').with( should contain_service('ironic-neutron-agent-service').with(
:name => platform_params[:networking_baremetal_agent_service], :name => platform_params[:networking_baremetal_agent_service],
:enable => true, :enable => true,
:ensure => 'running', :ensure => 'running',
:tag => 'neutron-service', :tag => 'neutron-service',
) )
is_expected.to contain_service('ironic-neutron-agent-service').that_subscribes_to('Anchor[neutron::service::begin]') should contain_service('ironic-neutron-agent-service').that_subscribes_to('Anchor[neutron::service::begin]')
is_expected.to contain_service('ironic-neutron-agent-service').that_notifies('Anchor[neutron::service::end]') should contain_service('ironic-neutron-agent-service').that_notifies('Anchor[neutron::service::end]')
end end
context 'with enabled as false' do context 'with enabled as false' do
@ -88,14 +83,14 @@ describe 'neutron::agents::ml2::networking_baremetal' do
params.merge!(:enabled => false) params.merge!(:enabled => false)
end end
it 'should not start service' do it 'should not start service' do
is_expected.to contain_service('ironic-neutron-agent-service').with( should contain_service('ironic-neutron-agent-service').with(
:name => platform_params[:networking_baremetal_agent_service], :name => platform_params[:networking_baremetal_agent_service],
:enable => false, :enable => false,
:ensure => 'stopped', :ensure => 'stopped',
:tag => 'neutron-service', :tag => 'neutron-service',
) )
is_expected.to contain_service('ironic-neutron-agent-service').that_subscribes_to('Anchor[neutron::service::begin]') should contain_service('ironic-neutron-agent-service').that_subscribes_to('Anchor[neutron::service::begin]')
is_expected.to contain_service('ironic-neutron-agent-service').that_notifies('Anchor[neutron::service::end]') should contain_service('ironic-neutron-agent-service').that_notifies('Anchor[neutron::service::end]')
end end
end end
end end
@ -119,10 +114,9 @@ describe 'neutron::agents::ml2::networking_baremetal' do
it_behaves_like 'networking-baremetal ironic-neutron-agent with ml2 plugin' it_behaves_like 'networking-baremetal ironic-neutron-agent with ml2 plugin'
when facts[:osfamily] != 'RedHat' when facts[:osfamily] != 'RedHat'
it 'fails with unsupported osfamily' do it 'fails with unsupported osfamily' do
is_expected.to raise_error(Puppet::Error, /Unsupported osfamily.*/) should raise_error(Puppet::Error, /Unsupported osfamily.*/)
end end
end end
end end
end end
end end

View File

@ -26,44 +26,44 @@ describe 'neutron::agents::ml2::ovs' do
{} {}
end end
shared_examples_for 'neutron plugin ovs agent with ml2 plugin' do shared_examples 'neutron plugin ovs agent with ml2 plugin' do
let :p do let :p do
default_params.merge(params) default_params.merge(params)
end end
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it 'passes purge to resource' do it 'passes purge to resource' do
is_expected.to contain_resources('neutron_agent_ovs').with({ should contain_resources('neutron_agent_ovs').with({
:purge => false :purge => false
}) })
end end
it 'configures plugins/ml2/openvswitch_agent.ini' do it 'configures plugins/ml2/openvswitch_agent.ini' do
is_expected.to contain_neutron_agent_ovs('agent/polling_interval').with_value('<SERVICE DEFAULT>') should contain_neutron_agent_ovs('agent/polling_interval').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_agent_ovs('agent/l2_population').with_value('<SERVICE DEFAULT>') should contain_neutron_agent_ovs('agent/l2_population').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_agent_ovs('agent/arp_responder').with_value('<SERVICE DEFAULT>') should contain_neutron_agent_ovs('agent/arp_responder').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_agent_ovs('agent/drop_flows_on_start').with_value(p[:drop_flows_on_start]) should contain_neutron_agent_ovs('agent/drop_flows_on_start').with_value(p[:drop_flows_on_start])
is_expected.to contain_neutron_agent_ovs('agent/extensions').with_value(['<SERVICE DEFAULT>']) should contain_neutron_agent_ovs('agent/extensions').with_value(['<SERVICE DEFAULT>'])
is_expected.to contain_neutron_agent_ovs('agent/minimize_polling').with_value(['<SERVICE DEFAULT>']) should contain_neutron_agent_ovs('agent/minimize_polling').with_value(['<SERVICE DEFAULT>'])
is_expected.to contain_neutron_agent_ovs('agent/tunnel_csum').with_value(['<SERVICE DEFAULT>']) should contain_neutron_agent_ovs('agent/tunnel_csum').with_value(['<SERVICE DEFAULT>'])
is_expected.to contain_neutron_agent_ovs('ovs/datapath_type').with_value(['<SERVICE DEFAULT>']) should contain_neutron_agent_ovs('ovs/datapath_type').with_value(['<SERVICE DEFAULT>'])
is_expected.to contain_neutron_agent_ovs('ovs/vhostuser_socket_dir').with_value(['<SERVICE DEFAULT>']) should contain_neutron_agent_ovs('ovs/vhostuser_socket_dir').with_value(['<SERVICE DEFAULT>'])
is_expected.to contain_neutron_agent_ovs('ovs/ovsdb_interface').with_value(['<SERVICE DEFAULT>']) should contain_neutron_agent_ovs('ovs/ovsdb_interface').with_value(['<SERVICE DEFAULT>'])
is_expected.to contain_neutron_agent_ovs('ovs/integration_bridge').with_value(p[:integration_bridge]) should contain_neutron_agent_ovs('ovs/integration_bridge').with_value(p[:integration_bridge])
is_expected.to contain_neutron_agent_ovs('securitygroup/firewall_driver').\ should contain_neutron_agent_ovs('securitygroup/firewall_driver').\
with_value(p[:firewall_driver]) with_value(p[:firewall_driver])
is_expected.to contain_neutron_agent_ovs('securitygroup/enable_security_group').\ should contain_neutron_agent_ovs('securitygroup/enable_security_group').\
with_value(['<SERVICE DEFAULT>']) with_value(['<SERVICE DEFAULT>'])
is_expected.to contain_neutron_agent_ovs('ovs/tunnel_bridge').with_ensure('absent') should contain_neutron_agent_ovs('ovs/tunnel_bridge').with_ensure('absent')
is_expected.to contain_neutron_agent_ovs('ovs/local_ip').with_ensure('absent') should contain_neutron_agent_ovs('ovs/local_ip').with_ensure('absent')
is_expected.to contain_neutron_agent_ovs('ovs/int_peer_patch_port').with_ensure('absent') should contain_neutron_agent_ovs('ovs/int_peer_patch_port').with_ensure('absent')
is_expected.to contain_neutron_agent_ovs('ovs/tun_peer_patch_port').with_ensure('absent') should contain_neutron_agent_ovs('ovs/tun_peer_patch_port').with_ensure('absent')
end end
it 'installs neutron ovs agent package' do it 'installs neutron ovs agent package' do
if platform_params.has_key?(:ovs_agent_package) if platform_params.has_key?(:ovs_agent_package)
is_expected.to contain_package('neutron-ovs-agent').with( should contain_package('neutron-ovs-agent').with(
:name => platform_params[:ovs_agent_package], :name => platform_params[:ovs_agent_package],
:ensure => p[:package_ensure], :ensure => p[:package_ensure],
:tag => ['openstack', 'neutron-package'], :tag => ['openstack', 'neutron-package'],
@ -73,14 +73,14 @@ describe 'neutron::agents::ml2::ovs' do
end end
it 'configures neutron ovs agent service' do it 'configures neutron ovs agent service' do
is_expected.to contain_service('neutron-ovs-agent-service').with( should contain_service('neutron-ovs-agent-service').with(
:name => platform_params[:ovs_agent_service], :name => platform_params[:ovs_agent_service],
:enable => true, :enable => true,
:ensure => 'running', :ensure => 'running',
:tag => ['neutron-service', 'neutron-db-sync-service'], :tag => ['neutron-service', 'neutron-db-sync-service'],
) )
is_expected.to contain_service('neutron-ovs-agent-service').that_subscribes_to('Anchor[neutron::service::begin]') should contain_service('neutron-ovs-agent-service').that_subscribes_to('Anchor[neutron::service::begin]')
is_expected.to contain_service('neutron-ovs-agent-service').that_notifies('Anchor[neutron::service::end]') should contain_service('neutron-ovs-agent-service').that_notifies('Anchor[neutron::service::end]')
end end
context 'with manage_service as false' do context 'with manage_service as false' do
@ -88,7 +88,7 @@ describe 'neutron::agents::ml2::ovs' do
params.merge!(:manage_service => false) params.merge!(:manage_service => false)
end end
it 'should not start/stop service' do it 'should not start/stop service' do
is_expected.to contain_service('neutron-ovs-agent-service').without_ensure should contain_service('neutron-ovs-agent-service').without_ensure
end end
end end
@ -97,7 +97,7 @@ describe 'neutron::agents::ml2::ovs' do
params.merge!(:firewall_driver => false) params.merge!(:firewall_driver => false)
end end
it 'should configure firewall driver' do it 'should configure firewall driver' do
is_expected.to contain_neutron_agent_ovs('securitygroup/firewall_driver').with_ensure('absent') should contain_neutron_agent_ovs('securitygroup/firewall_driver').with_ensure('absent')
end end
end end
@ -106,7 +106,7 @@ describe 'neutron::agents::ml2::ovs' do
params.merge!(:enable_security_group => false) params.merge!(:enable_security_group => false)
end end
it 'should disable securitygroups' do it 'should disable securitygroups' do
is_expected.to contain_neutron_agent_ovs('securitygroup/enable_security_group').with_value('false') should contain_neutron_agent_ovs('securitygroup/enable_security_group').with_value('false')
end end
end end
@ -116,7 +116,7 @@ describe 'neutron::agents::ml2::ovs' do
params.merge!(:arp_responder => true) params.merge!(:arp_responder => true)
end end
it 'should enable ARP responder' do it 'should enable ARP responder' do
is_expected.to contain_neutron_agent_ovs('agent/arp_responder').with_value(true) should contain_neutron_agent_ovs('agent/arp_responder').with_value(true)
end end
end end
@ -126,7 +126,7 @@ describe 'neutron::agents::ml2::ovs' do
:l2_population => true ) :l2_population => true )
end end
it 'should enable DVR' do it 'should enable DVR' do
is_expected.to contain_neutron_agent_ovs('agent/enable_distributed_routing').with_value(true) should contain_neutron_agent_ovs('agent/enable_distributed_routing').with_value(true)
end end
end end
@ -136,21 +136,21 @@ describe 'neutron::agents::ml2::ovs' do
end end
it 'should require vswitch::ovs' do it 'should require vswitch::ovs' do
is_expected.to contain_class('vswitch::ovs') should contain_class('vswitch::ovs')
end end
it 'configures bridge mappings' do it 'configures bridge mappings' do
is_expected.to contain_neutron_agent_ovs('ovs/bridge_mappings') should contain_neutron_agent_ovs('ovs/bridge_mappings')
end end
it 'should configure bridge mappings' do it 'should configure bridge mappings' do
is_expected.to contain_neutron__plugins__ovs__bridge(params[:bridge_mappings].join(',')).with( should contain_neutron__plugins__ovs__bridge(params[:bridge_mappings].join(',')).with(
:before => 'Service[neutron-ovs-agent-service]' :before => 'Service[neutron-ovs-agent-service]'
) )
end end
it 'should configure bridge uplinks' do it 'should configure bridge uplinks' do
is_expected.to contain_neutron__plugins__ovs__port(params[:bridge_uplinks].join(',')).with( should contain_neutron__plugins__ovs__port(params[:bridge_uplinks].join(',')).with(
:before => 'Service[neutron-ovs-agent-service]' :before => 'Service[neutron-ovs-agent-service]'
) )
end end
@ -162,21 +162,21 @@ describe 'neutron::agents::ml2::ovs' do
end end
it 'should not require vswitch::ovs' do it 'should not require vswitch::ovs' do
is_expected.not_to contain_class('vswitch::ovs') should_not contain_class('vswitch::ovs')
end end
it 'configures bridge mappings' do it 'configures bridge mappings' do
is_expected.to contain_neutron_agent_ovs('ovs/bridge_mappings') should contain_neutron_agent_ovs('ovs/bridge_mappings')
end end
it 'should not configure bridge mappings' do it 'should not configure bridge mappings' do
is_expected.not_to contain_neutron__plugins__ovs__bridge(params[:bridge_mappings].join(',')).with( should_not contain_neutron__plugins__ovs__bridge(params[:bridge_mappings].join(',')).with(
:before => 'Service[neutron-ovs-agent-service]' :before => 'Service[neutron-ovs-agent-service]'
) )
end end
it 'should not configure bridge uplinks' do it 'should not configure bridge uplinks' do
is_expected.not_to contain_neutron__plugins__ovs__port(params[:bridge_uplinks].join(',')).with( should_not contain_neutron__plugins__ovs__port(params[:bridge_uplinks].join(',')).with(
:before => 'Service[neutron-ovs-agent-service]' :before => 'Service[neutron-ovs-agent-service]'
) )
end end
@ -188,7 +188,7 @@ describe 'neutron::agents::ml2::ovs' do
end end
it 'configures extensions' do it 'configures extensions' do
is_expected.to contain_neutron_agent_ovs('agent/extensions').with_value(params[:extensions].join(',')) should contain_neutron_agent_ovs('agent/extensions').with_value(params[:extensions].join(','))
end end
end end
@ -198,8 +198,8 @@ describe 'neutron::agents::ml2::ovs' do
end end
it 'configures ovs for DPDK' do it 'configures ovs for DPDK' do
is_expected.to contain_neutron_agent_ovs('ovs/datapath_type').with_value(params[:datapath_type]) should contain_neutron_agent_ovs('ovs/datapath_type').with_value(params[:datapath_type])
is_expected.to contain_neutron_agent_ovs('ovs/vhostuser_socket_dir').with_value(params[:vhostuser_socket_dir]) should contain_neutron_agent_ovs('ovs/vhostuser_socket_dir').with_value(params[:vhostuser_socket_dir])
end end
end end
@ -209,17 +209,17 @@ describe 'neutron::agents::ml2::ovs' do
params.merge!(:tunnel_types => ['vxlan']) params.merge!(:tunnel_types => ['vxlan'])
end end
it_raises 'a Puppet::Error', /Local ip for ovs agent must be set when tunneling is enabled/ it { should raise_error(Puppet::Error, /Local ip for ovs agent must be set when tunneling is enabled/) }
end end
context 'with default params' do context 'with default params' do
before :each do before :each do
params.merge!(:tunnel_types => ['vxlan'], :local_ip => '127.0.0.1' ) params.merge!(:tunnel_types => ['vxlan'], :local_ip => '127.0.0.1' )
end end
it 'should configure ovs for tunneling' do it 'should configure ovs for tunneling' do
is_expected.to contain_neutron_agent_ovs('ovs/tunnel_bridge').with_value(default_params[:tunnel_bridge]) should contain_neutron_agent_ovs('ovs/tunnel_bridge').with_value(default_params[:tunnel_bridge])
is_expected.to contain_neutron_agent_ovs('ovs/local_ip').with_value('127.0.0.1') should contain_neutron_agent_ovs('ovs/local_ip').with_value('127.0.0.1')
is_expected.to contain_neutron_agent_ovs('ovs/int_peer_patch_port').with_value('<SERVICE DEFAULT>') should contain_neutron_agent_ovs('ovs/int_peer_patch_port').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_agent_ovs('ovs/tun_peer_patch_port').with_value('<SERVICE DEFAULT>') should contain_neutron_agent_ovs('ovs/tun_peer_patch_port').with_value('<SERVICE DEFAULT>')
end end
end end
@ -231,8 +231,8 @@ describe 'neutron::agents::ml2::ovs' do
end end
it 'should perform vxlan network configuration' do it 'should perform vxlan network configuration' do
is_expected.to contain_neutron_agent_ovs('agent/tunnel_types').with_value(params[:tunnel_types]) should contain_neutron_agent_ovs('agent/tunnel_types').with_value(params[:tunnel_types])
is_expected.to contain_neutron_agent_ovs('agent/vxlan_udp_port').with_value(params[:vxlan_udp_port]) should contain_neutron_agent_ovs('agent/vxlan_udp_port').with_value(params[:vxlan_udp_port])
end end
end end
@ -244,7 +244,7 @@ describe 'neutron::agents::ml2::ovs' do
:local_ip => '127.0.0.1' ) :local_ip => '127.0.0.1' )
end end
it_raises 'a Puppet::Error', /L2 population must be enabled when DVR and tunneling are enabled/ it { should raise_error(Puppet::Error, /L2 population must be enabled when DVR and tunneling are enabled/) }
end end
context 'when DVR is enabled and l2 population and tunneling are disabled' do context 'when DVR is enabled and l2 population and tunneling are disabled' do
@ -255,8 +255,8 @@ describe 'neutron::agents::ml2::ovs' do
end end
it 'should enable DVR without L2 population' do it 'should enable DVR without L2 population' do
is_expected.to contain_neutron_agent_ovs('agent/enable_distributed_routing').with_value(true) should contain_neutron_agent_ovs('agent/enable_distributed_routing').with_value(true)
is_expected.to contain_neutron_agent_ovs('agent/l2_population').with_value(false) should contain_neutron_agent_ovs('agent/l2_population').with_value(false)
end end
end end
end end
@ -266,7 +266,8 @@ describe 'neutron::agents::ml2::ovs' do
before :each do before :each do
params.merge!(:ovsdb_interface => 'random') params.merge!(:ovsdb_interface => 'random')
end end
it_raises 'a Puppet::Error', /A value of \$ovsdb_interface is incorrect. The allowed values are vsctl and native/
it { should raise_error(Puppet::Error, /A value of \$ovsdb_interface is incorrect. The allowed values are vsctl and native/) }
end end
context 'with supported value' do context 'with supported value' do
@ -274,7 +275,7 @@ describe 'neutron::agents::ml2::ovs' do
params.merge!(:ovsdb_interface => 'native') params.merge!(:ovsdb_interface => 'native')
end end
it 'should configure ovsdb_interface for ovs' do it 'should configure ovsdb_interface for ovs' do
is_expected.to contain_neutron_agent_ovs('ovs/ovsdb_interface').with_value('native') should contain_neutron_agent_ovs('ovs/ovsdb_interface').with_value('native')
end end
end end
end end
@ -284,26 +285,26 @@ describe 'neutron::agents::ml2::ovs' do
params.merge!(:enable_dpdk => true, :manage_vswitch => false) params.merge!(:enable_dpdk => true, :manage_vswitch => false)
end end
it_raises 'a Puppet::Error',/Enabling DPDK without manage vswitch does not have any effect/ it { should raise_error(Puppet::Error, /Enabling DPDK without manage vswitch does not have any effect/) }
end end
end end
shared_examples_for 'neutron::agents::ml2::ovs on Debian' do shared_examples 'neutron::agents::ml2::ovs on Debian' do
# placeholder for debian specific tests # placeholder for debian specific tests
end end
shared_examples_for 'neutron::agents::ml2::ovs on RedHat' do shared_examples 'neutron::agents::ml2::ovs on RedHat' do
it 'configures neutron ovs cleanup service' do it 'configures neutron ovs cleanup service' do
is_expected.to contain_service('ovs-cleanup-service').with( should contain_service('ovs-cleanup-service').with(
:name => platform_params[:ovs_cleanup_service], :name => platform_params[:ovs_cleanup_service],
:enable => true :enable => true
).that_requires('Anchor[neutron::install::end]') ).that_requires('Anchor[neutron::install::end]')
is_expected.to contain_package('neutron-ovs-agent').that_requires('Anchor[neutron::install::begin]') should contain_package('neutron-ovs-agent').that_requires('Anchor[neutron::install::begin]')
is_expected.to contain_package('neutron-ovs-agent').that_notifies('Anchor[neutron::install::end]') should contain_package('neutron-ovs-agent').that_notifies('Anchor[neutron::install::end]')
end end
it 'configures neutron destroy patch ports service' do it 'configures neutron destroy patch ports service' do
is_expected.to contain_service('neutron-destroy-patch-ports-service').with( should contain_service('neutron-destroy-patch-ports-service').with(
:name => platform_params[:destroy_patch_ports_service], :name => platform_params[:destroy_patch_ports_service],
:enable => true, :enable => true,
:ensure => 'running', :ensure => 'running',
@ -322,7 +323,7 @@ describe 'neutron::agents::ml2::ovs' do
end end
it 'should require vswitch::dpdk' do it 'should require vswitch::dpdk' do
is_expected.to contain_class('vswitch::dpdk') should contain_class('vswitch::dpdk')
end end
end end

View File

@ -1,24 +1,18 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::agents::ml2::sriov' do describe 'neutron::agents::ml2::sriov' do
let :pre_condition do let :pre_condition do
"class { 'neutron': }" "class { 'neutron': }"
end end
let :default_params do let :default_params do
{ :package_ensure => 'present', {
:enabled => true, :package_ensure => 'present',
:manage_service => true, :enabled => true,
:polling_interval => 2, :manage_service => true,
:supported_pci_vendor_devs => [], :polling_interval => 2,
:purge_config => false, :supported_pci_vendor_devs => [],
} :purge_config => false,
end
let :test_facts do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
} }
end end
@ -26,50 +20,50 @@ describe 'neutron::agents::ml2::sriov' do
{} {}
end end
shared_examples_for 'neutron sriov-nic agent with ml2 plugin' do shared_examples 'neutron sriov-nic agent with ml2 plugin' do
let :p do let :p do
default_params.merge(params) default_params.merge(params)
end end
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it 'passes purge to resource' do it 'passes purge to resource' do
is_expected.to contain_resources('neutron_sriov_agent_config').with({ should contain_resources('neutron_sriov_agent_config').with({
:purge => false :purge => false
}) })
end end
it 'configures /etc/neutron/plugins/ml2/sriov_agent.ini' do it 'configures /etc/neutron/plugins/ml2/sriov_agent.ini' do
is_expected.to contain_neutron_sriov_agent_config('sriov_nic/polling_interval').with_value(p[:polling_interval]) should contain_neutron_sriov_agent_config('sriov_nic/polling_interval').with_value(p[:polling_interval])
is_expected.to contain_neutron_sriov_agent_config('sriov_nic/exclude_devices').with_value('<SERVICE DEFAULT>') should contain_neutron_sriov_agent_config('sriov_nic/exclude_devices').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_sriov_agent_config('sriov_nic/physical_device_mappings').with_value('<SERVICE DEFAULT>') should contain_neutron_sriov_agent_config('sriov_nic/physical_device_mappings').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_sriov_agent_config('agent/extensions').with_value(['<SERVICE DEFAULT>']) should contain_neutron_sriov_agent_config('agent/extensions').with_value(['<SERVICE DEFAULT>'])
is_expected.to contain_neutron_sriov_agent_config('securitygroup/firewall_driver').with_value('noop') should contain_neutron_sriov_agent_config('securitygroup/firewall_driver').with_value('noop')
end end
it 'does not configure numvfs by default' do it 'does not configure numvfs by default' do
is_expected.not_to contain_neutron_agents_ml2_sriov_numvfs('<SERVICE DEFAULT>') should_not contain_neutron_agents_ml2_sriov_numvfs('<SERVICE DEFAULT>')
end end
it 'installs neutron sriov-nic agent package' do it 'installs neutron sriov-nic agent package' do
is_expected.to contain_package('neutron-sriov-nic-agent').with( should contain_package('neutron-sriov-nic-agent').with(
:name => platform_params[:sriov_nic_agent_package], :name => platform_params[:sriov_nic_agent_package],
:ensure => p[:package_ensure], :ensure => p[:package_ensure],
:tag => ['openstack', 'neutron-package'], :tag => ['openstack', 'neutron-package'],
) )
is_expected.to contain_package('neutron-sriov-nic-agent').that_requires('Anchor[neutron::install::begin]') should contain_package('neutron-sriov-nic-agent').that_requires('Anchor[neutron::install::begin]')
is_expected.to contain_package('neutron-sriov-nic-agent').that_notifies('Anchor[neutron::install::end]') should contain_package('neutron-sriov-nic-agent').that_notifies('Anchor[neutron::install::end]')
end end
it 'configures neutron sriov agent service' do it 'configures neutron sriov agent service' do
is_expected.to contain_service('neutron-sriov-nic-agent-service').with( should contain_service('neutron-sriov-nic-agent-service').with(
:name => platform_params[:sriov_nic_agent_service], :name => platform_params[:sriov_nic_agent_service],
:enable => true, :enable => true,
:ensure => 'running', :ensure => 'running',
:tag => 'neutron-service', :tag => 'neutron-service',
) )
is_expected.to contain_service('neutron-sriov-nic-agent-service').that_subscribes_to('Anchor[neutron::service::begin]') should contain_service('neutron-sriov-nic-agent-service').that_subscribes_to('Anchor[neutron::service::begin]')
is_expected.to contain_service('neutron-sriov-nic-agent-service').that_notifies('Anchor[neutron::service::end]') should contain_service('neutron-sriov-nic-agent-service').that_notifies('Anchor[neutron::service::end]')
end end
context 'when number_of_vfs is empty' do context 'when number_of_vfs is empty' do
@ -78,7 +72,7 @@ describe 'neutron::agents::ml2::sriov' do
end end
it 'does not configure numvfs ' do it 'does not configure numvfs ' do
is_expected.not_to contain_neutron_agents_ml2_sriov_numvfs('<SERVICE DEFAULT>') should_not contain_neutron_agents_ml2_sriov_numvfs('<SERVICE DEFAULT>')
end end
end end
@ -88,8 +82,8 @@ describe 'neutron::agents::ml2::sriov' do
end end
it 'configures numvfs' do it 'configures numvfs' do
is_expected.to contain_neutron_agent_sriov_numvfs('eth0:4').with( :ensure => 'present' ) should contain_neutron_agent_sriov_numvfs('eth0:4').with( :ensure => 'present' )
is_expected.to contain_neutron_agent_sriov_numvfs('eth1:5').with( :ensure => 'present') should contain_neutron_agent_sriov_numvfs('eth1:5').with( :ensure => 'present')
end end
end end
@ -98,7 +92,7 @@ describe 'neutron::agents::ml2::sriov' do
params.merge!(:manage_service => false) params.merge!(:manage_service => false)
end end
it 'should not start/stop service' do it 'should not start/stop service' do
is_expected.to contain_service('neutron-sriov-nic-agent-service').without_ensure should contain_service('neutron-sriov-nic-agent-service').without_ensure
end end
end end
@ -109,8 +103,8 @@ describe 'neutron::agents::ml2::sriov' do
end end
it 'configures physical device mappings with exclusion' do it 'configures physical device mappings with exclusion' do
is_expected.to contain_neutron_sriov_agent_config('sriov_nic/exclude_devices').with_value(['physnet1:eth2']) should contain_neutron_sriov_agent_config('sriov_nic/exclude_devices').with_value(['physnet1:eth2'])
is_expected.to contain_neutron_sriov_agent_config('sriov_nic/physical_device_mappings').with_value(['physnet1:eth1']) should contain_neutron_sriov_agent_config('sriov_nic/physical_device_mappings').with_value(['physnet1:eth1'])
end end
end end
@ -121,8 +115,8 @@ describe 'neutron::agents::ml2::sriov' do
end end
it 'configures physical device mappings with exclusion' do it 'configures physical device mappings with exclusion' do
is_expected.to contain_neutron_sriov_agent_config('sriov_nic/exclude_devices').with_value('<SERVICE DEFAULT>') should contain_neutron_sriov_agent_config('sriov_nic/exclude_devices').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_sriov_agent_config('sriov_nic/physical_device_mappings').with_value('<SERVICE DEFAULT>') should contain_neutron_sriov_agent_config('sriov_nic/physical_device_mappings').with_value('<SERVICE DEFAULT>')
end end
end end
@ -132,41 +126,35 @@ describe 'neutron::agents::ml2::sriov' do
end end
it 'configures extensions' do it 'configures extensions' do
is_expected.to contain_neutron_sriov_agent_config('agent/extensions').with_value(params[:extensions].join(',')) should contain_neutron_sriov_agent_config('agent/extensions').with_value(params[:extensions].join(','))
end end
end end
end end
context 'on Debian platforms' do on_supported_os({
let :facts do :supported_os => OSDefaults.get_supported_os
@default_facts.merge(test_facts.merge({ }).each do |os,facts|
:osfamily => 'Debian', context "on #{os}" do
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } }, let (:facts) do
})) facts.merge!(OSDefaults.get_facts())
end
let (:platform_params) do
case facts[:osfamily]
when 'Debian'
{
:sriov_nic_agent_package => 'neutron-sriov-agent',
:sriov_nic_agent_service => 'neutron-sriov-agent'
}
when 'RedHat'
{
:sriov_nic_agent_package => 'openstack-neutron-sriov-nic-agent',
:sriov_nic_agent_service => 'neutron-sriov-nic-agent'
}
end
end
it_behaves_like 'neutron sriov-nic agent with ml2 plugin'
end end
let :platform_params do
{ :sriov_nic_agent_package => 'neutron-sriov-agent',
:sriov_nic_agent_service => 'neutron-sriov-agent' }
end
it_configures 'neutron sriov-nic agent with ml2 plugin'
end
context 'on RedHat platforms' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'RedHat',
:operatingsystemrelease => '7',
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
}))
end
let :platform_params do
{ :sriov_nic_agent_package => 'openstack-neutron-sriov-nic-agent',
:sriov_nic_agent_service => 'neutron-sriov-nic-agent' }
end
it_configures 'neutron sriov-nic agent with ml2 plugin'
end end
end end

View File

@ -18,27 +18,27 @@ describe 'neutron::agents::ml2::vpp' do
{} {}
end end
shared_examples_for 'neutron plugin vpp agent with ml2 plugin' do shared_examples 'neutron plugin vpp agent with ml2 plugin' do
let :p do let :p do
default_params.merge(params) default_params.merge(params)
end end
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it 'passes purge to resource' do it 'passes purge to resource' do
is_expected.to contain_resources('neutron_agent_vpp').with({ should contain_resources('neutron_agent_vpp').with({
:purge => false :purge => false
}) })
end end
it 'configures plugins/ml2/vpp_agent.ini' do it 'configures plugins/ml2/vpp_agent.ini' do
is_expected.to contain_neutron_agent_vpp('ml2_vpp/physnets').with_value('<SERVICE DEFAULT>') should contain_neutron_agent_vpp('ml2_vpp/physnets').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_agent_vpp('ml2_vpp/etcd_user').with_value('<SERVICE DEFAULT>') should contain_neutron_agent_vpp('ml2_vpp/etcd_user').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_agent_vpp('ml2_vpp/etcd_pass').with_value('<SERVICE DEFAULT>') should contain_neutron_agent_vpp('ml2_vpp/etcd_pass').with_value('<SERVICE DEFAULT>')
end end
it 'installs neutron vpp agent package' do it 'installs neutron vpp agent package' do
is_expected.to contain_package('neutron-vpp-agent').with( should contain_package('neutron-vpp-agent').with(
:name => platform_params[:vpp_plugin_package], :name => platform_params[:vpp_plugin_package],
:ensure => p[:package_ensure], :ensure => p[:package_ensure],
:tag => ['openstack', 'neutron-package'], :tag => ['openstack', 'neutron-package'],
@ -46,14 +46,14 @@ describe 'neutron::agents::ml2::vpp' do
end end
it 'configures neutron vpp agent service' do it 'configures neutron vpp agent service' do
is_expected.to contain_service('neutron-vpp-agent-service').with( should contain_service('neutron-vpp-agent-service').with(
:name => platform_params[:vpp_agent_service], :name => platform_params[:vpp_agent_service],
:enable => true, :enable => true,
:ensure => 'running', :ensure => 'running',
:tag => ['neutron-service'], :tag => ['neutron-service'],
) )
is_expected.to contain_service('neutron-vpp-agent-service').that_subscribes_to('Anchor[neutron::service::begin]') should contain_service('neutron-vpp-agent-service').that_subscribes_to('Anchor[neutron::service::begin]')
is_expected.to contain_service('neutron-vpp-agent-service').that_notifies('Anchor[neutron::service::end]') should contain_service('neutron-vpp-agent-service').that_notifies('Anchor[neutron::service::end]')
end end
context 'with manage_service as false' do context 'with manage_service as false' do
@ -61,7 +61,7 @@ describe 'neutron::agents::ml2::vpp' do
params.merge!(:manage_service => false) params.merge!(:manage_service => false)
end end
it 'should not start/stop service' do it 'should not start/stop service' do
is_expected.to contain_service('neutron-vpp-agent-service').without_ensure should contain_service('neutron-vpp-agent-service').without_ensure
end end
end end
@ -70,7 +70,7 @@ describe 'neutron::agents::ml2::vpp' do
params.merge!(:physnets => 'physnet:GigabitEthernet2/2/0') params.merge!(:physnets => 'physnet:GigabitEthernet2/2/0')
end end
it 'should configure physnets' do it 'should configure physnets' do
is_expected.to contain_neutron_agent_vpp('ml2_vpp/physnets').with_value('physnet:GigabitEthernet2/2/0') should contain_neutron_agent_vpp('ml2_vpp/physnets').with_value('physnet:GigabitEthernet2/2/0')
end end
end end
@ -80,8 +80,8 @@ describe 'neutron::agents::ml2::vpp' do
:etcd_pass => 'password' ) :etcd_pass => 'password' )
end end
it 'should configure etcd username and password' do it 'should configure etcd username and password' do
is_expected.to contain_neutron_agent_vpp('ml2_vpp/etcd_user').with_value('admin') should contain_neutron_agent_vpp('ml2_vpp/etcd_user').with_value('admin')
is_expected.to contain_neutron_agent_vpp('ml2_vpp/etcd_pass').with_value('password') should contain_neutron_agent_vpp('ml2_vpp/etcd_pass').with_value('password')
end end
end end
end end

View File

@ -1,246 +1,260 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::agents::n1kv_vem' do describe 'neutron::agents::n1kv_vem' do
shared_examples 'neutron::agents::n1kv_vem' do
let :facts do it 'should have a n1kv-vem config file' do
OSDefaults.get_facts({ should contain_file('/etc/n1kv/n1kv.conf').with(
:operatingsystem => 'RedHat', :ensure => 'present',
:operatingsystemrelease => '7',
:osfamily => 'RedHat',
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
})
end
it 'should have a n1kv-vem config file' do
is_expected.to contain_file('/etc/n1kv/n1kv.conf').with(
:ensure => 'present',
:owner => 'root',
:group => 'root',
:mode => '0664'
)
end
it 'install n1kv-vem' do
is_expected.to contain_service('openvswitch').with_notify(['Package[nexus1000v]'])
is_expected.to contain_package('nexus1000v').with_notify(['Service[nexus1000v]'])
is_expected.to contain_service('nexus1000v').with_ensure('running')
end
context 'with local file vem rpm' do
let :params do
{
:n1kv_source => 'vem.rpm'
}
end
it 'verify dependency' do
is_expected.to contain_package('nexus1000v').with_source('/var/n1kv/vem.rpm')
is_expected.to contain_file('/var/n1kv/vem.rpm').that_requires('File[/var/n1kv]')
is_expected.to contain_file('/var/n1kv/vem.rpm').with(
:owner => 'root', :owner => 'root',
:group => 'root', :group => 'root',
:mode => '0664' :mode => '0664'
) )
end end
it 'install n1kv-vem' do
should contain_service('openvswitch').with_notify(['Package[nexus1000v]'])
should contain_package('nexus1000v').with_notify(['Service[nexus1000v]'])
should contain_service('nexus1000v').with_ensure('running')
end
context 'with local file vem rpm' do
let :params do
{
:n1kv_source => 'vem.rpm'
}
end
it 'verify dependency' do
should contain_package('nexus1000v').with_source('/var/n1kv/vem.rpm')
should contain_file('/var/n1kv/vem.rpm').that_requires('File[/var/n1kv]')
should contain_file('/var/n1kv/vem.rpm').with(
:owner => 'root',
:group => 'root',
:mode => '0664'
)
end
end
context 'remote vem rpm' do
let :params do
{
:n1kv_source => 'http://www.cisco.com/repo'
}
end
it 'verify dependency' do
should contain_package('nexus1000v').without_source
should contain_yumrepo('cisco-vem-repo').with(
:baseurl => 'http://www.cisco.com/repo',
:enabled => 1
)
end
end
it 'execute reread config upon config change' do
should contain_exec('vemcmd reread config') \
.that_subscribes_to('File[/etc/n1kv/n1kv.conf]')
end
context 'verify n1kv.conf default' 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',
:fastpath_flood => 'enable'
}
end
it do
should contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^l3control-ipaddr 9.0.0.1/)
should contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^l3control-ipv6addr ::3/)
should contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^switch-domain 900/)
should contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^host-mgmt-intf eth9/)
should contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^portdb ovs/)
should contain_file('/etc/n1kv/n1kv.conf') \
.without_content(/^phys/)
should contain_file('/etc/n1kv/n1kv.conf') \
.without_content(/^virt/)
should contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^node-type compute/)
should contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^fastpath-flood enable/)
end
end
context 'verify n1kv.conf svs-mode with default IPv6 address' do
let :params do
{
:n1kv_vsm_ipv6 => '::1'
}
end
it do
should 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
should contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^svs-mode V6/)
end
end
context 'verify node_type' do
let :params do
{
:node_type => 'network',
}
end
it do
should contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^node-type network/)
should contain_file('/etc/n1kv/n1kv.conf') \
.without_content(/^node-type compute/)
end
end
context 'verify portdb' do
let :params do
{
:portdb => 'vem',
}
end
it do
should contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^portdb vem/)
should contain_file('/etc/n1kv/n1kv.conf') \
.without_content(/^portdb ovs/)
end
end
context 'verify fastpath_flood' do
let :params do
{
:fastpath_flood => 'disable',
}
end
it do
should contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^fastpath-flood disable/)
should contain_file('/etc/n1kv/n1kv.conf') \
.without_content(/^fastpath-flood enable/)
end
end
context 'verify n1kv.conf with uplinks' do
let :params do
{
:uplink_profile => { 'eth1' => 'prof1',
'eth2' => 'prof2'
}
}
end
it do
should contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^phys eth1 profile prof1/)
should contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^phys eth2 profile prof2/)
end
end
context 'verify n1kv.conf with vtep info' do
let :params do
{
:vtep_config => { 'vtep1' => { 'profile' => 'profint',
'ipmode' => 'dhcp'
},
'vtep2' => { 'profile' => 'profint',
'ipmode' => 'static',
'ipaddress' => '192.168.1.1',
'netmask' => '255.255.255.0'
}
}
}
end
it do
should contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^virt vtep1 profile profint mode dhcp/)
should contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^virt vtep2 profile profint mode static/)
end
end
context 'with manage_service as false' do
let :params do
{
:manage_service => false
}
end
it 'should not start/stop service' do
should contain_service('nexus1000v').without_ensure
end
end
context 'with manage_service true and enable_service false' do
let :params do
{
:manage_service => true,
:enable => false
}
end
it 'should stop service' do
should contain_service('nexus1000v').with_ensure('stopped')
end
end
context 'verify sysctl setting with vteps_in_same_subnet true' do
let :params do
{
:vteps_in_same_subnet => true
}
end
it do
should contain_sysctl__value('net.ipv4.conf.default.rp_filter').with_value('2')
should contain_sysctl__value('net.ipv4.conf.all.rp_filter').with_value('2')
should contain_sysctl__value('net.ipv4.conf.default.arp_ignore').with_value('1')
should contain_sysctl__value('net.ipv4.conf.all.arp_ignore').with_value('1')
should contain_sysctl__value('net.ipv4.conf.all.arp_announce').with_value('2')
should contain_sysctl__value('net.ipv4.conf.default.arp_announce').with_value('2')
end
end
end end
context 'remote vem rpm' do on_supported_os({
let :params do :supported_os => OSDefaults.get_supported_os
{ }).each do |os,facts|
:n1kv_source => 'http://www.cisco.com/repo' context "on #{os}" do
} let (:facts) do
end facts.merge!(OSDefaults.get_facts())
end
it 'verify dependency' do if facts[:osfamily] == 'RedHat'
is_expected.to contain_package('nexus1000v').without_source it_behaves_like 'neutron::agents::n1kv_vem'
is_expected.to contain_yumrepo('cisco-vem-repo').with( end
:baseurl => 'http://www.cisco.com/repo',
:enabled => 1
)
end end
end end
it 'execute reread config upon config change' do
is_expected.to contain_exec('vemcmd reread config') \
.that_subscribes_to('File[/etc/n1kv/n1kv.conf]')
end
context 'verify n1kv.conf default' 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',
:fastpath_flood => 'enable'
}
end
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') \
.with_content(/^host-mgmt-intf eth9/)
is_expected.to contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^portdb ovs/)
is_expected.to contain_file('/etc/n1kv/n1kv.conf') \
.without_content(/^phys/)
is_expected.to contain_file('/etc/n1kv/n1kv.conf') \
.without_content(/^virt/)
is_expected.to contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^node-type compute/)
is_expected.to contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^fastpath-flood enable/)
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
{
:node_type => 'network',
}
end
it do
is_expected.to contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^node-type network/)
is_expected.to contain_file('/etc/n1kv/n1kv.conf') \
.without_content(/^node-type compute/)
end
end
context 'verify portdb' do
let :params do
{
:portdb => 'vem',
}
end
it do
is_expected.to contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^portdb vem/)
is_expected.to contain_file('/etc/n1kv/n1kv.conf') \
.without_content(/^portdb ovs/)
end
end
context 'verify fastpath_flood' do
let :params do
{
:fastpath_flood => 'disable',
}
end
it do
is_expected.to contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^fastpath-flood disable/)
is_expected.to contain_file('/etc/n1kv/n1kv.conf') \
.without_content(/^fastpath-flood enable/)
end
end
context 'verify n1kv.conf with uplinks' do
let :params do
{
:uplink_profile => { 'eth1' => 'prof1',
'eth2' => 'prof2'
}
}
end
it do
is_expected.to contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^phys eth1 profile prof1/)
is_expected.to contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^phys eth2 profile prof2/)
end
end
context 'verify n1kv.conf with vtep info' do
let :params do
{
:vtep_config => { 'vtep1' => { 'profile' => 'profint',
'ipmode' => 'dhcp'
},
'vtep2' => { 'profile' => 'profint',
'ipmode' => 'static',
'ipaddress' => '192.168.1.1',
'netmask' => '255.255.255.0'
}
}
}
end
it do
is_expected.to contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^virt vtep1 profile profint mode dhcp/)
is_expected.to contain_file('/etc/n1kv/n1kv.conf') \
.with_content(/^virt vtep2 profile profint mode static/)
end
end
context 'with manage_service as false' do
let :params do
{
:manage_service => false
}
end
it 'should not start/stop service' do
is_expected.to contain_service('nexus1000v').without_ensure
end
end
context 'with manage_service true and enable_service false' do
let :params do
{
:manage_service => true,
:enable => false
}
end
it 'should stop service' do
is_expected.to contain_service('nexus1000v').with_ensure('stopped')
end
end
context 'verify sysctl setting with vteps_in_same_subnet true' do
let :params do
{
:vteps_in_same_subnet => true
}
end
it do
is_expected.to contain_sysctl__value('net.ipv4.conf.default.rp_filter').with_value('2')
is_expected.to contain_sysctl__value('net.ipv4.conf.all.rp_filter').with_value('2')
is_expected.to contain_sysctl__value('net.ipv4.conf.default.arp_ignore').with_value('1')
is_expected.to contain_sysctl__value('net.ipv4.conf.all.arp_ignore').with_value('1')
is_expected.to contain_sysctl__value('net.ipv4.conf.all.arp_announce').with_value('2')
is_expected.to contain_sysctl__value('net.ipv4.conf.default.arp_announce').with_value('2')
end
end
end end

View File

@ -1,84 +1,79 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::agents::ovn_metadata' do describe 'neutron::agents::ovn_metadata' do
let :pre_condition do let :pre_condition do
"class { 'neutron': }" "class { 'neutron': }"
end end
let :params do let :params do
{ :package_ensure => 'present', {
:debug => false, :package_ensure => 'present',
:enabled => true, :debug => false,
:shared_secret => 'metadata-secret', :enabled => true,
:purge_config => false, :shared_secret => 'metadata-secret',
:ovsdb_connection => 'tcp:127.0.0.1:6640', :purge_config => false,
:root_helper => 'sudo neutron-rootwrap /etc/neutron/rootwrap.conf', :ovsdb_connection => 'tcp:127.0.0.1:6640',
:state_path => '/var/lib/neutron/', :root_helper => 'sudo neutron-rootwrap /etc/neutron/rootwrap.conf',
:state_path => '/var/lib/neutron/',
} }
end end
let :test_facts do shared_examples 'ovn metadata agent' do
{ :operatingsystem => 'default', it { should contain_class('neutron::params') }
:operatingsystemrelease => 'default',
}
end
shared_examples_for 'ovn metadata agent' do
it { is_expected.to contain_class('neutron::params') }
it 'configures ovn metadata agent service' do it 'configures ovn metadata agent service' do
is_expected.to contain_service('ovn-metadata').with( should contain_service('ovn-metadata').with(
:name => platform_params[:ovn_metadata_agent_service], :name => platform_params[:ovn_metadata_agent_service],
:enable => params[:enabled], :enable => params[:enabled],
:ensure => 'running', :ensure => 'running',
:tag => 'neutron-service', :tag => 'neutron-service',
) )
is_expected.to contain_service('ovn-metadata').that_subscribes_to('Anchor[neutron::service::begin]') should contain_service('ovn-metadata').that_subscribes_to('Anchor[neutron::service::begin]')
is_expected.to contain_service('ovn-metadata').that_notifies('Anchor[neutron::service::end]') should contain_service('ovn-metadata').that_notifies('Anchor[neutron::service::end]')
end end
context 'with manage_service as false' do context 'with manage_service as false' do
before :each do before :each do
params.merge!(:manage_service => false) params.merge!(:manage_service => false)
end end
it 'should not start/stop service' do it 'should not start/stop service' do
is_expected.to contain_service('ovn-metadata').without_ensure should contain_service('ovn-metadata').without_ensure
end end
end end
it 'passes purge to resource' do it 'passes purge to resource' do
is_expected.to contain_resources('ovn_metadata_agent_config').with({ should contain_resources('ovn_metadata_agent_config').with({
:purge => false :purge => false
}) })
end end
it 'configures ovn_metadata_agent.ini' do it 'configures ovn_metadata_agent.ini' do
is_expected.to contain_ovn_metadata_agent_config('DEFAULT/debug').with(:value => params[:debug]) should contain_ovn_metadata_agent_config('DEFAULT/debug').with(:value => params[:debug])
is_expected.to contain_ovn_metadata_agent_config('DEFAULT/auth_ca_cert').with(:value => '<SERVICE DEFAULT>') should contain_ovn_metadata_agent_config('DEFAULT/auth_ca_cert').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_ovn_metadata_agent_config('DEFAULT/nova_client_cert').with(:value => '<SERVICE DEFAULT>') should contain_ovn_metadata_agent_config('DEFAULT/nova_client_cert').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_ovn_metadata_agent_config('DEFAULT/nova_client_priv_key').with(:value => '<SERVICE DEFAULT>') should contain_ovn_metadata_agent_config('DEFAULT/nova_client_priv_key').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_ovn_metadata_agent_config('DEFAULT/nova_metadata_ip').with(:value => '<SERVICE DEFAULT>') should contain_ovn_metadata_agent_config('DEFAULT/nova_metadata_ip').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_ovn_metadata_agent_config('DEFAULT/nova_metadata_host').with(:value => '<SERVICE DEFAULT>') should contain_ovn_metadata_agent_config('DEFAULT/nova_metadata_host').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_ovn_metadata_agent_config('DEFAULT/nova_metadata_port').with(:value => '<SERVICE DEFAULT>') should contain_ovn_metadata_agent_config('DEFAULT/nova_metadata_port').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_ovn_metadata_agent_config('DEFAULT/nova_metadata_protocol').with(:value => '<SERVICE DEFAULT>') should contain_ovn_metadata_agent_config('DEFAULT/nova_metadata_protocol').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_ovn_metadata_agent_config('DEFAULT/metadata_workers').with(:value => facts[:os_workers]) should contain_ovn_metadata_agent_config('DEFAULT/metadata_workers').with(:value => facts[:os_workers])
is_expected.to contain_ovn_metadata_agent_config('DEFAULT/metadata_backlog').with(:value => '<SERVICE DEFAULT>') should contain_ovn_metadata_agent_config('DEFAULT/metadata_backlog').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_ovn_metadata_agent_config('DEFAULT/nova_metadata_insecure').with(:value => '<SERVICE DEFAULT>') should contain_ovn_metadata_agent_config('DEFAULT/nova_metadata_insecure').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_ovn_metadata_agent_config('DEFAULT/state_path').with(:value => params[:state_path]) should contain_ovn_metadata_agent_config('DEFAULT/state_path').with(:value => params[:state_path])
is_expected.to contain_ovn_metadata_agent_config('DEFAULT/metadata_proxy_shared_secret').with(:value => params[:shared_secret]) should contain_ovn_metadata_agent_config('DEFAULT/metadata_proxy_shared_secret').with(:value => params[:shared_secret])
is_expected.to contain_ovn_metadata_agent_config('agent/root_helper').with(:value => params[:root_helper]) should contain_ovn_metadata_agent_config('agent/root_helper').with(:value => params[:root_helper])
is_expected.to contain_ovn_metadata_agent_config('agent/root_helper_daemon').with(:value => '<SERVICE DEFAULT>') should contain_ovn_metadata_agent_config('agent/root_helper_daemon').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_ovn_metadata_agent_config('ovs/ovsdb_connection_timeout').with(:value => '<SERVICE DEFAULT>') should contain_ovn_metadata_agent_config('ovs/ovsdb_connection_timeout').with(:value => '<SERVICE DEFAULT>')
is_expected.to contain_ovn_metadata_agent_config('ovs/ovsdb_connection').with(:value => params[:ovsdb_connection]) should contain_ovn_metadata_agent_config('ovs/ovsdb_connection').with(:value => params[:ovsdb_connection])
is_expected.to contain_ovn_metadata_agent_config('ovn/ovn_sb_connection').with(:value => '<SERVICE DEFAULT>') should contain_ovn_metadata_agent_config('ovn/ovn_sb_connection').with(:value => '<SERVICE DEFAULT>')
end end
end end
shared_examples_for 'ovn metadata agent with auth_ca_cert set' do shared_examples 'ovn metadata agent with auth_ca_cert set' do
let :params do let :params do
{ :auth_ca_cert => '/some/cert', {
:auth_ca_cert => '/some/cert',
:shared_secret => '42', :shared_secret => '42',
:nova_client_cert => '/nova/cert', :nova_client_cert => '/nova/cert',
:nova_client_priv_key => '/nova/key', :nova_client_priv_key => '/nova/key',
@ -87,56 +82,56 @@ describe 'neutron::agents::ovn_metadata' do
end end
it 'configures certificate' do it 'configures certificate' do
is_expected.to contain_ovn_metadata_agent_config('DEFAULT/auth_ca_cert').with_value('/some/cert') should contain_ovn_metadata_agent_config('DEFAULT/auth_ca_cert').with_value('/some/cert')
is_expected.to contain_ovn_metadata_agent_config('DEFAULT/nova_client_cert').with_value('/nova/cert') should contain_ovn_metadata_agent_config('DEFAULT/nova_client_cert').with_value('/nova/cert')
is_expected.to contain_ovn_metadata_agent_config('DEFAULT/nova_client_priv_key').with_value('/nova/key') should contain_ovn_metadata_agent_config('DEFAULT/nova_client_priv_key').with_value('/nova/key')
is_expected.to contain_ovn_metadata_agent_config('DEFAULT/nova_metadata_insecure').with_value(true) should contain_ovn_metadata_agent_config('DEFAULT/nova_metadata_insecure').with_value(true)
end end
end end
context 'on Debian platforms' do shared_examples 'neutron::agents::ovn::metadata on RedHat based' do
let :facts do
@default_facts.merge(test_facts.merge(
{ :osfamily => 'Debian',
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } } }
))
end
let :platform_params do
{ :ovn_metadata_agent_service => 'networking-ovn-metadata-agent' }
end
it_configures 'ovn metadata agent'
it_configures 'ovn metadata agent with auth_ca_cert set'
end
context 'on Red Hat platforms' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'RedHat',
:operatingsystemrelease => '7',
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
}))
end
let :platform_params do
{ :ovn_metadata_agent_package => 'python-networking-ovn-metadata-agent',
:ovn_metadata_agent_service => 'networking-ovn-metadata-agent' }
end
it 'installs ovn metadata agent package' do it 'installs ovn metadata agent package' do
is_expected.to contain_package('ovn-metadata').with( should contain_package('ovn-metadata').with(
:ensure => params[:package_ensure], :ensure => params[:package_ensure],
:name => platform_params[:ovn_metadata_agent_package], :name => platform_params[:ovn_metadata_agent_package],
:tag => ['openstack', 'neutron-package'], :tag => ['openstack', 'neutron-package'],
) )
end end
it_configures 'ovn metadata agent'
it_configures 'ovn metadata agent with auth_ca_cert set'
it 'configures subscription to ovn-metadata package' do it 'configures subscription to ovn-metadata package' do
is_expected.to contain_service('ovn-metadata').that_subscribes_to('Anchor[neutron::service::begin]') should contain_service('ovn-metadata').that_subscribes_to('Anchor[neutron::service::begin]')
is_expected.to contain_service('ovn-metadata').that_notifies('Anchor[neutron::service::end]') should contain_service('ovn-metadata').that_notifies('Anchor[neutron::service::end]')
end
end
on_supported_os({
:supported_os => OSDefaults.get_supported_os
}).each do |os,facts|
context "on #{os}" do
let (:facts) do
facts.merge!(OSDefaults.get_facts())
end
let (:platform_params) do
case facts[:osfamily]
when 'Debian'
{
:ovn_metadata_agent_service => 'networking-ovn-metadata-agent'
}
when 'RedHat'
{
:ovn_metadata_agent_package => 'python-networking-ovn-metadata-agent',
:ovn_metadata_agent_service => 'networking-ovn-metadata-agent'
}
end
end
it_behaves_like 'ovn metadata agent'
it_behaves_like 'ovn metadata agent with auth_ca_cert set'
if facts[:osfamily] == 'RedHat'
it_behaves_like 'neutron::agents::ovn::metadata on RedHat based'
end
end end
end end
end end

View File

@ -21,7 +21,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::agents::vpnaas' do describe 'neutron::agents::vpnaas' do
let :pre_condition do let :pre_condition do
"class { 'neutron': }" "class { 'neutron': }"
end end
@ -31,141 +30,121 @@ describe 'neutron::agents::vpnaas' do
end end
let :default_params do let :default_params do
{ :package_ensure => 'present', {
:vpn_device_driver => 'neutron.services.vpn.device_drivers.ipsec.OpenSwanDriver', :package_ensure => 'present',
:interface_driver => 'neutron.agent.linux.interface.OVSInterfaceDriver', :vpn_device_driver => 'neutron.services.vpn.device_drivers.ipsec.OpenSwanDriver',
:purge_config => false, :interface_driver => 'neutron.agent.linux.interface.OVSInterfaceDriver',
:purge_config => false,
} }
end end
let :test_facts do shared_examples 'neutron vpnaas agent' do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
}
end
shared_examples_for 'neutron vpnaas agent' do
let :p do let :p do
default_params.merge(params) default_params.merge(params)
end end
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it_configures 'openswan vpnaas_driver' it_behaves_like 'openswan vpnaas_driver'
it 'passes purge to resource' do it 'passes purge to resource' do
is_expected.to contain_resources('neutron_vpnaas_agent_config').with({ should contain_resources('neutron_vpnaas_agent_config').with({
:purge => false :purge => false
}) })
end end
it 'configures vpnaas_agent.ini' do it 'configures vpnaas_agent.ini' do
is_expected.to contain_neutron_vpnaas_agent_config('vpnagent/vpn_device_driver').with_value(p[:vpn_device_driver]); should contain_neutron_vpnaas_agent_config('vpnagent/vpn_device_driver').with_value(p[:vpn_device_driver]);
is_expected.to contain_neutron_vpnaas_agent_config('ipsec/ipsec_status_check_interval').with_value('<SERVICE DEFAULT>'); should contain_neutron_vpnaas_agent_config('ipsec/ipsec_status_check_interval').with_value('<SERVICE DEFAULT>');
is_expected.to contain_neutron_vpnaas_agent_config('DEFAULT/interface_driver').with_value(p[:interface_driver]); should contain_neutron_vpnaas_agent_config('DEFAULT/interface_driver').with_value(p[:interface_driver]);
end end
it 'installs neutron vpnaas agent package' do it 'installs neutron vpnaas agent package' do
if platform_params.has_key?(:vpnaas_agent_package) if platform_params.has_key?(:vpnaas_agent_package)
is_expected.to contain_package('neutron-vpnaas-agent').with( should contain_package('neutron-vpnaas-agent').with(
:name => platform_params[:vpnaas_agent_package], :name => platform_params[:vpnaas_agent_package],
:ensure => p[:package_ensure], :ensure => p[:package_ensure],
:tag => ['openstack', 'neutron-package'], :tag => ['openstack', 'neutron-package'],
) )
is_expected.to contain_package('neutron').that_requires('Anchor[neutron::install::begin]') should contain_package('neutron').that_requires('Anchor[neutron::install::begin]')
is_expected.to contain_package('neutron').that_notifies('Anchor[neutron::install::end]') should contain_package('neutron').that_notifies('Anchor[neutron::install::end]')
end end
end end
end end
shared_examples_for 'openswan vpnaas_driver' do shared_examples 'openswan vpnaas_driver' do
it 'installs openswan packages' do it 'installs openswan packages' do
if platform_params.has_key?(:vpnaas_agent_package) if platform_params.has_key?(:vpnaas_agent_package)
is_expected.to contain_package('openswan') should contain_package('openswan')
end end
is_expected.to contain_package('openswan').with( should contain_package('openswan').with(
:ensure => 'present', :ensure => 'present',
:name => platform_params[:openswan_package] :name => platform_params[:openswan_package]
) )
end end
end end
context 'on Debian platforms' do shared_examples 'neutron::agents::vpnaas on Debian' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'Debian',
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } },
}))
end
let :platform_params do
{ :openswan_package => 'openswan',
:vpnaas_agent_package => 'neutron-vpn-agent'}
end
it_configures 'neutron vpnaas agent'
context 'when configuring the LibreSwan driver' do context 'when configuring the LibreSwan driver' do
before do before do
params.merge!( params.merge!(
:vpn_device_driver => 'neutron_vpnaas.services.vpn.device_drivers.libreswan_ipsec.LibreSwanDriver' :vpn_device_driver => 'neutron_vpnaas.services.vpn.device_drivers.libreswan_ipsec.LibreSwanDriver'
) )
end end
it 'fails when configuring LibreSwan on Debian' do it 'fails when configuring LibreSwan on Debian' do
is_expected.to raise_error(Puppet::Error, /LibreSwan is not supported on osfamily Debian/) should raise_error(Puppet::Error, /LibreSwan is not supported on osfamily Debian/)
end end
end end
end end
context 'on RedHat 6 platforms' do shared_examples 'neutron::agents::vpnaas on RedHat' do
let :facts do
@default_facts.merge(test_facts.merge(
{ :osfamily => 'RedHat',
:operatingsystemrelease => '6.5',
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '6', :minor => '5' } },
:operatingsystemmajrelease => 6 }))
end
let :platform_params do
{ :openswan_package => 'openswan',
:vpnaas_agent_package => 'openstack-neutron-vpnaas'}
end
it_configures 'neutron vpnaas agent'
end
context 'on RedHat 7 platforms' do
let :facts do
@default_facts.merge(test_facts.merge(
{ :osfamily => 'RedHat',
:operatingsystemrelease => '7.1.2',
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '1.2' } },
:operatingsystemmajrelease => 7 }))
end
let :platform_params do
{ :openswan_package => 'libreswan',
:libreswan_package => 'libreswan',
:vpnaas_agent_package => 'openstack-neutron-vpnaas'}
end
it_configures 'neutron vpnaas agent'
context 'when configuring the LibreSwan driver' do context 'when configuring the LibreSwan driver' do
before do before do
params.merge!( params.merge!(
:vpn_device_driver => 'neutron_vpnaas.services.vpn.device_drivers.libreswan_ipsec.LibreSwanDriver' :vpn_device_driver => 'neutron_vpnaas.services.vpn.device_drivers.libreswan_ipsec.LibreSwanDriver'
) )
end end
it 'configures LibreSwan' do it 'configures LibreSwan' do
is_expected.to contain_neutron_vpnaas_agent_config('vpnagent/vpn_device_driver').with_value(params[:vpn_device_driver]); should contain_neutron_vpnaas_agent_config('vpnagent/vpn_device_driver').with_value(params[:vpn_device_driver]);
is_expected.to contain_package('libreswan').with( should contain_package('libreswan').with(
:ensure => 'present', :ensure => 'present',
:name => platform_params[:libreswan_package] :name => platform_params[:libreswan_package]
) )
end
end
end
on_supported_os({
:supported_os => OSDefaults.get_supported_os
}).each do |os,facts|
context "on #{os}" do
let (:facts) do
facts.merge!(OSDefaults.get_facts())
end
let (:platform_params) do
case facts[:osfamily]
when 'Debian'
{
:openswan_package => 'openswan',
:vpnaas_agent_package => 'neutron-vpn-agent'
}
when 'RedHat'
{
:openswan_package => 'libreswan',
:libreswan_package => 'libreswan',
:vpnaas_agent_package => 'openstack-neutron-vpnaas'
}
end end
end end
it_behaves_like "neutron::agents::vpnaas on #{facts[:osfamily]}"
if facts[:osfamily] == 'RedHat'
it_behaves_like 'neutron vpnaas agent'
end
end
end end
end end

View File

@ -1,14 +1,12 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::client' do describe 'neutron::client' do
shared_examples 'neutron client' do
shared_examples_for 'neutron client' do it { should contain_class('neutron::deps') }
it { should contain_class('neutron::params') }
it { is_expected.to contain_class('neutron::deps') }
it { is_expected.to contain_class('neutron::params') }
it 'installs neutron client package' do it 'installs neutron client package' do
is_expected.to contain_package('python-neutronclient').with( should contain_package('python-neutronclient').with(
:ensure => 'present', :ensure => 'present',
:name => platform_params[:client_package], :name => platform_params[:client_package],
:tag => ['neutron-support-package', 'openstack'] :tag => ['neutron-support-package', 'openstack']
@ -40,5 +38,4 @@ describe 'neutron::client' do
it_behaves_like 'neutron client' it_behaves_like 'neutron client'
end end
end end
end end

View File

@ -1,7 +1,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::config' do describe 'neutron::config' do
let(:config_hash) do { let(:config_hash) do {
'DEFAULT/foo' => { 'value' => 'fooValue' }, 'DEFAULT/foo' => { 'value' => 'fooValue' },
'DEFAULT/bar' => { 'value' => 'barValue' }, 'DEFAULT/bar' => { 'value' => 'barValue' },
@ -9,33 +8,33 @@ describe 'neutron::config' do
} }
end end
shared_examples_for 'neutron_config' do shared_examples 'neutron_config' do
let :params do let :params do
{ :server_config => config_hash } { :server_config => config_hash }
end end
it { is_expected.to contain_class('neutron::deps') } it { should contain_class('neutron::deps') }
it 'configures arbitrary neutron-config configurations' do it 'configures arbitrary neutron-config configurations' do
is_expected.to contain_neutron_config('DEFAULT/foo').with_value('fooValue') should contain_neutron_config('DEFAULT/foo').with_value('fooValue')
is_expected.to contain_neutron_config('DEFAULT/bar').with_value('barValue') should contain_neutron_config('DEFAULT/bar').with_value('barValue')
is_expected.to contain_neutron_config('DEFAULT/baz').with_ensure('absent') should contain_neutron_config('DEFAULT/baz').with_ensure('absent')
end end
end end
shared_examples_for 'neutron_api_config' do shared_examples 'neutron_api_config' do
let :params do let :params do
{ :api_config => config_hash } { :api_config => config_hash }
end end
it 'configures arbitrary neutron-api-config configurations' do it 'configures arbitrary neutron-api-config configurations' do
is_expected.to contain_neutron_api_config('DEFAULT/foo').with_value('fooValue') should contain_neutron_api_config('DEFAULT/foo').with_value('fooValue')
is_expected.to contain_neutron_api_config('DEFAULT/bar').with_value('barValue') should contain_neutron_api_config('DEFAULT/bar').with_value('barValue')
is_expected.to contain_neutron_api_config('DEFAULT/baz').with_ensure('absent') should contain_neutron_api_config('DEFAULT/baz').with_ensure('absent')
end end
end end
shared_examples_for 'neutron_service_config' do shared_examples 'neutron_service_config' do
let :params do let :params do
{ :sfc_service_config => config_hash, { :sfc_service_config => config_hash,
:l2gw_service_config => config_hash, :l2gw_service_config => config_hash,
@ -43,19 +42,19 @@ describe 'neutron::config' do
end end
it 'configures arbitrary sfc_service_config configurations' do it 'configures arbitrary sfc_service_config configurations' do
is_expected.to contain_neutron_sfc_service_config('DEFAULT/foo').with_value('fooValue') should contain_neutron_sfc_service_config('DEFAULT/foo').with_value('fooValue')
is_expected.to contain_neutron_sfc_service_config('DEFAULT/bar').with_value('barValue') should contain_neutron_sfc_service_config('DEFAULT/bar').with_value('barValue')
is_expected.to contain_neutron_sfc_service_config('DEFAULT/baz').with_ensure('absent') should contain_neutron_sfc_service_config('DEFAULT/baz').with_ensure('absent')
end end
it 'configures arbitrary l2gw_service_config configurations' do it 'configures arbitrary l2gw_service_config configurations' do
is_expected.to contain_neutron_l2gw_service_config('DEFAULT/foo').with_value('fooValue') should contain_neutron_l2gw_service_config('DEFAULT/foo').with_value('fooValue')
is_expected.to contain_neutron_l2gw_service_config('DEFAULT/bar').with_value('barValue') should contain_neutron_l2gw_service_config('DEFAULT/bar').with_value('barValue')
is_expected.to contain_neutron_l2gw_service_config('DEFAULT/baz').with_ensure('absent') should contain_neutron_l2gw_service_config('DEFAULT/baz').with_ensure('absent')
end end
end end
shared_examples_for 'neutron_agent_config' do shared_examples 'neutron_agent_config' do
let :params do let :params do
{ :l3_agent_config => config_hash, { :l3_agent_config => config_hash,
:dhcp_agent_config => config_hash, :dhcp_agent_config => config_hash,
@ -69,56 +68,56 @@ describe 'neutron::config' do
end end
it 'configures arbitrary l3_agent_config configurations' do it 'configures arbitrary l3_agent_config configurations' do
is_expected.to contain_neutron_l3_agent_config('DEFAULT/foo').with_value('fooValue') should contain_neutron_l3_agent_config('DEFAULT/foo').with_value('fooValue')
is_expected.to contain_neutron_l3_agent_config('DEFAULT/bar').with_value('barValue') should contain_neutron_l3_agent_config('DEFAULT/bar').with_value('barValue')
is_expected.to contain_neutron_l3_agent_config('DEFAULT/baz').with_ensure('absent') should contain_neutron_l3_agent_config('DEFAULT/baz').with_ensure('absent')
end end
it 'configures arbitrary dhcp_agent_config configurations' do it 'configures arbitrary dhcp_agent_config configurations' do
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/foo').with_value('fooValue') should contain_neutron_dhcp_agent_config('DEFAULT/foo').with_value('fooValue')
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/bar').with_value('barValue') should contain_neutron_dhcp_agent_config('DEFAULT/bar').with_value('barValue')
is_expected.to contain_neutron_dhcp_agent_config('DEFAULT/baz').with_ensure('absent') should contain_neutron_dhcp_agent_config('DEFAULT/baz').with_ensure('absent')
end end
it 'configures arbitrary lbaas_agent_config configurations' do it 'configures arbitrary lbaas_agent_config configurations' do
is_expected.to contain_neutron_lbaas_agent_config('DEFAULT/foo').with_value('fooValue') should contain_neutron_lbaas_agent_config('DEFAULT/foo').with_value('fooValue')
is_expected.to contain_neutron_lbaas_agent_config('DEFAULT/bar').with_value('barValue') should contain_neutron_lbaas_agent_config('DEFAULT/bar').with_value('barValue')
is_expected.to contain_neutron_lbaas_agent_config('DEFAULT/baz').with_ensure('absent') should contain_neutron_lbaas_agent_config('DEFAULT/baz').with_ensure('absent')
end end
it 'configures arbitrary metadata_agent_config configurations' do it 'configures arbitrary metadata_agent_config configurations' do
is_expected.to contain_neutron_metadata_agent_config('DEFAULT/foo').with_value('fooValue') should contain_neutron_metadata_agent_config('DEFAULT/foo').with_value('fooValue')
is_expected.to contain_neutron_metadata_agent_config('DEFAULT/bar').with_value('barValue') should contain_neutron_metadata_agent_config('DEFAULT/bar').with_value('barValue')
is_expected.to contain_neutron_metadata_agent_config('DEFAULT/baz').with_ensure('absent') should contain_neutron_metadata_agent_config('DEFAULT/baz').with_ensure('absent')
end end
it 'configures arbitrary metering_agent_config configurations' do it 'configures arbitrary metering_agent_config configurations' do
is_expected.to contain_neutron_metering_agent_config('DEFAULT/foo').with_value('fooValue') should contain_neutron_metering_agent_config('DEFAULT/foo').with_value('fooValue')
is_expected.to contain_neutron_metering_agent_config('DEFAULT/bar').with_value('barValue') should contain_neutron_metering_agent_config('DEFAULT/bar').with_value('barValue')
is_expected.to contain_neutron_metering_agent_config('DEFAULT/baz').with_ensure('absent') should contain_neutron_metering_agent_config('DEFAULT/baz').with_ensure('absent')
end end
it 'configures arbitrary vpnaas_agent_config configurations' do it 'configures arbitrary vpnaas_agent_config configurations' do
is_expected.to contain_neutron_vpnaas_agent_config('DEFAULT/foo').with_value('fooValue') should contain_neutron_vpnaas_agent_config('DEFAULT/foo').with_value('fooValue')
is_expected.to contain_neutron_vpnaas_agent_config('DEFAULT/bar').with_value('barValue') should contain_neutron_vpnaas_agent_config('DEFAULT/bar').with_value('barValue')
is_expected.to contain_neutron_vpnaas_agent_config('DEFAULT/baz').with_ensure('absent') should contain_neutron_vpnaas_agent_config('DEFAULT/baz').with_ensure('absent')
end end
it 'configures arbitrary l2gw_agent_config configurations' do it 'configures arbitrary l2gw_agent_config configurations' do
is_expected.to contain_neutron_l2gw_agent_config('DEFAULT/foo').with_value('fooValue') should contain_neutron_l2gw_agent_config('DEFAULT/foo').with_value('fooValue')
is_expected.to contain_neutron_l2gw_agent_config('DEFAULT/bar').with_value('barValue') should contain_neutron_l2gw_agent_config('DEFAULT/bar').with_value('barValue')
is_expected.to contain_neutron_l2gw_agent_config('DEFAULT/baz').with_ensure('absent') should contain_neutron_l2gw_agent_config('DEFAULT/baz').with_ensure('absent')
end end
it 'configures arbitrary bgp_dragent_config configurations' do it 'configures arbitrary bgp_dragent_config configurations' do
is_expected.to contain_neutron_bgp_dragent_config('DEFAULT/foo').with_value('fooValue') should contain_neutron_bgp_dragent_config('DEFAULT/foo').with_value('fooValue')
is_expected.to contain_neutron_bgp_dragent_config('DEFAULT/bar').with_value('barValue') should contain_neutron_bgp_dragent_config('DEFAULT/bar').with_value('barValue')
is_expected.to contain_neutron_bgp_dragent_config('DEFAULT/baz').with_ensure('absent') should contain_neutron_bgp_dragent_config('DEFAULT/baz').with_ensure('absent')
end end
end end
shared_examples_for 'neutron_plugin_config' do shared_examples 'neutron_plugin_config' do
let :params do let :params do
{ {
:plugin_linuxbridge_config => config_hash, :plugin_linuxbridge_config => config_hash,
@ -136,69 +135,69 @@ describe 'neutron::config' do
end end
it 'configures arbitrary neutron_plugin_linuxbridge configurations' do it 'configures arbitrary neutron_plugin_linuxbridge configurations' do
is_expected.to contain_neutron_plugin_linuxbridge('DEFAULT/foo').with_value('fooValue') should contain_neutron_plugin_linuxbridge('DEFAULT/foo').with_value('fooValue')
is_expected.to contain_neutron_plugin_linuxbridge('DEFAULT/bar').with_value('barValue') should contain_neutron_plugin_linuxbridge('DEFAULT/bar').with_value('barValue')
is_expected.to contain_neutron_plugin_linuxbridge('DEFAULT/baz').with_ensure('absent') should contain_neutron_plugin_linuxbridge('DEFAULT/baz').with_ensure('absent')
end end
it 'configures arbitrary neutron_plugin_cisco_db_conn configurations' do it 'configures arbitrary neutron_plugin_cisco_db_conn configurations' do
is_expected.to contain_neutron_plugin_cisco_db_conn('DEFAULT/foo').with_value('fooValue') should contain_neutron_plugin_cisco_db_conn('DEFAULT/foo').with_value('fooValue')
is_expected.to contain_neutron_plugin_cisco_db_conn('DEFAULT/bar').with_value('barValue') should contain_neutron_plugin_cisco_db_conn('DEFAULT/bar').with_value('barValue')
is_expected.to contain_neutron_plugin_cisco_db_conn('DEFAULT/baz').with_ensure('absent') should contain_neutron_plugin_cisco_db_conn('DEFAULT/baz').with_ensure('absent')
end end
it 'configures arbitrary neutron_plugin_cisco_l2network configurations' do it 'configures arbitrary neutron_plugin_cisco_l2network configurations' do
is_expected.to contain_neutron_plugin_cisco_l2network('DEFAULT/foo').with_value('fooValue') should contain_neutron_plugin_cisco_l2network('DEFAULT/foo').with_value('fooValue')
is_expected.to contain_neutron_plugin_cisco_l2network('DEFAULT/bar').with_value('barValue') should contain_neutron_plugin_cisco_l2network('DEFAULT/bar').with_value('barValue')
is_expected.to contain_neutron_plugin_cisco_l2network('DEFAULT/baz').with_ensure('absent') should contain_neutron_plugin_cisco_l2network('DEFAULT/baz').with_ensure('absent')
end end
it 'configures arbitrary neutron_plugin_cisco configurations' do it 'configures arbitrary neutron_plugin_cisco configurations' do
is_expected.to contain_neutron_plugin_cisco('DEFAULT/foo').with_value('fooValue') should contain_neutron_plugin_cisco('DEFAULT/foo').with_value('fooValue')
is_expected.to contain_neutron_plugin_cisco('DEFAULT/bar').with_value('barValue') should contain_neutron_plugin_cisco('DEFAULT/bar').with_value('barValue')
is_expected.to contain_neutron_plugin_cisco('DEFAULT/baz').with_ensure('absent') should contain_neutron_plugin_cisco('DEFAULT/baz').with_ensure('absent')
end end
it 'configures arbitrary neutron_plugin_midonet configurations' do it 'configures arbitrary neutron_plugin_midonet configurations' do
is_expected.to contain_neutron_plugin_midonet('DEFAULT/foo').with_value('fooValue') should contain_neutron_plugin_midonet('DEFAULT/foo').with_value('fooValue')
is_expected.to contain_neutron_plugin_midonet('DEFAULT/bar').with_value('barValue') should contain_neutron_plugin_midonet('DEFAULT/bar').with_value('barValue')
is_expected.to contain_neutron_plugin_midonet('DEFAULT/baz').with_ensure('absent') should contain_neutron_plugin_midonet('DEFAULT/baz').with_ensure('absent')
end end
it 'configures arbitrary neutron_plugin_plumgrid configurations' do it 'configures arbitrary neutron_plugin_plumgrid configurations' do
is_expected.to contain_neutron_plugin_plumgrid('DEFAULT/foo').with_value('fooValue') should contain_neutron_plugin_plumgrid('DEFAULT/foo').with_value('fooValue')
is_expected.to contain_neutron_plugin_plumgrid('DEFAULT/bar').with_value('barValue') should contain_neutron_plugin_plumgrid('DEFAULT/bar').with_value('barValue')
is_expected.to contain_neutron_plugin_plumgrid('DEFAULT/baz').with_ensure('absent') should contain_neutron_plugin_plumgrid('DEFAULT/baz').with_ensure('absent')
end end
it 'configures arbitrary neutron_plugin_nsx configurations' do it 'configures arbitrary neutron_plugin_nsx configurations' do
is_expected.to contain_neutron_plugin_nsx('DEFAULT/foo').with_value('fooValue') should contain_neutron_plugin_nsx('DEFAULT/foo').with_value('fooValue')
is_expected.to contain_neutron_plugin_nsx('DEFAULT/bar').with_value('barValue') should contain_neutron_plugin_nsx('DEFAULT/bar').with_value('barValue')
is_expected.to contain_neutron_plugin_nsx('DEFAULT/baz').with_ensure('absent') should contain_neutron_plugin_nsx('DEFAULT/baz').with_ensure('absent')
end end
it 'configures arbitrary neutron_plugin_nvp configurations' do it 'configures arbitrary neutron_plugin_nvp configurations' do
is_expected.to contain_neutron_plugin_nvp('DEFAULT/foo').with_value('fooValue') should contain_neutron_plugin_nvp('DEFAULT/foo').with_value('fooValue')
is_expected.to contain_neutron_plugin_nvp('DEFAULT/bar').with_value('barValue') should contain_neutron_plugin_nvp('DEFAULT/bar').with_value('barValue')
is_expected.to contain_neutron_plugin_nvp('DEFAULT/baz').with_ensure('absent') should contain_neutron_plugin_nvp('DEFAULT/baz').with_ensure('absent')
end end
it 'configures arbitrary neutron_plugin_opencontrail configurations' do it 'configures arbitrary neutron_plugin_opencontrail configurations' do
is_expected.to contain_neutron_plugin_opencontrail('DEFAULT/foo').with_value('fooValue') should contain_neutron_plugin_opencontrail('DEFAULT/foo').with_value('fooValue')
is_expected.to contain_neutron_plugin_opencontrail('DEFAULT/bar').with_value('barValue') should contain_neutron_plugin_opencontrail('DEFAULT/bar').with_value('barValue')
is_expected.to contain_neutron_plugin_opencontrail('DEFAULT/baz').with_ensure('absent') should contain_neutron_plugin_opencontrail('DEFAULT/baz').with_ensure('absent')
end end
it 'configures arbitrary neutron_plugin_nuage configurations' do it 'configures arbitrary neutron_plugin_nuage configurations' do
is_expected.to contain_neutron_plugin_nuage('DEFAULT/foo').with_value('fooValue') should contain_neutron_plugin_nuage('DEFAULT/foo').with_value('fooValue')
is_expected.to contain_neutron_plugin_nuage('DEFAULT/bar').with_value('barValue') should contain_neutron_plugin_nuage('DEFAULT/bar').with_value('barValue')
is_expected.to contain_neutron_plugin_nuage('DEFAULT/baz').with_ensure('absent') should contain_neutron_plugin_nuage('DEFAULT/baz').with_ensure('absent')
end end
it 'configures arbitrary neutron_plugin_ml2 configurations' do it 'configures arbitrary neutron_plugin_ml2 configurations' do
is_expected.to contain_neutron_plugin_ml2('DEFAULT/foo').with_value('fooValue') should contain_neutron_plugin_ml2('DEFAULT/foo').with_value('fooValue')
is_expected.to contain_neutron_plugin_ml2('DEFAULT/bar').with_value('barValue') should contain_neutron_plugin_ml2('DEFAULT/bar').with_value('barValue')
is_expected.to contain_neutron_plugin_ml2('DEFAULT/baz').with_ensure('absent') should contain_neutron_plugin_ml2('DEFAULT/baz').with_ensure('absent')
end end
end end
@ -211,10 +210,10 @@ describe 'neutron::config' do
facts.merge!(OSDefaults.get_facts()) facts.merge!(OSDefaults.get_facts())
end end
it_configures 'neutron_config' it_behaves_like 'neutron_config'
it_configures 'neutron_api_config' it_behaves_like 'neutron_api_config'
it_configures 'neutron_agent_config' it_behaves_like 'neutron_agent_config'
it_configures 'neutron_plugin_config' it_behaves_like 'neutron_plugin_config'
end end
end end
end end

View File

@ -1,7 +1,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::db::mysql' do describe 'neutron::db::mysql' do
let :pre_condition do let :pre_condition do
'include mysql::server' 'include mysql::server'
end end
@ -12,78 +11,82 @@ describe 'neutron::db::mysql' do
} }
end end
let :facts do shared_examples 'neutron::db::mysql' do
{ context 'with only required params' do
:osfamily => 'Debian', it { should contain_openstacklib__db__mysql('neutron').with(
}
end
describe 'with only required params' do
it { is_expected.to contain_openstacklib__db__mysql('neutron').with(
:user => 'neutron',
:password_hash => '*74B1C21ACE0C2D6B0678A5E503D2A60E8F9651A3',
:host => '127.0.0.1',
:charset => 'utf8',
:collate => 'utf8_general_ci',
) }
end
describe "overriding allowed_hosts param to array" do
let :params do
{
:password => 'neutronpass',
:allowed_hosts => ['127.0.0.1','%'],
}
end
it { is_expected.to contain_openstacklib__db__mysql('neutron').with(
:user => 'neutron',
:password_hash => '*E7D4FEBBE0A141B5E4B413EAF85CCB49746A2497',
:host => '127.0.0.1',
:charset => 'utf8',
:collate => 'utf8_general_ci',
:allowed_hosts => ['127.0.0.1','%'],
) }
end
describe "overriding allowed_hosts param to string" do
let :params do
{
:password => 'neutronpass2',
:allowed_hosts => '192.168.1.1',
}
end
it { is_expected.to contain_openstacklib__db__mysql('neutron').with(
:user => 'neutron', :user => 'neutron',
:password_hash => '*32C4202C8C2D4430442B55CCA765BD47D5D2E1A2', :password_hash => '*74B1C21ACE0C2D6B0678A5E503D2A60E8F9651A3',
:host => '127.0.0.1', :host => '127.0.0.1',
:charset => 'utf8', :charset => 'utf8',
:collate => 'utf8_general_ci', :collate => 'utf8_general_ci',
:allowed_hosts => '192.168.1.1', ) }
) }
end
describe "overriding allowed_hosts param equals to host param " do
let :params do
{
:password => 'neutronpass2',
:allowed_hosts => '127.0.0.1',
}
end end
it { is_expected.to contain_openstacklib__db__mysql('neutron').with( context "overriding allowed_hosts param to array" do
let :params do
{
:password => 'neutronpass',
:allowed_hosts => ['127.0.0.1','%'],
}
end
it { should contain_openstacklib__db__mysql('neutron').with(
:user => 'neutron', :user => 'neutron',
:password_hash => '*32C4202C8C2D4430442B55CCA765BD47D5D2E1A2', :password_hash => '*E7D4FEBBE0A141B5E4B413EAF85CCB49746A2497',
:host => '127.0.0.1', :host => '127.0.0.1',
:charset => 'utf8', :charset => 'utf8',
:collate => 'utf8_general_ci', :collate => 'utf8_general_ci',
:allowed_hosts => '127.0.0.1', :allowed_hosts => ['127.0.0.1','%'],
) } ) }
end
context "overriding allowed_hosts param to string" do
let :params do
{
:password => 'neutronpass2',
:allowed_hosts => '192.168.1.1',
}
end
it { should contain_openstacklib__db__mysql('neutron').with(
:user => 'neutron',
:password_hash => '*32C4202C8C2D4430442B55CCA765BD47D5D2E1A2',
:host => '127.0.0.1',
:charset => 'utf8',
:collate => 'utf8_general_ci',
:allowed_hosts => '192.168.1.1',
)}
end
context "overriding allowed_hosts param equals to host param " do
let :params do
{
:password => 'neutronpass2',
:allowed_hosts => '127.0.0.1',
}
end
it { should contain_openstacklib__db__mysql('neutron').with(
:user => 'neutron',
:password_hash => '*32C4202C8C2D4430442B55CCA765BD47D5D2E1A2',
:host => '127.0.0.1',
:charset => 'utf8',
:collate => 'utf8_general_ci',
:allowed_hosts => '127.0.0.1',
)}
end
end end
on_supported_os({
:supported_os => OSDefaults.get_supported_os
}).each do |os,facts|
context "on #{os}" do
let (:facts) do
facts.merge!(OSDefaults.get_facts())
end
it_behaves_like 'neutron::db::mysql'
end
end
end end

View File

@ -1,8 +1,7 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::db::postgresql' do describe 'neutron::db::postgresql' do
shared_examples 'neutron::db::postgresql' do
shared_examples_for 'neutron::db::postgresql' do
let :req_params do let :req_params do
{ :password => 'pw' } { :password => 'pw' }
end end
@ -11,18 +10,12 @@ describe 'neutron::db::postgresql' do
'include postgresql::server' 'include postgresql::server'
end end
let :test_facts do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
}
end
context 'with only required parameters' do context 'with only required parameters' do
let :params do let :params do
req_params req_params
end end
it { is_expected.to contain_postgresql__server__db('neutron').with( it { should contain_postgresql__server__db('neutron').with(
:user => 'neutron', :user => 'neutron',
:password => 'md5696acd1dd66513a556a18a1beccd03d1' :password => 'md5696acd1dd66513a556a18a1beccd03d1'
)} )}
@ -41,8 +34,7 @@ describe 'neutron::db::postgresql' do
})) }))
end end
it_configures 'neutron::db::postgresql' it_behaves_like 'neutron::db::postgresql'
end end
end end
end end

View File

@ -1,12 +1,9 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::db' do describe 'neutron::db' do
shared_examples 'neutron::db' do shared_examples 'neutron::db' do
context 'with default parameters' do context 'with default parameters' do
it { should contain_oslo__db('neutron_config').with(
it { is_expected.to contain_oslo__db('neutron_config').with(
:db_max_retries => '<SERVICE DEFAULT>', :db_max_retries => '<SERVICE DEFAULT>',
:connection => 'sqlite:////var/lib/neutron/ovs.sqlite', :connection => 'sqlite:////var/lib/neutron/ovs.sqlite',
:idle_timeout => '<SERVICE DEFAULT>', :idle_timeout => '<SERVICE DEFAULT>',
@ -22,7 +19,8 @@ describe 'neutron::db' do
context 'with specific parameters' do context 'with specific parameters' do
let :params do let :params do
{ :database_connection => 'mysql+pymysql://neutron:neutron@localhost/neutron', {
:database_connection => 'mysql+pymysql://neutron:neutron@localhost/neutron',
:database_idle_timeout => '3601', :database_idle_timeout => '3601',
:database_min_pool_size => '2', :database_min_pool_size => '2',
:database_max_pool_size => '11', :database_max_pool_size => '11',
@ -34,7 +32,7 @@ describe 'neutron::db' do
} }
end end
it { is_expected.to contain_oslo__db('neutron_config').with( it { should contain_oslo__db('neutron_config').with(
:db_max_retries => '-1', :db_max_retries => '-1',
:connection => 'mysql+pymysql://neutron:neutron@localhost/neutron', :connection => 'mysql+pymysql://neutron:neutron@localhost/neutron',
:idle_timeout => '3601', :idle_timeout => '3601',
@ -53,7 +51,7 @@ describe 'neutron::db' do
{ :database_connection => 'mysql+pymysql://neutron:neutron@localhost/neutron' } { :database_connection => 'mysql+pymysql://neutron:neutron@localhost/neutron' }
end end
it { is_expected.to contain_oslo__db('neutron_config').with( it { should contain_oslo__db('neutron_config').with(
:connection => 'mysql+pymysql://neutron:neutron@localhost/neutron', :connection => 'mysql+pymysql://neutron:neutron@localhost/neutron',
)} )}
end end
@ -64,7 +62,7 @@ describe 'neutron::db' do
end end
it 'install the proper backend package' do it 'install the proper backend package' do
is_expected.to contain_package('python-psycopg2').with(:ensure => 'present') should contain_package('python-psycopg2').with(:ensure => 'present')
end end
end end
@ -74,7 +72,7 @@ describe 'neutron::db' do
{ :database_connection => 'redis://neutron:neutron@localhost/neutron', } { :database_connection => 'redis://neutron:neutron@localhost/neutron', }
end end
it_raises 'a Puppet::Error', /validate_re/ it { should raise_error(Puppet::Error, /validate_re/) }
end end
context 'with incorrect database_connection string' do context 'with incorrect database_connection string' do
@ -82,49 +80,34 @@ describe 'neutron::db' do
{ :database_connection => 'foo+pymysql://neutron:neutron@localhost/neutron', } { :database_connection => 'foo+pymysql://neutron:neutron@localhost/neutron', }
end end
it_raises 'a Puppet::Error', /validate_re/ it { should raise_error(Puppet::Error, /validate_re/) }
end end
end end
context 'on Debian platforms' do shared_examples 'neutron::db on Debian' do
let :facts do
@default_facts.merge({
:osfamily => 'Debian',
:operatingsystem => 'Debian',
:operatingsystemrelease => 'jessie',
})
end
it_configures 'neutron::db'
context 'using pymysql driver' do context 'using pymysql driver' do
let :params do let :params do
{ :database_connection => 'mysql+pymysql://neutron:neutron@localhost/neutron' } { :database_connection => 'mysql+pymysql://neutron:neutron@localhost/neutron' }
end end
it { is_expected.to contain_package('python-pymysql').with({ :ensure => 'present', :name => 'python-pymysql' }) } it { should contain_package('python-pymysql').with({ :ensure => 'present', :name => 'python-pymysql' }) }
end end
end end
context 'on Redhat platforms' do on_supported_os({
let :facts do :supported_os => OSDefaults.get_supported_os
@default_facts.merge({ }).each do |os,facts|
:osfamily => 'RedHat', context "on #{os}" do
:operatingsystemrelease => '7.1', let (:facts) do
}) facts.merge!(OSDefaults.get_facts())
end
it_configures 'neutron::db'
context 'using pymysql driver' do
let :params do
{ :database_connection => 'mysql+pymysql://neutron:neutron@localhost/neutron' }
end end
it_behaves_like 'neutron::db'
if facts[:osfamily] == 'Debian'
it_behaves_like 'neutron::db on Debian'
end
end end
end end
end end

View File

@ -1,11 +1,9 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::db::sync' do describe 'neutron::db::sync' do
shared_examples 'neutron-dbsync' do
shared_examples_for 'neutron-dbsync' do
it 'runs neutron-db-sync' do it 'runs neutron-db-sync' do
is_expected.to contain_exec('neutron-db-sync').with( should contain_exec('neutron-db-sync').with(
:command => 'neutron-db-manage upgrade heads', :command => 'neutron-db-manage upgrade heads',
:path => '/usr/bin', :path => '/usr/bin',
:refreshonly => 'true', :refreshonly => 'true',
@ -29,7 +27,7 @@ describe 'neutron::db::sync' do
end end
it { it {
is_expected.to contain_exec('neutron-db-sync').with( should contain_exec('neutron-db-sync').with(
:command => 'neutron-db-manage --config-file /etc/neutron/neutron.conf upgrade heads', :command => 'neutron-db-manage --config-file /etc/neutron/neutron.conf upgrade heads',
:path => '/usr/bin', :path => '/usr/bin',
:refreshonly => 'true', :refreshonly => 'true',
@ -54,7 +52,7 @@ describe 'neutron::db::sync' do
end end
it { it {
is_expected.to contain_exec('neutron-db-sync').with( should contain_exec('neutron-db-sync').with(
:command => 'neutron-db-manage upgrade heads', :command => 'neutron-db-manage upgrade heads',
:path => '/usr/bin', :path => '/usr/bin',
:refreshonly => 'true', :refreshonly => 'true',
@ -83,8 +81,7 @@ describe 'neutron::db::sync' do
})) }))
end end
it_configures 'neutron-dbsync' it_behaves_like 'neutron-dbsync'
end end
end end
end end

View File

@ -1,25 +1,24 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::designate' do describe 'neutron::designate' do
let :req_params do let :req_params do
{ :password => 'secret', { :password => 'secret',
:url => 'http://ip/designate' } :url => 'http://ip/designate' }
end end
shared_examples_for 'neutron designate' do shared_examples 'neutron designate' do
context 'with default parameters' do context 'with default parameters' do
let :params do let :params do
req_params req_params
end end
it 'configures designate in neutron.conf' do it 'configures designate in neutron.conf' do
is_expected.to contain_neutron_config('DEFAULT/external_dns_driver').with_value('designate') should contain_neutron_config('DEFAULT/external_dns_driver').with_value('designate')
is_expected.to contain_neutron_config('designate/url').with_value('http://ip/designate') should contain_neutron_config('designate/url').with_value('http://ip/designate')
is_expected.to contain_neutron_config('designate/password').with_value('secret') should contain_neutron_config('designate/password').with_value('secret')
is_expected.to contain_neutron_config('designate/username').with_value('neutron') should contain_neutron_config('designate/username').with_value('neutron')
is_expected.to contain_neutron_config('designate/auth_type').with_value('password') should contain_neutron_config('designate/auth_type').with_value('password')
is_expected.to contain_neutron_config('designate/project_name').with_value('services') should contain_neutron_config('designate/project_name').with_value('services')
end end
end end
@ -43,22 +42,22 @@ describe 'neutron::designate' do
end end
it 'configures designate in neutron.conf' do it 'configures designate in neutron.conf' do
is_expected.to contain_neutron_config('DEFAULT/external_dns_driver').with_value('designate') should contain_neutron_config('DEFAULT/external_dns_driver').with_value('designate')
is_expected.to contain_neutron_config('designate/url').with_value('http://ip/designate') should contain_neutron_config('designate/url').with_value('http://ip/designate')
is_expected.to contain_neutron_config('designate/password').with_value('secret') should contain_neutron_config('designate/password').with_value('secret')
is_expected.to contain_neutron_config('designate/username').with_value('user') should contain_neutron_config('designate/username').with_value('user')
is_expected.to contain_neutron_config('designate/auth_type').with_value('token') should contain_neutron_config('designate/auth_type').with_value('token')
is_expected.to contain_neutron_config('designate/project_id').with_value('id1') should contain_neutron_config('designate/project_id').with_value('id1')
is_expected.to contain_neutron_config('designate/project_name').with_value('proj') should contain_neutron_config('designate/project_name').with_value('proj')
is_expected.to contain_neutron_config('designate/project_domain_id').with_value('domain1') should contain_neutron_config('designate/project_domain_id').with_value('domain1')
is_expected.to contain_neutron_config('designate/project_domain_name').with_value('Domain1') should contain_neutron_config('designate/project_domain_name').with_value('Domain1')
is_expected.to contain_neutron_config('designate/user_domain_id').with_value('domain2') should contain_neutron_config('designate/user_domain_id').with_value('domain2')
is_expected.to contain_neutron_config('designate/user_domain_name').with_value('Domain2') should contain_neutron_config('designate/user_domain_name').with_value('Domain2')
is_expected.to contain_neutron_config('designate/auth_url').with_value('http://auth/') should contain_neutron_config('designate/auth_url').with_value('http://auth/')
is_expected.to contain_neutron_config('designate/allow_reverse_dns_lookup').with_value(false) should contain_neutron_config('designate/allow_reverse_dns_lookup').with_value(false)
is_expected.to contain_neutron_config('designate/ipv4_ptr_zone_prefix_size').with_value(765) should contain_neutron_config('designate/ipv4_ptr_zone_prefix_size').with_value(765)
is_expected.to contain_neutron_config('designate/ipv6_ptr_zone_prefix_size').with_value(876) should contain_neutron_config('designate/ipv6_ptr_zone_prefix_size').with_value(876)
is_expected.to contain_neutron_config('designate/ptr_zone_email').with_value('foo@example.com') should contain_neutron_config('designate/ptr_zone_email').with_value('foo@example.com')
end end
end end
end end
@ -71,7 +70,7 @@ describe 'neutron::designate' do
facts.merge!(OSDefaults.get_facts()) facts.merge!(OSDefaults.get_facts())
end end
it_configures 'neutron designate' it_behaves_like 'neutron designate'
end end
end end
end end

View File

@ -1,72 +1,64 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron' do describe 'neutron' do
let :params do let :params do
{ :package_ensure => 'present', {
:core_plugin => 'ml2', :package_ensure => 'present',
:auth_strategy => 'keystone', :core_plugin => 'ml2',
:log_dir => '/var/log/neutron', :auth_strategy => 'keystone',
:purge_config => false, :log_dir => '/var/log/neutron',
:purge_config => false,
} }
end end
let :test_facts do shared_examples 'neutron' do
{ :operatingsystem => 'default', it_behaves_like 'a neutron base installation'
:operatingsystemrelease => 'default'
}
end
shared_examples_for 'neutron' do
it_configures 'a neutron base installation'
context 'with rabbitmq heartbeat configured' do context 'with rabbitmq heartbeat configured' do
before { params.merge!( :rabbit_heartbeat_timeout_threshold => '60', :rabbit_heartbeat_rate => '10' ) } before { params.merge!( :rabbit_heartbeat_timeout_threshold => '60', :rabbit_heartbeat_rate => '10' ) }
it_configures 'rabbit with heartbeat configured' it_behaves_like 'rabbit with heartbeat configured'
end end
context 'with rabbitmq durable queues configured' do context 'with rabbitmq durable queues configured' do
before { params.merge!( :amqp_durable_queues => true ) } before { params.merge!( :amqp_durable_queues => true ) }
it_configures 'rabbit with durable queues' it_behaves_like 'rabbit with durable queues'
end end
context 'with rabbitmq non default transient_queues_ttl' do context 'with rabbitmq non default transient_queues_ttl' do
before { params.merge!( :rabbit_transient_queues_ttl => 20 ) } before { params.merge!( :rabbit_transient_queues_ttl => 20 ) }
it_configures 'rabbit with non default transient_queues_ttl' it_behaves_like 'rabbit with non default transient_queues_ttl'
end end
it_behaves_like 'with SSL enabled with kombu'
it_configures 'with SSL enabled with kombu' it_behaves_like 'with SSL enabled without kombu'
it_configures 'with SSL enabled without kombu' it_behaves_like 'with SSL disabled'
it_configures 'with SSL disabled' it_behaves_like 'with SSL and kombu wrongly configured'
it_configures 'with SSL and kombu wrongly configured' it_behaves_like 'with SSL socket options set'
it_configures 'with SSL socket options set' it_behaves_like 'with SSL socket options set with wrong parameters'
it_configures 'with SSL socket options set with wrong parameters' it_behaves_like 'with SSL socket options left by default'
it_configures 'with SSL socket options left by default' it_behaves_like 'with syslog disabled'
it_configures 'with syslog disabled' it_behaves_like 'with syslog enabled'
it_configures 'with syslog enabled' it_behaves_like 'with log_file specified'
it_configures 'with log_file specified' it_behaves_like 'without service_plugins'
it_configures 'without service_plugins' it_behaves_like 'with service_plugins'
it_configures 'with service_plugins' it_behaves_like 'with host defined'
it_configures 'with host defined' it_behaves_like 'with dns_domain defined'
it_configures 'with dns_domain defined' it_behaves_like 'with transport_url defined'
it_configures 'with transport_url defined' it_behaves_like 'with rootwrap daemon'
it_configures 'with rootwrap daemon' it_behaves_like 'with max_allowed_address_pair defined'
it_configures 'with max_allowed_address_pair defined' it_behaves_like 'when disabling vlan_transparent'
it_configures 'when disabling vlan_transparent' it_behaves_like 'when enabling vlan_transparent'
it_configures 'when enabling vlan_transparent'
context 'with amqp messaging' do context 'with amqp messaging' do
it_configures 'amqp support' it_behaves_like 'amqp support'
end end
end end
shared_examples_for 'a neutron base installation' do shared_examples 'a neutron base installation' do
it { should contain_class('neutron::params') }
it { is_expected.to contain_class('neutron::params') }
it 'installs neutron package' do it 'installs neutron package' do
is_expected.to contain_package('neutron').with( should contain_package('neutron').with(
:ensure => 'present', :ensure => 'present',
:name => platform_params[:common_package_name], :name => platform_params[:common_package_name],
:tag => ['openstack', 'neutron-package'], :tag => ['openstack', 'neutron-package'],
@ -74,158 +66,158 @@ describe 'neutron' do
end end
it 'passes purge to resource' do it 'passes purge to resource' do
is_expected.to contain_resources('neutron_config').with({ should contain_resources('neutron_config').with({
:purge => false :purge => false
}) })
end end
it 'configures messaging notifications' do it 'configures messaging notifications' do
is_expected.to contain_neutron_config('oslo_messaging_notifications/driver').with_value('<SERVICE DEFAULT>') should contain_neutron_config('oslo_messaging_notifications/driver').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('oslo_messaging_notifications/topics').with_value('<SERVICE DEFAULT>') should contain_neutron_config('oslo_messaging_notifications/topics').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('oslo_messaging_notifications/transport_url').with_value('<SERVICE DEFAULT>') should contain_neutron_config('oslo_messaging_notifications/transport_url').with_value('<SERVICE DEFAULT>')
end end
it 'configures rabbit' do it 'configures rabbit' do
is_expected.to contain_neutron_config('oslo_messaging_rabbit/heartbeat_timeout_threshold').with_value('<SERVICE DEFAULT>') should contain_neutron_config('oslo_messaging_rabbit/heartbeat_timeout_threshold').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('oslo_messaging_rabbit/heartbeat_rate').with_value('<SERVICE DEFAULT>') should contain_neutron_config('oslo_messaging_rabbit/heartbeat_rate').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('oslo_messaging_rabbit/kombu_reconnect_delay').with_value( '<SERVICE DEFAULT>' ) should contain_neutron_config('oslo_messaging_rabbit/kombu_reconnect_delay').with_value( '<SERVICE DEFAULT>' )
is_expected.to contain_neutron_config('oslo_messaging_rabbit/kombu_missing_consumer_retry_timeout').with_value( '<SERVICE DEFAULT>' ) should contain_neutron_config('oslo_messaging_rabbit/kombu_missing_consumer_retry_timeout').with_value( '<SERVICE DEFAULT>' )
is_expected.to contain_neutron_config('oslo_messaging_rabbit/kombu_failover_strategy').with_value( '<SERVICE DEFAULT>' ) should contain_neutron_config('oslo_messaging_rabbit/kombu_failover_strategy').with_value( '<SERVICE DEFAULT>' )
is_expected.to contain_neutron_config('oslo_messaging_rabbit/kombu_compression').with_value( '<SERVICE DEFAULT>' ) should contain_neutron_config('oslo_messaging_rabbit/kombu_compression').with_value( '<SERVICE DEFAULT>' )
end end
it 'configures neutron.conf' do it 'configures neutron.conf' do
is_expected.to contain_neutron_config('DEFAULT/bind_host').with_value('<SERVICE DEFAULT>') should contain_neutron_config('DEFAULT/bind_host').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('DEFAULT/bind_port').with_value('<SERVICE DEFAULT>') should contain_neutron_config('DEFAULT/bind_port').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('DEFAULT/auth_strategy').with_value('keystone') should contain_neutron_config('DEFAULT/auth_strategy').with_value('keystone')
is_expected.to contain_neutron_config('DEFAULT/core_plugin').with_value( params[:core_plugin] ) should contain_neutron_config('DEFAULT/core_plugin').with_value( params[:core_plugin] )
is_expected.to contain_neutron_config('DEFAULT/base_mac').with_value('<SERVICE DEFAULT>') should contain_neutron_config('DEFAULT/base_mac').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('DEFAULT/dhcp_lease_duration').with_value('<SERVICE DEFAULT>') should contain_neutron_config('DEFAULT/dhcp_lease_duration').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('DEFAULT/host').with_value('<SERVICE DEFAULT>') should contain_neutron_config('DEFAULT/host').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('DEFAULT/dns_domain').with_value('<SERVICE DEFAULT>') should contain_neutron_config('DEFAULT/dns_domain').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('DEFAULT/dhcp_agents_per_network').with_value('<SERVICE DEFAULT>') should contain_neutron_config('DEFAULT/dhcp_agents_per_network').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('DEFAULT/global_physnet_mtu').with_value('<SERVICE DEFAULT>') should contain_neutron_config('DEFAULT/global_physnet_mtu').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('DEFAULT/dhcp_agent_notification').with_value('<SERVICE DEFAULT>') should contain_neutron_config('DEFAULT/dhcp_agent_notification').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('DEFAULT/allow_bulk').with_value('<SERVICE DEFAULT>') should contain_neutron_config('DEFAULT/allow_bulk').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('DEFAULT/allow_overlapping_ips').with_value('<SERVICE DEFAULT>') should contain_neutron_config('DEFAULT/allow_overlapping_ips').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('DEFAULT/api_extensions_path').with_value('<SERVICE DEFAULT>') should contain_neutron_config('DEFAULT/api_extensions_path').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('DEFAULT/control_exchange').with_value('neutron') should contain_neutron_config('DEFAULT/control_exchange').with_value('neutron')
is_expected.to contain_neutron_config('DEFAULT/state_path').with_value('<SERVICE DEFAULT>') should contain_neutron_config('DEFAULT/state_path').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('oslo_concurrency/lock_path').with_value('$state_path/lock') should contain_neutron_config('oslo_concurrency/lock_path').with_value('$state_path/lock')
is_expected.to contain_neutron_config('DEFAULT/transport_url').with_value('<SERVICE DEFAULT>') should contain_neutron_config('DEFAULT/transport_url').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('DEFAULT/rpc_response_timeout').with_value('<SERVICE DEFAULT>') should contain_neutron_config('DEFAULT/rpc_response_timeout').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('DEFAULT/vlan_transparent').with_value('<SERVICE DEFAULT>') should contain_neutron_config('DEFAULT/vlan_transparent').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('agent/root_helper').with_value('sudo neutron-rootwrap /etc/neutron/rootwrap.conf') should contain_neutron_config('agent/root_helper').with_value('sudo neutron-rootwrap /etc/neutron/rootwrap.conf')
is_expected.to contain_neutron_config('agent/root_helper_daemon').with_value('<SERVICE DEFAULT>') should contain_neutron_config('agent/root_helper_daemon').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('agent/report_interval').with_value('<SERVICE DEFAULT>') should contain_neutron_config('agent/report_interval').with_value('<SERVICE DEFAULT>')
end end
end end
shared_examples_for 'rabbit with heartbeat configured' do shared_examples 'rabbit with heartbeat configured' do
it 'in neutron.conf' do it 'in neutron.conf' do
is_expected.to contain_neutron_config('oslo_messaging_rabbit/heartbeat_timeout_threshold').with_value('60') should contain_neutron_config('oslo_messaging_rabbit/heartbeat_timeout_threshold').with_value('60')
is_expected.to contain_neutron_config('oslo_messaging_rabbit/heartbeat_rate').with_value('10') should contain_neutron_config('oslo_messaging_rabbit/heartbeat_rate').with_value('10')
end end
end end
shared_examples_for 'rabbit with durable queues' do shared_examples 'rabbit with durable queues' do
it 'in neutron.conf' do it 'in neutron.conf' do
is_expected.to contain_neutron_config('oslo_messaging_rabbit/amqp_durable_queues').with_value(true) should contain_neutron_config('oslo_messaging_rabbit/amqp_durable_queues').with_value(true)
end end
end end
shared_examples_for 'rabbit with non default transient_queues_ttl' do shared_examples 'rabbit with non default transient_queues_ttl' do
it 'in neutron.conf' do it 'in neutron.conf' do
is_expected.to contain_neutron_config('oslo_messaging_rabbit/rabbit_transient_queues_ttl').with_value(20) should contain_neutron_config('oslo_messaging_rabbit/rabbit_transient_queues_ttl').with_value(20)
end end
end end
shared_examples_for 'rabbit_ha_queues set to false' do shared_examples 'rabbit_ha_queues set to false' do
it 'in neutron.conf' do it 'in neutron.conf' do
is_expected.to contain_neutron_config('oslo_messaging_rabbit/rabbit_ha_queues').with_value(false) should contain_neutron_config('oslo_messaging_rabbit/rabbit_ha_queues').with_value(false)
end end
end end
shared_examples_for 'notification_driver and notification_topics' do shared_examples 'notification_driver and notification_topics' do
it 'in neutron.conf' do it 'in neutron.conf' do
is_expected.to contain_neutron_config('oslo_messaging_notifications/driver').with_value( params[:notification_driver] ) should contain_neutron_config('oslo_messaging_notifications/driver').with_value( params[:notification_driver] )
is_expected.to contain_neutron_config('oslo_messaging_notifications/topics').with_value( params[:notification_topics] ) should contain_neutron_config('oslo_messaging_notifications/topics').with_value( params[:notification_topics] )
is_expected.to contain_neutron_config('oslo_messaging_notifications/transport_url').with_value( params[:notification_transport_url] ) should contain_neutron_config('oslo_messaging_notifications/transport_url').with_value( params[:notification_transport_url] )
end end
end end
shared_examples_for 'with SSL socket options set' do shared_examples 'with SSL socket options set' do
before do before do
params.merge!( params.merge!(
:use_ssl => true, :use_ssl => true,
:cert_file => '/path/to/cert', :cert_file => '/path/to/cert',
:key_file => '/path/to/key', :key_file => '/path/to/key',
:ca_file => '/path/to/ca' :ca_file => '/path/to/ca'
) )
end end
it { is_expected.to contain_neutron_config('DEFAULT/use_ssl').with_value('true') } it { should contain_neutron_config('DEFAULT/use_ssl').with_value('true') }
it { is_expected.to contain_neutron_config('ssl/cert_file').with_value('/path/to/cert') } it { should contain_neutron_config('ssl/cert_file').with_value('/path/to/cert') }
it { is_expected.to contain_neutron_config('ssl/key_file').with_value('/path/to/key') } it { should contain_neutron_config('ssl/key_file').with_value('/path/to/key') }
it { is_expected.to contain_neutron_config('ssl/ca_file').with_value('/path/to/ca') } it { should contain_neutron_config('ssl/ca_file').with_value('/path/to/ca') }
end end
shared_examples_for 'with SSL socket options set with wrong parameters' do shared_examples 'with SSL socket options set with wrong parameters' do
before do before do
params.merge!( params.merge!(
:use_ssl => true, :use_ssl => true,
:key_file => '/path/to/key', :key_file => '/path/to/key',
:ca_file => '/path/to/ca' :ca_file => '/path/to/ca'
) )
end end
it_raises 'a Puppet::Error', /The cert_file parameter is required when use_ssl is set to true/ it { should raise_error(Puppet::Error, /The cert_file parameter is required when use_ssl is set to true/) }
end end
shared_examples_for 'with SSL socket options left by default' do shared_examples 'with SSL socket options left by default' do
it { is_expected.to contain_neutron_config('DEFAULT/use_ssl').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('DEFAULT/use_ssl').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('ssl/cert_file').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('ssl/cert_file').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('ssl/key_file').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('ssl/key_file').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('ssl/ca_file').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('ssl/ca_file').with_value('<SERVICE DEFAULT>') }
end end
shared_examples_for 'with SSL socket options set and no ca_file' do shared_examples 'with SSL socket options set and no ca_file' do
before do before do
params.merge!( params.merge!(
:use_ssl => true, :use_ssl => true,
:cert_file => '/path/to/cert', :cert_file => '/path/to/cert',
:key_file => '/path/to/key' :key_file => '/path/to/key'
) )
end end
it { is_expected.to contain_neutron_config('DEFAULT/use_ssl').with_value('true') } it { should contain_neutron_config('DEFAULT/use_ssl').with_value('true') }
it { is_expected.to contain_neutron_config('ssl/cert_file').with_value('/path/to/cert') } it { should contain_neutron_config('ssl/cert_file').with_value('/path/to/cert') }
it { is_expected.to contain_neutron_config('ssl/key_file').with_value('/path/to/key') } it { should contain_neutron_config('ssl/key_file').with_value('/path/to/key') }
it { is_expected.to contain_neutron_config('ssl/ca_file').with_ensure('absent') } it { should contain_neutron_config('ssl/ca_file').with_ensure('absent') }
end end
shared_examples_for 'with SSL socket options disabled with ca_file' do shared_examples 'with SSL socket options disabled with ca_file' do
before do before do
params.merge!( params.merge!(
:use_ssl => false, :use_ssl => false,
:ca_file => '/path/to/ca' :ca_file => '/path/to/ca'
) )
end end
it_raises 'a Puppet::Error', /The ca_file parameter requires that use_ssl to be set to true/ it { should raise_error(Puppet::Error, /The ca_file parameter requires that use_ssl to be set to true/) }
end end
shared_examples_for 'with syslog disabled' do shared_examples 'with syslog disabled' do
before do before do
params.merge!( params.merge!(
:use_syslog => false, :use_syslog => false,
) )
end end
it { is_expected.to contain_neutron_config('DEFAULT/use_syslog').with_value(false) } it { should contain_neutron_config('DEFAULT/use_syslog').with_value(false) }
end end
shared_examples_for 'with non-default kombu options' do shared_examples 'with non-default kombu options' do
before do before do
params.merge!( params.merge!(
:kombu_missing_consumer_retry_timeout => '5', :kombu_missing_consumer_retry_timeout => '5',
@ -236,14 +228,14 @@ describe 'neutron' do
end end
it do it do
is_expected.to contain_neutron_config('oslo_messaging_rabbit/kombu_reconnect_delay').with_value('30') should contain_neutron_config('oslo_messaging_rabbit/kombu_reconnect_delay').with_value('30')
is_expected.to contain_neutron_config('oslo_messaging_rabbit/kombu_missing_consumer_retry_timeout').with_value('5') should contain_neutron_config('oslo_messaging_rabbit/kombu_missing_consumer_retry_timeout').with_value('5')
is_expected.to contain_neutron_config('oslo_messaging_rabbit/kombu_failover_strategy').with_value('shuffle') should contain_neutron_config('oslo_messaging_rabbit/kombu_failover_strategy').with_value('shuffle')
is_expected.to contain_neutron_config('oslo_messaging_rabbit/kombu_compression').with_value('gzip') should contain_neutron_config('oslo_messaging_rabbit/kombu_compression').with_value('gzip')
end end
end end
shared_examples_for 'with SSL enabled with kombu' do shared_examples 'with SSL enabled with kombu' do
before do before do
params.merge!( params.merge!(
:rabbit_use_ssl => true, :rabbit_use_ssl => true,
@ -254,7 +246,7 @@ describe 'neutron' do
) )
end end
it { is_expected.to contain_oslo__messaging__rabbit('neutron_config').with( it { should contain_oslo__messaging__rabbit('neutron_config').with(
:rabbit_use_ssl => true, :rabbit_use_ssl => true,
:kombu_ssl_ca_certs => '/path/to/ssl/ca/certs', :kombu_ssl_ca_certs => '/path/to/ssl/ca/certs',
:kombu_ssl_certfile => '/path/to/ssl/cert/file', :kombu_ssl_certfile => '/path/to/ssl/cert/file',
@ -263,30 +255,30 @@ describe 'neutron' do
)} )}
end end
shared_examples_for 'with SSL enabled without kombu' do shared_examples 'with SSL enabled without kombu' do
before do before do
params.merge!( params.merge!(
:rabbit_use_ssl => true :rabbit_use_ssl => true
) )
end end
it { is_expected.to contain_oslo__messaging__rabbit('neutron_config').with( it { should contain_oslo__messaging__rabbit('neutron_config').with(
:rabbit_use_ssl => true, :rabbit_use_ssl => true,
)} )}
end end
shared_examples_for 'with SSL disabled' do shared_examples 'with SSL disabled' do
it { is_expected.to contain_oslo__messaging__rabbit('neutron_config').with( it { should contain_oslo__messaging__rabbit('neutron_config').with(
:rabbit_use_ssl => '<SERVICE DEFAULT>', :rabbit_use_ssl => '<SERVICE DEFAULT>',
)} )}
end end
shared_examples_for 'with SSL and kombu wrongly configured' do shared_examples 'with SSL and kombu wrongly configured' do
before do before do
params.merge!( params.merge!(
:rabbit_use_ssl => true, :rabbit_use_ssl => true,
:kombu_ssl_certfile => '/path/to/ssl/cert/file', :kombu_ssl_certfile => '/path/to/ssl/cert/file',
:kombu_ssl_keyfile => '/path/to/ssl/keyfile' :kombu_ssl_keyfile => '/path/to/ssl/keyfile'
) )
end end
@ -295,13 +287,13 @@ describe 'neutron' do
context 'without kombu_ssl_keyfile parameter' do context 'without kombu_ssl_keyfile parameter' do
before { params.delete(:kombu_ssl_keyfile) } before { params.delete(:kombu_ssl_keyfile) }
it_raises 'a Puppet::Error', /The kombu_ssl_certfile and kombu_ssl_keyfile parameters must be used together/ it { should raise_error(Puppet::Error, /The kombu_ssl_certfile and kombu_ssl_keyfile parameters must be used together/) }
end end
end end
end end
shared_examples_for 'with syslog enabled' do shared_examples 'with syslog enabled' do
before do before do
params.merge!( params.merge!(
:use_syslog => 'true' :use_syslog => 'true'
@ -309,11 +301,11 @@ describe 'neutron' do
end end
it do it do
is_expected.to contain_neutron_config('DEFAULT/use_syslog').with_value(true) should contain_neutron_config('DEFAULT/use_syslog').with_value(true)
end end
end end
shared_examples_for 'with log_file specified' do shared_examples 'with log_file specified' do
before do before do
params.merge!( params.merge!(
:log_file => '/var/log/neutron/server.log', :log_file => '/var/log/neutron/server.log',
@ -321,49 +313,49 @@ describe 'neutron' do
) )
end end
it 'configures logging' do it 'configures logging' do
is_expected.to contain_neutron_config('DEFAULT/log_file').with_value(params[:log_file]) should contain_neutron_config('DEFAULT/log_file').with_value(params[:log_file])
is_expected.to contain_neutron_config('DEFAULT/log_dir').with_value(params[:log_dir]) should contain_neutron_config('DEFAULT/log_dir').with_value(params[:log_dir])
end end
end end
shared_examples_for 'with state and lock paths set' do shared_examples 'with state and lock paths set' do
before { params.merge!( before { params.merge!(
:state_path => 'state_path', :state_path => 'state_path',
:lock_path => 'lock_path' :lock_path => 'lock_path'
)} )}
it { it {
is_expected.to contain_neutron_config('DEFAULT/state_path').with_value('state_path') should contain_neutron_config('DEFAULT/state_path').with_value('state_path')
is_expected.to contain_neutron_config('oslo_concurrency/lock_path').with_value('lock_path') should contain_neutron_config('oslo_concurrency/lock_path').with_value('lock_path')
} }
end end
shared_examples_for 'when disabling vlan_transparent' do shared_examples 'when disabling vlan_transparent' do
before do before do
params.merge!( params.merge!(
:vlan_transparent => false :vlan_transparent => false
) )
end end
it do it do
is_expected.to contain_neutron_config('DEFAULT/vlan_transparent').with_value(false) should contain_neutron_config('DEFAULT/vlan_transparent').with_value(false)
end end
end end
shared_examples_for 'when enabling vlan_transparent' do shared_examples 'when enabling vlan_transparent' do
before do before do
params.merge!( params.merge!(
:vlan_transparent => true :vlan_transparent => true
) )
end end
it do it do
is_expected.to contain_neutron_config('DEFAULT/vlan_transparent').with_value(true) should contain_neutron_config('DEFAULT/vlan_transparent').with_value(true)
end end
end end
shared_examples_for 'without service_plugins' do shared_examples 'without service_plugins' do
it { is_expected.not_to contain_neutron_config('DEFAULT/service_plugins') } it { should_not contain_neutron_config('DEFAULT/service_plugins') }
end end
shared_examples_for 'with service_plugins' do shared_examples 'with service_plugins' do
before do before do
params.merge!( params.merge!(
:service_plugins => ['router','firewall','lbaas','vpnaas','metering','qos'] :service_plugins => ['router','firewall','lbaas','vpnaas','metering','qos']
@ -371,12 +363,12 @@ describe 'neutron' do
end end
it do it do
is_expected.to contain_neutron_config('DEFAULT/service_plugins').with_value('router,firewall,lbaas,vpnaas,metering,qos') should contain_neutron_config('DEFAULT/service_plugins').with_value('router,firewall,lbaas,vpnaas,metering,qos')
end end
end end
shared_examples_for 'with global_physnet_mtu defined' do shared_examples 'with global_physnet_mtu defined' do
before do before do
params.merge!( params.merge!(
:global_physnet_mtu => 9000 :global_physnet_mtu => 9000
@ -384,11 +376,11 @@ describe 'neutron' do
end end
it do it do
is_expected.to contain_neutron_config('DEFAULT/global_physnet_mtu').with_value(params[:global_physnet_mtu]) should contain_neutron_config('DEFAULT/global_physnet_mtu').with_value(params[:global_physnet_mtu])
end end
end end
shared_examples_for 'with host defined' do shared_examples 'with host defined' do
before do before do
params.merge!( params.merge!(
:host => 'test-001.example.org' :host => 'test-001.example.org'
@ -396,11 +388,11 @@ describe 'neutron' do
end end
it do it do
is_expected.to contain_neutron_config('DEFAULT/host').with_value(params[:host]) should contain_neutron_config('DEFAULT/host').with_value(params[:host])
end end
end end
shared_examples_for 'with dns_domain defined' do shared_examples 'with dns_domain defined' do
before do before do
params.merge!( params.merge!(
:dns_domain => 'testlocal' :dns_domain => 'testlocal'
@ -408,11 +400,11 @@ describe 'neutron' do
end end
it do it do
is_expected.to contain_neutron_config('DEFAULT/dns_domain').with_value(params[:dns_domain]) should contain_neutron_config('DEFAULT/dns_domain').with_value(params[:dns_domain])
end end
end end
shared_examples_for 'with transport_url defined' do shared_examples 'with transport_url defined' do
before do before do
params.merge!( params.merge!(
:default_transport_url => 'rabbit://rabbit_user:password@localhost:5673' :default_transport_url => 'rabbit://rabbit_user:password@localhost:5673'
@ -420,11 +412,11 @@ describe 'neutron' do
end end
it do it do
is_expected.to contain_neutron_config('DEFAULT/transport_url').with_value(params[:default_transport_url]) should contain_neutron_config('DEFAULT/transport_url').with_value(params[:default_transport_url])
end end
end end
shared_examples_for 'with rootwrap daemon' do shared_examples 'with rootwrap daemon' do
before do before do
params.merge!( params.merge!(
:root_helper_daemon => 'sudo neutron-rootwrap-daemon /etc/neutron/rootwrap.conf' :root_helper_daemon => 'sudo neutron-rootwrap-daemon /etc/neutron/rootwrap.conf'
@ -432,28 +424,28 @@ describe 'neutron' do
end end
it do it do
is_expected.to contain_neutron_config('agent/root_helper_daemon').with_value(params[:root_helper_daemon]) should contain_neutron_config('agent/root_helper_daemon').with_value(params[:root_helper_daemon])
end end
end end
shared_examples_for 'amqp support' do shared_examples 'amqp support' do
context 'with default amqp parameters' do context 'with default amqp parameters' do
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/server_request_prefix').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('oslo_messaging_amqp/server_request_prefix').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/broadcast_prefix').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('oslo_messaging_amqp/broadcast_prefix').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/group_request_prefix').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('oslo_messaging_amqp/group_request_prefix').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/container_name').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('oslo_messaging_amqp/container_name').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/idle_timeout').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('oslo_messaging_amqp/idle_timeout').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/trace').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('oslo_messaging_amqp/trace').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/ssl_ca_file').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('oslo_messaging_amqp/ssl_ca_file').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/ssl_cert_file').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('oslo_messaging_amqp/ssl_cert_file').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/ssl_key_file').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('oslo_messaging_amqp/ssl_key_file').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/ssl_key_password').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('oslo_messaging_amqp/ssl_key_password').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/allow_insecure_clients').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('oslo_messaging_amqp/allow_insecure_clients').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/sasl_mechanisms').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('oslo_messaging_amqp/sasl_mechanisms').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/sasl_config_dir').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('oslo_messaging_amqp/sasl_config_dir').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/sasl_config_name').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('oslo_messaging_amqp/sasl_config_name').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/username').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('oslo_messaging_amqp/username').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/password').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('oslo_messaging_amqp/password').with_value('<SERVICE DEFAULT>') }
end end
context 'with overridden amqp parameters' do context 'with overridden amqp parameters' do
@ -467,25 +459,25 @@ describe 'neutron' do
:amqp_password => 'password', :amqp_password => 'password',
) } ) }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/server_request_prefix').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('oslo_messaging_amqp/server_request_prefix').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/broadcast_prefix').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('oslo_messaging_amqp/broadcast_prefix').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/group_request_prefix').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('oslo_messaging_amqp/group_request_prefix').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/container_name').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('oslo_messaging_amqp/container_name').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/idle_timeout').with_value('60') } it { should contain_neutron_config('oslo_messaging_amqp/idle_timeout').with_value('60') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/trace').with_value('true') } it { should contain_neutron_config('oslo_messaging_amqp/trace').with_value('true') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/ssl_ca_file').with_value('/path/to/ca.cert') } it { should contain_neutron_config('oslo_messaging_amqp/ssl_ca_file').with_value('/path/to/ca.cert') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/ssl_cert_file').with_value('/path/to/certfile') } it { should contain_neutron_config('oslo_messaging_amqp/ssl_cert_file').with_value('/path/to/certfile') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/ssl_key_file').with_value('/path/to/key') } it { should contain_neutron_config('oslo_messaging_amqp/ssl_key_file').with_value('/path/to/key') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/allow_insecure_clients').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('oslo_messaging_amqp/allow_insecure_clients').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/sasl_mechanisms').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('oslo_messaging_amqp/sasl_mechanisms').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/sasl_config_dir').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('oslo_messaging_amqp/sasl_config_dir').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/sasl_config_name').with_value('<SERVICE DEFAULT>') } it { should contain_neutron_config('oslo_messaging_amqp/sasl_config_name').with_value('<SERVICE DEFAULT>') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/username').with_value('amqp_user') } it { should contain_neutron_config('oslo_messaging_amqp/username').with_value('amqp_user') }
it { is_expected.to contain_neutron_config('oslo_messaging_amqp/password').with_value('password') } it { should contain_neutron_config('oslo_messaging_amqp/password').with_value('password') }
end end
end end
shared_examples_for 'with max_allowed_address_pair defined' do shared_examples 'with max_allowed_address_pair defined' do
before do before do
params.merge!( params.merge!(
:max_allowed_address_pair => '50' :max_allowed_address_pair => '50'
@ -493,38 +485,32 @@ describe 'neutron' do
end end
it do it do
is_expected.to contain_neutron_config('DEFAULT/max_allowed_address_pair').with_value(params[:max_allowed_address_pair]) should contain_neutron_config('DEFAULT/max_allowed_address_pair').with_value(params[:max_allowed_address_pair])
end end
end end
context 'on Debian platforms' do on_supported_os({
let :facts do :supported_os => OSDefaults.get_supported_os
@default_facts.merge(test_facts.merge({ }).each do |os,facts|
:osfamily => 'Debian', context "on #{os}" do
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } }, let (:facts) do
})) facts.merge!(OSDefaults.get_facts())
end
let (:platform_params) do
case facts[:osfamily]
when 'Debian'
{
:common_package_name => 'neutron-common'
}
when 'RedHat'
{
:common_package_name => 'openstack-neutron'
}
end
end
it_behaves_like 'neutron'
end end
let :platform_params do
{ :common_package_name => 'neutron-common' }
end
it_configures 'neutron'
end
context 'on RedHat platforms' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'RedHat',
:operatingsystemrelease => '7',
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
}))
end
let :platform_params do
{ :common_package_name => 'openstack-neutron' }
end
it_configures 'neutron'
end end
end end

View File

@ -1,173 +1,157 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::keystone::auth' do describe 'neutron::keystone::auth' do
shared_examples 'neutron::keystone::auth' do
context 'with default class parameters' do
let :params do
{
:password => 'neutron_password',
:tenant => 'foobar'
}
end
let :test_facts do it { should contain_keystone_user('neutron').with(
{ :operatingsystem => 'default', :ensure => 'present',
:operatingsystemrelease => 'default'
}
end
describe 'with default class parameters' do
let :params do
{
:password => 'neutron_password', :password => 'neutron_password',
:tenant => 'foobar' )}
}
it { should contain_keystone_user_role('neutron@foobar').with(
:ensure => 'present',
:roles => ['admin']
)}
it { should contain_keystone_service('neutron::network').with(
:ensure => 'present',
:description => 'Neutron Networking Service'
)}
it { should contain_keystone_endpoint('RegionOne/neutron::network').with(
:ensure => 'present',
:public_url => "http://127.0.0.1:9696",
:admin_url => "http://127.0.0.1:9696",
:internal_url => "http://127.0.0.1:9696"
)}
end end
it { is_expected.to contain_keystone_user('neutron').with( context 'when configuring neutron-server' do
:ensure => 'present', let :pre_condition do
:password => 'neutron_password', "class { '::neutron::keystone::authtoken':
) } password => 'test',
}
class { 'neutron::server': }"
end
it { is_expected.to contain_keystone_user_role('neutron@foobar').with( let :params do
:ensure => 'present', {
:roles => ['admin'] :password => 'neutron_password',
)} :tenant => 'foobar'
}
end
it { is_expected.to contain_keystone_service('neutron::network').with(
:ensure => 'present',
:description => 'Neutron Networking Service'
) }
it { is_expected.to contain_keystone_endpoint('RegionOne/neutron::network').with(
:ensure => 'present',
:public_url => "http://127.0.0.1:9696",
:admin_url => "http://127.0.0.1:9696",
:internal_url => "http://127.0.0.1:9696"
) }
end
describe 'when configuring neutron-server' do
let :pre_condition do
"class { '::neutron::keystone::authtoken':
password => 'test',
}
class { 'neutron::server': }"
end end
let :facts do context 'with endpoint URL parameters' do
@default_facts.merge(test_facts.merge({ let :params do
:osfamily => 'Debian' {
})) :password => 'neutron_password',
end :public_url => 'https://10.10.10.10:80',
:internal_url => 'https://10.10.10.11:81',
:admin_url => 'https://10.10.10.12:81'
}
end
let :params do it { should contain_keystone_endpoint('RegionOne/neutron::network').with(
{ :ensure => 'present',
:password => 'neutron_password',
:tenant => 'foobar'
}
end
end
describe 'with endpoint URL parameters' do
let :params do
{
:password => 'neutron_password',
:public_url => 'https://10.10.10.10:80', :public_url => 'https://10.10.10.10:80',
:internal_url => 'https://10.10.10.11:81', :internal_url => 'https://10.10.10.11:81',
:admin_url => 'https://10.10.10.12:81' :admin_url => 'https://10.10.10.12:81'
} ) }
end end
it { is_expected.to contain_keystone_endpoint('RegionOne/neutron::network').with( context 'when overriding auth name' do
:ensure => 'present', let :params do
:public_url => 'https://10.10.10.10:80', {
:internal_url => 'https://10.10.10.11:81', :password => 'foo',
:admin_url => 'https://10.10.10.12:81' :auth_name => 'neutrony'
) } }
end end
describe 'when overriding auth name' do it { should contain_keystone_user('neutrony') }
it { should contain_keystone_user_role('neutrony@services') }
let :params do it { should contain_keystone_service('neutron::network') }
{ it { should contain_keystone_endpoint('RegionOne/neutron::network') }
:password => 'foo',
:auth_name => 'neutrony'
}
end end
it { is_expected.to contain_keystone_user('neutrony') } context 'when overriding service name' do
let :params do
{
:service_name => 'neutron_service',
:password => 'neutron_password'
}
end
it { is_expected.to contain_keystone_user_role('neutrony@services') } it { should contain_keystone_user('neutron') }
it { should contain_keystone_user_role('neutron@services') }
it { is_expected.to contain_keystone_service('neutron::network') } it { should contain_keystone_service('neutron_service::network') }
it { should contain_keystone_endpoint('RegionOne/neutron_service::network') }
it { is_expected.to contain_keystone_endpoint('RegionOne/neutron::network') }
end
describe 'when overriding service name' do
let :params do
{
:service_name => 'neutron_service',
:password => 'neutron_password'
}
end end
it { is_expected.to contain_keystone_user('neutron') } context 'when disabling user configuration' do
it { is_expected.to contain_keystone_user_role('neutron@services') } let :params do
it { is_expected.to contain_keystone_service('neutron_service::network') } {
it { is_expected.to contain_keystone_endpoint('RegionOne/neutron_service::network') } :password => 'neutron_password',
:configure_user => false
}
end
end it { should_not contain_keystone_user('neutron') }
it { should contain_keystone_user_role('neutron@services') }
describe 'when disabling user configuration' do it { should contain_keystone_service('neutron::network').with(
:ensure => 'present',
let :params do :description => 'Neutron Networking Service'
{ )}
:password => 'neutron_password',
:configure_user => false
}
end end
it { is_expected.not_to contain_keystone_user('neutron') } context 'when disabling user and user role configuration' do
let :params do
{
:password => 'neutron_password',
:configure_user => false,
:configure_user_role => false
}
end
it { is_expected.to contain_keystone_user_role('neutron@services') } it { should_not contain_keystone_user('neutron') }
it { should_not contain_keystone_user_role('neutron@services') }
it { is_expected.to contain_keystone_service('neutron::network').with( it { should contain_keystone_service('neutron::network').with(
:ensure => 'present', :ensure => 'present',
:description => 'Neutron Networking Service' :description => 'Neutron Networking Service'
) } )}
end
describe 'when disabling user and user role configuration' do
let :params do
{
:password => 'neutron_password',
:configure_user => false,
:configure_user_role => false
}
end end
it { is_expected.not_to contain_keystone_user('neutron') } context 'when disabling endpoint configuration' do
let :params do
{
:password => 'neutron_password',
:configure_endpoint => false
}
end
it { is_expected.not_to contain_keystone_user_role('neutron@services') } it { should_not contain_keystone_endpoint('RegionOne/neutron::network') }
it { is_expected.to contain_keystone_service('neutron::network').with(
:ensure => 'present',
:description => 'Neutron Networking Service'
) }
end
describe 'when disabling endpoint configuration' do
let :params do
{
:password => 'neutron_password',
:configure_endpoint => false
}
end end
it { is_expected.to_not contain_keystone_endpoint('RegionOne/neutron::network') }
end end
on_supported_os({
:supported_os => OSDefaults.get_supported_os
}).each do |os,facts|
context "on #{os}" do
let (:facts) do
facts.merge!(OSDefaults.get_facts())
end
it_behaves_like 'neutron::keystone::auth'
end
end
end end

View File

@ -1,50 +1,47 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::keystone::authtoken' do describe 'neutron::keystone::authtoken' do
let :params do let :params do
{ :password => 'neutron_password', } { :password => 'neutron_password', }
end end
shared_examples 'neutron authtoken' do shared_examples 'neutron authtoken' do
context 'with default parameters' do context 'with default parameters' do
it 'configure keystone_authtoken' do it 'configure keystone_authtoken' do
is_expected.to contain_neutron_config('keystone_authtoken/username').with_value('neutron') should contain_neutron_config('keystone_authtoken/username').with_value('neutron')
is_expected.to contain_neutron_config('keystone_authtoken/password').with_value('neutron_password') should contain_neutron_config('keystone_authtoken/password').with_value('neutron_password')
is_expected.to contain_neutron_config('keystone_authtoken/auth_url').with_value('http://localhost:5000') should contain_neutron_config('keystone_authtoken/auth_url').with_value('http://localhost:5000')
is_expected.to contain_neutron_config('keystone_authtoken/project_name').with_value('services') should contain_neutron_config('keystone_authtoken/project_name').with_value('services')
is_expected.to contain_neutron_config('keystone_authtoken/user_domain_name').with_value('Default') should contain_neutron_config('keystone_authtoken/user_domain_name').with_value('Default')
is_expected.to contain_neutron_config('keystone_authtoken/project_domain_name').with_value('Default') should contain_neutron_config('keystone_authtoken/project_domain_name').with_value('Default')
is_expected.to contain_neutron_config('keystone_authtoken/insecure').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/insecure').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/auth_section').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/auth_section').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/auth_type').with_value('password') should contain_neutron_config('keystone_authtoken/auth_type').with_value('password')
is_expected.to contain_neutron_config('keystone_authtoken/www_authenticate_uri').with_value('http://localhost:5000') should contain_neutron_config('keystone_authtoken/www_authenticate_uri').with_value('http://localhost:5000')
is_expected.to contain_neutron_config('keystone_authtoken/auth_version').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/auth_version').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/cache').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/cache').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/cafile').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/cafile').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/certfile').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/certfile').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/check_revocations_for_cached').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/check_revocations_for_cached').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/delay_auth_decision').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/delay_auth_decision').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/enforce_token_bind').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/enforce_token_bind').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/hash_algorithms').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/hash_algorithms').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/http_connect_timeout').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/http_connect_timeout').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/http_request_max_retries').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/http_request_max_retries').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/include_service_catalog').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/include_service_catalog').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/keyfile').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/keyfile').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/memcache_pool_conn_get_timeout').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/memcache_pool_conn_get_timeout').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/memcache_pool_dead_retry').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/memcache_pool_dead_retry').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/memcache_pool_maxsize').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/memcache_pool_maxsize').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/memcache_pool_socket_timeout').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/memcache_pool_socket_timeout').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/memcache_pool_unused_timeout').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/memcache_pool_unused_timeout').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/memcache_secret_key').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/memcache_secret_key').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/memcache_security_strategy').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/memcache_security_strategy').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/memcache_use_advanced_pool').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/memcache_use_advanced_pool').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/memcached_servers').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/memcached_servers').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/region_name').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/region_name').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/token_cache_time').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/token_cache_time').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('keystone_authtoken/service_token_roles_required').with_value('<SERVICE DEFAULT>') should contain_neutron_config('keystone_authtoken/service_token_roles_required').with_value('<SERVICE DEFAULT>')
end end
end end
@ -90,44 +87,44 @@ describe 'neutron::keystone::authtoken' do
end end
it 'configure keystone_authtoken' do it 'configure keystone_authtoken' do
is_expected.to contain_neutron_config('keystone_authtoken/www_authenticate_uri').with_value('https://10.0.0.1:9999/') should contain_neutron_config('keystone_authtoken/www_authenticate_uri').with_value('https://10.0.0.1:9999/')
is_expected.to contain_neutron_config('keystone_authtoken/username').with_value(params[:username]) should contain_neutron_config('keystone_authtoken/username').with_value(params[:username])
is_expected.to contain_neutron_config('keystone_authtoken/password').with_value(params[:password]).with_secret(true) should contain_neutron_config('keystone_authtoken/password').with_value(params[:password]).with_secret(true)
is_expected.to contain_neutron_config('keystone_authtoken/auth_url').with_value(params[:auth_url]) should contain_neutron_config('keystone_authtoken/auth_url').with_value(params[:auth_url])
is_expected.to contain_neutron_config('keystone_authtoken/project_name').with_value(params[:project_name]) should contain_neutron_config('keystone_authtoken/project_name').with_value(params[:project_name])
is_expected.to contain_neutron_config('keystone_authtoken/user_domain_name').with_value(params[:user_domain_name]) should contain_neutron_config('keystone_authtoken/user_domain_name').with_value(params[:user_domain_name])
is_expected.to contain_neutron_config('keystone_authtoken/project_domain_name').with_value(params[:project_domain_name]) should contain_neutron_config('keystone_authtoken/project_domain_name').with_value(params[:project_domain_name])
is_expected.to contain_neutron_config('keystone_authtoken/insecure').with_value(params[:insecure]) should contain_neutron_config('keystone_authtoken/insecure').with_value(params[:insecure])
is_expected.to contain_neutron_config('keystone_authtoken/auth_section').with_value(params[:auth_section]) should contain_neutron_config('keystone_authtoken/auth_section').with_value(params[:auth_section])
is_expected.to contain_neutron_config('keystone_authtoken/auth_type').with_value(params[:auth_type]) should contain_neutron_config('keystone_authtoken/auth_type').with_value(params[:auth_type])
is_expected.to contain_neutron_config('keystone_authtoken/auth_version').with_value(params[:auth_version]) should contain_neutron_config('keystone_authtoken/auth_version').with_value(params[:auth_version])
is_expected.to contain_neutron_config('keystone_authtoken/cache').with_value(params[:cache]) should contain_neutron_config('keystone_authtoken/cache').with_value(params[:cache])
is_expected.to contain_neutron_config('keystone_authtoken/cafile').with_value(params[:cafile]) should contain_neutron_config('keystone_authtoken/cafile').with_value(params[:cafile])
is_expected.to contain_neutron_config('keystone_authtoken/certfile').with_value(params[:certfile]) should contain_neutron_config('keystone_authtoken/certfile').with_value(params[:certfile])
is_expected.to contain_neutron_config('keystone_authtoken/check_revocations_for_cached').with_value(params[:check_revocations_for_cached]) should contain_neutron_config('keystone_authtoken/check_revocations_for_cached').with_value(params[:check_revocations_for_cached])
is_expected.to contain_neutron_config('keystone_authtoken/delay_auth_decision').with_value(params[:delay_auth_decision]) should contain_neutron_config('keystone_authtoken/delay_auth_decision').with_value(params[:delay_auth_decision])
is_expected.to contain_neutron_config('keystone_authtoken/enforce_token_bind').with_value(params[:enforce_token_bind]) should contain_neutron_config('keystone_authtoken/enforce_token_bind').with_value(params[:enforce_token_bind])
is_expected.to contain_neutron_config('keystone_authtoken/hash_algorithms').with_value(params[:hash_algorithms]) should contain_neutron_config('keystone_authtoken/hash_algorithms').with_value(params[:hash_algorithms])
is_expected.to contain_neutron_config('keystone_authtoken/http_connect_timeout').with_value(params[:http_connect_timeout]) should contain_neutron_config('keystone_authtoken/http_connect_timeout').with_value(params[:http_connect_timeout])
is_expected.to contain_neutron_config('keystone_authtoken/http_request_max_retries').with_value(params[:http_request_max_retries]) should contain_neutron_config('keystone_authtoken/http_request_max_retries').with_value(params[:http_request_max_retries])
is_expected.to contain_neutron_config('keystone_authtoken/include_service_catalog').with_value(params[:include_service_catalog]) should contain_neutron_config('keystone_authtoken/include_service_catalog').with_value(params[:include_service_catalog])
is_expected.to contain_neutron_config('keystone_authtoken/keyfile').with_value(params[:keyfile]) should contain_neutron_config('keystone_authtoken/keyfile').with_value(params[:keyfile])
is_expected.to contain_neutron_config('keystone_authtoken/memcache_pool_conn_get_timeout').with_value(params[:memcache_pool_conn_get_timeout]) should contain_neutron_config('keystone_authtoken/memcache_pool_conn_get_timeout').with_value(params[:memcache_pool_conn_get_timeout])
is_expected.to contain_neutron_config('keystone_authtoken/memcache_pool_dead_retry').with_value(params[:memcache_pool_dead_retry]) should contain_neutron_config('keystone_authtoken/memcache_pool_dead_retry').with_value(params[:memcache_pool_dead_retry])
is_expected.to contain_neutron_config('keystone_authtoken/memcache_pool_maxsize').with_value(params[:memcache_pool_maxsize]) should contain_neutron_config('keystone_authtoken/memcache_pool_maxsize').with_value(params[:memcache_pool_maxsize])
is_expected.to contain_neutron_config('keystone_authtoken/memcache_pool_socket_timeout').with_value(params[:memcache_pool_socket_timeout]) should contain_neutron_config('keystone_authtoken/memcache_pool_socket_timeout').with_value(params[:memcache_pool_socket_timeout])
is_expected.to contain_neutron_config('keystone_authtoken/memcache_pool_unused_timeout').with_value(params[:memcache_pool_unused_timeout]) should contain_neutron_config('keystone_authtoken/memcache_pool_unused_timeout').with_value(params[:memcache_pool_unused_timeout])
is_expected.to contain_neutron_config('keystone_authtoken/memcache_secret_key').with_value(params[:memcache_secret_key]) should contain_neutron_config('keystone_authtoken/memcache_secret_key').with_value(params[:memcache_secret_key])
is_expected.to contain_neutron_config('keystone_authtoken/memcache_security_strategy').with_value(params[:memcache_security_strategy]) should contain_neutron_config('keystone_authtoken/memcache_security_strategy').with_value(params[:memcache_security_strategy])
is_expected.to contain_neutron_config('keystone_authtoken/memcache_use_advanced_pool').with_value(params[:memcache_use_advanced_pool]) should contain_neutron_config('keystone_authtoken/memcache_use_advanced_pool').with_value(params[:memcache_use_advanced_pool])
is_expected.to contain_neutron_config('keystone_authtoken/memcached_servers').with_value('memcached01:11211,memcached02:11211') should contain_neutron_config('keystone_authtoken/memcached_servers').with_value('memcached01:11211,memcached02:11211')
is_expected.to contain_neutron_config('keystone_authtoken/region_name').with_value(params[:region_name]) should contain_neutron_config('keystone_authtoken/region_name').with_value(params[:region_name])
is_expected.to contain_neutron_config('keystone_authtoken/token_cache_time').with_value(params[:token_cache_time]) should contain_neutron_config('keystone_authtoken/token_cache_time').with_value(params[:token_cache_time])
is_expected.to contain_neutron_config('keystone_authtoken/service_token_roles_required').with_value(params[:service_token_roles_required]) should contain_neutron_config('keystone_authtoken/service_token_roles_required').with_value(params[:service_token_roles_required])
end end
it 'installs python memcache package' do it 'installs python memcache package' do
is_expected.to contain_package('python-memcache') should contain_package('python-memcache')
end end
end end
end end
@ -140,8 +137,7 @@ describe 'neutron::keystone::authtoken' do
facts.merge!(OSDefaults.get_facts()) facts.merge!(OSDefaults.get_facts())
end end
it_configures 'neutron authtoken' it_behaves_like 'neutron authtoken'
end end
end end
end end

View File

@ -1,10 +1,8 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::logging' do describe 'neutron::logging' do
let :params do let :params do
{ {}
}
end end
let :log_params do let :log_params do
@ -36,27 +34,27 @@ describe 'neutron::logging' do
} }
end end
shared_examples_for 'neutron-logging' do shared_examples 'neutron-logging' do
context 'with basic logging options and default settings' do context 'with basic logging options and default settings' do
it_configures 'basic default logging settings' it_behaves_like 'basic default logging settings'
end end
context 'with basic logging options and non-default settings' do context 'with basic logging options and non-default settings' do
before { params.merge!( log_params ) } before { params.merge!( log_params ) }
it_configures 'basic non-default logging settings' it_behaves_like 'basic non-default logging settings'
end end
context 'with extended logging options' do context 'with extended logging options' do
before { params.merge!( log_params ) } before { params.merge!( log_params ) }
it_configures 'logging params set' it_behaves_like 'logging params set'
end end
end end
shared_examples 'basic default logging settings' do shared_examples 'basic default logging settings' do
it 'configures neutron logging settings with default values' do it 'configures neutron logging settings with default values' do
is_expected.to contain_oslo__log('neutron_config').with( should contain_oslo__log('neutron_config').with(
:use_syslog => '<SERVICE DEFAULT>', :use_syslog => '<SERVICE DEFAULT>',
:use_json => '<SERVICE DEFAULT>', :use_json => '<SERVICE DEFAULT>',
:use_journal => '<SERVICE DEFAULT>', :use_journal => '<SERVICE DEFAULT>',
@ -72,7 +70,7 @@ describe 'neutron::logging' do
shared_examples 'basic non-default logging settings' do shared_examples 'basic non-default logging settings' do
it 'configures neutron logging settings with non-default values' do it 'configures neutron logging settings with non-default values' do
is_expected.to contain_oslo__log('neutron_config').with( should contain_oslo__log('neutron_config').with(
:use_syslog => false, :use_syslog => false,
:use_json => false, :use_json => false,
:use_journal => true, :use_journal => true,
@ -86,9 +84,9 @@ describe 'neutron::logging' do
end end
end end
shared_examples_for 'logging params set' do shared_examples 'logging params set' do
it 'enables logging params' do it 'enables logging params' do
is_expected.to contain_oslo__log('neutron_config').with( should contain_oslo__log('neutron_config').with(
:logging_context_format_string => :logging_context_format_string =>
'%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s', '%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s',
:logging_default_format_string => '%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s', :logging_default_format_string => '%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s',
@ -117,8 +115,7 @@ describe 'neutron::logging' do
facts.merge(OSDefaults.get_facts()) facts.merge(OSDefaults.get_facts())
end end
it_configures 'neutron-logging' it_behaves_like 'neutron-logging'
end end
end end
end end

View File

@ -1,7 +1,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::cisco' do describe 'neutron::plugins::cisco' do
let :pre_condition do let :pre_condition do
"class { '::neutron::keystone::authtoken': "class { '::neutron::keystone::authtoken':
password => 'passw0rd', password => 'passw0rd',
@ -11,15 +10,16 @@ describe 'neutron::plugins::cisco' do
end end
let :params do let :params do
{ :keystone_username => 'neutron', {
:keystone_username => 'neutron',
:keystone_password => 'neutron_pass', :keystone_password => 'neutron_pass',
:keystone_auth_url => 'http://127.0.0.1:5000/v2.0/', :keystone_auth_url => 'http://127.0.0.1:5000/v2.0/',
:keystone_tenant => 'tenant', :keystone_tenant => 'tenant',
:database_name => 'neutron', :database_name => 'neutron',
:database_pass => 'dbpass', :database_pass => 'dbpass',
:database_host => 'localhost', :database_host => 'localhost',
:database_user => 'neutron'} :database_user => 'neutron'
}
end end
let :params_default do let :params_default do
@ -37,29 +37,22 @@ describe 'neutron::plugins::cisco' do
} }
end end
let :test_facts do shared_examples 'default cisco plugin' do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
}
end
shared_examples_for 'default cisco plugin' do
before do before do
params.merge!(params_default) params.merge!(params_default)
end end
it 'should create plugin symbolic link' do it 'should create plugin symbolic link' do
is_expected.to contain_file('/etc/neutron/plugin.ini').with( should contain_file('/etc/neutron/plugin.ini').with(
:ensure => 'link', :ensure => 'link',
:target => '/etc/neutron/plugins/cisco/cisco_plugins.ini', :target => '/etc/neutron/plugins/cisco/cisco_plugins.ini',
) )
is_expected.to contain_file('/etc/neutron/plugin.ini').that_requires('Anchor[neutron::config::begin]') should contain_file('/etc/neutron/plugin.ini').that_requires('Anchor[neutron::config::begin]')
is_expected.to contain_file('/etc/neutron/plugin.ini').that_notifies('Anchor[neutron::config::end]') should contain_file('/etc/neutron/plugin.ini').that_notifies('Anchor[neutron::config::end]')
end end
it 'should have a plugin config folder' do it 'should have a plugin config folder' do
is_expected.to contain_file('/etc/neutron/plugins').with( should contain_file('/etc/neutron/plugins').with(
:ensure => 'directory', :ensure => 'directory',
:owner => 'root', :owner => 'root',
:group => 'neutron', :group => 'neutron',
@ -68,7 +61,7 @@ describe 'neutron::plugins::cisco' do
end end
it 'should have a cisco plugin config folder' do it 'should have a cisco plugin config folder' do
is_expected.to contain_file('/etc/neutron/plugins/cisco').with( should contain_file('/etc/neutron/plugins/cisco').with(
:ensure => 'directory', :ensure => 'directory',
:owner => 'root', :owner => 'root',
:group => 'neutron', :group => 'neutron',
@ -77,78 +70,78 @@ describe 'neutron::plugins::cisco' do
end end
it 'passes purge to resource plugin_cisco' do it 'passes purge to resource plugin_cisco' do
is_expected.to contain_resources('neutron_plugin_cisco').with({ should contain_resources('neutron_plugin_cisco').with({
:purge => false :purge => false
}) })
end end
it 'passes purge to resource cisco_db_conn' do it 'passes purge to resource cisco_db_conn' do
is_expected.to contain_resources('neutron_plugin_cisco_db_conn').with({ should contain_resources('neutron_plugin_cisco_db_conn').with({
:purge => false :purge => false
}) })
end end
it 'passes purge to resource cisco_l2network' do it 'passes purge to resource cisco_l2network' do
is_expected.to contain_resources('neutron_plugin_cisco_l2network').with({ should contain_resources('neutron_plugin_cisco_l2network').with({
:purge => false :purge => false
}) })
end end
it 'passes purge to resource cisco_credentials' do it 'passes purge to resource cisco_credentials' do
is_expected.to contain_resources('neutron_plugin_cisco_credentials').with({ should contain_resources('neutron_plugin_cisco_credentials').with({
:purge => false :purge => false
}) })
end end
it 'should perform default l2 configuration' do it 'should perform default l2 configuration' do
is_expected.to contain_neutron_plugin_cisco_l2network('VLANS/vlan_start').\ should contain_neutron_plugin_cisco_l2network('VLANS/vlan_start').\
with_value(params[:vlan_start]) with_value(params[:vlan_start])
is_expected.to contain_neutron_plugin_cisco_l2network('VLANS/vlan_end').\ should contain_neutron_plugin_cisco_l2network('VLANS/vlan_end').\
with_value(params[:vlan_end]) with_value(params[:vlan_end])
is_expected.to contain_neutron_plugin_cisco_l2network('VLANS/vlan_name_prefix').\ should contain_neutron_plugin_cisco_l2network('VLANS/vlan_name_prefix').\
with_value(params[:vlan_name_prefix]) with_value(params[:vlan_name_prefix])
is_expected.to contain_neutron_plugin_cisco_l2network('MODEL/model_class').\ should contain_neutron_plugin_cisco_l2network('MODEL/model_class').\
with_value(params[:model_class]) with_value(params[:model_class])
is_expected.to contain_neutron_plugin_cisco_l2network('PORTS/max_ports').\ should contain_neutron_plugin_cisco_l2network('PORTS/max_ports').\
with_value(params[:max_ports]) with_value(params[:max_ports])
is_expected.to contain_neutron_plugin_cisco_l2network('PORTPROFILES/max_port_profiles').\ should contain_neutron_plugin_cisco_l2network('PORTPROFILES/max_port_profiles').\
with_value(params[:max_port_profiles]) with_value(params[:max_port_profiles])
is_expected.to contain_neutron_plugin_cisco_l2network('NETWORKS/max_networks').\ should contain_neutron_plugin_cisco_l2network('NETWORKS/max_networks').\
with_value(params[:max_networks]) with_value(params[:max_networks])
is_expected.to contain_neutron_plugin_cisco_l2network('SEGMENTATION/manager_class').\ should contain_neutron_plugin_cisco_l2network('SEGMENTATION/manager_class').\
with_value(params[:manager_class]) with_value(params[:manager_class])
end end
it 'should create a dummy inventory item' do it 'should create a dummy inventory item' do
is_expected.to contain_neutron_plugin_cisco('INVENTORY/dummy').\ should contain_neutron_plugin_cisco('INVENTORY/dummy').\
with_value('dummy') with_value('dummy')
end end
it 'should configure the db connection' do it 'should configure the db connection' do
is_expected.to contain_neutron_plugin_cisco_db_conn('DATABASE/name').\ should contain_neutron_plugin_cisco_db_conn('DATABASE/name').\
with_value(params[:database_name]) with_value(params[:database_name])
is_expected.to contain_neutron_plugin_cisco_db_conn('DATABASE/user').\ should contain_neutron_plugin_cisco_db_conn('DATABASE/user').\
with_value(params[:database_user]) with_value(params[:database_user])
is_expected.to contain_neutron_plugin_cisco_db_conn('DATABASE/pass').\ should contain_neutron_plugin_cisco_db_conn('DATABASE/pass').\
with_value(params[:database_pass]) with_value(params[:database_pass])
is_expected.to contain_neutron_plugin_cisco_db_conn('DATABASE/host').\ should contain_neutron_plugin_cisco_db_conn('DATABASE/host').\
with_value(params[:database_host]) with_value(params[:database_host])
end end
it 'should configure the admin credentials' do it 'should configure the admin credentials' do
is_expected.to contain_neutron_plugin_cisco_credentials('keystone/username').\ should contain_neutron_plugin_cisco_credentials('keystone/username').\
with_value(params[:keystone_username]) with_value(params[:keystone_username])
is_expected.to contain_neutron_plugin_cisco_credentials('keystone/password').\ should contain_neutron_plugin_cisco_credentials('keystone/password').\
with_value(params[:keystone_password]) with_value(params[:keystone_password])
is_expected.to contain_neutron_plugin_cisco_credentials('keystone/password').with_secret( true ) should contain_neutron_plugin_cisco_credentials('keystone/password').with_secret( true )
is_expected.to contain_neutron_plugin_cisco_credentials('keystone/auth_url').\ should contain_neutron_plugin_cisco_credentials('keystone/auth_url').\
with_value(params[:keystone_auth_url]) with_value(params[:keystone_auth_url])
is_expected.to contain_neutron_plugin_cisco_credentials('keystone/tenant').\ should contain_neutron_plugin_cisco_credentials('keystone/tenant').\
with_value(params[:keystone_tenant]) with_value(params[:keystone_tenant])
end end
it 'should perform vswitch plugin configuration' do it 'should perform vswitch plugin configuration' do
is_expected.to contain_neutron_plugin_cisco('PLUGINS/vswitch_plugin').\ should contain_neutron_plugin_cisco('PLUGINS/vswitch_plugin').\
with_value('neutron.plugins.openvswitch.ovs_neutron_plugin.OVSNeutronPluginV2') with_value('neutron.plugins.openvswitch.ovs_neutron_plugin.OVSNeutronPluginV2')
end end
@ -158,59 +151,38 @@ describe 'neutron::plugins::cisco' do
end end
it 'should perform nexus plugin configuration' do it 'should perform nexus plugin configuration' do
is_expected.to contain_neutron_plugin_cisco('PLUGINS/nexus_plugin').\ should contain_neutron_plugin_cisco('PLUGINS/nexus_plugin').\
with_value('neutron.plugins.cisco.nexus.cisco_nexus_plugin_v2.NexusPlugin') with_value('neutron.plugins.cisco.nexus.cisco_nexus_plugin_v2.NexusPlugin')
end end
end end
end end
context 'on Debian platforms' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'Debian',
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } },
}))
end
context 'on Ubuntu operating systems' do shared_examples 'neutron::plugins::cisco on Ubuntu' do
before do it 'configures /etc/default/neutron-server' do
facts.merge!({:operatingsystem => 'Ubuntu'}) should contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').with(
end :path => '/etc/default/neutron-server',
:match => '^NEUTRON_PLUGIN_CONFIG=(.*)$',
it 'configures /etc/default/neutron-server' do :line => 'NEUTRON_PLUGIN_CONFIG=/etc/neutron/plugins/cisco/cisco_plugins.ini',
is_expected.to contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').with( :tag => 'neutron-file-line',
:path => '/etc/default/neutron-server', )
:match => '^NEUTRON_PLUGIN_CONFIG=(.*)$', should contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_requires('Anchor[neutron::config::begin]')
:line => 'NEUTRON_PLUGIN_CONFIG=/etc/neutron/plugins/cisco/cisco_plugins.ini', should contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_notifies('Anchor[neutron::config::end]')
:tag => 'neutron-file-line',
)
is_expected.to contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_requires('Anchor[neutron::config::begin]')
is_expected.to contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_notifies('Anchor[neutron::config::end]')
end
it_configures 'default cisco plugin'
end
context 'on Debian operating systems' do
before do
facts.merge!({:operatingsystem => 'Debian'})
end
it_configures 'default cisco plugin'
end end
end end
context 'on RedHat platforms' do on_supported_os({
let :facts do :supported_os => OSDefaults.get_supported_os
@default_facts.merge(test_facts.merge({ }).each do |os,facts|
:osfamily => 'RedHat', context "on #{os}" do
:operatingsystemrelease => '7', let (:facts) do
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } }, facts.merge!(OSDefaults.get_facts())
})) end
it_behaves_like 'default cisco plugin'
if facts[:operatingsystem] == 'Ubuntu'
it_behaves_like 'neutron::plugins::cisco on Ubuntu'
end
end end
it_configures 'default cisco plugin'
end end
end end

View File

@ -1,7 +1,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::midonet' do describe 'neutron::plugins::midonet' do
let :pre_condition do let :pre_condition do
"class { '::neutron::keystone::authtoken': "class { '::neutron::keystone::authtoken':
password => 'passw0rd', password => 'passw0rd',
@ -12,22 +11,16 @@ describe 'neutron::plugins::midonet' do
let :default_params do let :default_params do
{ {
:midonet_cluster_ip => '127.0.0.1', :midonet_cluster_ip => '127.0.0.1',
:midonet_cluster_port => '8181', :midonet_cluster_port => '8181',
:keystone_username => 'neutron', :keystone_username => 'neutron',
:keystone_password => 'test_midonet', :keystone_password => 'test_midonet',
:keystone_tenant => 'services', :keystone_tenant => 'services',
:purge_config => false, :purge_config => false,
} }
end end
let :test_facts do shared_examples 'neutron midonet plugin' do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
}
end
shared_examples_for 'neutron midonet plugin' do
let :params do let :params do
{} {}
@ -38,84 +31,83 @@ describe 'neutron::plugins::midonet' do
end end
it 'should install package python-networking-midonet' do it 'should install package python-networking-midonet' do
is_expected.to contain_package('python-networking-midonet').with( should contain_package('python-networking-midonet').with(
:ensure => 'present') :ensure => 'present')
end end
it 'should create plugin symbolic link' do it 'should create plugin symbolic link' do
is_expected.to contain_file('/etc/neutron/plugin.ini').with( should contain_file('/etc/neutron/plugin.ini').with(
:ensure => 'link', :ensure => 'link',
:target => '/etc/neutron/plugins/midonet/midonet.ini') :target => '/etc/neutron/plugins/midonet/midonet.ini')
is_expected.to contain_file('/etc/neutron/plugin.ini').that_requires('Anchor[neutron::config::begin]') should contain_file('/etc/neutron/plugin.ini').that_requires('Anchor[neutron::config::begin]')
is_expected.to contain_file('/etc/neutron/plugin.ini').that_notifies('Anchor[neutron::config::end]') should contain_file('/etc/neutron/plugin.ini').that_notifies('Anchor[neutron::config::end]')
end end
it 'passes purge to resource' do it 'passes purge to resource' do
is_expected.to contain_resources('neutron_plugin_midonet').with({ should contain_resources('neutron_plugin_midonet').with({
:purge => false :purge => false
}) })
end end
it 'should perform default configuration of' do it 'should perform default configuration of' do
midonet_uri = "http://" + params[:midonet_cluster_ip] + ":" + params[:midonet_cluster_port] + "/midonet-api"; midonet_uri = "http://" + params[:midonet_cluster_ip] + ":" + params[:midonet_cluster_port] + "/midonet-api";
is_expected.to contain_neutron_plugin_midonet('MIDONET/midonet_uri').with_value(midonet_uri) should contain_neutron_plugin_midonet('MIDONET/midonet_uri').with_value(midonet_uri)
is_expected.to contain_neutron_plugin_midonet('MIDONET/username').with_value(params[:keystone_username]) should contain_neutron_plugin_midonet('MIDONET/username').with_value(params[:keystone_username])
is_expected.to contain_neutron_plugin_midonet('MIDONET/password').with_value(params[:keystone_password]) should contain_neutron_plugin_midonet('MIDONET/password').with_value(params[:keystone_password])
is_expected.to contain_neutron_plugin_midonet('MIDONET/project_id').with_value(params[:keystone_tenant]) should contain_neutron_plugin_midonet('MIDONET/project_id').with_value(params[:keystone_tenant])
end end
end end
shared_examples_for 'neutron midonet plugin using deprecated params' do shared_examples 'neutron midonet plugin using deprecated params' do
let :params do let :params do
{ {
:midonet_api_ip => '192.168.0.1', :midonet_api_ip => '192.168.0.1',
:midonet_api_port => '8181', :midonet_api_port => '8181',
} }
end end
before do before do
params.merge!(default_params) params.merge!(default_params)
end end
it 'should take into account deprecated parameters first' do it 'should take into account deprecated parameters first' do
midonet_uri = "http://" + params[:midonet_api_ip] + ":" + params[:midonet_api_port] + "/midonet-api"; midonet_uri = "http://" + params[:midonet_api_ip] + ":" + params[:midonet_api_port] + "/midonet-api";
is_expected.to contain_neutron_plugin_midonet('MIDONET/midonet_uri').with_value(midonet_uri) should contain_neutron_plugin_midonet('MIDONET/midonet_uri').with_value(midonet_uri)
end end
it 'should take into account deprecated parameters first' do it 'should take into account deprecated parameters first' do
bad_midonet_uri = "http://" + params[:midonet_cluster_ip] + ":" + params[:midonet_cluster_port] + "/midonet-api"; bad_midonet_uri = "http://" + params[:midonet_cluster_ip] + ":" + params[:midonet_cluster_port] + "/midonet-api";
is_expected.to_not contain_neutron_plugin_midonet('MIDONET/midonet_uri').with_value(bad_midonet_uri) should_not contain_neutron_plugin_midonet('MIDONET/midonet_uri').with_value(bad_midonet_uri)
end end
end end
context 'on Debian platforms' do shared_examples 'neutron midonet plugin on Debian' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'Debian',
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } },
}))
end
it 'configures /etc/default/neutron-server' do it 'configures /etc/default/neutron-server' do
is_expected.to contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').with( should contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').with(
:path => '/etc/default/neutron-server', :path => '/etc/default/neutron-server',
:match => '^NEUTRON_PLUGIN_CONFIG=(.*)$', :match => '^NEUTRON_PLUGIN_CONFIG=(.*)$',
:line => 'NEUTRON_PLUGIN_CONFIG=/etc/neutron/plugins/midonet/midonet.ini', :line => 'NEUTRON_PLUGIN_CONFIG=/etc/neutron/plugins/midonet/midonet.ini',
) )
is_expected.to contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_requires('Anchor[neutron::config::begin]') should contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_requires('Anchor[neutron::config::begin]')
is_expected.to contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_notifies('Anchor[neutron::config::end]') should contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_notifies('Anchor[neutron::config::end]')
end end
it_configures 'neutron midonet plugin'
it_configures 'neutron midonet plugin using deprecated params'
end end
context 'on RedHat platforms' do on_supported_os({
let :facts do :supported_os => OSDefaults.get_supported_os
@default_facts.merge(test_facts.merge({ }).each do |os,facts|
:osfamily => 'RedHat', context "on #{os}" do
:operatingsystemrelease => '7', let (:facts) do
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } }, facts.merge!(OSDefaults.get_facts())
})) end
end
it_configures 'neutron midonet plugin'
it_configures 'neutron midonet plugin using deprecated params'
end
it_behaves_like 'neutron midonet plugin'
it_behaves_like 'neutron midonet plugin using deprecated params'
if facts[:osfamily] == 'Debian'
it_behaves_like 'neutron midonet plugin on Debian'
end
end
end
end end

View File

@ -20,7 +20,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::ml2::arista::l3' do describe 'neutron::plugins::ml2::arista::l3' do
let :pre_condition do let :pre_condition do
"class { '::neutron::keystone::authtoken': "class { '::neutron::keystone::authtoken':
password => 'passw0rd', password => 'passw0rd',
@ -46,19 +45,19 @@ describe 'neutron::plugins::ml2::arista::l3' do
} }
end end
shared_examples_for 'neutron plugin ml2 arista l3_arista' do shared_examples 'neutron plugin ml2 arista l3_arista' do
before do before do
params.merge!(default_params) params.merge!(default_params)
end end
it 'configures ml2 arista l3_arista settings' do it 'configures ml2 arista l3_arista settings' do
is_expected.to contain_neutron_plugin_ml2('l3_arista/primary_l3_host').with_value(params[:primary_l3_host]) should contain_neutron_plugin_ml2('l3_arista/primary_l3_host').with_value(params[:primary_l3_host])
is_expected.to contain_neutron_plugin_ml2('l3_arista/primary_l3_host_username').with_value(params[:primary_l3_host_username]) should contain_neutron_plugin_ml2('l3_arista/primary_l3_host_username').with_value(params[:primary_l3_host_username])
is_expected.to contain_neutron_plugin_ml2('l3_arista/primary_l3_host_password').with_value(params[:primary_l3_host_password]).with_secret(true) should contain_neutron_plugin_ml2('l3_arista/primary_l3_host_password').with_value(params[:primary_l3_host_password]).with_secret(true)
end end
end end
shared_examples_for 'ml2 l3_arista should fail when mlag is true and secondary is service default' do shared_examples 'ml2 l3_arista should fail when mlag is true and secondary is service default' do
let :params do let :params do
{} {}
end end
@ -69,7 +68,7 @@ describe 'neutron::plugins::ml2::arista::l3' do
end end
it 'should fail when mlag is true and secondary l3 host is service default' do it 'should fail when mlag is true and secondary l3 host is service default' do
is_expected.to raise_error(Puppet::Error, /Must set secondary_l3_host when mlag_config is true./) should raise_error(Puppet::Error, /Must set secondary_l3_host when mlag_config is true./)
end end
end end
@ -83,7 +82,7 @@ describe 'neutron::plugins::ml2::arista::l3' do
})) }))
end end
it_configures 'neutron plugin ml2 arista l3_arista' it_behaves_like 'neutron plugin ml2 arista l3_arista'
end end
end end
end end

View File

@ -20,7 +20,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::ml2::arista' do describe 'neutron::plugins::ml2::arista' do
let :pre_condition do let :pre_condition do
"class { '::neutron::keystone::authtoken': "class { '::neutron::keystone::authtoken':
password => 'passw0rd', password => 'passw0rd',
@ -45,15 +44,15 @@ describe 'neutron::plugins::ml2::arista' do
} }
end end
shared_examples_for 'neutron plugin ml2 arista' do shared_examples 'neutron plugin ml2 arista' do
before do before do
params.merge!(default_params) params.merge!(default_params)
end end
it 'configures ml2 arista settings' do it 'configures ml2 arista settings' do
is_expected.to contain_neutron_plugin_ml2('ml2_arista/eapi_host').with_value(params[:eapi_host]) should contain_neutron_plugin_ml2('ml2_arista/eapi_host').with_value(params[:eapi_host])
is_expected.to contain_neutron_plugin_ml2('ml2_arista/eapi_username').with_value(params[:eapi_username]) should contain_neutron_plugin_ml2('ml2_arista/eapi_username').with_value(params[:eapi_username])
is_expected.to contain_neutron_plugin_ml2('ml2_arista/eapi_password').with_value(params[:eapi_password]).with_secret(true) should contain_neutron_plugin_ml2('ml2_arista/eapi_password').with_value(params[:eapi_password]).with_secret(true)
end end
end end
@ -67,7 +66,7 @@ describe 'neutron::plugins::ml2::arista' do
})) }))
end end
it_configures 'neutron plugin ml2 arista' it_behaves_like 'neutron plugin ml2 arista'
end end
end end
end end

View File

@ -1,7 +1,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::ml2::bagpipe' do describe 'neutron::plugins::ml2::bagpipe' do
let :default_params do let :default_params do
{ {
:bagpipe_bgp_port => '<SERVICE DEFAULT>', :bagpipe_bgp_port => '<SERVICE DEFAULT>',
@ -11,33 +10,24 @@ describe 'neutron::plugins::ml2::bagpipe' do
end end
let :params do let :params do
{ {}
}
end end
let :test_facts do shared_examples 'neutron plugin bagpipe ml2' do
{
:operatingsystem => 'default',
:operatingsystemrelease => 'default',
}
end
shared_examples_for 'neutron plugin bagpipe ml2' do
before do before do
params.merge!(default_params) params.merge!(default_params)
end end
it 'should have' do it 'should have' do
is_expected.to contain_package('python-networking-bagpipe').with( should contain_package('python-networking-bagpipe').with(
:ensure => params[:package_ensure], :ensure => params[:package_ensure],
:tag => 'openstack' :tag => 'openstack'
) )
end end
it 'configures bagpipe settings' do it 'configures bagpipe settings' do
is_expected.to contain_neutron_plugin_ml2('bagpipe/bagpipe_bgp_port').with_value(params[:bagpipe_bgp_port]) should contain_neutron_plugin_ml2('bagpipe/bagpipe_bgp_port').with_value(params[:bagpipe_bgp_port])
is_expected.to contain_neutron_plugin_ml2('bagpipe/mpls_bridge').with_value(params[:mpls_bridge]) should contain_neutron_plugin_ml2('bagpipe/mpls_bridge').with_value(params[:mpls_bridge])
end end
end end
@ -57,7 +47,7 @@ describe 'neutron::plugins::ml2::bagpipe' do
{ :bagpipe_package_name => 'python-networking-bagpipe' } { :bagpipe_package_name => 'python-networking-bagpipe' }
end end
end end
it_configures 'neutron plugin bagpipe ml2' it_behaves_like 'neutron plugin bagpipe ml2'
end end
end end
end end

View File

@ -1,18 +1,14 @@
#
# Unit tests for neutron::plugins::ml2::cisco::nexus class
#
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::ml2::bigswitch::restproxy' do describe 'neutron::plugins::ml2::bigswitch::restproxy' do
let :pre_condition do let :pre_condition do
"class { '::neutron::keystone::authtoken': "class { '::neutron::keystone::authtoken':
password => 'passw0rd', password => 'passw0rd',
} }
class { 'neutron::server': } class { 'neutron::server': }
class { 'neutron': class { 'neutron':
core_plugin => 'ml2' }" core_plugin => 'ml2'
}"
end end
let :required_params do let :required_params do
@ -26,35 +22,29 @@ describe 'neutron::plugins::ml2::bigswitch::restproxy' do
required_params required_params
end end
let :test_facts do shared_examples 'neutron bigswitch ml2 restproxy' do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default',
}
end
shared_examples_for 'neutron bigswitch ml2 restproxy' do it { should contain_class('neutron::params') }
it { should contain_class('neutron::plugins::ml2::bigswitch') }
it { is_expected.to contain_class('neutron::params') }
it { is_expected.to contain_class('neutron::plugins::ml2::bigswitch') }
it do it do
is_expected.to contain_neutron_plugin_ml2('restproxy/servers').with_value(params[:servers]) should contain_neutron_plugin_ml2('restproxy/servers').with_value(params[:servers])
is_expected.to contain_neutron_plugin_ml2('restproxy/server_auth').with_value(params[:server_auth]) should contain_neutron_plugin_ml2('restproxy/server_auth').with_value(params[:server_auth])
is_expected.to contain_neutron_plugin_ml2('restproxy/auth_tenant').with_value('service') should contain_neutron_plugin_ml2('restproxy/auth_tenant').with_value('service')
is_expected.to contain_neutron_plugin_ml2('restproxy/auth_password').with_value(false) should contain_neutron_plugin_ml2('restproxy/auth_password').with_value(false)
is_expected.to contain_neutron_plugin_ml2('restproxy/auth_user').with_value('neutron') should contain_neutron_plugin_ml2('restproxy/auth_user').with_value('neutron')
is_expected.to contain_neutron_plugin_ml2('restproxy/auth_url').with_value(false) should contain_neutron_plugin_ml2('restproxy/auth_url').with_value(false)
is_expected.to contain_neutron_plugin_ml2('restproxy/auto_sync_on_failure').with_value('<SERVICE DEFAULT>') should contain_neutron_plugin_ml2('restproxy/auto_sync_on_failure').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_plugin_ml2('restproxy/cache_connections').with_value('<SERVICE DEFAULT>') should contain_neutron_plugin_ml2('restproxy/cache_connections').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_plugin_ml2('restproxy/consistency_interval').with_value('<SERVICE DEFAULT>') should contain_neutron_plugin_ml2('restproxy/consistency_interval').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_plugin_ml2('restproxy/keystone_sync_interval').with_value('<SERVICE DEFAULT>') should contain_neutron_plugin_ml2('restproxy/keystone_sync_interval').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_plugin_ml2('restproxy/neutron_id').with_value('neutron') should contain_neutron_plugin_ml2('restproxy/neutron_id').with_value('neutron')
is_expected.to contain_neutron_plugin_ml2('restproxy/no_ssl_validation').with_value('<SERVICE DEFAULT>') should contain_neutron_plugin_ml2('restproxy/no_ssl_validation').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_plugin_ml2('restproxy/server_ssl').with_value('<SERVICE DEFAULT>') should contain_neutron_plugin_ml2('restproxy/server_ssl').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_plugin_ml2('restproxy/server_timeout').with_value('<SERVICE DEFAULT>') should contain_neutron_plugin_ml2('restproxy/server_timeout').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_plugin_ml2('restproxy/ssl_cert_directory').with_value('/var/lib/neutron') should contain_neutron_plugin_ml2('restproxy/ssl_cert_directory').with_value('/var/lib/neutron')
is_expected.to contain_neutron_plugin_ml2('restproxy/sync_data').with_value('<SERVICE DEFAULT>') should contain_neutron_plugin_ml2('restproxy/sync_data').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_plugin_ml2('restproxy/thread_pool_size').with_value('<SERVICE DEFAULT>') should contain_neutron_plugin_ml2('restproxy/thread_pool_size').with_value('<SERVICE DEFAULT>')
end end
@ -77,37 +67,39 @@ describe 'neutron::plugins::ml2::bigswitch::restproxy' do
it do it do
is_expected.to contain_neutron_plugin_ml2('restproxy/servers').with_value(params[:servers]) should contain_neutron_plugin_ml2('restproxy/servers').with_value(params[:servers])
is_expected.to contain_neutron_plugin_ml2('restproxy/server_auth').with_value(params[:server_auth]) should contain_neutron_plugin_ml2('restproxy/server_auth').with_value(params[:server_auth])
is_expected.to contain_neutron_plugin_ml2('restproxy/auth_tenant').with_value('service') should contain_neutron_plugin_ml2('restproxy/auth_tenant').with_value('service')
is_expected.to contain_neutron_plugin_ml2('restproxy/auth_password').with_value(false) should contain_neutron_plugin_ml2('restproxy/auth_password').with_value(false)
is_expected.to contain_neutron_plugin_ml2('restproxy/auth_user').with_value('neutron') should contain_neutron_plugin_ml2('restproxy/auth_user').with_value('neutron')
is_expected.to contain_neutron_plugin_ml2('restproxy/auth_url').with_value(false) should contain_neutron_plugin_ml2('restproxy/auth_url').with_value(false)
is_expected.to contain_neutron_plugin_ml2('restproxy/auto_sync_on_failure').with_value(false) should contain_neutron_plugin_ml2('restproxy/auto_sync_on_failure').with_value(false)
is_expected.to contain_neutron_plugin_ml2('restproxy/cache_connections').with_value(true) should contain_neutron_plugin_ml2('restproxy/cache_connections').with_value(true)
is_expected.to contain_neutron_plugin_ml2('restproxy/consistency_interval').with_value(10) should contain_neutron_plugin_ml2('restproxy/consistency_interval').with_value(10)
is_expected.to contain_neutron_plugin_ml2('restproxy/keystone_sync_interval').with_value(10) should contain_neutron_plugin_ml2('restproxy/keystone_sync_interval').with_value(10)
is_expected.to contain_neutron_plugin_ml2('restproxy/neutron_id').with_value('openstack') should contain_neutron_plugin_ml2('restproxy/neutron_id').with_value('openstack')
is_expected.to contain_neutron_plugin_ml2('restproxy/no_ssl_validation').with_value(true) should contain_neutron_plugin_ml2('restproxy/no_ssl_validation').with_value(true)
is_expected.to contain_neutron_plugin_ml2('restproxy/server_ssl').with_value(false) should contain_neutron_plugin_ml2('restproxy/server_ssl').with_value(false)
is_expected.to contain_neutron_plugin_ml2('restproxy/server_timeout').with_value(30) should contain_neutron_plugin_ml2('restproxy/server_timeout').with_value(30)
is_expected.to contain_neutron_plugin_ml2('restproxy/ssl_cert_directory').with_value('/var/lib/bigswitch') should contain_neutron_plugin_ml2('restproxy/ssl_cert_directory').with_value('/var/lib/bigswitch')
is_expected.to contain_neutron_plugin_ml2('restproxy/sync_data').with_value(true) should contain_neutron_plugin_ml2('restproxy/sync_data').with_value(true)
is_expected.to contain_neutron_plugin_ml2('restproxy/thread_pool_size').with_value(8) should contain_neutron_plugin_ml2('restproxy/thread_pool_size').with_value(8)
end end
end end
end end
context 'on RedHat platforms' do on_supported_os({
let :facts do :supported_os => OSDefaults.get_supported_os
@default_facts.merge(test_facts.merge({ }).each do |os,facts|
:osfamily => 'RedHat', context "on #{os}" do
:operatingsystemrelease => '7', let (:facts) do
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } }, facts.merge!(OSDefaults.get_facts())
})) end
end
it_configures 'neutron bigswitch ml2 restproxy' if facts[:osfamily] == 'RedHat'
it_behaves_like 'neutron bigswitch ml2 restproxy'
end
end
end end
end end

View File

@ -1,14 +1,14 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::ml2::bigswitch' do describe 'neutron::plugins::ml2::bigswitch' do
let :pre_condition do let :pre_condition do
"class { '::neutron::keystone::authtoken': "class { '::neutron::keystone::authtoken':
password => 'passw0rd', password => 'passw0rd',
} }
class { 'neutron::server': } class { 'neutron::server': }
class { 'neutron': class { 'neutron':
core_plugin => 'ml2' }" core_plugin => 'ml2'
}"
end end
let :default_params do let :default_params do
@ -21,49 +21,38 @@ describe 'neutron::plugins::ml2::bigswitch' do
{} {}
end end
let :test_facts do shared_examples 'neutron plugin bigswitch ml2' do
{
:operatingsystem => 'default',
:operatingsystemrelease => 'default',
}
end
shared_examples_for 'neutron plugin bigswitch ml2' do
before do before do
params.merge!(default_params) params.merge!(default_params)
end end
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it 'should have' do it 'should have' do
is_expected.to contain_package('python-networking-bigswitch').with( should contain_package('python-networking-bigswitch').with(
:ensure => params[:package_ensure], :ensure => params[:package_ensure],
:tag => 'openstack' :tag => 'openstack'
) )
end end
end end
context 'on RedHat platforms' do shared_examples 'neutron plugin bigswitch ml2 on Debian' do
let :facts do it { should raise_error(Puppet::Error, /Unsupported osfamily Debian/) }
@default_facts.merge(test_facts.merge({
:osfamily => 'RedHat',
:operatingsystemrelease => '7',
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
}))
end
it_configures 'neutron plugin bigswitch ml2'
end end
context 'on Debian platforms' do on_supported_os({
let :facts do :supported_os => OSDefaults.get_supported_os
@default_facts.merge(test_facts.merge({ }).each do |os,facts|
:osfamily => 'Debian', context "on #{os}" do
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } }, let (:facts) do
})) facts.merge!(OSDefaults.get_facts())
end end
it { is_expected.to raise_error(Puppet::Error, /Unsupported osfamily Debian/) } if facts[:osfamily] == 'Debian'
it_behaves_like 'neutron plugin bigswitch ml2 on Debian'
else
it_behaves_like 'neutron plugin bigswitch ml2'
end
end
end end
end end

View File

@ -1,18 +1,14 @@
#
# Unit tests for neutron::plugins::ml2::cisco::nexus1000v class
#
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::ml2::cisco::nexus1000v' do describe 'neutron::plugins::ml2::cisco::nexus1000v' do
let :pre_condition do let :pre_condition do
"class { '::neutron::keystone::authtoken': "class { '::neutron::keystone::authtoken':
password => 'passw0rd', password => 'passw0rd',
} }
class { 'neutron::server': } class { 'neutron::server': }
class { 'neutron': class { 'neutron':
core_plugin => 'ml2' }" core_plugin => 'ml2'
}"
end end
let :default_params do let :default_params do
@ -37,50 +33,42 @@ describe 'neutron::plugins::ml2::cisco::nexus1000v' do
{} {}
end end
let :test_facts do shared_examples 'neutron cisco ml2 nexus1000v plugin' do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default',
:concat_basedir => '/',
}
end
shared_examples_for 'neutron cisco ml2 nexus1000v plugin' do
before do before do
params.merge!(default_params) params.merge!(default_params)
end end
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it do it do
is_expected.to contain_neutron_plugin_ml2('ml2_cisco_n1kv/n1kv_vsm_ips').with_value(params[:n1kv_vsm_ip]) should contain_neutron_plugin_ml2('ml2_cisco_n1kv/n1kv_vsm_ips').with_value(params[:n1kv_vsm_ip])
is_expected.to contain_neutron_plugin_ml2('ml2_cisco_n1kv/username').with_value(params[:n1kv_vsm_username]) should contain_neutron_plugin_ml2('ml2_cisco_n1kv/username').with_value(params[:n1kv_vsm_username])
is_expected.to contain_neutron_plugin_ml2('ml2_cisco_n1kv/password').with_value(params[:n1kv_vsm_password]).with_secret(true) should contain_neutron_plugin_ml2('ml2_cisco_n1kv/password').with_value(params[:n1kv_vsm_password]).with_secret(true)
is_expected.to contain_neutron_plugin_ml2('ml2_cisco_n1kv/default_policy_profile').with_value(params[:default_policy_profile]) should contain_neutron_plugin_ml2('ml2_cisco_n1kv/default_policy_profile').with_value(params[:default_policy_profile])
is_expected.to contain_neutron_plugin_ml2('ml2_cisco_n1kv/default_vlan_network_profile').with_value(params[:default_vlan_network_profile]) should contain_neutron_plugin_ml2('ml2_cisco_n1kv/default_vlan_network_profile').with_value(params[:default_vlan_network_profile])
is_expected.to contain_neutron_plugin_ml2('ml2_cisco_n1kv/default_vxlan_network_profile').with_value(params[:default_vxlan_network_profile]) should contain_neutron_plugin_ml2('ml2_cisco_n1kv/default_vxlan_network_profile').with_value(params[:default_vxlan_network_profile])
is_expected.to contain_neutron_plugin_ml2('ml2_cisco_n1kv/poll_duration').with_value(params[:poll_duration]) should contain_neutron_plugin_ml2('ml2_cisco_n1kv/poll_duration').with_value(params[:poll_duration])
is_expected.to contain_neutron_plugin_ml2('ml2_cisco_n1kv/http_pool_size').with_value(params[:http_pool_size]) should contain_neutron_plugin_ml2('ml2_cisco_n1kv/http_pool_size').with_value(params[:http_pool_size])
is_expected.to contain_neutron_plugin_ml2('ml2_cisco_n1kv/http_timeout').with_value(params[:http_timeout]) should contain_neutron_plugin_ml2('ml2_cisco_n1kv/http_timeout').with_value(params[:http_timeout])
is_expected.to contain_neutron_plugin_ml2('ml2_cisco_n1kv/sync_interval').with_value(params[:sync_interval]) should contain_neutron_plugin_ml2('ml2_cisco_n1kv/sync_interval').with_value(params[:sync_interval])
is_expected.to contain_neutron_plugin_ml2('ml2_cisco_n1kv/max_vsm_retries').with_value(params[:max_vsm_retries]) should contain_neutron_plugin_ml2('ml2_cisco_n1kv/max_vsm_retries').with_value(params[:max_vsm_retries])
is_expected.to contain_neutron_plugin_ml2('ml2_cisco_n1kv/restrict_policy_profiles').with_value(params[:restrict_policy_profiles]) should contain_neutron_plugin_ml2('ml2_cisco_n1kv/restrict_policy_profiles').with_value(params[:restrict_policy_profiles])
is_expected.to contain_neutron_plugin_ml2('ml2_cisco_n1kv/enable_vif_type_n1kv').with_value(params[:enable_vif_type_n1kv]) should contain_neutron_plugin_ml2('ml2_cisco_n1kv/enable_vif_type_n1kv').with_value(params[:enable_vif_type_n1kv])
end end
end end
begin on_supported_os({
context 'on RedHat platforms' do :supported_os => OSDefaults.get_supported_os
let :facts do }).each do |os,facts|
@default_facts.merge(test_facts.merge({ context "on #{os}" do
:osfamily => 'RedHat', let (:facts) do
:operatingsystemrelease => '7', facts.merge!(OSDefaults.get_facts())
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
}))
end end
it_configures 'neutron cisco ml2 nexus1000v plugin' if facts[:osfamily] == 'RedHat'
it_behaves_like 'neutron cisco ml2 nexus1000v plugin'
end
end end
end end
end end

View File

@ -1,38 +1,38 @@
#
# Unit tests for neutron::plugins::ml2::cisco::nexus class
#
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::ml2::cisco::nexus' do describe 'neutron::plugins::ml2::cisco::nexus' do
let :pre_condition do let :pre_condition do
"class { '::neutron::keystone::authtoken': "class { '::neutron::keystone::authtoken':
password => 'passw0rd', password => 'passw0rd',
} }
class { 'neutron::server': } class { 'neutron::server': }
class { 'neutron': class { 'neutron':
core_plugin => 'ml2' }" core_plugin => 'ml2'
}"
end end
let :default_params do let :default_params do
{ {
:nexus_config => { :nexus_config => {
'cvf2leaff2' => { 'cvf2leaff2' => {
'username' => 'prad', 'username' => 'prad',
"password" => "password", "password" => "password",
"ip_address" => "172.18.117.28", "ip_address" => "172.18.117.28",
"nve_src_intf" => 1, "nve_src_intf" => 1,
"physnet" => "physnet1", "physnet" => "physnet1",
"vpc_pool" => "", "vpc_pool" => "",
"intfcfg_portchannel" => "", "intfcfg_portchannel" => "",
"https_verify" => false, "https_verify" => false,
"https_local_certificate" => "", "https_local_certificate" => "",
"servers" => { "servers" => {
"control02" => {"hostname"=> "control02", "control02" => {
"ports" => "portchannel:20"}, "hostname" => "control02",
"control01" => {"hostname"=> "control01", "ports" => "portchannel:20"
"ports" => "portchannel:10"} },
"control01" => {
"hostname" => "control01",
"ports" => "portchannel:10"
}
} }
} }
}, },
@ -48,54 +48,51 @@ describe 'neutron::plugins::ml2::cisco::nexus' do
{} {}
end end
let :test_facts do shared_examples 'neutron cisco ml2 nexus plugin' do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default',
:concat_basedir => '/',
}
end
shared_examples_for 'neutron cisco ml2 nexus plugin' do
before do before do
params.merge!(default_params) params.merge!(default_params)
end end
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it do it do
is_expected.to contain_neutron_plugin_ml2('ml2_cisco/managed_physical_network').with_value(params[:managed_physical_network]) should contain_neutron_plugin_ml2('ml2_cisco/managed_physical_network').with_value(params[:managed_physical_network])
is_expected.to contain_neutron_plugin_ml2('ml2_cisco/switch_heartbeat_time').with_value(params[:switch_heartbeat_time]) should contain_neutron_plugin_ml2('ml2_cisco/switch_heartbeat_time').with_value(params[:switch_heartbeat_time])
is_expected.to contain_neutron_plugin_ml2('ml2_cisco/provider_vlan_auto_create').with_value(params[:provider_vlan_auto_create]) should contain_neutron_plugin_ml2('ml2_cisco/provider_vlan_auto_create').with_value(params[:provider_vlan_auto_create])
is_expected.to contain_neutron_plugin_ml2('ml2_cisco/provider_vlan_auto_trunk').with_value(params[:provider_vlan_auto_trunk]) should contain_neutron_plugin_ml2('ml2_cisco/provider_vlan_auto_trunk').with_value(params[:provider_vlan_auto_trunk])
is_expected.to contain_neutron_plugin_ml2('ml2_cisco/vxlan_global_config').with_value(params[:vxlan_global_config]) should contain_neutron_plugin_ml2('ml2_cisco/vxlan_global_config').with_value(params[:vxlan_global_config])
end end
it { it {
# Stored as an array of arrays with the first element consisting of the name and # Stored as an array of arrays with the first element consisting of the name and
# the second element consisting of the config hash # the second element consisting of the config hash
params[:nexus_config].each do |switch_config| params[:nexus_config].each do |switch_config|
is_expected.to contain_neutron__plugins__ml2__cisco__nexus_creds(switch_config.first) should contain_neutron__plugins__ml2__cisco__nexus_creds(switch_config.first)
end end
} }
end end
begin on_supported_os({
context 'on RedHat platforms' do :supported_os => OSDefaults.get_supported_os
let :facts do }).each do |os,facts|
@default_facts.merge(test_facts.merge({ context "on #{os}" do
:osfamily => 'RedHat', let (:facts) do
:operatingsystemrelease => '7', facts.merge!(OSDefaults.get_facts())
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
}))
end end
let :platform_params do let (:platform_params) do
{ :cisco_ml2_config_file => '/etc/neutron/conf.d/neutron-server/ml2_mech_cisco_nexus.conf' } case facts[:osfamily]
when 'RedHat'
{
:cisco_ml2_config_file => '/etc/neutron/conf.d/neutron-server/ml2_mech_cisco_nexus.conf'
}
end
end end
it_configures 'neutron cisco ml2 nexus plugin' if facts[:osfamily] == 'RedHat'
it_behaves_like 'neutron cisco ml2 nexus plugin'
end
end end
end end
end end

View File

@ -1,14 +1,14 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::ml2::cisco' do describe 'neutron::plugins::ml2::cisco' do
let :pre_condition do let :pre_condition do
"class { '::neutron::keystone::authtoken': "class { '::neutron::keystone::authtoken':
password => 'passw0rd', password => 'passw0rd',
} }
class { 'neutron::server': } class { 'neutron::server': }
class { 'neutron': class { 'neutron':
core_plugin => 'ml2' }" core_plugin => 'ml2'
}"
end end
let :default_params do let :default_params do
@ -21,41 +21,32 @@ describe 'neutron::plugins::ml2::cisco' do
{} {}
end end
let :test_facts do shared_examples 'neutron plugin cisco ml2' do
{
:operatingsystem => 'default',
:operatingsystemrelease => 'default',
:concat_basedir => '/',
}
end
shared_examples_for 'neutron plugin cisco ml2' do
before do before do
params.merge!(default_params) params.merge!(default_params)
end end
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it 'should have' do it 'should have' do
is_expected.to contain_package('python-networking-cisco').with( should contain_package('python-networking-cisco').with(
:ensure => params[:package_ensure], :ensure => params[:package_ensure],
:tag => 'openstack' :tag => 'openstack'
) )
end end
end end
begin on_supported_os({
context 'on RedHat platforms' do :supported_os => OSDefaults.get_supported_os
let :facts do }).each do |os,facts|
@default_facts.merge(test_facts.merge({ context "on #{os}" do
:osfamily => 'RedHat', let (:facts) do
:operatingsystemrelease => '7', facts.merge!(OSDefaults.get_facts())
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
}))
end end
it_configures 'neutron plugin cisco ml2' if facts[:osfamily] == 'RedHat'
it_behaves_like 'neutron plugin cisco ml2'
end
end end
end end
end end

View File

@ -1,23 +1,19 @@
#
# Unit tests for neutron::plugins::ml2::cisco::type_nexus_vxlan class
#
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::ml2::cisco::type_nexus_vxlan' do describe 'neutron::plugins::ml2::cisco::type_nexus_vxlan' do
let :pre_condition do let :pre_condition do
"class { '::neutron::keystone::authtoken': "class { '::neutron::keystone::authtoken':
password => 'passw0rd', password => 'passw0rd',
} }
class { 'neutron::server': } class { 'neutron::server': }
class { 'neutron': class { 'neutron':
core_plugin => 'ml2' }" core_plugin => 'ml2'
}"
end end
let :default_params do let :default_params do
{ {
:vni_ranges => '20000:22000', :vni_ranges => '20000:22000',
:mcast_ranges => '224.0.0.1:224.0.0.3,224.0.1.1:224.0.1.3' :mcast_ranges => '224.0.0.1:224.0.0.3,224.0.1.1:224.0.1.3'
} }
end end
@ -26,39 +22,30 @@ describe 'neutron::plugins::ml2::cisco::type_nexus_vxlan' do
{} {}
end end
let :test_facts do shared_examples 'neutron cisco ml2 type nexus vxlan plugin' do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default',
:concat_basedir => '/',
}
end
shared_examples_for 'neutron cisco ml2 type nexus vxlan plugin' do
before do before do
params.merge!(default_params) params.merge!(default_params)
end end
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it do it do
is_expected.to contain_neutron_plugin_ml2('ml2_type_nexus_vxlan/vni_ranges').with_value(params[:vni_ranges]) should contain_neutron_plugin_ml2('ml2_type_nexus_vxlan/vni_ranges').with_value(params[:vni_ranges])
is_expected.to contain_neutron_plugin_ml2('ml2_type_nexus_vxlan/mcast_ranges').with_value(params[:mcast_ranges]) should contain_neutron_plugin_ml2('ml2_type_nexus_vxlan/mcast_ranges').with_value(params[:mcast_ranges])
end end
end end
begin on_supported_os({
context 'on RedHat platforms' do :supported_os => OSDefaults.get_supported_os
let :facts do }).each do |os,facts|
@default_facts.merge(test_facts.merge({ context "on #{os}" do
:osfamily => 'RedHat', let (:facts) do
:operatingsystemrelease => '7', facts.merge!(OSDefaults.get_facts())
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
}))
end end
it_configures 'neutron cisco ml2 type nexus vxlan plugin' if facts[:osfamily] == 'RedHat'
it_behaves_like 'neutron cisco ml2 type nexus vxlan plugin'
end
end end
end end
end end

View File

@ -1,18 +1,14 @@
#
# Unit tests for neutron::plugins::ml2::cisco::ucsm class
#
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::ml2::cisco::ucsm' do describe 'neutron::plugins::ml2::cisco::ucsm' do
let :pre_condition do let :pre_condition do
"class { '::neutron::keystone::authtoken': "class { '::neutron::keystone::authtoken':
password => 'passw0rd', password => 'passw0rd',
} }
class { 'neutron::server': } class { 'neutron::server': }
class { 'neutron': class { 'neutron':
core_plugin => 'ml2' }" core_plugin => 'ml2'
}"
end end
let :default_params do let :default_params do
@ -32,44 +28,35 @@ describe 'neutron::plugins::ml2::cisco::ucsm' do
{} {}
end end
let :test_facts do shared_examples 'neutron cisco ml2 ucsm plugin' do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default',
:concat_basedir => '/',
}
end
shared_examples_for 'neutron cisco ml2 ucsm plugin' do
before do before do
params.merge!(default_params) params.merge!(default_params)
end end
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it do it do
is_expected.to contain_neutron_plugin_ml2('ml2_cisco_ucsm/ucsm_ip').with_value(params[:ucsm_ip]) should contain_neutron_plugin_ml2('ml2_cisco_ucsm/ucsm_ip').with_value(params[:ucsm_ip])
is_expected.to contain_neutron_plugin_ml2('ml2_cisco_ucsm/ucsm_username').with_value(params[:ucsm_username]) should contain_neutron_plugin_ml2('ml2_cisco_ucsm/ucsm_username').with_value(params[:ucsm_username])
is_expected.to contain_neutron_plugin_ml2('ml2_cisco_ucsm/ucsm_password').with_value(params[:ucsm_password]).with_secret(true) should contain_neutron_plugin_ml2('ml2_cisco_ucsm/ucsm_password').with_value(params[:ucsm_password]).with_secret(true)
is_expected.to contain_neutron_plugin_ml2('ml2_cisco_ucsm/ucsm_host_list').with_value(params[:ucsm_host_list]) should contain_neutron_plugin_ml2('ml2_cisco_ucsm/ucsm_host_list').with_value(params[:ucsm_host_list])
is_expected.to contain_neutron_plugin_ml2('ml2_cisco_ucsm/supported_pci_devs').with_value(params[:supported_pci_devs]) should contain_neutron_plugin_ml2('ml2_cisco_ucsm/supported_pci_devs').with_value(params[:supported_pci_devs])
is_expected.to contain_neutron_plugin_ml2('ml2_cisco_ucsm/sp_template_list').with_value(params[:sp_template_list]) should contain_neutron_plugin_ml2('ml2_cisco_ucsm/sp_template_list').with_value(params[:sp_template_list])
is_expected.to contain_neutron_plugin_ml2('ml2_cisco_ucsm/vnic_template_list').with_value(params[:vnic_template_list]) should contain_neutron_plugin_ml2('ml2_cisco_ucsm/vnic_template_list').with_value(params[:vnic_template_list])
end end
end end
begin on_supported_os({
context 'on RedHat platforms' do :supported_os => OSDefaults.get_supported_os
let :facts do }).each do |os,facts|
@default_facts.merge(test_facts.merge({ context "on #{os}" do
:osfamily => 'RedHat', let (:facts) do
:operatingsystemrelease => '7', facts.merge!(OSDefaults.get_facts())
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
}))
end end
it_configures 'neutron cisco ml2 ucsm plugin' if facts[:osfamily] == 'RedHat'
it_behaves_like 'neutron cisco ml2 ucsm plugin'
end
end end
end end
end end

View File

@ -1,83 +1,66 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::ml2::cisco::vts' do describe 'neutron::plugins::ml2::cisco::vts' do
let :pre_condition do let :pre_condition do
"class { '::neutron::keystone::authtoken': "class { '::neutron::keystone::authtoken':
password => 'passw0rd', password => 'passw0rd',
} }
class { 'neutron::server': } class { 'neutron::server': }
class { 'neutron': class { 'neutron':
core_plugin => 'ml2' }" core_plugin => 'ml2'
}"
end end
let :default_params do let :default_params do
{ {
:vts_timeout => '<SERVICE DEFAULT>', :vts_timeout => '<SERVICE DEFAULT>',
:vts_sync_timeout => '<SERVICE DEFAULT>', :vts_sync_timeout => '<SERVICE DEFAULT>',
:vts_retry_count => '<SERVICE DEFAULT>', :vts_retry_count => '<SERVICE DEFAULT>',
:package_ensure => 'present', :package_ensure => 'present',
} }
end end
let :params do let :params do
{ {
:vts_username => 'user', :vts_username => 'user',
:vts_password => 'password', :vts_password => 'password',
:vts_url => 'http://abc123', :vts_url => 'http://abc123',
:vts_vmmid => '12345', :vts_vmmid => '12345',
} }
end end
let :test_facts do shared_examples 'neutron plugin ml2 cisco vts' do
{
:operatingsystem => 'default',
:operatingsystemrelease => 'default',
}
end
shared_examples_for 'neutron plugin ml2 cisco vts' do
before do before do
params.merge!(default_params) params.merge!(default_params)
end end
it 'should have' do it 'should have' do
is_expected.to contain_package('python-cisco-controller').with( should contain_package('python-cisco-controller').with(
:ensure => params[:package_ensure], :ensure => params[:package_ensure],
:tag => 'openstack' :tag => 'openstack'
) )
end end
it 'configures ml2_cc cisco_vts settings' do it 'configures ml2_cc cisco_vts settings' do
is_expected.to contain_neutron_plugin_ml2('ml2_cc/password').with_value(params[:vts_password]).with_secret(true) should contain_neutron_plugin_ml2('ml2_cc/password').with_value(params[:vts_password]).with_secret(true)
is_expected.to contain_neutron_plugin_ml2('ml2_cc/username').with_value(params[:vts_username]) should contain_neutron_plugin_ml2('ml2_cc/username').with_value(params[:vts_username])
is_expected.to contain_neutron_plugin_ml2('ml2_cc/url').with_value(params[:vts_url]) should contain_neutron_plugin_ml2('ml2_cc/url').with_value(params[:vts_url])
is_expected.to contain_neutron_plugin_ml2('ml2_cc/timeout').with_value(params[:vts_timeout]) should contain_neutron_plugin_ml2('ml2_cc/timeout').with_value(params[:vts_timeout])
is_expected.to contain_neutron_plugin_ml2('ml2_cc/sync_timeout').with_value(params[:vts_sync_timeout]) should contain_neutron_plugin_ml2('ml2_cc/sync_timeout').with_value(params[:vts_sync_timeout])
is_expected.to contain_neutron_plugin_ml2('ml2_cc/retry_count').with_value(params[:vts_retry_count]) should contain_neutron_plugin_ml2('ml2_cc/retry_count').with_value(params[:vts_retry_count])
is_expected.to contain_neutron_plugin_ml2('ml2_cc/vmm_id').with_value(params[:vts_vmmid]) should contain_neutron_plugin_ml2('ml2_cc/vmm_id').with_value(params[:vts_vmmid])
end end
end end
context 'on RedHat platforms' do on_supported_os({
let :facts do :supported_os => OSDefaults.get_supported_os
@default_facts.merge(test_facts.merge({ }).each do |os,facts|
:osfamily => 'RedHat', context "on #{os}" do
:operatingsystemrelease => '7', let (:facts) do
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } }, facts.merge!(OSDefaults.get_facts())
})) end
end
it_configures 'neutron plugin ml2 cisco vts'
end
context 'on Debian platforms' do it_behaves_like 'neutron plugin ml2 cisco vts'
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'Debian',
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } },
}))
end end
it_configures 'neutron plugin ml2 cisco vts'
end end
end end

View File

@ -1,11 +1,6 @@
#
# Unit tests for neutron::plugins::ml2::fujitsu::cfab class
#
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::ml2::fujitsu::cfab' do describe 'neutron::plugins::ml2::fujitsu::cfab' do
let :pre_condition do let :pre_condition do
"class { '::neutron::keystone::authtoken': "class { '::neutron::keystone::authtoken':
password => 'passw0rd', password => 'passw0rd',
@ -31,27 +26,20 @@ describe 'neutron::plugins::ml2::fujitsu::cfab' do
{} {}
end end
let :test_facts do shared_examples 'neutron fujitsu ml2 cfab plugin' do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default',
:concat_basedir => '/',
}
end
shared_examples_for 'neutron fujitsu ml2 cfab plugin' do
before do before do
params.merge!(default_params) params.merge!(default_params)
end end
it do it do
is_expected.to contain_neutron_plugin_ml2('fujitsu_cfab/address').with_value(params[:address]) should contain_neutron_plugin_ml2('fujitsu_cfab/address').with_value(params[:address])
is_expected.to contain_neutron_plugin_ml2('fujitsu_cfab/username').with_value(params[:username]) should contain_neutron_plugin_ml2('fujitsu_cfab/username').with_value(params[:username])
is_expected.to contain_neutron_plugin_ml2('fujitsu_cfab/password').with_value(params[:password]).with_secret(true) should contain_neutron_plugin_ml2('fujitsu_cfab/password').with_value(params[:password]).with_secret(true)
is_expected.to contain_neutron_plugin_ml2('fujitsu_cfab/physical_networks').with_value(params[:physical_networks]) should contain_neutron_plugin_ml2('fujitsu_cfab/physical_networks').with_value(params[:physical_networks])
is_expected.to contain_neutron_plugin_ml2('fujitsu_cfab/share_pprofile').with_value(params[:share_pprofile]) should contain_neutron_plugin_ml2('fujitsu_cfab/share_pprofile').with_value(params[:share_pprofile])
is_expected.to contain_neutron_plugin_ml2('fujitsu_cfab/pprofile_prefix').with_value(params[:pprofile_prefix]) should contain_neutron_plugin_ml2('fujitsu_cfab/pprofile_prefix').with_value(params[:pprofile_prefix])
is_expected.to contain_neutron_plugin_ml2('fujitsu_cfab/save_config').with_value(params[:save_config]) should contain_neutron_plugin_ml2('fujitsu_cfab/save_config').with_value(params[:save_config])
end end
end end
@ -64,7 +52,7 @@ describe 'neutron::plugins::ml2::fujitsu::cfab' do
facts.merge!(OSDefaults.get_facts()) facts.merge!(OSDefaults.get_facts())
end end
it_configures 'neutron fujitsu ml2 cfab plugin' it_behaves_like 'neutron fujitsu ml2 cfab plugin'
end end
end end
end end

View File

@ -1,11 +1,6 @@
#
# Unit tests for neutron::plugins::ml2::fujitsu::fossw class
#
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::ml2::fujitsu::fossw' do describe 'neutron::plugins::ml2::fujitsu::fossw' do
let :pre_condition do let :pre_condition do
"class { '::neutron::keystone::authtoken': "class { '::neutron::keystone::authtoken':
password => 'passw0rd', password => 'passw0rd',
@ -32,28 +27,21 @@ describe 'neutron::plugins::ml2::fujitsu::fossw' do
{} {}
end end
let :test_facts do shared_examples 'neutron fujitsu ml2 fossw plugin' do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default',
:concat_basedir => '/',
}
end
shared_examples_for 'neutron fujitsu ml2 fossw plugin' do
before do before do
params.merge!(default_params) params.merge!(default_params)
end end
it do it do
is_expected.to contain_neutron_plugin_ml2('fujitsu_fossw/fossw_ips').with_value(params[:fossw_ips]) should contain_neutron_plugin_ml2('fujitsu_fossw/fossw_ips').with_value(params[:fossw_ips])
is_expected.to contain_neutron_plugin_ml2('fujitsu_fossw/username').with_value(params[:username]) should contain_neutron_plugin_ml2('fujitsu_fossw/username').with_value(params[:username])
is_expected.to contain_neutron_plugin_ml2('fujitsu_fossw/password').with_value(params[:password]).with_secret(true) should contain_neutron_plugin_ml2('fujitsu_fossw/password').with_value(params[:password]).with_secret(true)
is_expected.to contain_neutron_plugin_ml2('fujitsu_fossw/port').with_value(params[:port]) should contain_neutron_plugin_ml2('fujitsu_fossw/port').with_value(params[:port])
is_expected.to contain_neutron_plugin_ml2('fujitsu_fossw/timeout').with_value(params[:timeout]) should contain_neutron_plugin_ml2('fujitsu_fossw/timeout').with_value(params[:timeout])
is_expected.to contain_neutron_plugin_ml2('fujitsu_fossw/udp_dest_port').with_value(params[:udp_dest_port]) should contain_neutron_plugin_ml2('fujitsu_fossw/udp_dest_port').with_value(params[:udp_dest_port])
is_expected.to contain_neutron_plugin_ml2('fujitsu_fossw/ovsdb_vlanid_range_min').with_value(params[:ovsdb_vlanid_range_min]) should contain_neutron_plugin_ml2('fujitsu_fossw/ovsdb_vlanid_range_min').with_value(params[:ovsdb_vlanid_range_min])
is_expected.to contain_neutron_plugin_ml2('fujitsu_fossw/ovsdb_port').with_value(params[:ovsdb_port]) should contain_neutron_plugin_ml2('fujitsu_fossw/ovsdb_port').with_value(params[:ovsdb_port])
end end
end end
@ -66,7 +54,7 @@ describe 'neutron::plugins::ml2::fujitsu::fossw' do
facts.merge!(OSDefaults.get_facts()) facts.merge!(OSDefaults.get_facts())
end end
it_configures 'neutron fujitsu ml2 fossw plugin' it_behaves_like 'neutron fujitsu ml2 fossw plugin'
end end
end end
end end

View File

@ -1,7 +1,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::ml2::fujitsu' do describe 'neutron::plugins::ml2::fujitsu' do
let :pre_condition do let :pre_condition do
"class { '::neutron::keystone::authtoken': "class { '::neutron::keystone::authtoken':
password => 'passw0rd', password => 'passw0rd',
@ -21,23 +20,15 @@ describe 'neutron::plugins::ml2::fujitsu' do
{} {}
end end
let :test_facts do shared_examples 'neutron plugin fujitsu ml2' do
{
:operatingsystem => 'default',
:operatingsystemrelease => 'default',
:concat_basedir => '/',
}
end
shared_examples_for 'neutron plugin fujitsu ml2' do
before do before do
params.merge!(default_params) params.merge!(default_params)
end end
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it 'should have' do it 'should have' do
is_expected.to contain_package('python-networking-fujitsu').with( should contain_package('python-networking-fujitsu').with(
:ensure => params[:package_ensure], :ensure => params[:package_ensure],
:tag => 'openstack' :tag => 'openstack'
) )
@ -52,8 +43,7 @@ describe 'neutron::plugins::ml2::fujitsu' do
facts.merge!(OSDefaults.get_facts()) facts.merge!(OSDefaults.get_facts())
end end
it_configures 'neutron plugin fujitsu ml2' it_behaves_like 'neutron plugin fujitsu ml2'
end end
end end
end end

View File

@ -1,14 +1,14 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::ml2::mellanox' do describe 'neutron::plugins::ml2::mellanox' do
let :pre_condition do let :pre_condition do
"class { '::neutron::keystone::authtoken': "class { '::neutron::keystone::authtoken':
password => 'passw0rd', password => 'passw0rd',
} }
class { 'neutron::server': } class { 'neutron::server': }
class { 'neutron': class { 'neutron':
core_plugin => 'neutron.plugins.ml2.plugin.Ml2Plugin' }" core_plugin => 'neutron.plugins.ml2.plugin.Ml2Plugin'
}"
end end
let :default_params do let :default_params do
@ -21,42 +21,32 @@ describe 'neutron::plugins::ml2::mellanox' do
{} {}
end end
let :test_facts do shared_examples 'neutron plugin mellanox ml2' do
{
:operatingsystem => 'default',
:operatingsystemrelease => 'default',
:concat_basedir => '/',
}
end
shared_examples_for 'neutron plugin mellanox ml2' do
before do before do
params.merge!(default_params) params.merge!(default_params)
end end
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it 'should have' do it 'should have' do
is_expected.to contain_package('python-networking-mlnx').with( should contain_package('python-networking-mlnx').with(
:ensure => params[:package_ensure], :ensure => params[:package_ensure],
:tag => ['openstack', 'neutron-package'] :tag => ['openstack', 'neutron-package']
) )
end end
end end
begin on_supported_os({
context 'on RedHat platforms' do :supported_os => OSDefaults.get_supported_os
let :facts do }).each do |os,facts|
OSDefaults.get_facts.merge(test_facts.merge({ context "on #{os}" do
:osfamily => 'RedHat', let (:facts) do
:operatingsystemrelease => '7', facts.merge!(OSDefaults.get_facts())
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
}))
end end
it_configures 'neutron plugin mellanox ml2' if facts[:osfamily] == 'RedHat'
it_behaves_like 'neutron plugin mellanox ml2'
end
end end
end end
end end

View File

@ -1,26 +1,22 @@
#
# Unit tests for neutron::plugins::ml2::midonet class
#
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::ml2::midonet' do describe 'neutron::plugins::ml2::midonet' do
let :pre_condition do let :pre_condition do
"class { '::neutron::keystone::authtoken': "class { '::neutron::keystone::authtoken':
password => 'passw0rd', password => 'passw0rd',
} }
class { 'neutron::server': } class { 'neutron::server': }
class { 'neutron': class { 'neutron':
core_plugin => 'ml2' }" core_plugin => 'ml2'
}"
end end
let :default_params do let :default_params do
{ {
:midonet_uri => 'http://localhost:8080/midonet-api', :midonet_uri => 'http://localhost:8080/midonet-api',
:username => 'admin', :username => 'admin',
:password => 'passw0rd', :password => 'passw0rd',
:project_id => 'admin', :project_id => 'admin',
} }
end end
@ -28,45 +24,41 @@ describe 'neutron::plugins::ml2::midonet' do
{} {}
end end
let :test_facts do shared_examples 'neutron ml2 midonet plugin' do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default',
:concat_basedir => '/',
}
end
shared_examples_for 'neutron ml2 midonet plugin' do
before do before do
params.merge!(default_params) params.merge!(default_params)
end end
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it do it do
is_expected.to contain_neutron_plugin_ml2('MIDONET/midonet_uri').with_value(params[:midonet_uri]) should contain_neutron_plugin_ml2('MIDONET/midonet_uri').with_value(params[:midonet_uri])
is_expected.to contain_neutron_plugin_ml2('MIDONET/username').with_value(params[:username]) should contain_neutron_plugin_ml2('MIDONET/username').with_value(params[:username])
is_expected.to contain_neutron_plugin_ml2('MIDONET/password').with_value(params[:password]) should contain_neutron_plugin_ml2('MIDONET/password').with_value(params[:password])
is_expected.to contain_neutron_plugin_ml2('MIDONET/project_id').with_value(params[:project_id]) should contain_neutron_plugin_ml2('MIDONET/project_id').with_value(params[:project_id])
end end
end end
begin on_supported_os({
context 'on RedHat platforms' do :supported_os => OSDefaults.get_supported_os
let :facts do }).each do |os,facts|
@default_facts.merge(test_facts.merge({ context "on #{os}" do
:osfamily => 'RedHat', let (:facts) do
:operatingsystemrelease => '7', facts.merge!(OSDefaults.get_facts())
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
}))
end end
let :platform_params do let (:platform_params) do
{ :midonet_ml2_config_file => '/etc/neutron/conf.d/neutron-server/ml2_mech_midonet.conf' } case facts[:osfamily]
when 'RedHat'
{
:midonet_ml2_config_file => '/etc/neutron/conf.d/neutron-server/ml2_mech_midonet.conf'
}
end
end end
it_configures 'neutron ml2 midonet plugin' if facts[:osfamily] == 'RedHat'
it_behaves_like 'neutron ml2 midonet plugin'
end
end end
end end
end end

View File

@ -1,71 +1,50 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::ml2::mellanox::mlnx_sdn_assist' do describe 'neutron::plugins::ml2::mellanox::mlnx_sdn_assist' do
let :pre_condition do let :pre_condition do
"class { '::neutron::keystone::authtoken': "class { '::neutron::keystone::authtoken':
password => 'passw0rd', password => 'passw0rd',
} }
class { 'neutron::server': } class { 'neutron::server': }
class { 'neutron': class { 'neutron':
core_plugin => 'ml2' }" core_plugin => 'ml2'
}"
end end
let :default_params do let :default_params do
{ {
:sdn_url => '<SERVICE DEFAULT>', :sdn_url => '<SERVICE DEFAULT>',
} }
end end
let :params do let :params do
{ {
:sdn_username => 'user', :sdn_username => 'user',
:sdn_password => 'password', :sdn_password => 'password',
} }
end end
let :test_facts do shared_examples 'neutron plugin mellanox ml2 mlnx_sdn_assist' do
{
:operatingsystem => 'default',
:operatingsystemrelease => 'default',
}
end
shared_examples_for 'neutron plugin mellanox ml2 mlnx_sdn_assist' do
before do before do
params.merge!(default_params) params.merge!(default_params)
end end
it 'configures sdn settings' do it 'configures sdn settings' do
is_expected.to contain_neutron_plugin_ml2('sdn/password').with_value(params[:sdn_password]).with_secret(true) should contain_neutron_plugin_ml2('sdn/password').with_value(params[:sdn_password]).with_secret(true)
is_expected.to contain_neutron_plugin_ml2('sdn/username').with_value(params[:sdn_username]) should contain_neutron_plugin_ml2('sdn/username').with_value(params[:sdn_username])
is_expected.to contain_neutron_plugin_ml2('sdn/url').with_value(params[:sdn_url]) should contain_neutron_plugin_ml2('sdn/url').with_value(params[:sdn_url])
end end
end end
on_supported_os({
:supported_os => OSDefaults.get_supported_os
}).each do |os,facts|
context "on #{os}" do
let (:facts) do
facts.merge!(OSDefaults.get_facts())
end
context 'on RedHat platforms' do it_behaves_like 'neutron plugin mellanox ml2 mlnx_sdn_assist'
let :facts do
OSDefaults.get_facts.merge(test_facts.merge({
:osfamily => 'RedHat',
:operatingsystemrelease => '7',
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
}))
end end
it_configures 'neutron plugin mellanox ml2 mlnx_sdn_assist'
end
context 'on Debian platforms' do
let :facts do
OSDefaults.get_facts.merge(test_facts.merge({
:osfamily => 'Debian',
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } },
}))
end
it_configures 'neutron plugin mellanox ml2 mlnx_sdn_assist'
end end
end end

View File

@ -2,13 +2,8 @@ require 'spec_helper'
describe 'neutron::plugins::ml2::networking_ansible' do describe 'neutron::plugins::ml2::networking_ansible' do
let :default_params do let :default_params do
{ :package_ensure => 'present', {
} :package_ensure => 'present',
end
let :test_facts do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
} }
end end
@ -27,37 +22,37 @@ describe 'neutron::plugins::ml2::networking_ansible' do
} }
end end
shared_examples_for 'networking-ansible ml2 plugin' do shared_examples 'networking-ansible ml2 plugin' do
let :p do let :p do
default_params.merge(params) default_params.merge(params)
end end
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it 'installs networking-ansible python2-networking-ansible package' do it 'installs networking-ansible python2-networking-ansible package' do
is_expected.to contain_package('python2-networking-ansible').with( should contain_package('python2-networking-ansible').with(
:name => platform_params[:networking_ansible_package], :name => platform_params[:networking_ansible_package],
:ensure => p[:package_ensure], :ensure => p[:package_ensure],
:tag => ['openstack', 'neutron-package'], :tag => ['openstack', 'neutron-package'],
) )
is_expected.to contain_package('python2-networking-ansible').that_requires('Anchor[neutron::install::begin]') should contain_package('python2-networking-ansible').that_requires('Anchor[neutron::install::begin]')
is_expected.to contain_package('python2-networking-ansible').that_notifies('Anchor[neutron::install::end]') should contain_package('python2-networking-ansible').that_notifies('Anchor[neutron::install::end]')
end end
it { it {
params[:host_configs].each do |host_config| params[:host_configs].each do |host_config|
is_expected.to contain_neutron__plugins__ml2__networking_ansible_host(host_config.first) should contain_neutron__plugins__ml2__networking_ansible_host(host_config.first)
is_expected.to contain_neutron_plugin_ml2('ansible:host1/ansible_ssh_pass').with_value('password1') should contain_neutron_plugin_ml2('ansible:host1/ansible_ssh_pass').with_value('password1')
is_expected.to contain_neutron_plugin_ml2('ansible:host1/ansible_ssh_private_key_file').with_value(nil) should contain_neutron_plugin_ml2('ansible:host1/ansible_ssh_private_key_file').with_value(nil)
is_expected.to contain_neutron_plugin_ml2('ansible:host2/ansible_ssh_private_key_file').with_value('/path/to/key') should contain_neutron_plugin_ml2('ansible:host2/ansible_ssh_private_key_file').with_value('/path/to/key')
is_expected.to contain_neutron_plugin_ml2('ansible:host2/ansible_ssh_pass').with_value(nil) should contain_neutron_plugin_ml2('ansible:host2/ansible_ssh_pass').with_value(nil)
is_expected.to contain_neutron_plugin_ml2('ansible:host1/mac').with_value(nil) should contain_neutron_plugin_ml2('ansible:host1/mac').with_value(nil)
is_expected.to contain_neutron_plugin_ml2('ansible:host2/mac').with_value('01:23:45:67:89:AB') should contain_neutron_plugin_ml2('ansible:host2/mac').with_value('01:23:45:67:89:AB')
is_expected.to contain_neutron_plugin_ml2('ansible:host1/manage_vlans').with_value(nil) should contain_neutron_plugin_ml2('ansible:host1/manage_vlans').with_value(nil)
is_expected.to contain_neutron_plugin_ml2('ansible:host2/manage_vlans').with_value(false) should contain_neutron_plugin_ml2('ansible:host2/manage_vlans').with_value(false)
end end
} }
end end
@ -80,10 +75,9 @@ describe 'neutron::plugins::ml2::networking_ansible' do
it_behaves_like 'networking-ansible ml2 plugin' it_behaves_like 'networking-ansible ml2 plugin'
when facts[:osfamily] != 'RedHat' when facts[:osfamily] != 'RedHat'
it 'fails with unsupported osfamily' do it 'fails with unsupported osfamily' do
is_expected.to raise_error(Puppet::Error, /Unsupported osfamily.*/) should raise_error(Puppet::Error, /Unsupported osfamily.*/)
end end
end end
end end
end end
end end

View File

@ -2,13 +2,8 @@ require 'spec_helper'
describe 'neutron::plugins::ml2::networking_baremetal' do describe 'neutron::plugins::ml2::networking_baremetal' do
let :default_params do let :default_params do
{ :package_ensure => 'present', {
} :package_ensure => 'present',
end
let :test_facts do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
} }
end end
@ -16,21 +11,21 @@ describe 'neutron::plugins::ml2::networking_baremetal' do
{} {}
end end
shared_examples_for 'networking-baremetal ml2 plugin' do shared_examples 'networking-baremetal ml2 plugin' do
let :p do let :p do
default_params.merge(params) default_params.merge(params)
end end
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it 'installs networking-baremetal python2-networking-baremetal package' do it 'installs networking-baremetal python2-networking-baremetal package' do
is_expected.to contain_package('python2-networking-baremetal').with( should contain_package('python2-networking-baremetal').with(
:name => platform_params[:networking_baremetal_package], :name => platform_params[:networking_baremetal_package],
:ensure => p[:package_ensure], :ensure => p[:package_ensure],
:tag => ['openstack', 'neutron-package'], :tag => ['openstack', 'neutron-package'],
) )
is_expected.to contain_package('python2-networking-baremetal').that_requires('Anchor[neutron::install::begin]') should contain_package('python2-networking-baremetal').that_requires('Anchor[neutron::install::begin]')
is_expected.to contain_package('python2-networking-baremetal').that_notifies('Anchor[neutron::install::end]') should contain_package('python2-networking-baremetal').that_notifies('Anchor[neutron::install::end]')
end end
end end
@ -52,10 +47,9 @@ describe 'neutron::plugins::ml2::networking_baremetal' do
it_behaves_like 'networking-baremetal ml2 plugin' it_behaves_like 'networking-baremetal ml2 plugin'
when facts[:osfamily] != 'RedHat' when facts[:osfamily] != 'RedHat'
it 'fails with unsupported osfamily' do it 'fails with unsupported osfamily' do
is_expected.to raise_error(Puppet::Error, /Unsupported osfamily.*/) should raise_error(Puppet::Error, /Unsupported osfamily.*/)
end end
end end
end end
end end
end end

View File

@ -1,7 +1,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::ml2::nuage' do describe 'neutron::plugins::ml2::nuage' do
let :pre_condition do let :pre_condition do
"class { '::neutron': "class { '::neutron':
core_plugin => 'ml2' } core_plugin => 'ml2' }
@ -13,12 +12,6 @@ describe 'neutron::plugins::ml2::nuage' do
mechanism_drivers => ['nuage'] }" mechanism_drivers => ['nuage'] }"
end end
let :test_facts do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
}
end
let :params do let :params do
{ {
:nuage_vsd_ip => %w(192.168.33.3), :nuage_vsd_ip => %w(192.168.33.3),
@ -32,22 +25,22 @@ describe 'neutron::plugins::ml2::nuage' do
:nuage_default_allow_non_ip => false,} :nuage_default_allow_non_ip => false,}
end end
shared_examples_for 'neutron plugin ml2 nuage' do shared_examples 'neutron plugin ml2 nuage' do
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it 'configures neutron.conf' do it 'configures neutron.conf' do
is_expected.to contain_neutron_config('DEFAULT/core_plugin').with_value('ml2') should contain_neutron_config('DEFAULT/core_plugin').with_value('ml2')
end end
it 'passes purge to resource' do it 'passes purge to resource' do
is_expected.to contain_resources('neutron_plugin_nuage').with({ should contain_resources('neutron_plugin_nuage').with({
:purge => false :purge => false
}) })
end end
it 'should have a nuage plugin ini file' do it 'should have a nuage plugin ini file' do
is_expected.to contain_file('/etc/neutron/plugins/nuage/plugin.ini').with( should contain_file('/etc/neutron/plugins/nuage/plugin.ini').with(
:ensure => 'file', :ensure => 'file',
:owner => 'root', :owner => 'root',
:group => 'neutron', :group => 'neutron',
@ -56,11 +49,11 @@ describe 'neutron::plugins::ml2::nuage' do
end end
it 'should configure plugin.ini' do it 'should configure plugin.ini' do
is_expected.to contain_neutron_plugin_nuage('RESTPROXY/default_net_partition_name').with_value(params[:nuage_net_partition_name]) should contain_neutron_plugin_nuage('RESTPROXY/default_net_partition_name').with_value(params[:nuage_net_partition_name])
is_expected.to contain_neutron_plugin_nuage('RESTPROXY/server').with_value(params[:nuage_vsd_ip]) should contain_neutron_plugin_nuage('RESTPROXY/server').with_value(params[:nuage_vsd_ip])
is_expected.to contain_neutron_plugin_nuage('RESTPROXY/organization').with_value(params[:nuage_vsd_organization]) should contain_neutron_plugin_nuage('RESTPROXY/organization').with_value(params[:nuage_vsd_organization])
is_expected.to contain_neutron_plugin_nuage('RESTPROXY/cms_id').with_value(params[:nuage_cms_id]) should contain_neutron_plugin_nuage('RESTPROXY/cms_id').with_value(params[:nuage_cms_id])
is_expected.to contain_neutron_plugin_nuage('PLUGIN/default_allow_non_ip').with_value(params[:nuage_default_allow_non_ip]) should contain_neutron_plugin_nuage('PLUGIN/default_allow_non_ip').with_value(params[:nuage_default_allow_non_ip])
end end
context 'configure ml2 nuage with wrong core_plugin configuration' do context 'configure ml2 nuage with wrong core_plugin configuration' do
@ -69,11 +62,11 @@ describe 'neutron::plugins::ml2::nuage' do
core_plugin => 'foo' }" core_plugin => 'foo' }"
end end
it_raises 'a Puppet::Error', /Nuage should be the mechanism driver in neutron.conf/ it { should raise_error(Puppet::Error, /Nuage should be the mechanism driver in neutron.conf/) }
end end
it 'should have a nuage plugin conf file' do it 'should have a nuage plugin conf file' do
is_expected.to contain_file(platform_params[:nuage_conf_file]).with( should contain_file(platform_params[:nuage_conf_file]).with(
:ensure => platform_params[:nuage_file_ensure], :ensure => platform_params[:nuage_file_ensure],
:target => platform_params[:nuage_file_target] :target => platform_params[:nuage_file_target]
) )
@ -84,7 +77,7 @@ describe 'neutron::plugins::ml2::nuage' do
params.merge!(:nuage_default_allow_non_ip => true) params.merge!(:nuage_default_allow_non_ip => true)
end end
it 'default_allow_non_ip is set to true' do it 'default_allow_non_ip is set to true' do
is_expected.to contain_neutron_plugin_nuage('PLUGIN/default_allow_non_ip').with_value(true) should contain_neutron_plugin_nuage('PLUGIN/default_allow_non_ip').with_value(true)
end end
end end
@ -94,7 +87,7 @@ describe 'neutron::plugins::ml2::nuage' do
mechanism_drivers => ['bar'] }" mechanism_drivers => ['bar'] }"
end end
it_raises 'a Puppet::Error', /Nuage should be the mechanism driver in neutron.conf/ it { should raise_error(Puppet::Error, /Nuage should be the mechanism driver in neutron.conf/) }
end end
end end
@ -121,7 +114,7 @@ describe 'neutron::plugins::ml2::nuage' do
end end
end end
it_configures 'neutron plugin ml2 nuage' it_behaves_like 'neutron plugin ml2 nuage'
end end
end end
end end

View File

@ -1,14 +1,14 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::ml2::opendaylight' do describe 'neutron::plugins::ml2::opendaylight' do
let :pre_condition do let :pre_condition do
"class { '::neutron::keystone::authtoken': "class { '::neutron::keystone::authtoken':
password => 'passw0rd', password => 'passw0rd',
} }
class { 'neutron::server': } class { 'neutron::server': }
class { 'neutron': class { 'neutron':
core_plugin => 'ml2' }" core_plugin => 'ml2'
}"
end end
let :default_params do let :default_params do
@ -24,66 +24,46 @@ describe 'neutron::plugins::ml2::opendaylight' do
let :params do let :params do
{ {
:odl_username => 'user', :odl_username => 'user',
:odl_password => 'password', :odl_password => 'password',
} }
end end
let :test_facts do shared_examples 'neutron plugin opendaylight ml2' do
{
:operatingsystem => 'default',
:operatingsystemrelease => 'default',
}
end
shared_examples_for 'neutron plugin opendaylight ml2' do
before do before do
params.merge!(default_params) params.merge!(default_params)
end end
it 'should have' do it 'should have' do
is_expected.to contain_package('python-networking-odl').with( should contain_package('python-networking-odl').with(
:ensure => params[:package_ensure], :ensure => params[:package_ensure],
:tag => 'openstack' :tag => 'openstack'
) )
end end
it 'configures ml2_odl settings' do it 'configures ml2_odl settings' do
is_expected.to contain_neutron_plugin_ml2('ml2_odl/password').with_value(params[:odl_password]).with_secret(true) should contain_neutron_plugin_ml2('ml2_odl/password').with_value(params[:odl_password]).with_secret(true)
is_expected.to contain_neutron_plugin_ml2('ml2_odl/username').with_value(params[:odl_username]) should contain_neutron_plugin_ml2('ml2_odl/username').with_value(params[:odl_username])
is_expected.to contain_neutron_plugin_ml2('ml2_odl/url').with_value(params[:odl_url]) should contain_neutron_plugin_ml2('ml2_odl/url').with_value(params[:odl_url])
is_expected.to contain_neutron_plugin_ml2('ml2_odl/port_binding_controller').with_value(params[:port_binding_controller]) should contain_neutron_plugin_ml2('ml2_odl/port_binding_controller').with_value(params[:port_binding_controller])
is_expected.to contain_neutron_plugin_ml2('ml2_odl/odl_hostconf_uri').with_value(params[:odl_hostconf_uri]) should contain_neutron_plugin_ml2('ml2_odl/odl_hostconf_uri').with_value(params[:odl_hostconf_uri])
is_expected.to contain_neutron_plugin_ml2('ml2_odl/odl_features').with_value(params[:odl_features]) should contain_neutron_plugin_ml2('ml2_odl/odl_features').with_value(params[:odl_features])
end end
it 'configures neutron server settings' do it 'configures neutron server settings' do
is_expected.to contain_neutron_config('OVS/ovsdb_connection').with_value(params[:ovsdb_connection]) should contain_neutron_config('OVS/ovsdb_connection').with_value(params[:ovsdb_connection])
end end
end end
on_supported_os({
:supported_os => OSDefaults.get_supported_os
}).each do |os,facts|
context "on #{os}" do
let (:facts) do
facts.merge!(OSDefaults.get_facts())
end
context 'on RedHat platforms' do it_behaves_like 'neutron plugin opendaylight ml2'
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'RedHat',
:operatingsystemrelease => '7',
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
}))
end end
it_configures 'neutron plugin opendaylight ml2'
end
context 'on Debian platforms' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'Debian',
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } },
}))
end
it_configures 'neutron plugin opendaylight ml2'
end end
end end

View File

@ -1,7 +1,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::ml2::ovn' do describe 'neutron::plugins::ml2::ovn' do
let :pre_condition do let :pre_condition do
"class { '::neutron::keystone::authtoken': "class { '::neutron::keystone::authtoken':
password => 'passw0rd', password => 'passw0rd',
@ -23,13 +22,7 @@ describe 'neutron::plugins::ml2::ovn' do
} }
end end
let :test_facts do shared_examples 'neutron ovn plugin' do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
}
end
shared_examples_for 'neutron ovn plugin' do
let :params do let :params do
{} {}
@ -40,19 +33,19 @@ describe 'neutron::plugins::ml2::ovn' do
end end
it 'should perform default configuration of' do it 'should perform default configuration of' do
is_expected.to contain_neutron_plugin_ml2('ovn/ovn_nb_connection').with_value(params[:ovn_nb_connection]) should contain_neutron_plugin_ml2('ovn/ovn_nb_connection').with_value(params[:ovn_nb_connection])
is_expected.to contain_neutron_plugin_ml2('ovn/ovn_sb_connection').with_value(params[:ovn_sb_connection]) should contain_neutron_plugin_ml2('ovn/ovn_sb_connection').with_value(params[:ovn_sb_connection])
is_expected.to contain_neutron_plugin_ml2('ovn/ovsdb_connection_timeout').with_value(params[:ovsdb_connection_timeout]) should contain_neutron_plugin_ml2('ovn/ovsdb_connection_timeout').with_value(params[:ovsdb_connection_timeout])
is_expected.to contain_neutron_plugin_ml2('ovn/neutron_sync_mode').with_value(params[:neutron_sync_mode]) should contain_neutron_plugin_ml2('ovn/neutron_sync_mode').with_value(params[:neutron_sync_mode])
is_expected.to contain_neutron_plugin_ml2('ovn/ovn_l3_mode').with_value(params[:ovn_l3_mode]) should contain_neutron_plugin_ml2('ovn/ovn_l3_mode').with_value(params[:ovn_l3_mode])
is_expected.to contain_neutron_plugin_ml2('ovn/vif_type').with_value(params[:vif_type]) should contain_neutron_plugin_ml2('ovn/vif_type').with_value(params[:vif_type])
is_expected.to contain_neutron_plugin_ml2('ovn/enable_distributed_floating_ip').with_value(params[:dvr_enabled]) should contain_neutron_plugin_ml2('ovn/enable_distributed_floating_ip').with_value(params[:dvr_enabled])
is_expected.to contain_neutron_plugin_ml2('ovn/dns_servers').with_value(params[:dns_servers].join(',')) should contain_neutron_plugin_ml2('ovn/dns_servers').with_value(params[:dns_servers].join(','))
end end
end end
shared_examples_for 'Validating parameters' do shared_examples 'Validating parameters' do
let :params do let :params do
{} {}
end end
@ -64,14 +57,14 @@ describe 'neutron::plugins::ml2::ovn' do
it 'should fail with invalid neutron_sync_mode' do it 'should fail with invalid neutron_sync_mode' do
params[:neutron_sync_mode] = 'invalid' params[:neutron_sync_mode] = 'invalid'
is_expected.to raise_error(Puppet::Error, /Invalid value for neutron_sync_mode parameter/) should raise_error(Puppet::Error, /Invalid value for neutron_sync_mode parameter/)
end end
it 'should fail with invalid vif_type' do it 'should fail with invalid vif_type' do
params[:vif_type] = 'invalid' params[:vif_type] = 'invalid'
is_expected.to raise_error(Puppet::Error, /Invalid value for vif_type parameter/) should raise_error(Puppet::Error, /Invalid value for vif_type parameter/)
params.delete(:vif_type) params.delete(:vif_type)
is_expected.to contain_neutron_plugin_ml2('ovn/vif_type').with_value('<SERVICE DEFAULT>') should contain_neutron_plugin_ml2('ovn/vif_type').with_value('<SERVICE DEFAULT>')
end end
context 'with DVR' do context 'with DVR' do
@ -79,7 +72,7 @@ describe 'neutron::plugins::ml2::ovn' do
params.merge!(:dvr_enabled => true) params.merge!(:dvr_enabled => true)
end end
it 'should enable DVR mode' do it 'should enable DVR mode' do
is_expected.to contain_neutron_plugin_ml2('ovn/enable_distributed_floating_ip').with_value(params[:dvr_enabled]) should contain_neutron_plugin_ml2('ovn/enable_distributed_floating_ip').with_value(params[:dvr_enabled])
end end
end end
end end
@ -92,8 +85,8 @@ describe 'neutron::plugins::ml2::ovn' do
facts.merge(OSDefaults.get_facts({:processorcount => 8})) facts.merge(OSDefaults.get_facts({:processorcount => 8}))
end end
it_configures 'neutron ovn plugin' it_behaves_like 'neutron ovn plugin'
it_configures 'Validating parameters' it_behaves_like 'Validating parameters'
end end
end end
end end

View File

@ -21,14 +21,15 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::ml2' do describe 'neutron::plugins::ml2' do
let :pre_condition do let :pre_condition do
"class { 'neutron': "class { 'neutron':
core_plugin => 'ml2' }" core_plugin => 'ml2'
}"
end end
let :default_params do let :default_params do
{ :type_drivers => ['local', 'flat', 'vlan', 'gre', 'vxlan', 'geneve'], {
:type_drivers => ['local', 'flat', 'vlan', 'gre', 'vxlan', 'geneve'],
:tenant_network_types => ['local', 'flat', 'vlan', 'gre', 'vxlan'], :tenant_network_types => ['local', 'flat', 'vlan', 'gre', 'vxlan'],
:mechanism_drivers => ['openvswitch', 'linuxbridge'], :mechanism_drivers => ['openvswitch', 'linuxbridge'],
:flat_networks => '*', :flat_networks => '*',
@ -39,12 +40,7 @@ describe 'neutron::plugins::ml2' do
:path_mtu => '0', :path_mtu => '0',
:physical_network_mtus => '', :physical_network_mtus => '',
:package_ensure => 'present', :package_ensure => 'present',
:purge_config => false, } :purge_config => false,
end
let :test_facts do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
} }
end end
@ -52,37 +48,37 @@ describe 'neutron::plugins::ml2' do
{} {}
end end
shared_examples_for 'neutron plugin ml2' do shared_examples 'neutron plugin ml2' do
let :p do let :p do
default_params.merge(params) default_params.merge(params)
end end
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it 'configures neutron.conf' do it 'configures neutron.conf' do
is_expected.to contain_neutron_config('DEFAULT/core_plugin').with_value('ml2') should contain_neutron_config('DEFAULT/core_plugin').with_value('ml2')
end end
it 'passes purge to resource' do it 'passes purge to resource' do
is_expected.to contain_resources('neutron_plugin_ml2').with({ should contain_resources('neutron_plugin_ml2').with({
:purge => false :purge => false
}) })
end end
it 'configures ml2_conf.ini' do it 'configures ml2_conf.ini' do
is_expected.to contain_neutron_plugin_ml2('ml2/type_drivers').with_value(p[:type_drivers].join(',')) should contain_neutron_plugin_ml2('ml2/type_drivers').with_value(p[:type_drivers].join(','))
is_expected.to contain_neutron_plugin_ml2('ml2/tenant_network_types').with_value(p[:tenant_network_types].join(',')) should contain_neutron_plugin_ml2('ml2/tenant_network_types').with_value(p[:tenant_network_types].join(','))
is_expected.to contain_neutron_plugin_ml2('ml2/mechanism_drivers').with_value(p[:mechanism_drivers].join(',')) should contain_neutron_plugin_ml2('ml2/mechanism_drivers').with_value(p[:mechanism_drivers].join(','))
is_expected.to contain_neutron_plugin_ml2('ml2/extension_drivers').with_value('<SERVICE DEFAULT>') should contain_neutron_plugin_ml2('ml2/extension_drivers').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_plugin_ml2('ml2/path_mtu').with_value(p[:path_mtu]) should contain_neutron_plugin_ml2('ml2/path_mtu').with_value(p[:path_mtu])
is_expected.to contain_neutron_plugin_ml2('ml2/physical_network_mtus').with_ensure('absent') should contain_neutron_plugin_ml2('ml2/physical_network_mtus').with_ensure('absent')
is_expected.to contain_neutron_plugin_ml2('ml2/overlay_ip_version').with_value('<SERVICE DEFAULT>') should contain_neutron_plugin_ml2('ml2/overlay_ip_version').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_plugin_ml2('securitygroup/firewall_driver').with_value('<SERVICE DEFAULT>') should contain_neutron_plugin_ml2('securitygroup/firewall_driver').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_plugin_ml2('securitygroup/enable_security_group').with_value('<SERVICE DEFAULT>') should contain_neutron_plugin_ml2('securitygroup/enable_security_group').with_value('<SERVICE DEFAULT>')
end end
it 'creates plugin symbolic link' do it 'creates plugin symbolic link' do
is_expected.to contain_file('/etc/neutron/plugin.ini').with( should contain_file('/etc/neutron/plugin.ini').with(
:ensure => 'link', :ensure => 'link',
:target => '/etc/neutron/plugins/ml2/ml2_conf.ini' :target => '/etc/neutron/plugins/ml2/ml2_conf.ini'
) )
@ -90,17 +86,16 @@ describe 'neutron::plugins::ml2' do
it 'installs ml2 package (if any)' do it 'installs ml2 package (if any)' do
if platform_params.has_key?(:ml2_server_package) if platform_params.has_key?(:ml2_server_package)
is_expected.to contain_package('neutron-plugin-ml2').with( should contain_package('neutron-plugin-ml2').with(
:name => platform_params[:ml2_server_package], :name => platform_params[:ml2_server_package],
:ensure => p[:package_ensure], :ensure => p[:package_ensure],
:tag => ['neutron-package', 'openstack'], :tag => ['neutron-package', 'openstack'],
) )
is_expected.to contain_package('neutron-plugin-ml2').that_requires('Anchor[neutron::install::begin]') should contain_package('neutron-plugin-ml2').that_requires('Anchor[neutron::install::begin]')
is_expected.to contain_package('neutron-plugin-ml2').that_notifies('Anchor[neutron::install::end]') should contain_package('neutron-plugin-ml2').that_notifies('Anchor[neutron::install::end]')
end end
end end
context 'when overriding security group options' do context 'when overriding security group options' do
before :each do before :each do
params.merge!( params.merge!(
@ -109,8 +104,8 @@ describe 'neutron::plugins::ml2' do
) )
end end
it 'configures enable_security_group and firewall_driver options' do it 'configures enable_security_group and firewall_driver options' do
is_expected.to contain_neutron_plugin_ml2('securitygroup/enable_security_group').with_value('true') should contain_neutron_plugin_ml2('securitygroup/enable_security_group').with_value('true')
is_expected.to contain_neutron_plugin_ml2('securitygroup/firewall_driver').with_value('iptables_hybrid') should contain_neutron_plugin_ml2('securitygroup/firewall_driver').with_value('iptables_hybrid')
end end
end end
@ -119,7 +114,7 @@ describe 'neutron::plugins::ml2' do
params.merge!(:overlay_ip_version => 4) params.merge!(:overlay_ip_version => 4)
end end
it 'configures as IPv4' do it 'configures as IPv4' do
is_expected.to contain_neutron_plugin_ml2('ml2/overlay_ip_version').with_value(4) should contain_neutron_plugin_ml2('ml2/overlay_ip_version').with_value(4)
end end
end end
@ -128,7 +123,7 @@ describe 'neutron::plugins::ml2' do
params.merge!(:overlay_ip_version => 6) params.merge!(:overlay_ip_version => 6)
end end
it 'configures as IPv6' do it 'configures as IPv6' do
is_expected.to contain_neutron_plugin_ml2('ml2/overlay_ip_version').with_value(6) should contain_neutron_plugin_ml2('ml2/overlay_ip_version').with_value(6)
end end
end end
@ -137,7 +132,7 @@ describe 'neutron::plugins::ml2' do
params.merge!(:overlay_ip_version => 10) params.merge!(:overlay_ip_version => 10)
end end
it 'fails to accept value' do it 'fails to accept value' do
is_expected.to raise_error(Puppet::Error) should raise_error(Puppet::Error)
end end
end end
@ -147,7 +142,7 @@ describe 'neutron::plugins::ml2' do
end end
it 'configures extension drivers' do it 'configures extension drivers' do
is_expected.to contain_neutron_plugin_ml2('ml2/extension_drivers').with_value(p[:extension_drivers].join(',')) should contain_neutron_plugin_ml2('ml2/extension_drivers').with_value(p[:extension_drivers].join(','))
end end
end end
@ -163,7 +158,7 @@ describe 'neutron::plugins::ml2' do
params.merge!(:flat_networks => ['eth1', 'eth2']) params.merge!(:flat_networks => ['eth1', 'eth2'])
end end
it 'configures flat_networks' do it 'configures flat_networks' do
is_expected.to contain_neutron_plugin_ml2('ml2_type_flat/flat_networks').with_value(p[:flat_networks].join(',')) should contain_neutron_plugin_ml2('ml2_type_flat/flat_networks').with_value(p[:flat_networks].join(','))
end end
end end
@ -172,7 +167,7 @@ describe 'neutron::plugins::ml2' do
params.merge!(:tunnel_id_ranges => ['0:20', '40:60']) params.merge!(:tunnel_id_ranges => ['0:20', '40:60'])
end end
it 'configures gre_networks with valid ranges' do it 'configures gre_networks with valid ranges' do
is_expected.to contain_neutron_plugin_ml2('ml2_type_gre/tunnel_id_ranges').with_value(p[:tunnel_id_ranges].join(',')) should contain_neutron_plugin_ml2('ml2_type_gre/tunnel_id_ranges').with_value(p[:tunnel_id_ranges].join(','))
end end
end end
@ -181,7 +176,7 @@ describe 'neutron::plugins::ml2' do
params.merge!(:tunnel_id_ranges => ['0:20', '40:100000000']) params.merge!(:tunnel_id_ranges => ['0:20', '40:100000000'])
end end
it_raises 'a Puppet::Error', /tunnel id ranges are to large./ it { should raise_error(Puppet::Error, /tunnel id ranges are to large./) }
end end
context 'when using vlan driver with valid values' do context 'when using vlan driver with valid values' do
@ -189,7 +184,7 @@ describe 'neutron::plugins::ml2' do
params.merge!(:network_vlan_ranges => ['1:20', '400:4094']) params.merge!(:network_vlan_ranges => ['1:20', '400:4094'])
end end
it 'configures vlan_networks with 1:20 and 400:4094 VLAN ranges' do it 'configures vlan_networks with 1:20 and 400:4094 VLAN ranges' do
is_expected.to contain_neutron_plugin_ml2('ml2_type_vlan/network_vlan_ranges').with_value(p[:network_vlan_ranges].join(',')) should contain_neutron_plugin_ml2('ml2_type_vlan/network_vlan_ranges').with_value(p[:network_vlan_ranges].join(','))
end end
end end
@ -198,7 +193,7 @@ describe 'neutron::plugins::ml2' do
params.merge!(:network_vlan_ranges => ['1:20', '400:4099']) params.merge!(:network_vlan_ranges => ['1:20', '400:4099'])
end end
it_raises 'a Puppet::Error', /vlan id are invalid./ it { should raise_error(Puppet::Error, /vlan id are invalid./) }
end end
context 'when using vlan driver with invalid vlan range' do context 'when using vlan driver with invalid vlan range' do
@ -206,7 +201,7 @@ describe 'neutron::plugins::ml2' do
params.merge!(:network_vlan_ranges => ['2938:1']) params.merge!(:network_vlan_ranges => ['2938:1'])
end end
it_raises 'a Puppet::Error', /vlan ranges are invalid./ it { should raise_error(Puppet::Error, /vlan ranges are invalid./) }
end end
context 'when using vxlan driver with valid values' do context 'when using vxlan driver with valid values' do
@ -214,8 +209,8 @@ describe 'neutron::plugins::ml2' do
params.merge!(:vni_ranges => ['40:300', '500:1000'], :vxlan_group => '224.1.1.1') params.merge!(:vni_ranges => ['40:300', '500:1000'], :vxlan_group => '224.1.1.1')
end end
it 'configures vxlan_networks with 224.1.1.1 vxlan group' do it 'configures vxlan_networks with 224.1.1.1 vxlan group' do
is_expected.to contain_neutron_plugin_ml2('ml2_type_vxlan/vni_ranges').with_value(p[:vni_ranges].join(',')) should contain_neutron_plugin_ml2('ml2_type_vxlan/vni_ranges').with_value(p[:vni_ranges].join(','))
is_expected.to contain_neutron_plugin_ml2('ml2_type_vxlan/vxlan_group').with_value(p[:vxlan_group]) should contain_neutron_plugin_ml2('ml2_type_vxlan/vxlan_group').with_value(p[:vxlan_group])
end end
end end
@ -224,7 +219,7 @@ describe 'neutron::plugins::ml2' do
params.merge!(:vxlan_group => '192.1.1.1') params.merge!(:vxlan_group => '192.1.1.1')
end end
it_raises 'a Puppet::Error', /is not valid for vxlan_group./ it { should raise_error(Puppet::Error, /is not valid for vxlan_group./) }
end end
context 'when using vxlan driver with invalid vni_range' do context 'when using vxlan driver with invalid vni_range' do
@ -232,7 +227,7 @@ describe 'neutron::plugins::ml2' do
params.merge!(:vni_ranges => ['2938:1']) params.merge!(:vni_ranges => ['2938:1'])
end end
it_raises 'a Puppet::Error', /vni ranges are invalid./ it { should raise_error(Puppet::Error, /vni ranges are invalid./) }
end end
context 'when using geneve driver' do context 'when using geneve driver' do
@ -244,9 +239,9 @@ describe 'neutron::plugins::ml2' do
end end
it 'configures geneve with valid values' do it 'configures geneve with valid values' do
is_expected.to contain_neutron_plugin_ml2('ml2/type_drivers').with_value(p[:type_drivers].join(',')) should contain_neutron_plugin_ml2('ml2/type_drivers').with_value(p[:type_drivers].join(','))
is_expected.to contain_neutron_plugin_ml2('ml2_type_geneve/vni_ranges').with_value([p[:vni_ranges].join(',')]) should contain_neutron_plugin_ml2('ml2_type_geneve/vni_ranges').with_value([p[:vni_ranges].join(',')])
is_expected.to contain_neutron_plugin_ml2('ml2_type_geneve/max_header_size').with_value(p[:max_header_size]) should contain_neutron_plugin_ml2('ml2_type_geneve/max_header_size').with_value(p[:max_header_size])
end end
end end
@ -256,7 +251,7 @@ describe 'neutron::plugins::ml2' do
end end
it 'should set the path_mtu on the ml2 plugin' do it 'should set the path_mtu on the ml2 plugin' do
is_expected.to contain_neutron_plugin_ml2('ml2/path_mtu').with_value(p[:path_mtu]) should contain_neutron_plugin_ml2('ml2/path_mtu').with_value(p[:path_mtu])
end end
end end
@ -266,7 +261,7 @@ describe 'neutron::plugins::ml2' do
end end
it 'should set the physical_network_mtus on the ml2 plugin' do it 'should set the physical_network_mtus on the ml2 plugin' do
is_expected.to contain_neutron_plugin_ml2('ml2/physical_network_mtus').with_value(p[:physical_network_mtus].join(',')) should contain_neutron_plugin_ml2('ml2/physical_network_mtus').with_value(p[:physical_network_mtus].join(','))
end end
end end
@ -276,7 +271,7 @@ describe 'neutron::plugins::ml2' do
end end
it 'overrides package ensure state (if possible)' do it 'overrides package ensure state (if possible)' do
if platform_params.has_key?(:ml2_server_package) if platform_params.has_key?(:ml2_server_package)
is_expected.to contain_package('neutron-plugin-ml2').with( should contain_package('neutron-plugin-ml2').with(
:name => platform_params[:ml2_server_package], :name => platform_params[:ml2_server_package],
:ensure => params[:package_ensure], :ensure => params[:package_ensure],
:tag => ['neutron-package', 'openstack'], :tag => ['neutron-package', 'openstack'],
@ -291,61 +286,43 @@ describe 'neutron::plugins::ml2' do
end end
it 'configures /etc/default/neutron-server' do it 'configures /etc/default/neutron-server' do
is_expected.to contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').with( should contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').with(
:path => '/etc/default/neutron-server', :path => '/etc/default/neutron-server',
:match => '^NEUTRON_PLUGIN_CONFIG=(.*)$', :match => '^NEUTRON_PLUGIN_CONFIG=(.*)$',
:line => 'NEUTRON_PLUGIN_CONFIG=/etc/neutron/plugin.ini', :line => 'NEUTRON_PLUGIN_CONFIG=/etc/neutron/plugin.ini',
) )
is_expected.to contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_requires('Anchor[neutron::config::begin]') should contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_requires('Anchor[neutron::config::begin]')
is_expected.to contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_notifies('Anchor[neutron::config::end]') should contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_notifies('Anchor[neutron::config::end]')
end end
end end
end end
context 'on Debian platforms' do on_supported_os({
let :facts do :supported_os => OSDefaults.get_supported_os
@default_facts.merge(test_facts.merge({ }).each do |os,facts|
:osfamily => 'Debian', context "on #{os}" do
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } }, let (:facts) do
})) facts.merge!(OSDefaults.get_facts())
end
let :platform_params do
{}
end
context 'on Ubuntu operating systems' do
before do
facts.merge!({:operatingsystem => 'Ubuntu'})
platform_params.merge!(:ml2_server_package => 'neutron-plugin-ml2')
end end
it_configures 'neutron plugin ml2' let (:platform_params) do
end case facts[:osfamily]
when 'Debian'
context 'on non-Ubuntu operating systems' do if facts[:operatingsystem] == 'Ubuntu'
before do {
facts.merge!({:operatingsystem => 'Debian'}) :ml2_server_package => 'neutron-plugin-ml2'
}
else
{}
end
when 'RedHat'
{
:ml2_server_package => 'openstack-neutron-ml2'
}
end
end end
it_configures 'neutron plugin ml2' it_behaves_like 'neutron plugin ml2'
end end
end end
context 'on RedHat platforms' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'RedHat',
:operatingsystemrelease => '7',
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
}))
end
let :platform_params do
{ :ml2_server_package => 'openstack-neutron-ml2' }
end
it_configures 'neutron plugin ml2'
end
end end

View File

@ -1,7 +1,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::ml2::vpp' do describe 'neutron::plugins::ml2::vpp' do
let :pre_condition do let :pre_condition do
"class { '::neutron::keystone::authtoken': "class { '::neutron::keystone::authtoken':
password => 'passw0rd', password => 'passw0rd',
@ -23,24 +22,16 @@ describe 'neutron::plugins::ml2::vpp' do
} }
end end
let :test_facts do shared_examples 'neutron plugin vpp ml2' do
{
:operatingsystem => 'default',
:operatingsystemrelease => 'default',
}
end
shared_examples_for 'neutron plugin vpp ml2' do
before do before do
params.merge!(default_params) params.merge!(default_params)
end end
it 'configures ml2_vpp settings' do it 'configures ml2_vpp settings' do
is_expected.to contain_neutron_plugin_ml2('ml2_vpp/etcd_host').with_value(params[:etcd_host]) should contain_neutron_plugin_ml2('ml2_vpp/etcd_host').with_value(params[:etcd_host])
is_expected.to contain_neutron_plugin_ml2('ml2_vpp/etcd_port').with_value(params[:etcd_port]) should contain_neutron_plugin_ml2('ml2_vpp/etcd_port').with_value(params[:etcd_port])
is_expected.to contain_neutron_plugin_ml2('ml2_vpp/etcd_user').with_value('<SERVICE DEFAULT>') should contain_neutron_plugin_ml2('ml2_vpp/etcd_user').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_plugin_ml2('ml2_vpp/etcd_pass').with_value('<SERVICE DEFAULT>').with_secret(true) should contain_neutron_plugin_ml2('ml2_vpp/etcd_pass').with_value('<SERVICE DEFAULT>').with_secret(true)
end end
context 'when enabling etcd authentication' do context 'when enabling etcd authentication' do
@ -49,8 +40,8 @@ describe 'neutron::plugins::ml2::vpp' do
:etcd_pass => 'password' ) :etcd_pass => 'password' )
end end
it 'should configure etcd username and password' do it 'should configure etcd username and password' do
is_expected.to contain_neutron_plugin_ml2('ml2_vpp/etcd_user').with_value('admin') should contain_neutron_plugin_ml2('ml2_vpp/etcd_user').with_value('admin')
is_expected.to contain_neutron_plugin_ml2('ml2_vpp/etcd_pass').with_value('password').with_secret(true) should contain_neutron_plugin_ml2('ml2_vpp/etcd_pass').with_value('password').with_secret(true)
end end
end end
end end
@ -63,7 +54,7 @@ describe 'neutron::plugins::ml2::vpp' do
facts.merge!(OSDefaults.get_facts()) facts.merge!(OSDefaults.get_facts())
end end
it_configures 'neutron plugin vpp ml2' it_behaves_like 'neutron plugin vpp ml2'
end end
end end

View File

@ -1,7 +1,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::nsx' do describe 'neutron::plugins::nsx' do
let :pre_condition do let :pre_condition do
"class { 'neutron': "class { 'neutron':
core_plugin => 'vmware_nsx.plugin.NsxV3Plugin' } core_plugin => 'vmware_nsx.plugin.NsxV3Plugin' }
@ -29,13 +28,13 @@ describe 'neutron::plugins::nsx' do
} }
end end
shared_examples_for 'neutron plugin nsx' do shared_examples 'neutron plugin nsx' do
context 'with defaults' do context 'with defaults' do
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it 'should have a nsx plugin ini file' do it 'should have a nsx plugin ini file' do
is_expected.to contain_file('/etc/neutron/plugins/vmware/nsx.ini').with( should contain_file('/etc/neutron/plugins/vmware/nsx.ini').with(
:ensure => 'file', :ensure => 'file',
:owner => 'root', :owner => 'root',
:group => 'neutron', :group => 'neutron',
@ -44,26 +43,26 @@ describe 'neutron::plugins::nsx' do
end end
it 'should configure neutron.conf' do it 'should configure neutron.conf' do
is_expected.to contain_neutron_config('DEFAULT/core_plugin').with_value('vmware_nsx.plugin.NsxV3Plugin') should contain_neutron_config('DEFAULT/core_plugin').with_value('vmware_nsx.plugin.NsxV3Plugin')
end end
it 'passes purge to resource' do it 'passes purge to resource' do
is_expected.to contain_resources('neutron_plugin_nsx').with({ should contain_resources('neutron_plugin_nsx').with({
:purge => false :purge => false
}) })
end end
it 'should configure nsx.ini' do it 'should configure nsx.ini' do
is_expected.to contain_neutron_plugin_nsx('nsx_v3/default_overlay_tz').with_value(default_params[:default_overlay_tz]) should contain_neutron_plugin_nsx('nsx_v3/default_overlay_tz').with_value(default_params[:default_overlay_tz])
is_expected.to contain_neutron_plugin_nsx('nsx_v3/default_vlan_tz').with_value(default_params[:default_vlan_tz]) should contain_neutron_plugin_nsx('nsx_v3/default_vlan_tz').with_value(default_params[:default_vlan_tz])
is_expected.to contain_neutron_plugin_nsx('nsx_v3/default_bridge_cluster').with_value(default_params[:default_bridge_cluster]) should contain_neutron_plugin_nsx('nsx_v3/default_bridge_cluster').with_value(default_params[:default_bridge_cluster])
is_expected.to contain_neutron_plugin_nsx('nsx_v3/default_tier0_router').with_value(default_params[:default_tier0_router]) should contain_neutron_plugin_nsx('nsx_v3/default_tier0_router').with_value(default_params[:default_tier0_router])
is_expected.to contain_neutron_plugin_nsx('nsx_v3/nsx_api_managers').with_value(default_params[:nsx_api_managers]) should contain_neutron_plugin_nsx('nsx_v3/nsx_api_managers').with_value(default_params[:nsx_api_managers])
is_expected.to contain_neutron_plugin_nsx('nsx_v3/nsx_api_password').with_value(default_params[:nsx_api_password]) should contain_neutron_plugin_nsx('nsx_v3/nsx_api_password').with_value(default_params[:nsx_api_password])
is_expected.to contain_neutron_plugin_nsx('nsx_v3/dhcp_profile').with_value(default_params[:dhcp_profile]) should contain_neutron_plugin_nsx('nsx_v3/dhcp_profile').with_value(default_params[:dhcp_profile])
is_expected.to contain_neutron_plugin_nsx('nsx_v3/dhcp_relay_service').with_value(default_params[:dhcp_relay_service]) should contain_neutron_plugin_nsx('nsx_v3/dhcp_relay_service').with_value(default_params[:dhcp_relay_service])
is_expected.to contain_neutron_plugin_nsx('nsx_v3/metadata_proxy').with_value(default_params[:metadata_proxy]) should contain_neutron_plugin_nsx('nsx_v3/metadata_proxy').with_value(default_params[:metadata_proxy])
is_expected.to contain_neutron_plugin_nsx('nsx_v3/native_dhcp_metadata').with_value(default_params[:native_dhcp_metadata]) should contain_neutron_plugin_nsx('nsx_v3/native_dhcp_metadata').with_value(default_params[:native_dhcp_metadata])
end end
end end
@ -86,17 +85,17 @@ describe 'neutron::plugins::nsx' do
end end
it { it {
is_expected.to contain_neutron_plugin_nsx('nsx_v3/default_overlay_tz').with_value(params[:default_overlay_tz]) should contain_neutron_plugin_nsx('nsx_v3/default_overlay_tz').with_value(params[:default_overlay_tz])
is_expected.to contain_neutron_plugin_nsx('nsx_v3/default_vlan_tz').with_value(params[:default_vlan_tz]) should contain_neutron_plugin_nsx('nsx_v3/default_vlan_tz').with_value(params[:default_vlan_tz])
is_expected.to contain_neutron_plugin_nsx('nsx_v3/default_bridge_cluster').with_value(params[:default_bridge_cluster]) should contain_neutron_plugin_nsx('nsx_v3/default_bridge_cluster').with_value(params[:default_bridge_cluster])
is_expected.to contain_neutron_plugin_nsx('nsx_v3/default_tier0_router').with_value(params[:default_tier0_router]) should contain_neutron_plugin_nsx('nsx_v3/default_tier0_router').with_value(params[:default_tier0_router])
is_expected.to contain_neutron_plugin_nsx('nsx_v3/nsx_api_managers').with_value(params[:nsx_api_managers]) should contain_neutron_plugin_nsx('nsx_v3/nsx_api_managers').with_value(params[:nsx_api_managers])
is_expected.to contain_neutron_plugin_nsx('nsx_v3/nsx_api_password').with_value(params[:nsx_api_password]) should contain_neutron_plugin_nsx('nsx_v3/nsx_api_password').with_value(params[:nsx_api_password])
is_expected.to contain_neutron_plugin_nsx('nsx_v3/dhcp_profile').with_value(params[:dhcp_profile]) should contain_neutron_plugin_nsx('nsx_v3/dhcp_profile').with_value(params[:dhcp_profile])
is_expected.to contain_neutron_plugin_nsx('nsx_v3/dhcp_relay_service').with_value(params[:dhcp_relay_service]) should contain_neutron_plugin_nsx('nsx_v3/dhcp_relay_service').with_value(params[:dhcp_relay_service])
is_expected.to contain_neutron_plugin_nsx('nsx_v3/metadata_proxy').with_value(params[:metadata_proxy]) should contain_neutron_plugin_nsx('nsx_v3/metadata_proxy').with_value(params[:metadata_proxy])
is_expected.to contain_neutron_plugin_nsx('nsx_v3/native_dhcp_metadata').with_value(params[:native_dhcp_metadata]) should contain_neutron_plugin_nsx('nsx_v3/native_dhcp_metadata').with_value(params[:native_dhcp_metadata])
is_expected.to contain_resources('neutron_plugin_nsx').with({ should contain_resources('neutron_plugin_nsx').with({
:purge => true :purge => true
}) })
} }
@ -108,28 +107,28 @@ describe 'neutron::plugins::nsx' do
core_plugin => 'foo' }" core_plugin => 'foo' }"
end end
it_raises 'a Puppet::Error', /NSX plugin should be the core_plugin in neutron.conf/ it { should raise_error(Puppet::Error, /NSX plugin should be the core_plugin in neutron.conf/) }
end end
end end
shared_examples_for 'neutron plugin nsx on Debian' do shared_examples 'neutron plugin nsx on Debian' do
context 'with defaults' do context 'with defaults' do
it 'configures /etc/default/neutron-server' do it 'configures /etc/default/neutron-server' do
is_expected.to contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').with( should contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').with(
:path => '/etc/default/neutron-server', :path => '/etc/default/neutron-server',
:match => '^NEUTRON_PLUGIN_CONFIG=(.*)$', :match => '^NEUTRON_PLUGIN_CONFIG=(.*)$',
:line => 'NEUTRON_PLUGIN_CONFIG=/etc/neutron/plugins/vmware/nsx.ini', :line => 'NEUTRON_PLUGIN_CONFIG=/etc/neutron/plugins/vmware/nsx.ini',
) )
is_expected.to contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_requires('Anchor[neutron::config::begin]') should contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_requires('Anchor[neutron::config::begin]')
is_expected.to contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_notifies('Anchor[neutron::config::end]') should contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_notifies('Anchor[neutron::config::end]')
end end
end end
end end
shared_examples_for 'neutron plugin nsx on RedHat' do shared_examples 'neutron plugin nsx on RedHat' do
context 'with defaults' do context 'with defaults' do
it 'should create plugin symbolic link' do it 'should create plugin symbolic link' do
is_expected.to contain_file('/etc/neutron/plugin.ini').with( should contain_file('/etc/neutron/plugin.ini').with(
:ensure => 'link', :ensure => 'link',
:target => '/etc/neutron/plugins/vmware/nsx.ini') :target => '/etc/neutron/plugins/vmware/nsx.ini')
end end
@ -144,9 +143,8 @@ describe 'neutron::plugins::nsx' do
facts.merge!(OSDefaults.get_facts()) facts.merge!(OSDefaults.get_facts())
end end
it_configures 'neutron plugin nsx' it_behaves_like 'neutron plugin nsx'
it_configures "neutron plugin nsx on #{facts[:osfamily]}" it_behaves_like "neutron plugin nsx on #{facts[:osfamily]}"
end end
end end
end end

View File

@ -1,7 +1,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::nuage' do describe 'neutron::plugins::nuage' do
let :pre_condition do let :pre_condition do
"class { 'neutron': "class { 'neutron':
core_plugin => 'nuage_neutron.plugins.nuage.plugin.NuagePlugin' } core_plugin => 'nuage_neutron.plugins.nuage.plugin.NuagePlugin' }
@ -11,30 +10,24 @@ describe 'neutron::plugins::nuage' do
class { 'neutron::server': }" class { 'neutron::server': }"
end end
let :test_facts do let :params do
{ :operatingsystem => 'default', {
:operatingsystemrelease => 'default' :nuage_vsd_ip => %w(192.168.33.3),
:nuage_vsd_username => 'test',
:nuage_vsd_password => 'test',
:nuage_vsd_organization => 'vsd',
:nuage_net_partition_name => 'test',
:nuage_base_uri_version => 'v3.0',
:nuage_cms_id => '7488fae2-7e51-11e5-8bcf-feff819cdc9f',
:purge_config => false,
} }
end end
let :params do shared_examples 'neutron plugin nuage' do
{ it { should contain_class('neutron::params') }
:nuage_vsd_ip => %w(192.168.33.3),
:nuage_vsd_username => 'test',
:nuage_vsd_password => 'test',
:nuage_vsd_organization => 'vsd',
:nuage_net_partition_name => 'test',
:nuage_base_uri_version => 'v3.0',
:nuage_cms_id => '7488fae2-7e51-11e5-8bcf-feff819cdc9f',
:purge_config => false,}
end
shared_examples_for 'neutron plugin nuage' do
it { is_expected.to contain_class('neutron::params') }
it 'should have a nuage plugin ini file' do it 'should have a nuage plugin ini file' do
is_expected.to contain_file('/etc/neutron/plugins/nuage/plugin.ini').with( should contain_file('/etc/neutron/plugins/nuage/plugin.ini').with(
:ensure => 'file', :ensure => 'file',
:owner => 'root', :owner => 'root',
:group => 'neutron', :group => 'neutron',
@ -43,20 +36,20 @@ describe 'neutron::plugins::nuage' do
end end
it 'should configure neutron.conf' do it 'should configure neutron.conf' do
is_expected.to contain_neutron_config('DEFAULT/core_plugin').with_value('nuage_neutron.plugins.nuage.plugin.NuagePlugin') should contain_neutron_config('DEFAULT/core_plugin').with_value('nuage_neutron.plugins.nuage.plugin.NuagePlugin')
end end
it 'passes purge to resource' do it 'passes purge to resource' do
is_expected.to contain_resources('neutron_plugin_nuage').with({ should contain_resources('neutron_plugin_nuage').with({
:purge => false :purge => false
}) })
end end
it 'should configure plugin.ini' do it 'should configure plugin.ini' do
is_expected.to contain_neutron_plugin_nuage('RESTPROXY/default_net_partition_name').with_value(params[:nuage_net_partition_name]) should contain_neutron_plugin_nuage('RESTPROXY/default_net_partition_name').with_value(params[:nuage_net_partition_name])
is_expected.to contain_neutron_plugin_nuage('RESTPROXY/server').with_value(params[:nuage_vsd_ip]) should contain_neutron_plugin_nuage('RESTPROXY/server').with_value(params[:nuage_vsd_ip])
is_expected.to contain_neutron_plugin_nuage('RESTPROXY/organization').with_value(params[:nuage_vsd_organization]) should contain_neutron_plugin_nuage('RESTPROXY/organization').with_value(params[:nuage_vsd_organization])
is_expected.to contain_neutron_plugin_nuage('RESTPROXY/cms_id').with_value(params[:nuage_cms_id]) should contain_neutron_plugin_nuage('RESTPROXY/cms_id').with_value(params[:nuage_cms_id])
end end
context 'configure nuage with wrong core_plugin configure' do context 'configure nuage with wrong core_plugin configure' do
@ -65,72 +58,40 @@ describe 'neutron::plugins::nuage' do
core_plugin => 'foo' }" core_plugin => 'foo' }"
end end
it_raises 'a Puppet::Error', /Nuage plugin should be the core_plugin in neutron.conf/ it { should raise_error(Puppet::Error, /Nuage plugin should be the core_plugin in neutron.conf/) }
end
end
begin
context 'on Debian platforms' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'Debian',
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } },
}))
end
it_configures 'neutron plugin nuage'
end
context 'on RedHat platforms' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'RedHat',
:operatingsystemrelease => '7',
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
}))
end
it_configures 'neutron plugin nuage'
end
end
begin
context 'on Debian platforms' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'Debian',
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } },
}))
end
it 'configures /etc/default/neutron-server' do
is_expected.to contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').with(
:path => '/etc/default/neutron-server',
:match => '^NEUTRON_PLUGIN_CONFIG=(.*)$',
:line => 'NEUTRON_PLUGIN_CONFIG=/etc/neutron/plugins/nuage/plugin.ini',
)
is_expected.to contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_requires('Anchor[neutron::config::begin]')
is_expected.to contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_notifies('Anchor[neutron::config::end]')
end
it_configures 'neutron plugin nuage'
end
context 'on RedHat platforms' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'RedHat',
:operatingsystemrelease => '7',
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
}))
end
it 'should create plugin symbolic link' do
is_expected.to contain_file('/etc/neutron/plugin.ini').with(
:ensure => 'link',
:target => '/etc/neutron/plugins/nuage/plugin.ini')
end
it_configures 'neutron plugin nuage'
end end
end end
shared_examples 'neutron::plugin::nuage on Debian' do
it 'configures /etc/default/neutron-server' do
should contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').with(
:path => '/etc/default/neutron-server',
:match => '^NEUTRON_PLUGIN_CONFIG=(.*)$',
:line => 'NEUTRON_PLUGIN_CONFIG=/etc/neutron/plugins/nuage/plugin.ini',
)
should contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_requires('Anchor[neutron::config::begin]')
should contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_notifies('Anchor[neutron::config::end]')
end
end
shared_examples 'neutron::plugin::nuage on RedHat' do
it 'should create plugin symbolic link' do
should contain_file('/etc/neutron/plugin.ini').with(
:ensure => 'link',
:target => '/etc/neutron/plugins/nuage/plugin.ini')
end
end
on_supported_os({
:supported_os => OSDefaults.get_supported_os
}).each do |os,facts|
context "on #{os}" do
let (:facts) do
facts.merge!(OSDefaults.get_facts())
end
it_behaves_like 'neutron plugin nuage'
it_behaves_like "neutron::plugin::nuage on #{facts[:osfamily]}"
end
end
end end

View File

@ -1,46 +1,44 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::nvp' do describe 'neutron::plugins::nvp' do
let :pre_condition do let :pre_condition do
"class { 'neutron': "class { 'neutron':
core_plugin => 'neutron.plugins.nicira.NeutronPlugin.NvpPluginV2' }" core_plugin => 'neutron.plugins.nicira.NeutronPlugin.NvpPluginV2'
}"
end end
let :default_params do let :default_params do
{ {
:metadata_mode => 'access_network', :metadata_mode => 'access_network',
:package_ensure => 'present', :package_ensure => 'present',
:purge_config => false,} :purge_config => false,
end
let :test_facts do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
} }
end end
let :params do let :params do
{ {
:default_tz_uuid => '0344130f-1add-4e86-b36e-ad1c44fe40dc', :default_tz_uuid => '0344130f-1add-4e86-b36e-ad1c44fe40dc',
:nvp_controllers => %w(10.0.0.1 10.0.0.2), :nvp_controllers => %w(10.0.0.1 10.0.0.2),
:nvp_user => 'admin', :nvp_user => 'admin',
:nvp_password => 'password'} :nvp_password => 'password'
}
end end
let :optional_params do let :optional_params do
{:default_l3_gw_service_uuid => '0344130f-1add-4e86-b36e-ad1c44fe40dc'} {
:default_l3_gw_service_uuid => '0344130f-1add-4e86-b36e-ad1c44fe40dc'
}
end end
shared_examples_for 'neutron plugin nvp' do shared_examples 'neutron plugin nvp' do
let :p do let :p do
default_params.merge(params) default_params.merge(params)
end end
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it 'should have' do it 'should have' do
is_expected.to contain_package('neutron-plugin-nvp').with( should contain_package('neutron-plugin-nvp').with(
:name => platform_params[:nvp_server_package], :name => platform_params[:nvp_server_package],
:ensure => p[:package_ensure], :ensure => p[:package_ensure],
:tag => ['neutron-package', 'openstack'], :tag => ['neutron-package', 'openstack'],
@ -48,32 +46,32 @@ describe 'neutron::plugins::nvp' do
end end
it 'should configure neutron.conf' do it 'should configure neutron.conf' do
is_expected.to contain_neutron_config('DEFAULT/core_plugin').with_value('neutron.plugins.nicira.NeutronPlugin.NvpPluginV2') should contain_neutron_config('DEFAULT/core_plugin').with_value('neutron.plugins.nicira.NeutronPlugin.NvpPluginV2')
end end
it 'should create plugin symbolic link' do it 'should create plugin symbolic link' do
is_expected.to contain_file('/etc/neutron/plugin.ini').with( should contain_file('/etc/neutron/plugin.ini').with(
:ensure => 'link', :ensure => 'link',
:target => '/etc/neutron/plugins/nicira/nvp.ini', :target => '/etc/neutron/plugins/nicira/nvp.ini',
) )
is_expected.to contain_file('/etc/neutron/plugin.ini').that_requires('Anchor[neutron::config::begin]') should contain_file('/etc/neutron/plugin.ini').that_requires('Anchor[neutron::config::begin]')
is_expected.to contain_file('/etc/neutron/plugin.ini').that_notifies('Anchor[neutron::config::end]') should contain_file('/etc/neutron/plugin.ini').that_notifies('Anchor[neutron::config::end]')
end end
it 'passes purge to resource' do it 'passes purge to resource' do
is_expected.to contain_resources('neutron_plugin_nvp').with({ should contain_resources('neutron_plugin_nvp').with({
:purge => false :purge => false
}) })
end end
it 'should configure nvp.ini' do it 'should configure nvp.ini' do
is_expected.to contain_neutron_plugin_nvp('DEFAULT/default_tz_uuid').with_value(p[:default_tz_uuid]) should contain_neutron_plugin_nvp('DEFAULT/default_tz_uuid').with_value(p[:default_tz_uuid])
is_expected.to contain_neutron_plugin_nvp('nvp/metadata_mode').with_value(p[:metadata_mode]) should contain_neutron_plugin_nvp('nvp/metadata_mode').with_value(p[:metadata_mode])
is_expected.to contain_neutron_plugin_nvp('DEFAULT/nvp_controllers').with_value(p[:nvp_controllers].join(',')) should contain_neutron_plugin_nvp('DEFAULT/nvp_controllers').with_value(p[:nvp_controllers].join(','))
is_expected.to contain_neutron_plugin_nvp('DEFAULT/nvp_user').with_value(p[:nvp_user]) should contain_neutron_plugin_nvp('DEFAULT/nvp_user').with_value(p[:nvp_user])
is_expected.to contain_neutron_plugin_nvp('DEFAULT/nvp_password').with_value(p[:nvp_password]) should contain_neutron_plugin_nvp('DEFAULT/nvp_password').with_value(p[:nvp_password])
is_expected.to contain_neutron_plugin_nvp('DEFAULT/nvp_password').with_secret( true ) should contain_neutron_plugin_nvp('DEFAULT/nvp_password').with_secret( true )
is_expected.not_to contain_neutron_plugin_nvp('DEFAULT/default_l3_gw_service_uuid').with_value(p[:default_l3_gw_service_uuid]) should_not contain_neutron_plugin_nvp('DEFAULT/default_l3_gw_service_uuid').with_value(p[:default_l3_gw_service_uuid])
end end
context 'configure nvp with optional params' do context 'configure nvp with optional params' do
@ -82,7 +80,7 @@ describe 'neutron::plugins::nvp' do
end end
it 'should configure nvp.ini' do it 'should configure nvp.ini' do
is_expected.to contain_neutron_plugin_nvp('DEFAULT/default_l3_gw_service_uuid').with_value(params[:default_l3_gw_service_uuid]) should contain_neutron_plugin_nvp('DEFAULT/default_l3_gw_service_uuid').with_value(params[:default_l3_gw_service_uuid])
end end
end end
@ -92,41 +90,32 @@ describe 'neutron::plugins::nvp' do
core_plugin => 'foo' }" core_plugin => 'foo' }"
end end
it_raises 'a Puppet::Error', /nvp plugin should be the core_plugin in neutron.conf/ it { should raise_error(Puppet::Error, /nvp plugin should be the core_plugin in neutron.conf/) }
end end
end end
begin on_supported_os({
context 'on Debian platforms' do :supported_os => OSDefaults.get_supported_os
let :facts do }).each do |os,facts|
@default_facts.merge(test_facts.merge({ context "on #{os}" do
:osfamily => 'Debian', let (:facts) do
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } }, facts.merge!(OSDefaults.get_facts())
}))
end end
let :platform_params do let (:platform_params) do
{ :nvp_server_package => 'neutron-plugin-nicira' } case facts[:osfamily]
when 'Debian'
{
:nvp_server_package => 'neutron-plugin-nicira'
}
when 'RedHat'
{
:nvp_server_package => 'openstack-neutron-nicira'
}
end
end end
it_configures 'neutron plugin nvp' it_behaves_like 'neutron plugin nvp'
end
context 'on RedHat platforms' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'RedHat',
:operatingsystemrelease => '7',
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
}))
end
let :platform_params do
{ :nvp_server_package => 'openstack-neutron-nicira' }
end
it_configures 'neutron plugin nvp'
end end
end end
end end

View File

@ -1,7 +1,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::opencontrail' do describe 'neutron::plugins::opencontrail' do
let :pre_condition do let :pre_condition do
"class { '::neutron::keystone::authtoken': "class { '::neutron::keystone::authtoken':
password => 'passw0rd', password => 'passw0rd',
@ -11,7 +10,8 @@ describe 'neutron::plugins::opencontrail' do
end end
let :default_params do let :default_params do
{ :api_server_ip => '10.0.0.1', {
:api_server_ip => '10.0.0.1',
:api_server_port => '8082', :api_server_port => '8082',
:multi_tenancy => 'true', :multi_tenancy => 'true',
:contrail_extensions => ['ipam:ipam','policy:policy','route-table'], :contrail_extensions => ['ipam:ipam','policy:policy','route-table'],
@ -24,14 +24,7 @@ describe 'neutron::plugins::opencontrail' do
} }
end end
let :test_facts do shared_examples 'neutron opencontrail plugin' do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
}
end
shared_examples_for 'neutron opencontrail plugin' do
let :params do let :params do
{} {}
end end
@ -41,71 +34,69 @@ describe 'neutron::plugins::opencontrail' do
end end
it 'passes purge to resource' do it 'passes purge to resource' do
is_expected.to contain_resources('neutron_plugin_opencontrail').with({ should contain_resources('neutron_plugin_opencontrail').with({
:purge => false :purge => false
}) })
end end
it 'should perform default configuration of' do it 'should perform default configuration of' do
is_expected.to contain_neutron_plugin_opencontrail('APISERVER/api_server_ip').with_value(params[:api_server_ip]) should contain_neutron_plugin_opencontrail('APISERVER/api_server_ip').with_value(params[:api_server_ip])
is_expected.to contain_neutron_plugin_opencontrail('APISERVER/api_server_port').with_value(params[:api_server_port]) should contain_neutron_plugin_opencontrail('APISERVER/api_server_port').with_value(params[:api_server_port])
is_expected.to contain_neutron_plugin_opencontrail('APISERVER/multi_tenancy').with_value(params[:multi_tenancy]) should contain_neutron_plugin_opencontrail('APISERVER/multi_tenancy').with_value(params[:multi_tenancy])
is_expected.to contain_neutron_plugin_opencontrail('APISERVER/contrail_extensions').with_value(params[:contrail_extensions].join(',')) should contain_neutron_plugin_opencontrail('APISERVER/contrail_extensions').with_value(params[:contrail_extensions].join(','))
is_expected.to contain_neutron_plugin_opencontrail('KEYSTONE/auth_url').with_value(params[:keystone_auth_url]) should contain_neutron_plugin_opencontrail('KEYSTONE/auth_url').with_value(params[:keystone_auth_url])
is_expected.to contain_neutron_plugin_opencontrail('KEYSTONE/admin_user').with_value(params[:keystone_admin_user]) should contain_neutron_plugin_opencontrail('KEYSTONE/admin_user').with_value(params[:keystone_admin_user])
is_expected.to contain_neutron_plugin_opencontrail('KEYSTONE/admin_tenant_name').with_value(params[:keystone_admin_tenant_name]) should contain_neutron_plugin_opencontrail('KEYSTONE/admin_tenant_name').with_value(params[:keystone_admin_tenant_name])
is_expected.to contain_neutron_plugin_opencontrail('KEYSTONE/admin_password').with_value(params[:keystone_admin_password]).with_secret(true) should contain_neutron_plugin_opencontrail('KEYSTONE/admin_password').with_value(params[:keystone_admin_password]).with_secret(true)
is_expected.to contain_neutron_plugin_opencontrail('KEYSTONE/admin_token').with_value(params[:keystone_admin_token]) should contain_neutron_plugin_opencontrail('KEYSTONE/admin_token').with_value(params[:keystone_admin_token])
end end
end end
context 'on Debian platforms' do shared_examples 'neutron::plugins::opencontrail on Debian' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'Debian',
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } },
}))
end
let :params do let :params do
{ :contrail_extensions => ['ipam:ipam','policy:policy','route-table'] } {
:contrail_extensions => ['ipam:ipam','policy:policy','route-table']
}
end end
it 'configures /etc/default/neutron-server' do it 'configures /etc/default/neutron-server' do
is_expected.to contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').with( should contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').with(
:path => '/etc/default/neutron-server', :path => '/etc/default/neutron-server',
:match => '^NEUTRON_PLUGIN_CONFIG=(.*)$', :match => '^NEUTRON_PLUGIN_CONFIG=(.*)$',
:line => 'NEUTRON_PLUGIN_CONFIG=/etc/neutron/plugins/opencontrail/ContrailPlugin.ini', :line => 'NEUTRON_PLUGIN_CONFIG=/etc/neutron/plugins/opencontrail/ContrailPlugin.ini',
:tag => 'neutron-file-line', :tag => 'neutron-file-line',
) )
is_expected.to contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_requires('Anchor[neutron::config::begin]') should contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_requires('Anchor[neutron::config::begin]')
is_expected.to contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_notifies('Anchor[neutron::config::end]') should contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_notifies('Anchor[neutron::config::end]')
end end
it_configures 'neutron opencontrail plugin'
end end
context 'on RedHat platforms' do shared_examples 'neutron::plugins::opencontrail on RedHat' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'RedHat',
:operatingsystemrelease => '7',
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
}))
end
let :params do let :params do
{ :contrail_extensions => ['ipam:ipam','policy:policy','route-table'] } {
:contrail_extensions => ['ipam:ipam','policy:policy','route-table']
}
end end
it 'should create plugin symbolic link' do it 'should create plugin symbolic link' do
is_expected.to contain_file('/etc/neutron/plugin.ini').with( should contain_file('/etc/neutron/plugin.ini').with(
:ensure => 'link', :ensure => 'link',
:target => '/etc/neutron/plugins/opencontrail/ContrailPlugin.ini', :target => '/etc/neutron/plugins/opencontrail/ContrailPlugin.ini',
:require => 'Package[neutron-plugin-contrail]' :require => 'Package[neutron-plugin-contrail]'
) )
end end
it_configures 'neutron opencontrail plugin'
end end
on_supported_os({
:supported_os => OSDefaults.get_supported_os
}).each do |os,facts|
context "on #{os}" do
let (:facts) do
facts.merge!(OSDefaults.get_facts())
end
it_behaves_like 'neutron opencontrail plugin'
it_behaves_like "neutron::plugins::opencontrail on #{facts[:osfamily]}"
end
end
end end

View File

@ -1,7 +1,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::ovs::opendaylight' do describe 'neutron::plugins::ovs::opendaylight' do
let :default_params do let :default_params do
{ {
:odl_check_url => 'http://127.0.0.1:8080/restconf/operational/network-topology:network-topology/topology/netvirt:1', :odl_check_url => 'http://127.0.0.1:8080/restconf/operational/network-topology:network-topology/topology/netvirt:1',
@ -29,15 +28,7 @@ describe 'neutron::plugins::ovs::opendaylight' do
} }
end end
let :test_facts do shared_examples 'neutron plugin opendaylight ovs' do
{
:operatingsystem => 'default',
:operatingsystemrelease => 'default',
}
end
shared_examples_for 'neutron plugin opendaylight ovs' do
before do before do
params.merge!(default_params) params.merge!(default_params)
end end
@ -46,30 +37,32 @@ describe 'neutron::plugins::ovs::opendaylight' do
before do before do
params.merge!({ :provider_mappings => ['default:br-ex'] }) params.merge!({ :provider_mappings => ['default:br-ex'] })
end end
it_configures 'with provider mappings' it_behaves_like 'with provider mappings'
end end
context 'with DPDK enabled' do context 'with DPDK enabled' do
before do before do
params.merge!({ :enable_dpdk => true }) params.merge!({ :enable_dpdk => true })
end end
it_configures 'with DPDK enabled' it_behaves_like 'with DPDK enabled'
end end
context 'with hw_offload and DPDK enabled' do context 'with hw_offload and DPDK enabled' do
before do before do
params.merge!({ :enable_hw_offload => true, :enable_dpdk => true}) params.merge!({ :enable_hw_offload => true, :enable_dpdk => true})
end end
it_raises 'a Puppet::Error',/Enabling hardware offload and DPDK is not allowed/
it { should raise_error(Puppet::Error, /Enabling hardware offload and DPDK is not allowed/) }
end end
it_configures 'with default parameters' it_behaves_like 'with default parameters'
context 'with TLS and no key or certificates' do context 'with TLS and no key or certificates' do
before do before do
params.merge!({ :enable_tls => true }) params.merge!({ :enable_tls => true })
end end
it_raises 'a Puppet::Error',/When enabling TLS, tls_key_file and tls_cert_file must be provided/
it { should raise_error(Puppet::Error, /When enabling TLS, tls_key_file and tls_cert_file must be provided/) }
end end
context 'with TLS and no CA cert' do context 'with TLS and no CA cert' do
@ -81,8 +74,8 @@ describe 'neutron::plugins::ovs::opendaylight' do
:tls_key_file => 'dummy.pem', :tls_key_file => 'dummy.pem',
:tls_cert_file => 'dummy.crt'}) :tls_cert_file => 'dummy.crt'})
end end
it_configures 'with TLS enabled' it_behaves_like 'with TLS enabled'
it {is_expected.to contain_vs_ssl('system').with( it {should contain_vs_ssl('system').with(
'ensure' => 'present', 'ensure' => 'present',
'key_file' => 'dummy.pem', 'key_file' => 'dummy.pem',
'cert_file' => 'dummy.crt', 'cert_file' => 'dummy.crt',
@ -90,6 +83,7 @@ describe 'neutron::plugins::ovs::opendaylight' do
'before' => 'Exec[Set OVS Manager to OpenDaylight]' 'before' => 'Exec[Set OVS Manager to OpenDaylight]'
)} )}
end end
context 'with TLS and CA cert' do context 'with TLS and CA cert' do
before do before do
File.stubs(:file?).returns(true) File.stubs(:file?).returns(true)
@ -100,8 +94,8 @@ describe 'neutron::plugins::ovs::opendaylight' do
:tls_cert_file => 'dummy.crt', :tls_cert_file => 'dummy.crt',
:tls_ca_cert_file => 'ca.crt'}) :tls_ca_cert_file => 'ca.crt'})
end end
it_configures 'with TLS enabled' it_behaves_like 'with TLS enabled'
it {is_expected.to contain_vs_ssl('system').with( it {should contain_vs_ssl('system').with(
'ensure' => 'present', 'ensure' => 'present',
'key_file' => 'dummy.pem', 'key_file' => 'dummy.pem',
'cert_file' => 'dummy.crt', 'cert_file' => 'dummy.crt',
@ -109,6 +103,7 @@ describe 'neutron::plugins::ovs::opendaylight' do
'before' => 'Exec[Set OVS Manager to OpenDaylight]' 'before' => 'Exec[Set OVS Manager to OpenDaylight]'
)} )}
end end
context 'with TLS and multiple ODLs' do context 'with TLS and multiple ODLs' do
before do before do
File.stubs(:file?).returns(true) File.stubs(:file?).returns(true)
@ -119,8 +114,9 @@ describe 'neutron::plugins::ovs::opendaylight' do
:tls_cert_file => 'dummy.crt', :tls_cert_file => 'dummy.crt',
:odl_ovsdb_iface => 'ssl:127.0.0.1:6640 ssl:172.0.0.1:6640'}) :odl_ovsdb_iface => 'ssl:127.0.0.1:6640 ssl:172.0.0.1:6640'})
end end
it_configures 'with TLS and ODL HA'
it {is_expected.to contain_vs_ssl('system').with( it_behaves_like 'with TLS and ODL HA'
it {should contain_vs_ssl('system').with(
'ensure' => 'present', 'ensure' => 'present',
'key_file' => 'dummy.pem', 'key_file' => 'dummy.pem',
'cert_file' => 'dummy.crt', 'cert_file' => 'dummy.crt',
@ -128,6 +124,7 @@ describe 'neutron::plugins::ovs::opendaylight' do
'before' => 'Exec[Set OVS Manager to OpenDaylight]' 'before' => 'Exec[Set OVS Manager to OpenDaylight]'
)} )}
end end
context 'with IPv6 enabled' do context 'with IPv6 enabled' do
before do before do
params.merge!({ params.merge!({
@ -135,114 +132,106 @@ describe 'neutron::plugins::ovs::opendaylight' do
:odl_ovsdb_iface => 'tcp:[::1]:6640', :odl_ovsdb_iface => 'tcp:[::1]:6640',
}) })
end end
it_configures 'with IPv6 enabled'
it_behaves_like 'with IPv6 enabled'
end end
end end
shared_examples_for 'with default parameters' do shared_examples 'with default parameters' do
it 'configures OVS for ODL' do it 'configures OVS for ODL' do
is_expected.to contain_exec('Wait for NetVirt OVSDB to come up') should contain_exec('Wait for NetVirt OVSDB to come up')
is_expected.to contain_exec('Set OVS Manager to OpenDaylight') should contain_exec('Set OVS Manager to OpenDaylight')
is_expected.to contain_vs_config('other_config:local_ip') should contain_vs_config('other_config:local_ip')
is_expected.not_to contain_vs_config('other_config:provider_mappings') should_not contain_vs_config('other_config:provider_mappings')
is_expected.to contain_vs_config('external_ids:odl_os_hostconfig_hostid') should contain_vs_config('external_ids:odl_os_hostconfig_hostid')
is_expected.to contain_vs_config('external_ids:hostname') should contain_vs_config('external_ids:hostname')
is_expected.to contain_vs_config('external_ids:odl_os_hostconfig_config_odl_l2') should contain_vs_config('external_ids:odl_os_hostconfig_config_odl_l2')
end end
end end
shared_examples_for 'with provider mappings' do shared_examples 'with provider mappings' do
it 'configures OVS for ODL' do it 'configures OVS for ODL' do
is_expected.to contain_exec('Wait for NetVirt OVSDB to come up') should contain_exec('Wait for NetVirt OVSDB to come up')
is_expected.to contain_exec('Set OVS Manager to OpenDaylight') should contain_exec('Set OVS Manager to OpenDaylight')
is_expected.to contain_vs_config('other_config:local_ip') should contain_vs_config('other_config:local_ip')
is_expected.to contain_vs_config('other_config:provider_mappings') should contain_vs_config('other_config:provider_mappings')
is_expected.to contain_vs_config('external_ids:odl_os_hostconfig_hostid') should contain_vs_config('external_ids:odl_os_hostconfig_hostid')
is_expected.to contain_vs_config('external_ids:hostname') should contain_vs_config('external_ids:hostname')
is_expected.to contain_vs_config('external_ids:odl_os_hostconfig_config_odl_l2').with( should contain_vs_config('external_ids:odl_os_hostconfig_config_odl_l2').with(
:value => /bridge_mappings\": {\"default\":\"br-ex\"}/ :value => /bridge_mappings\": {\"default\":\"br-ex\"}/
) )
end end
end end
shared_examples_for 'with DPDK enabled' do shared_examples 'with DPDK enabled' do
it 'configures OVS for ODL' do it 'configures OVS for ODL' do
is_expected.to contain_exec('Wait for NetVirt OVSDB to come up') should contain_exec('Wait for NetVirt OVSDB to come up')
is_expected.to contain_exec('Set OVS Manager to OpenDaylight') should contain_exec('Set OVS Manager to OpenDaylight')
is_expected.to contain_vs_config('other_config:local_ip') should contain_vs_config('other_config:local_ip')
is_expected.not_to contain_vs_config('other_config:provider_mappings') should_not contain_vs_config('other_config:provider_mappings')
is_expected.to contain_vs_config('external_ids:odl_os_hostconfig_hostid') should contain_vs_config('external_ids:odl_os_hostconfig_hostid')
is_expected.to contain_vs_config('external_ids:hostname') should contain_vs_config('external_ids:hostname')
is_expected.to contain_vs_config('external_ids:odl_os_hostconfig_config_odl_l2').with( should contain_vs_config('external_ids:odl_os_hostconfig_config_odl_l2').with(
:value => /vhostuser/, :value => /vhostuser/,
) )
end end
end end
shared_examples_for 'with TLS enabled' do shared_examples 'with TLS enabled' do
before do before do
params.merge!({ :odl_ovsdb_iface => 'ssl:127.0.0.1:6640' }) params.merge!({ :odl_ovsdb_iface => 'ssl:127.0.0.1:6640' })
end end
it 'configures OVS for ODL' do it 'configures OVS for ODL' do
is_expected.to contain_exec('Add trusted cert: dummy.crt to https://127.0.0.1:8080') should contain_exec('Add trusted cert: dummy.crt to https://127.0.0.1:8080')
is_expected.to contain_exec('Set OVS Manager to OpenDaylight').with( should contain_exec('Set OVS Manager to OpenDaylight').with(
:command => "ovs-vsctl set-manager pssl:6639:127.0.0.1 ssl:127.0.0.1:6640" :command => "ovs-vsctl set-manager pssl:6639:127.0.0.1 ssl:127.0.0.1:6640"
) )
is_expected.to contain_vs_config('other_config:local_ip') should contain_vs_config('other_config:local_ip')
is_expected.not_to contain_vs_config('other_config:provider_mappings') should_not contain_vs_config('other_config:provider_mappings')
is_expected.to contain_vs_config('external_ids:odl_os_hostconfig_hostid') should contain_vs_config('external_ids:odl_os_hostconfig_hostid')
is_expected.to contain_vs_config('external_ids:hostname') should contain_vs_config('external_ids:hostname')
is_expected.to contain_vs_config('external_ids:odl_os_hostconfig_config_odl_l2') should contain_vs_config('external_ids:odl_os_hostconfig_config_odl_l2')
end end
end end
shared_examples_for 'with TLS and ODL HA' do shared_examples 'with TLS and ODL HA' do
it 'configures OVS for ODL' do it 'configures OVS for ODL' do
is_expected.to contain_exec('Add trusted cert: dummy.crt to https://172.0.0.1:8080') should contain_exec('Add trusted cert: dummy.crt to https://172.0.0.1:8080')
is_expected.to contain_exec('Add trusted cert: dummy.crt to https://127.0.0.1:8080') should contain_exec('Add trusted cert: dummy.crt to https://127.0.0.1:8080')
is_expected.to contain_exec('Set OVS Manager to OpenDaylight').with( should contain_exec('Set OVS Manager to OpenDaylight').with(
:command => "ovs-vsctl set-manager pssl:6639:127.0.0.1 ssl:127.0.0.1:6640 ssl:172.0.0.1:6640" :command => "ovs-vsctl set-manager pssl:6639:127.0.0.1 ssl:127.0.0.1:6640 ssl:172.0.0.1:6640"
) )
is_expected.to contain_vs_config('other_config:local_ip') should contain_vs_config('other_config:local_ip')
is_expected.not_to contain_vs_config('other_config:provider_mappings') should_not contain_vs_config('other_config:provider_mappings')
is_expected.to contain_vs_config('external_ids:odl_os_hostconfig_hostid') should contain_vs_config('external_ids:odl_os_hostconfig_hostid')
is_expected.to contain_vs_config('external_ids:hostname') should contain_vs_config('external_ids:hostname')
is_expected.to contain_vs_config('external_ids:odl_os_hostconfig_config_odl_l2') should contain_vs_config('external_ids:odl_os_hostconfig_config_odl_l2')
end end
end end
shared_examples_for 'with IPv6 enabled' do shared_examples 'with IPv6 enabled' do
it 'configures OVS for ODL' do it 'configures OVS for ODL' do
is_expected.to contain_exec('Wait for NetVirt OVSDB to come up') should contain_exec('Wait for NetVirt OVSDB to come up')
is_expected.to contain_exec('Set OVS Manager to OpenDaylight').with( should contain_exec('Set OVS Manager to OpenDaylight').with(
:command => "ovs-vsctl set-manager ptcp:6639:[::1] tcp:[::1]:6640" :command => "ovs-vsctl set-manager ptcp:6639:[::1] tcp:[::1]:6640"
) )
is_expected.to contain_vs_config('other_config:local_ip') should contain_vs_config('other_config:local_ip')
is_expected.not_to contain_vs_config('other_config:provider_mappings') should_not contain_vs_config('other_config:provider_mappings')
is_expected.to contain_vs_config('external_ids:odl_os_hostconfig_hostid') should contain_vs_config('external_ids:odl_os_hostconfig_hostid')
is_expected.to contain_vs_config('external_ids:hostname') should contain_vs_config('external_ids:hostname')
is_expected.to contain_vs_config('external_ids:odl_os_hostconfig_config_odl_l2') should contain_vs_config('external_ids:odl_os_hostconfig_config_odl_l2')
end end
end end
context 'on RedHat platforms' do on_supported_os({
let :facts do :supported_os => OSDefaults.get_supported_os
@default_facts.merge(test_facts.merge({ }).each do |os,facts|
:osfamily => 'RedHat', context "on #{os}" do
:operatingsystemrelease => '7' let (:facts) do
})) facts.merge!(OSDefaults.get_facts())
end
it_behaves_like 'neutron plugin opendaylight ovs'
end end
it_configures 'neutron plugin opendaylight ovs'
end
context 'on Debian platforms' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'Debian'
}))
end
it_configures 'neutron plugin opendaylight ovs'
end end
end end

View File

@ -1,7 +1,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::plugins::plumgrid' do describe 'neutron::plugins::plumgrid' do
let :pre_condition do let :pre_condition do
"class { '::neutron::keystone::authtoken': "class { '::neutron::keystone::authtoken':
password => 'passw0rd', password => 'passw0rd',
@ -29,14 +28,7 @@ describe 'neutron::plugins::plumgrid' do
} }
end end
let :test_facts do shared_examples 'neutron plumgrid plugin' do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
}
end
shared_examples_for 'neutron plumgrid plugin' do
let :params do let :params do
{} {}
end end
@ -46,99 +38,92 @@ describe 'neutron::plugins::plumgrid' do
end end
it 'installs plumgrid plugin package' do it 'installs plumgrid plugin package' do
is_expected.to contain_package('neutron-plugin-plumgrid').with( should contain_package('neutron-plugin-plumgrid').with(
:ensure => 'present' :ensure => 'present'
) )
end end
it 'installs plumgrid plumlib package' do it 'installs plumgrid plumlib package' do
is_expected.to contain_package('neutron-plumlib-plumgrid').with( should contain_package('neutron-plumlib-plumgrid').with(
:ensure => 'present' :ensure => 'present'
) )
end end
it 'passes purge to resource plugin_plumgrid' do it 'passes purge to resource plugin_plumgrid' do
is_expected.to contain_resources('neutron_plugin_plumgrid').with({ should contain_resources('neutron_plugin_plumgrid').with({
:purge => false :purge => false
}) })
end end
it 'passes purge to resource plumlib_plumgrid' do it 'passes purge to resource plumlib_plumgrid' do
is_expected.to contain_resources('neutron_plumlib_plumgrid').with({ should contain_resources('neutron_plumlib_plumgrid').with({
:purge => false :purge => false
}) })
end end
it 'should perform default configuration of plumgrid plugin' do it 'should perform default configuration of plumgrid plugin' do
is_expected.to contain_neutron_plugin_plumgrid('PLUMgridDirector/director_server').with_value(params[:director_server]) should contain_neutron_plugin_plumgrid('PLUMgridDirector/director_server').with_value(params[:director_server])
is_expected.to contain_neutron_plugin_plumgrid('PLUMgridDirector/director_server_port').with_value(params[:director_server_port]) should contain_neutron_plugin_plumgrid('PLUMgridDirector/director_server_port').with_value(params[:director_server_port])
is_expected.to contain_neutron_plugin_plumgrid('PLUMgridDirector/username').with_value('<SERVICE DEFAULT>') should contain_neutron_plugin_plumgrid('PLUMgridDirector/username').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_plugin_plumgrid('PLUMgridDirector/password').with_value('<SERVICE DEFAULT>').with_secret(true) should contain_neutron_plugin_plumgrid('PLUMgridDirector/password').with_value('<SERVICE DEFAULT>').with_secret(true)
is_expected.to contain_neutron_plugin_plumgrid('PLUMgridDirector/servertimeout').with_value(params[:servertimeout]) should contain_neutron_plugin_plumgrid('PLUMgridDirector/servertimeout').with_value(params[:servertimeout])
is_expected.to contain_neutron_plugin_plumgrid('database/connection').with_value(params[:connection]) should contain_neutron_plugin_plumgrid('database/connection').with_value(params[:connection])
is_expected.to contain_neutron_plugin_plumgrid('l2gateway/vendor').with_value('<SERVICE DEFAULT>') should contain_neutron_plugin_plumgrid('l2gateway/vendor').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_plugin_plumgrid('l2gateway/sw_username').with_value('<SERVICE DEFAULT>') should contain_neutron_plugin_plumgrid('l2gateway/sw_username').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_plugin_plumgrid('l2gateway/sw_password').with_value('<SERVICE DEFAULT>').with_secret(true) should contain_neutron_plugin_plumgrid('l2gateway/sw_password').with_value('<SERVICE DEFAULT>').with_secret(true)
end end
it 'should perform default configuration of plumgrid plumlib' do it 'should perform default configuration of plumgrid plumlib' do
auth_uri = params[:auth_protocol] + "://" + params[:controller_priv_host] + ":" + "5000/" + params[:identity_version]; auth_uri = params[:auth_protocol] + "://" + params[:controller_priv_host] + ":" + "5000/" + params[:identity_version];
is_expected.to contain_neutron_plumlib_plumgrid('keystone_authtoken/auth_uri').with_value(auth_uri) should contain_neutron_plumlib_plumgrid('keystone_authtoken/auth_uri').with_value(auth_uri)
is_expected.to contain_neutron_plumlib_plumgrid('keystone_authtoken/identity_version').with_value(params[:identity_version]) should contain_neutron_plumlib_plumgrid('keystone_authtoken/identity_version').with_value(params[:identity_version])
is_expected.to contain_neutron_plumlib_plumgrid('keystone_authtoken/user_domain_name').with_value(params[:user_domain_name]) should contain_neutron_plumlib_plumgrid('keystone_authtoken/user_domain_name').with_value(params[:user_domain_name])
is_expected.to contain_neutron_plumlib_plumgrid('PLUMgridMetadata/enable_pg_metadata').with_value('True') should contain_neutron_plumlib_plumgrid('PLUMgridMetadata/enable_pg_metadata').with_value('True')
is_expected.to contain_neutron_plumlib_plumgrid('PLUMgridMetadata/metadata_mode').with_value('local') should contain_neutron_plumlib_plumgrid('PLUMgridMetadata/metadata_mode').with_value('local')
is_expected.to contain_neutron_plumlib_plumgrid('PLUMgridMetadata/nova_metadata_ip').with_value(params[:nova_metadata_ip]) should contain_neutron_plumlib_plumgrid('PLUMgridMetadata/nova_metadata_ip').with_value(params[:nova_metadata_ip])
is_expected.to contain_neutron_plumlib_plumgrid('PLUMgridMetadata/nova_metadata_host').with_value(params[:nova_metadata_host]) should contain_neutron_plumlib_plumgrid('PLUMgridMetadata/nova_metadata_host').with_value(params[:nova_metadata_host])
is_expected.to contain_neutron_plumlib_plumgrid('PLUMgridMetadata/nova_metadata_port').with_value(params[:nova_metadata_port]) should contain_neutron_plumlib_plumgrid('PLUMgridMetadata/nova_metadata_port').with_value(params[:nova_metadata_port])
is_expected.to contain_neutron_plumlib_plumgrid('PLUMgridMetadata/nova_metadata_subnet').with_value(params[:nova_metadata_subnet]) should contain_neutron_plumlib_plumgrid('PLUMgridMetadata/nova_metadata_subnet').with_value(params[:nova_metadata_subnet])
is_expected.to contain_neutron_plumlib_plumgrid('PLUMgridMetadata/metadata_proxy_shared_secret').with_value('<SERVICE DEFAULT>').with_secret(true) should contain_neutron_plumlib_plumgrid('PLUMgridMetadata/metadata_proxy_shared_secret').with_value('<SERVICE DEFAULT>').with_secret(true)
is_expected.to contain_neutron_plumlib_plumgrid('ConnectorType/connector_type').with_value('distributed') should contain_neutron_plumlib_plumgrid('ConnectorType/connector_type').with_value('distributed')
end end
end end
context 'on Debian platforms' do shared_examples 'neutron::plugins::plumgrid on Debian' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'Debian',
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } },
}))
end
it 'configures /etc/default/neutron-server' do it 'configures /etc/default/neutron-server' do
is_expected.to contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').with( should contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').with(
:path => '/etc/default/neutron-server', :path => '/etc/default/neutron-server',
:match => '^NEUTRON_PLUGIN_CONFIG=(.*)$', :match => '^NEUTRON_PLUGIN_CONFIG=(.*)$',
:line => 'NEUTRON_PLUGIN_CONFIG=/etc/neutron/plugins/plumgrid/plumgrid.ini', :line => 'NEUTRON_PLUGIN_CONFIG=/etc/neutron/plugins/plumgrid/plumgrid.ini',
:tag => 'neutron-file-line', :tag => 'neutron-file-line',
) )
is_expected.to contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_requires('Anchor[neutron::config::begin]') should contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_requires('Anchor[neutron::config::begin]')
is_expected.to contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_notifies('Anchor[neutron::config::end]') should contain_file_line('/etc/default/neutron-server:NEUTRON_PLUGIN_CONFIG').that_notifies('Anchor[neutron::config::end]')
end end
it_configures 'neutron plumgrid plugin'
end end
context 'on RedHat platforms' do shared_examples 'neutron::plugins::plumgrid on RedHat' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'RedHat',
:operatingsystemrelease => '7',
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
}))
end
it 'should create plugin symbolic link' do it 'should create plugin symbolic link' do
is_expected.to contain_file('/etc/neutron/plugin.ini').with( should contain_file('/etc/neutron/plugin.ini').with(
:ensure => 'link', :ensure => 'link',
:target => '/etc/neutron/plugins/plumgrid/plumgrid.ini', :target => '/etc/neutron/plugins/plumgrid/plumgrid.ini',
:tag => 'neutron-config-file') :tag => 'neutron-config-file')
is_expected.to contain_file('/etc/neutron/plugin.ini').that_requires('Anchor[neutron::config::begin]') should contain_file('/etc/neutron/plugin.ini').that_requires('Anchor[neutron::config::begin]')
is_expected.to contain_file('/etc/neutron/plugin.ini').that_notifies('Anchor[neutron::config::end]') should contain_file('/etc/neutron/plugin.ini').that_notifies('Anchor[neutron::config::end]')
end end
it_configures 'neutron plumgrid plugin'
end end
on_supported_os({
:supported_os => OSDefaults.get_supported_os
}).each do |os,facts|
context "on #{os}" do
let (:facts) do
facts.merge!(OSDefaults.get_facts())
end
it_behaves_like 'neutron plumgrid plugin'
it_behaves_like "neutron::plugins::plumgrid on #{facts[:osfamily]}"
end
end
end end

View File

@ -1,8 +1,7 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::policy' do describe 'neutron::policy' do
shared_examples 'neutron policies' do
shared_examples_for 'neutron policies' do
let :params do let :params do
{ {
:policy_path => '/etc/neutron/policy.json', :policy_path => '/etc/neutron/policy.json',
@ -16,13 +15,13 @@ describe 'neutron::policy' do
end end
it 'set up the policies' do it 'set up the policies' do
is_expected.to contain_openstacklib__policy__base('context_is_admin').with({ should contain_openstacklib__policy__base('context_is_admin').with({
:key => 'context_is_admin', :key => 'context_is_admin',
:value => 'foo:bar', :value => 'foo:bar',
:file_user => 'root', :file_user => 'root',
:file_group => 'neutron', :file_group => 'neutron',
}) })
is_expected.to contain_oslo__policy('neutron_config').with( should contain_oslo__policy('neutron_config').with(
:policy_file => '/etc/neutron/policy.json', :policy_file => '/etc/neutron/policy.json',
) )
end end
@ -36,7 +35,7 @@ describe 'neutron::policy' do
facts.merge!(OSDefaults.get_facts()) facts.merge!(OSDefaults.get_facts())
end end
it_configures 'neutron policies' it_behaves_like 'neutron policies'
end end
end end
end end

View File

@ -1,62 +1,71 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::quota' do describe 'neutron::quota' do
let :params do let :params do
{} {}
end end
let :default_params do let :default_params do
{ :quota_firewall_rule => -1, {
:quota_network_gateway => 5, :quota_firewall_rule => -1,
:quota_packet_filter => 100 } :quota_network_gateway => 5,
end :quota_packet_filter => 100
let :facts do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
} }
end end
shared_examples_for 'neutron quota' do shared_examples 'neutron::quota test' do
let :params_hash do let :params_hash do
default_params.merge(params) default_params.merge(params)
end end
it 'configures quota in neutron.conf' do it 'configures quota in neutron.conf' do
params_hash.each_pair do |config,value| params_hash.each_pair do |config,value|
is_expected.to contain_neutron_config("quotas/#{config}").with_value( value ) should contain_neutron_config("quotas/#{config}").with_value( value )
end end
end end
end end
context 'with default parameters' do shared_examples 'neutron::quota' do
it_configures 'neutron quota' context 'with default' do
end it_behaves_like 'neutron::quota test'
context 'with provided parameters' do
before do
params.merge!({
:quota_network => 20,
:quota_subnet => 20,
:quota_port => 100,
:quota_router => 20,
:quota_floatingip => 100,
:quota_security_group => 20,
:quota_security_group_rule => 200,
:quota_firewall => 1,
:quota_firewall_policy => 1,
:quota_firewall_rule => -1,
:quota_healthmonitor => -1,
:quota_member => -1,
:quota_network_gateway => 5,
:quota_packet_filter => 100,
:quota_loadbalancer => 10,
:quota_pool => 10,
:quota_vip => 10
})
end end
it_configures 'neutron quota' context 'with provided parameters' do
before do
params.merge!({
:quota_network => 20,
:quota_subnet => 20,
:quota_port => 100,
:quota_router => 20,
:quota_floatingip => 100,
:quota_security_group => 20,
:quota_security_group_rule => 200,
:quota_firewall => 1,
:quota_firewall_policy => 1,
:quota_firewall_rule => -1,
:quota_healthmonitor => -1,
:quota_member => -1,
:quota_network_gateway => 5,
:quota_packet_filter => 100,
:quota_loadbalancer => 10,
:quota_pool => 10,
:quota_vip => 10
})
end
it_behaves_like 'neutron::quota test'
end
end
on_supported_os({
:supported_os => OSDefaults.get_supported_os
}).each do |os,facts|
context "on #{os}" do
let (:facts) do
facts.merge!(OSDefaults.get_facts())
end
it_behaves_like 'neutron::quota'
end
end end
end end

View File

@ -1,7 +1,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::rootwrap' do describe 'neutron::rootwrap' do
let :pre_condition do let :pre_condition do
"class { 'neutron::agents::ml2::ovs': }" "class { 'neutron::agents::ml2::ovs': }"
end end
@ -13,12 +12,12 @@ describe 'neutron::rootwrap' do
} }
end end
shared_examples_for 'neutron rootwrap' do shared_examples 'neutron rootwrap' do
it 'configures rootwrap.conf' do it 'configures rootwrap.conf' do
is_expected.to contain_neutron_rootwrap_config('xenapi/xenapi_connection_url').with_value(params[:xenapi_connection_url]); should contain_neutron_rootwrap_config('xenapi/xenapi_connection_url').with_value(params[:xenapi_connection_url]);
is_expected.to contain_neutron_rootwrap_config('xenapi/xenapi_connection_username').with_value(params[:xenapi_connection_username]); should contain_neutron_rootwrap_config('xenapi/xenapi_connection_username').with_value(params[:xenapi_connection_username]);
is_expected.to contain_neutron_rootwrap_config('xenapi/xenapi_connection_password').with_value(params[:xenapi_connection_password]); should contain_neutron_rootwrap_config('xenapi/xenapi_connection_password').with_value(params[:xenapi_connection_password]);
end end
end end
@ -33,7 +32,7 @@ describe 'neutron::rootwrap' do
})) }))
end end
it_configures 'neutron rootwrap' it_behaves_like 'neutron rootwrap'
end end
end end
end end

View File

@ -16,125 +16,98 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::server::notifications' do describe 'neutron::server::notifications' do
let :params do
{
:notify_nova_on_port_status_changes => true,
:notify_nova_on_port_data_changes => true,
:auth_type => 'password',
:username => 'nova',
:password => 'secrete',
:tenant_name => 'services',
:project_domain_id => 'default',
:project_domain_name => 'Default',
:project_name => 'services',
:user_domain_id => 'default',
:user_domain_name => 'Default',
:auth_url => 'http://127.0.0.1:5000',
}
end
let :params do shared_examples 'neutron server notifications' do
{ it 'configure neutron.conf' do
:notify_nova_on_port_status_changes => true, should contain_neutron_config('DEFAULT/notify_nova_on_port_status_changes').with_value(true)
:notify_nova_on_port_data_changes => true, should contain_neutron_config('DEFAULT/notify_nova_on_port_data_changes').with_value(true)
:auth_type => 'password', should contain_neutron_config('DEFAULT/send_events_interval').with_value('<SERVICE DEFAULT>')
:username => 'nova', should contain_neutron_config('nova/auth_type').with_value('password')
:password => 'secrete', should contain_neutron_config('nova/auth_url').with_value('http://127.0.0.1:5000')
:tenant_name => 'services', should contain_neutron_config('nova/username').with_value('nova')
:project_domain_id => 'default', should contain_neutron_config('nova/password').with_value('secrete')
:project_domain_name => 'Default', should contain_neutron_config('nova/password').with_secret( true )
:project_name => 'services', should contain_neutron_config('nova/tenant_name').with_value('services')
:user_domain_id => 'default', should contain_neutron_config('nova/region_name').with_value('<SERVICE DEFAULT>')
:user_domain_name => 'Default', should contain_neutron_config('nova/project_domain_id').with_value('default')
:auth_url => 'http://127.0.0.1:5000', should contain_neutron_config('nova/project_domain_name').with_value('Default')
} should contain_neutron_config('nova/user_domain_id').with_value('default')
should contain_neutron_config('nova/user_domain_name').with_value('Default')
should contain_neutron_config('nova/endpoint_type').with_value('<SERVICE DEFAULT>')
end end
let :test_facts do context 'when overriding parameters' do
{ :operatingsystem => 'default', before :each do
:operatingsystemrelease => 'default' params.merge!(
} :notify_nova_on_port_status_changes => false,
:notify_nova_on_port_data_changes => false,
:send_events_interval => '10',
:auth_url => 'http://keystone:5000/v2.0',
:auth_type => 'v2password',
:username => 'joe',
:region_name => 'MyRegion',
:tenant_id => 'UUID2',
:project_domain_id => 'default_1',
:project_domain_name => 'Default_2',
:user_domain_id => 'default_3',
:user_domain_name => 'Default_4',
:endpoint_type => 'internal'
)
end
it 'should configure neutron server with overrided parameters' do
should contain_neutron_config('DEFAULT/notify_nova_on_port_status_changes').with_value(false)
should contain_neutron_config('DEFAULT/notify_nova_on_port_data_changes').with_value(false)
should contain_neutron_config('DEFAULT/send_events_interval').with_value('10')
should contain_neutron_config('nova/auth_url').with_value('http://keystone:5000/v2.0')
should contain_neutron_config('nova/auth_type').with_value('v2password')
should contain_neutron_config('nova/username').with_value('joe')
should contain_neutron_config('nova/password').with_value('secrete')
should contain_neutron_config('nova/password').with_secret( true )
should contain_neutron_config('nova/region_name').with_value('MyRegion')
should contain_neutron_config('nova/tenant_id').with_value('UUID2')
should contain_neutron_config('nova/project_domain_id').with_value('default_1')
should contain_neutron_config('nova/project_domain_name').with_value('Default_2')
should contain_neutron_config('nova/user_domain_id').with_value('default_3')
should contain_neutron_config('nova/user_domain_name').with_value('Default_4')
should contain_neutron_config('nova/endpoint_type').with_value('internal')
end
end end
shared_examples_for 'neutron server notifications' do context 'when no tenant_id and tenant_name specified' do
before :each do
it 'configure neutron.conf' do params.merge!({ :tenant_name => false })
is_expected.to contain_neutron_config('DEFAULT/notify_nova_on_port_status_changes').with_value(true) end
is_expected.to contain_neutron_config('DEFAULT/notify_nova_on_port_data_changes').with_value(true)
is_expected.to contain_neutron_config('DEFAULT/send_events_interval').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('nova/auth_type').with_value('password')
is_expected.to contain_neutron_config('nova/auth_url').with_value('http://127.0.0.1:5000')
is_expected.to contain_neutron_config('nova/username').with_value('nova')
is_expected.to contain_neutron_config('nova/password').with_value('secrete')
is_expected.to contain_neutron_config('nova/password').with_secret( true )
is_expected.to contain_neutron_config('nova/tenant_name').with_value('services')
is_expected.to contain_neutron_config('nova/region_name').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('nova/project_domain_id').with_value('default')
is_expected.to contain_neutron_config('nova/project_domain_name').with_value('Default')
is_expected.to contain_neutron_config('nova/user_domain_id').with_value('default')
is_expected.to contain_neutron_config('nova/user_domain_name').with_value('Default')
is_expected.to contain_neutron_config('nova/endpoint_type').with_value('<SERVICE DEFAULT>')
end
context 'when overriding parameters' do
before :each do
params.merge!(
:notify_nova_on_port_status_changes => false,
:notify_nova_on_port_data_changes => false,
:send_events_interval => '10',
:auth_url =>
'http://keystone:5000/v2.0',
:auth_type => 'v2password',
:username => 'joe',
:region_name => 'MyRegion',
:tenant_id => 'UUID2',
:project_domain_id => 'default_1',
:project_domain_name => 'Default_2',
:user_domain_id => 'default_3',
:user_domain_name => 'Default_4',
:endpoint_type => 'internal'
)
end
it 'should configure neutron server with overrided parameters' do
is_expected.to contain_neutron_config('DEFAULT/notify_nova_on_port_status_changes').with_value(false)
is_expected.to contain_neutron_config('DEFAULT/notify_nova_on_port_data_changes').with_value(false)
is_expected.to contain_neutron_config('DEFAULT/send_events_interval').with_value('10')
is_expected.to contain_neutron_config('nova/auth_url').with_value('http://keystone:5000/v2.0')
is_expected.to contain_neutron_config('nova/auth_type').with_value('v2password')
is_expected.to contain_neutron_config('nova/username').with_value('joe')
is_expected.to contain_neutron_config('nova/password').with_value('secrete')
is_expected.to contain_neutron_config('nova/password').with_secret( true )
is_expected.to contain_neutron_config('nova/region_name').with_value('MyRegion')
is_expected.to contain_neutron_config('nova/tenant_id').with_value('UUID2')
is_expected.to contain_neutron_config('nova/project_domain_id').with_value('default_1')
is_expected.to contain_neutron_config('nova/project_domain_name').with_value('Default_2')
is_expected.to contain_neutron_config('nova/user_domain_id').with_value('default_3')
is_expected.to contain_neutron_config('nova/user_domain_name').with_value('Default_4')
is_expected.to contain_neutron_config('nova/endpoint_type').with_value('internal')
end
end
context 'when no tenant_id and tenant_name specified' do
before :each do
params.merge!({ :tenant_name => false })
end
it_raises 'a Puppet::Error', /You must provide either tenant_name or tenant_id./
end
it { should raise_error(Puppet::Error, /You must provide either tenant_name or tenant_id./) }
end end
end
context 'on Debian platforms' do on_supported_os({
let :facts do :supported_os => OSDefaults.get_supported_os
@default_facts.merge(test_facts.merge({ }).each do |os,facts|
:osfamily => 'Debian' context "on #{os}" do
})) let (:facts) do
end facts.merge!(OSDefaults.get_facts())
end
let :platform_params do it_behaves_like 'neutron server notifications'
{}
end
it_configures 'neutron server notifications'
end end
end
context 'on RedHat platforms' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'RedHat',
:operatingsystemrelease => '7'
}))
end
let :platform_params do
{}
end
it_configures 'neutron server notifications'
end
end end

View File

@ -16,99 +16,75 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::server::placement' do describe 'neutron::server::placement' do
let :params do
{
:auth_type => 'password',
:username => 'nova',
:password => 'secrete',
:project_domain_id => 'default',
:project_domain_name => 'Default',
:project_name => 'services',
:user_domain_id => 'default',
:user_domain_name => 'Default',
:auth_url => 'http://127.0.0.1:5000',
}
end
let :params do shared_examples 'neutron server placement' do
{ it 'configure neutron.conf' do
:auth_type => 'password', should contain_neutron_config('placement/auth_type').with_value('password')
:username => 'nova', should contain_neutron_config('placement/auth_url').with_value('http://127.0.0.1:5000')
:password => 'secrete', should contain_neutron_config('placement/username').with_value('nova')
:project_domain_id => 'default', should contain_neutron_config('placement/password').with_value('secrete')
:project_domain_name => 'Default', should contain_neutron_config('placement/password').with_secret( true )
:project_name => 'services', should contain_neutron_config('placement/region_name').with_value('<SERVICE DEFAULT>')
:user_domain_id => 'default', should contain_neutron_config('placement/project_domain_id').with_value('default')
:user_domain_name => 'Default', should contain_neutron_config('placement/project_domain_name').with_value('Default')
:auth_url => 'http://127.0.0.1:5000', should contain_neutron_config('placement/user_domain_id').with_value('default')
} should contain_neutron_config('placement/user_domain_name').with_value('Default')
should contain_neutron_config('placement/endpoint_type').with_value('<SERVICE DEFAULT>')
end end
let :test_facts do context 'when overriding parameters' do
{ :operatingsystem => 'default', before :each do
:operatingsystemrelease => 'default' params.merge!(
} :auth_url => 'http://keystone:5000/v2.0',
:auth_type => 'v2password',
:username => 'joe',
:region_name => 'MyRegion',
:project_domain_id => 'default_1',
:project_domain_name => 'Default_2',
:user_domain_id => 'default_3',
:user_domain_name => 'Default_4',
:endpoint_type => 'internal'
)
end
it 'should configure neutron server with overrided parameters' do
should contain_neutron_config('placement/auth_url').with_value('http://keystone:5000/v2.0')
should contain_neutron_config('placement/auth_type').with_value('v2password')
should contain_neutron_config('placement/username').with_value('joe')
should contain_neutron_config('placement/password').with_value('secrete')
should contain_neutron_config('placement/password').with_secret( true )
should contain_neutron_config('placement/region_name').with_value('MyRegion')
should contain_neutron_config('placement/project_domain_id').with_value('default_1')
should contain_neutron_config('placement/project_domain_name').with_value('Default_2')
should contain_neutron_config('placement/user_domain_id').with_value('default_3')
should contain_neutron_config('placement/user_domain_name').with_value('Default_4')
should contain_neutron_config('placement/endpoint_type').with_value('internal')
end
end end
end
shared_examples_for 'neutron server placement' do on_supported_os({
:supported_os => OSDefaults.get_supported_os
}).each do |os,facts|
context "on #{os}" do
let (:facts) do
facts.merge!(OSDefaults.get_facts())
end
it 'configure neutron.conf' do it_behaves_like 'neutron server placement'
is_expected.to contain_neutron_config('placement/auth_type').with_value('password')
is_expected.to contain_neutron_config('placement/auth_url').with_value('http://127.0.0.1:5000')
is_expected.to contain_neutron_config('placement/username').with_value('nova')
is_expected.to contain_neutron_config('placement/password').with_value('secrete')
is_expected.to contain_neutron_config('placement/password').with_secret( true )
is_expected.to contain_neutron_config('placement/region_name').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('placement/project_domain_id').with_value('default')
is_expected.to contain_neutron_config('placement/project_domain_name').with_value('Default')
is_expected.to contain_neutron_config('placement/user_domain_id').with_value('default')
is_expected.to contain_neutron_config('placement/user_domain_name').with_value('Default')
is_expected.to contain_neutron_config('placement/endpoint_type').with_value('<SERVICE DEFAULT>')
end
context 'when overriding parameters' do
before :each do
params.merge!(
:auth_url => 'http://keystone:5000/v2.0',
:auth_type => 'v2password',
:username => 'joe',
:region_name => 'MyRegion',
:project_domain_id => 'default_1',
:project_domain_name => 'Default_2',
:user_domain_id => 'default_3',
:user_domain_name => 'Default_4',
:endpoint_type => 'internal'
)
end
it 'should configure neutron server with overrided parameters' do
is_expected.to contain_neutron_config('placement/auth_url').with_value('http://keystone:5000/v2.0')
is_expected.to contain_neutron_config('placement/auth_type').with_value('v2password')
is_expected.to contain_neutron_config('placement/username').with_value('joe')
is_expected.to contain_neutron_config('placement/password').with_value('secrete')
is_expected.to contain_neutron_config('placement/password').with_secret( true )
is_expected.to contain_neutron_config('placement/region_name').with_value('MyRegion')
is_expected.to contain_neutron_config('placement/project_domain_id').with_value('default_1')
is_expected.to contain_neutron_config('placement/project_domain_name').with_value('Default_2')
is_expected.to contain_neutron_config('placement/user_domain_id').with_value('default_3')
is_expected.to contain_neutron_config('placement/user_domain_name').with_value('Default_4')
is_expected.to contain_neutron_config('placement/endpoint_type').with_value('internal')
end
end
end end
context 'on Debian platforms' do end
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'Debian'
}))
end
let :platform_params do
{}
end
it_configures 'neutron server placement'
end
context 'on RedHat platforms' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'RedHat',
:operatingsystemrelease => '7'
}))
end
let :platform_params do
{}
end
it_configures 'neutron server placement'
end
end end

View File

@ -1,7 +1,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::server' do describe 'neutron::server' do
let :pre_condition do let :pre_condition do
"class { 'neutron': } "class { 'neutron': }
class { '::neutron::keystone::authtoken': class { '::neutron::keystone::authtoken':
@ -14,81 +13,77 @@ describe 'neutron::server' do
end end
let :default_params do let :default_params do
{ :package_ensure => 'present', {
:enabled => true, :package_ensure => 'present',
:auth_strategy => 'keystone', :enabled => true,
:database_connection => 'sqlite:////var/lib/neutron/ovs.sqlite', :auth_strategy => 'keystone',
:database_max_retries => 10, :database_connection => 'sqlite:////var/lib/neutron/ovs.sqlite',
:database_idle_timeout => 3600, :database_max_retries => 10,
:database_retry_interval => 10, :database_idle_timeout => 3600,
:database_min_pool_size => 1, :database_retry_interval => 10,
:database_max_pool_size => 10, :database_min_pool_size => 1,
:database_max_overflow => 20, :database_max_pool_size => 10,
:sync_db => false, :database_max_overflow => 20,
:router_scheduler_driver => 'neutron.scheduler.l3_agent_scheduler.ChanceScheduler', :sync_db => false,
:l3_ha => false, :router_scheduler_driver => 'neutron.scheduler.l3_agent_scheduler.ChanceScheduler',
:max_l3_agents_per_router => 3, :l3_ha => false,
:max_l3_agents_per_router => 3,
} }
end end
let :test_facts do shared_examples 'a neutron server' do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
}
end
shared_examples_for 'a neutron server' do
let :p do let :p do
default_params.merge(params) default_params.merge(params)
end end
it { is_expected.to contain_class('neutron::db') } it { should contain_class('neutron::db') }
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it { is_expected.to contain_class('neutron::policy') } it { should contain_class('neutron::policy') }
it 'installs neutron server package' do it 'installs neutron server package' do
if platform_params.has_key?(:server_package) if platform_params.has_key?(:server_package)
is_expected.to contain_package('neutron-server').with( should contain_package('neutron-server').with(
:name => platform_params[:server_package], :name => platform_params[:server_package],
:ensure => p[:package_ensure], :ensure => p[:package_ensure],
:tag => ['openstack', 'neutron-package'], :tag => ['openstack', 'neutron-package'],
) )
is_expected.to contain_package('neutron-server').that_requires('Anchor[neutron::install::begin]') should contain_package('neutron-server').that_requires('Anchor[neutron::install::begin]')
is_expected.to contain_package('neutron-server').that_notifies('Anchor[neutron::install::end]') should contain_package('neutron-server').that_notifies('Anchor[neutron::install::end]')
else else
is_expected.to contain_package('neutron').that_requires('Anchor[neutron::install::begin]') should contain_package('neutron').that_requires('Anchor[neutron::install::begin]')
is_expected.to contain_package('neutron').that_notifies('Anchor[neutron::install::end]') should contain_package('neutron').that_notifies('Anchor[neutron::install::end]')
end end
end end
it 'configures neutron server service' do it 'configures neutron server service' do
is_expected.to contain_service('neutron-server').with( should contain_service('neutron-server').with(
:name => platform_params[:server_service], :name => platform_params[:server_service],
:enable => true, :enable => true,
:ensure => 'running', :ensure => 'running',
:tag => ['neutron-service', 'neutron-db-sync-service', 'neutron-server-eventlet'], :tag => ['neutron-service', 'neutron-db-sync-service', 'neutron-server-eventlet'],
) )
is_expected.to contain_service('neutron-server').that_subscribes_to('Anchor[neutron::service::begin]') should contain_service('neutron-server').that_subscribes_to('Anchor[neutron::service::begin]')
is_expected.to contain_service('neutron-server').that_notifies('Anchor[neutron::service::end]') should contain_service('neutron-server').that_notifies('Anchor[neutron::service::end]')
is_expected.not_to contain_class('neutron::db::sync') should_not contain_class('neutron::db::sync')
is_expected.to contain_service('neutron-server').with_name('neutron-server') should contain_service('neutron-server').with_name('neutron-server')
is_expected.to contain_neutron_config('DEFAULT/api_workers').with_value(facts[:os_workers]) should contain_neutron_config('DEFAULT/api_workers').with_value(facts[:os_workers])
is_expected.to contain_neutron_config('DEFAULT/rpc_workers').with_value(facts[:os_workers]) should contain_neutron_config('DEFAULT/rpc_workers').with_value(facts[:os_workers])
is_expected.to contain_neutron_config('DEFAULT/agent_down_time').with_value('<SERVICE DEFAULT>') should contain_neutron_config('DEFAULT/agent_down_time').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('DEFAULT/enable_new_agents').with_value('<SERVICE DEFAULT>') should contain_neutron_config('DEFAULT/enable_new_agents').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('DEFAULT/router_scheduler_driver').with_value(p[:router_scheduler_driver]) should contain_neutron_config('DEFAULT/router_scheduler_driver').with_value(p[:router_scheduler_driver])
is_expected.to contain_oslo__middleware('neutron_config').with( should contain_oslo__middleware('neutron_config').with(
:enable_proxy_headers_parsing => '<SERVICE DEFAULT>', :enable_proxy_headers_parsing => '<SERVICE DEFAULT>',
) )
is_expected.to contain_neutron_config('DEFAULT/ovs_integration_bridge').with_value('<SERVICE DEFAULT>') should contain_neutron_config('DEFAULT/ovs_integration_bridge').with_value('<SERVICE DEFAULT>')
end end
context 'with manage_service as false' do context 'with manage_service as false' do
before :each do before :each do
params.merge!(:manage_service => false) params.merge!(:manage_service => false)
end end
it 'should not start/stop service' do it 'should not start/stop service' do
is_expected.to contain_service('neutron-server').without_ensure should contain_service('neutron-server').without_ensure
end end
end end
@ -96,8 +91,9 @@ describe 'neutron::server' do
before :each do before :each do
params.merge!(:router_distributed => true) params.merge!(:router_distributed => true)
end end
it 'should enable DVR for new routers' do it 'should enable DVR for new routers' do
is_expected.to contain_neutron_config('DEFAULT/router_distributed').with_value(true) should contain_neutron_config('DEFAULT/router_distributed').with_value(true)
end end
end end
@ -105,8 +101,9 @@ describe 'neutron::server' do
before :each do before :each do
params.merge!(:enable_dvr => false) params.merge!(:enable_dvr => false)
end end
it 'should disable DVR' do it 'should disable DVR' do
is_expected.to contain_neutron_config('DEFAULT/enable_dvr').with_value(false) should contain_neutron_config('DEFAULT/enable_dvr').with_value(false)
end end
end end
@ -114,10 +111,11 @@ describe 'neutron::server' do
before :each do before :each do
params.merge!(:l3_ha => true) params.merge!(:l3_ha => true)
end end
it 'should enable HA routers' do it 'should enable HA routers' do
is_expected.to contain_neutron_config('DEFAULT/l3_ha').with_value(true) should contain_neutron_config('DEFAULT/l3_ha').with_value(true)
is_expected.to contain_neutron_config('DEFAULT/max_l3_agents_per_router').with_value(3) should contain_neutron_config('DEFAULT/max_l3_agents_per_router').with_value(3)
is_expected.to contain_neutron_config('DEFAULT/l3_ha_net_cidr').with_value('<SERVICE DEFAULT>') should contain_neutron_config('DEFAULT/l3_ha_net_cidr').with_value('<SERVICE DEFAULT>')
end end
end end
@ -125,10 +123,11 @@ describe 'neutron::server' do
before :each do before :each do
params.merge!(:l3_ha => false) params.merge!(:l3_ha => false)
end end
it 'should disable HA routers' do it 'should disable HA routers' do
is_expected.to contain_neutron_config('DEFAULT/l3_ha').with_value(false) should contain_neutron_config('DEFAULT/l3_ha').with_value(false)
is_expected.to contain_neutron_config('DEFAULT/max_l3_agents_per_router').with_value(3) should contain_neutron_config('DEFAULT/max_l3_agents_per_router').with_value(3)
is_expected.to contain_neutron_config('DEFAULT/l3_ha_net_cidr').with_value('<SERVICE DEFAULT>') should contain_neutron_config('DEFAULT/l3_ha_net_cidr').with_value('<SERVICE DEFAULT>')
end end
end end
@ -137,26 +136,27 @@ describe 'neutron::server' do
params.merge!(:l3_ha => true, params.merge!(:l3_ha => true,
:max_l3_agents_per_router => 0 ) :max_l3_agents_per_router => 0 )
end end
it 'should enable HA routers' do it 'should enable HA routers' do
is_expected.to contain_neutron_config('DEFAULT/max_l3_agents_per_router').with_value(0) should contain_neutron_config('DEFAULT/max_l3_agents_per_router').with_value(0)
end end
end end
context 'with allow_automatic_l3agent_failover in neutron.conf' do context 'with allow_automatic_l3agent_failover in neutron.conf' do
it 'should configure allow_automatic_l3agent_failover' do it 'should configure allow_automatic_l3agent_failover' do
is_expected.to contain_neutron_config('DEFAULT/allow_automatic_l3agent_failover').with_value('<SERVICE DEFAULT>') should contain_neutron_config('DEFAULT/allow_automatic_l3agent_failover').with_value('<SERVICE DEFAULT>')
end end
end end
context 'with allow_automatic_dhcp_failover in neutron.conf' do context 'with allow_automatic_dhcp_failover in neutron.conf' do
it 'should configure allow_automatic_dhcp_failover' do it 'should configure allow_automatic_dhcp_failover' do
is_expected.to contain_neutron_config('DEFAULT/allow_automatic_dhcp_failover').with_value('<SERVICE DEFAULT>') should contain_neutron_config('DEFAULT/allow_automatic_dhcp_failover').with_value('<SERVICE DEFAULT>')
end end
end end
context 'with network_auto_schedule in neutron.conf' do context 'with network_auto_schedule in neutron.conf' do
it 'should configure network_auto_schedule' do it 'should configure network_auto_schedule' do
is_expected.to contain_neutron_config('DEFAULT/network_auto_schedule').with_value('<SERVICE DEFAULT>') should contain_neutron_config('DEFAULT/network_auto_schedule').with_value('<SERVICE DEFAULT>')
end end
end end
@ -165,7 +165,7 @@ describe 'neutron::server' do
params.merge!(:dhcp_load_type => 'badvalue') params.merge!(:dhcp_load_type => 'badvalue')
end end
it_raises 'a Puppet::Error', /Must pass either networks, subnets, or ports as values for dhcp_load_type/ it { should raise_error(Puppet::Error, /Must pass either networks, subnets, or ports as values for dhcp_load_type/) }
end end
context 'with multiple service providers' do context 'with multiple service providers' do
@ -176,7 +176,7 @@ describe 'neutron::server' do
end end
it 'configures neutron.conf' do it 'configures neutron.conf' do
is_expected.to contain_neutron_config( should contain_neutron_config(
'service_providers/service_provider' 'service_providers/service_provider'
).with_value(['provider1', 'provider2']) ).with_value(['provider1', 'provider2'])
end end
@ -184,35 +184,35 @@ describe 'neutron::server' do
context 'with availability zone hints set' do context 'with availability zone hints set' do
before :each do before :each do
params.merge!(:dhcp_load_type => 'networks', params.merge!( :dhcp_load_type => 'networks',
:router_scheduler_driver => 'neutron.scheduler.l3_agent_scheduler.AZLeastRoutersScheduler', :router_scheduler_driver => 'neutron.scheduler.l3_agent_scheduler.AZLeastRoutersScheduler',
:network_scheduler_driver => 'neutron.scheduler.dhcp_agent_scheduler.AZAwareWeightScheduler', :network_scheduler_driver => 'neutron.scheduler.dhcp_agent_scheduler.AZAwareWeightScheduler',
:default_availability_zones => ['zone1', 'zone2'] :default_availability_zones => ['zone1', 'zone2']
) )
end end
it 'should configure neutron server for availability zones' do it 'should configure neutron server for availability zones' do
is_expected.to contain_neutron_config('DEFAULT/default_availability_zones').with_value('zone1,zone2') should contain_neutron_config('DEFAULT/default_availability_zones').with_value('zone1,zone2')
is_expected.to contain_neutron_config('DEFAULT/router_scheduler_driver').with_value('neutron.scheduler.l3_agent_scheduler.AZLeastRoutersScheduler') should contain_neutron_config('DEFAULT/router_scheduler_driver').with_value('neutron.scheduler.l3_agent_scheduler.AZLeastRoutersScheduler')
is_expected.to contain_neutron_config('DEFAULT/network_scheduler_driver').with_value('neutron.scheduler.dhcp_agent_scheduler.AZAwareWeightScheduler') should contain_neutron_config('DEFAULT/network_scheduler_driver').with_value('neutron.scheduler.dhcp_agent_scheduler.AZAwareWeightScheduler')
is_expected.to contain_neutron_config('DEFAULT/dhcp_load_type').with_value('networks') should contain_neutron_config('DEFAULT/dhcp_load_type').with_value('networks')
end end
end end
context 'with enable_proxy_headers_parsing' do context 'with enable_proxy_headers_parsing' do
before :each do before :each do
params.merge!({:enable_proxy_headers_parsing => true }) params.merge!( :enable_proxy_headers_parsing => true )
end end
it { is_expected.to contain_oslo__middleware('neutron_config').with( it { should contain_oslo__middleware('neutron_config').with(
:enable_proxy_headers_parsing => true, :enable_proxy_headers_parsing => true,
)} )}
end end
context 'when running neutron-api in wsgi' do context 'when running neutron-api in wsgi' do
before :each do before :each do
params.merge!({ :service_name => 'httpd' }) params.merge!( :service_name => 'httpd' )
end end
let :pre_condition do let :pre_condition do
@ -224,7 +224,7 @@ describe 'neutron::server' do
end end
it 'configures neutron-api service with Apache' do it 'configures neutron-api service with Apache' do
is_expected.to contain_service('neutron-server').with( should contain_service('neutron-server').with(
:ensure => 'stopped', :ensure => 'stopped',
:name => platform_params[:server_service], :name => platform_params[:server_service],
:enable => false, :enable => false,
@ -239,7 +239,7 @@ describe 'neutron::server' do
end end
it 'configures neutron-api service with custom name' do it 'configures neutron-api service with custom name' do
is_expected.to contain_service('neutron-server').with( should contain_service('neutron-server').with(
:name => 'foobar', :name => 'foobar',
:enable => true, :enable => true,
:ensure => 'running', :ensure => 'running',
@ -253,114 +253,107 @@ describe 'neutron::server' do
params.merge!({:ovs_integration_bridge => 'br-int' }) params.merge!({:ovs_integration_bridge => 'br-int' })
end end
it { is_expected.to contain_neutron_config('DEFAULT/ovs_integration_bridge').with_value('br-int') } it { should contain_neutron_config('DEFAULT/ovs_integration_bridge').with_value('br-int') }
end end
end end
shared_examples_for 'VPNaaS and FWaaS package installation' do shared_examples 'VPNaaS and FWaaS package installation' do
before do before do
params.merge!( params.merge!(
:ensure_vpnaas_package => true, :ensure_vpnaas_package => true,
:ensure_fwaas_package => true, :ensure_fwaas_package => true,
) )
end end
it 'should install *aaS packages' do it 'should install *aaS packages' do
is_expected.to contain_package('neutron-fwaas') should contain_package('neutron-fwaas')
is_expected.to contain_package('neutron-vpnaas-agent') should contain_package('neutron-vpnaas-agent')
end end
end end
shared_examples_for 'neutron server dynamic routing debian' do shared_examples 'neutron server dynamic routing on Debian' do
before do before do
params.merge!( :ensure_dr_package => true ) params.merge!( :ensure_dr_package => true )
end end
it 'should install dynamic routing package' do it 'should install dynamic routing package' do
is_expected.to contain_package('neutron-dynamic-routing') should contain_package('neutron-dynamic-routing')
is_expected.not_to contain_package('neutron-bgp-dragent') should_not contain_package('neutron-bgp-dragent')
end end
end end
shared_examples_for 'neutron server dynamic routing redhat' do shared_examples 'neutron server dynamic routing on RedHat' do
before do before do
params.merge!( :ensure_dr_package => true ) params.merge!( :ensure_dr_package => true )
end end
it 'should install bgp dragent package' do it 'should install bgp dragent package' do
is_expected.not_to contain_package('neutron-dynamic-routing') should_not contain_package('neutron-dynamic-routing')
is_expected.to contain_package('neutron-bgp-dragent') should contain_package('neutron-bgp-dragent')
end end
end end
shared_examples_for 'neutron server lbaas debian' do shared_examples 'neutron server lbaas on Debian' do
before do before do
params.merge!( :ensure_lbaas_package => true ) params.merge!( :ensure_lbaas_package => true )
end end
it 'should install lbaas package' do it 'should install lbaas package' do
is_expected.to contain_package('neutron-lbaas') should contain_package('neutron-lbaas')
is_expected.not_to contain_package('neutron-lbaasv2-agent') should_not contain_package('neutron-lbaasv2-agent')
end end
end end
shared_examples_for 'neutron server lbaas redhat' do shared_examples 'neutron server lbaas on RedHat' do
before do before do
params.merge!( :ensure_lbaas_package => true ) params.merge!( :ensure_lbaas_package => true )
end end
it 'should install lbaasv2-agent package' do it 'should install lbaasv2-agent package' do
is_expected.not_to contain_package('neutron-lbaas') should_not contain_package('neutron-lbaas')
is_expected.to contain_package('neutron-lbaasv2-agent') should contain_package('neutron-lbaasv2-agent')
end end
end end
shared_examples_for 'a neutron server without database synchronization' do shared_examples 'a neutron server without database synchronization' do
before do before do
params.merge!( params.merge!(
:sync_db => true :sync_db => true
) )
end end
it 'includes neutron::db::sync' do it 'includes neutron::db::sync' do
is_expected.to contain_class('neutron::db::sync') should contain_class('neutron::db::sync')
end end
end end
context 'on Debian platforms' do on_supported_os({
let :facts do :supported_os => OSDefaults.get_supported_os
@default_facts.merge(test_facts.merge({ }).each do |os,facts|
:osfamily => 'Debian', context "on #{os}" do
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } }, let (:facts) do
})) facts.merge!(OSDefaults.get_facts())
end
let (:platform_params) do
case facts[:osfamily]
when 'Debian'
{
:server_package => 'neutron-server',
:server_service => 'neutron-server'
}
when 'RedHat'
{
:server_service => 'neutron-server'
}
end
end
it_behaves_like 'a neutron server'
it_behaves_like 'a neutron server without database synchronization'
it_behaves_like "neutron server dynamic routing on #{facts[:osfamily]}"
it_behaves_like "neutron server lbaas on #{facts[:osfamily]}"
end end
let :platform_params do
{ :server_package => 'neutron-server',
:server_service => 'neutron-server' }
end
it_configures 'a neutron server'
it_configures 'a neutron server without database synchronization'
it_configures 'neutron server dynamic routing debian'
it_configures 'neutron server lbaas debian'
end
context 'on RedHat platforms' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'RedHat',
:operatingsystemrelease => '7',
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
}))
end
let :platform_params do
{ :server_service => 'neutron-server' }
end
it_configures 'a neutron server'
it_configures 'a neutron server without database synchronization'
it_configures 'neutron server dynamic routing redhat'
it_configures 'neutron server lbaas redhat'
end end
end end

View File

@ -17,30 +17,29 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::services::bgpvpn' do describe 'neutron::services::bgpvpn' do
let :default_params do let :default_params do
{ :package_ensure => 'present', {
:package_ensure => 'present',
:service_providers => '<SERVICE DEFAULT>', :service_providers => '<SERVICE DEFAULT>',
:sync_db => true, :sync_db => true,
} }
end end
shared_examples_for 'neutron bgpvpn service plugin' do shared_examples 'neutron bgpvpn service plugin' do
context 'with default params' do context 'with default params' do
let :params do let :params do
default_params default_params
end end
it 'installs bgpvpn package' do it 'installs bgpvpn package' do
is_expected.to contain_package('python-networking-bgpvpn').with( should contain_package('python-networking-bgpvpn').with(
:ensure => params[:package_ensure], :ensure => params[:package_ensure],
:name => platform_params[:bgpvpn_package_name], :name => platform_params[:bgpvpn_package_name],
) )
end end
it 'runs neutron-db-sync' do it 'runs neutron-db-sync' do
is_expected.to contain_exec('bgpvpn-db-sync').with( should contain_exec('bgpvpn-db-sync').with(
:command => 'neutron-db-manage --config-file /etc/neutron/neutron.conf --subproject networking-bgpvpn upgrade head', :command => 'neutron-db-manage --config-file /etc/neutron/neutron.conf --subproject networking-bgpvpn upgrade head',
:path => '/usr/bin', :path => '/usr/bin',
:subscribe => ['Anchor[neutron::install::end]', :subscribe => ['Anchor[neutron::install::end]',
@ -61,7 +60,7 @@ describe 'neutron::services::bgpvpn' do
end end
it 'configures networking_bgpvpn.conf' do it 'configures networking_bgpvpn.conf' do
is_expected.to contain_neutron_bgpvpn_service_config( should contain_neutron_bgpvpn_service_config(
'service_providers/service_provider' 'service_providers/service_provider'
).with_value(['provider1', 'provider2']) ).with_value(['provider1', 'provider2'])
end end
@ -84,7 +83,7 @@ describe 'neutron::services::bgpvpn' do
{ :bgpvpn_package_name => 'python-networking-bgpvpn' } { :bgpvpn_package_name => 'python-networking-bgpvpn' }
end end
end end
it_configures 'neutron bgpvpn service plugin' it_behaves_like 'neutron bgpvpn service plugin'
end end
end end
end end

View File

@ -26,59 +26,44 @@ describe 'neutron::services::fwaas' do
include ::neutron::agents::l3" include ::neutron::agents::l3"
end end
let :test_facts do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
}
end
let :params do let :params do
{} {}
end end
let :default_params do let :default_params do
{ :vpnaas_agent_package => false, {
:purge_config => false, } :vpnaas_agent_package => false,
:purge_config => false,
}
end end
shared_examples_for 'neutron fwaas service plugin' do shared_examples 'neutron fwaas service plugin' do
let :params_hash do let :params_hash do
default_params.merge(params) default_params.merge(params)
end end
it 'passes purge to resource' do it 'passes purge to resource' do
is_expected.to contain_resources('neutron_fwaas_service_config').with({ should contain_resources('neutron_fwaas_service_config').with({
:purge => false :purge => false
}) })
end end
it 'configures driver in fwaas_driver.ini' do it 'configures driver in fwaas_driver.ini' do
is_expected.to contain_neutron_fwaas_service_config('fwaas/driver').with_value('<SERVICE DEFAULT>') should contain_neutron_fwaas_service_config('fwaas/driver').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_fwaas_service_config('fwaas/enabled').with_value('<SERVICE DEFAULT>') should contain_neutron_fwaas_service_config('fwaas/enabled').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_fwaas_service_config('fwaas/agent_version').with_value('<SERVICE DEFAULT>') should contain_neutron_fwaas_service_config('fwaas/agent_version').with_value('<SERVICE DEFAULT>')
end end
it 'configures driver in neutron.conf' do it 'configures driver in neutron.conf' do
is_expected.to contain_neutron_config('fwaas/driver').with_value('<SERVICE DEFAULT>') should contain_neutron_config('fwaas/driver').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('fwaas/enabled').with_value('<SERVICE DEFAULT>') should contain_neutron_config('fwaas/enabled').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('fwaas/agent_version').with_value('<SERVICE DEFAULT>') should contain_neutron_config('fwaas/agent_version').with_value('<SERVICE DEFAULT>')
end end
end end
context 'on Ubuntu platforms' do shared_examples 'neutron::services::fwaas on Ubuntu' do
let :facts do
@default_facts.merge(test_facts.merge(
{ :osfamily => 'Debian',
:operatingsystem => 'Ubuntu',
:os => { :name => 'Ubuntu', :family => 'Debian', :release => { :major => '16', :minor => '04' } },
}
))
end
it_configures 'neutron fwaas service plugin'
it 'installs neutron fwaas package' do it 'installs neutron fwaas package' do
is_expected.to contain_package('neutron-fwaas').with( should contain_package('neutron-fwaas').with(
:ensure => 'present', :ensure => 'present',
:tag => ['neutron-package', 'openstack'], :tag => ['neutron-package', 'openstack'],
:name => 'python-neutron-fwaas', :name => 'python-neutron-fwaas',
@ -86,66 +71,64 @@ describe 'neutron::services::fwaas' do
end end
end end
context 'on Debian platforms without VPNaaS' do shared_examples 'neutron::services::fwaas on Debian' do
let :facts do context 'without VPNaaS package' do
@default_facts.merge(test_facts.merge( it 'installs neutron fwaas package' do
{ :osfamily => 'Debian', should contain_package('neutron-fwaas').with(
:operatingsystem => 'Debian', :ensure => 'present',
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } }, :tag => ['neutron-package', 'openstack'],
} :name => 'python-neutron-fwaas',
)) )
end
end end
it_configures 'neutron fwaas service plugin' context 'with VPNaaS package' do
before do
params.merge!( :vpnaas_agent_package => true )
end
it 'installs neutron fwaas package' do it 'installs neutron vpnaas agent package' do
is_expected.to contain_package('neutron-fwaas').with( should contain_package('neutron-vpn-agent').with(
:ensure => 'present', :ensure => 'present',
:tag => ['neutron-package', 'openstack'], :tag => ['neutron-package', 'openstack'],
:name => 'python-neutron-fwaas', )
) end
end end
end end
context 'on Debian platforms with VPNaaS' do shared_examples 'neutron::services::fwaas on RedHat' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'Debian',
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } },
}))
end
let :params do
{ :vpnaas_agent_package => true }
end
it_configures 'neutron fwaas service plugin'
it 'installs neutron vpnaas agent package' do
is_expected.to contain_package('neutron-vpn-agent').with(
:ensure => 'present',
:tag => ['neutron-package', 'openstack'],
)
end
end
context 'on Red Hat platforms' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'RedHat',
:operatingsystemrelease => '7',
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
}))
end
it_configures 'neutron fwaas service plugin'
it 'installs neutron fwaas service package' do it 'installs neutron fwaas service package' do
is_expected.to contain_package('neutron-fwaas').with( should contain_package('neutron-fwaas').with(
:ensure => 'present', :ensure => 'present',
:name => 'openstack-neutron-fwaas', :name => 'openstack-neutron-fwaas',
) )
end end
end end
on_supported_os({
:supported_os => OSDefaults.get_supported_os
}).each do |os,facts|
context "on #{os}" do
let (:facts) do
facts.merge!(OSDefaults.get_facts())
end
let (:platform_params) do
{}
end
it_behaves_like 'neutron fwaas service plugin'
case facts[:operatingsystem]
when 'Debian'
it_behaves_like 'neutron::services::fwaas on Debian'
when 'Ubuntu'
it_behaves_like 'neutron::services::fwaas on Ubuntu'
end
if facts[:osfamily] == 'RedHat'
it_behaves_like 'neutron::services::fwaas on RedHat'
end
end
end
end end

View File

@ -17,7 +17,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::services::l2gw' do describe 'neutron::services::l2gw' do
let :pre_condition do let :pre_condition do
"class { '::neutron::keystone::authtoken': "class { '::neutron::keystone::authtoken':
password => 'passw0rd', password => 'passw0rd',
@ -36,58 +35,49 @@ describe 'neutron::services::l2gw' do
{ :default_interface_name => 'foo'} { :default_interface_name => 'foo'}
end end
let :test_facts do shared_examples 'neutron l2gw service plugin' do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
}
end
shared_examples_for 'neutron l2gw service plugin' do
context 'with default params' do context 'with default params' do
let :p do let :p do
default_params.merge(params) default_params.merge(params)
end end
it 'passes purge to resource' do it 'passes purge to resource' do
is_expected.to contain_resources('neutron_l2gw_service_config').with({ should contain_resources('neutron_l2gw_service_config').with({
:purge => false :purge => false
}) })
end end
it 'should contain python-networking-l2gw package' do it 'should contain python-networking-l2gw package' do
is_expected.to contain_package('python-networking-l2gw').with({ :ensure => 'present' }) should contain_package('python-networking-l2gw').with({ :ensure => 'present' })
end end
it 'services_provider with default parameter' do it 'services_provider with default parameter' do
is_expected.to contain_neutron_l2gw_service_config('service_providers/service_provider').with_value('<SERVICE DEFAULT>') should contain_neutron_l2gw_service_config('service_providers/service_provider').with_value('<SERVICE DEFAULT>')
end end
it 'configures l2gw_plugin.ini' do it 'configures l2gw_plugin.ini' do
is_expected.to contain_neutron_l2gw_service_config('DEFAULT/default_interface_name').with_value(p[:default_interface_name]) should contain_neutron_l2gw_service_config('DEFAULT/default_interface_name').with_value(p[:default_interface_name])
is_expected.to contain_neutron_l2gw_service_config('DEFAULT/default_device_name').with_value('<SERVICE DEFAULT>') should contain_neutron_l2gw_service_config('DEFAULT/default_device_name').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_l2gw_service_config('DEFAULT/quota_l2_gateway').with_value('<SERVICE DEFAULT>') should contain_neutron_l2gw_service_config('DEFAULT/quota_l2_gateway').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_l2gw_service_config('DEFAULT/periodic_monitoring_interval').with_value('<SERVICE DEFAULT>') should contain_neutron_l2gw_service_config('DEFAULT/periodic_monitoring_interval').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_l2gw_service_config('service_providers/service_provider').with_value('<SERVICE DEFAULT>') should contain_neutron_l2gw_service_config('service_providers/service_provider').with_value('<SERVICE DEFAULT>')
end end
end end
context 'with multiple service providers' do context 'with multiple service providers' do
before :each do before :each do
params.merge!( params.merge!( :service_providers => ['provider1', 'provider2'],
{ :service_providers => ['provider1', 'provider2'], :sync_db => true )
:sync_db => true,
}
)
end end
it 'configures multiple service providers in l2gw_plugin.ini' do it 'configures multiple service providers in l2gw_plugin.ini' do
is_expected.to contain_neutron_l2gw_service_config( should contain_neutron_l2gw_service_config(
'service_providers/service_provider' 'service_providers/service_provider'
).with_value(['provider1', 'provider2']) ).with_value(['provider1', 'provider2'])
end end
it 'runs neutron-db-sync' do it 'runs neutron-db-sync' do
is_expected.to contain_exec('l2gw-db-sync').with( should contain_exec('l2gw-db-sync').with(
:command => 'neutron-db-manage --config-file /etc/neutron/neutron.conf --subproject networking-l2gw upgrade head', :command => 'neutron-db-manage --config-file /etc/neutron/neutron.conf --subproject networking-l2gw upgrade head',
:path => '/usr/bin', :path => '/usr/bin',
:subscribe => ['Anchor[neutron::install::end]', :subscribe => ['Anchor[neutron::install::end]',
@ -118,7 +108,7 @@ describe 'neutron::services::l2gw' do
end end
end end
it_configures 'neutron l2gw service plugin' it_behaves_like 'neutron l2gw service plugin'
end end
end end
end end

View File

@ -21,9 +21,9 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::services::lbaas::haproxy' do describe 'neutron::services::lbaas::haproxy' do
let :default_params do let :default_params do
{ :interface_driver => '<SERVICE DEFAULT>', {
:interface_driver => '<SERVICE DEFAULT>',
:periodic_interval => '<SERVICE DEFAULT>', :periodic_interval => '<SERVICE DEFAULT>',
:loadbalancer_state_path => '<SERVICE DEFAULT>', :loadbalancer_state_path => '<SERVICE DEFAULT>',
:user_group => '<SERVICE DEFAULT>', :user_group => '<SERVICE DEFAULT>',
@ -31,33 +31,48 @@ describe 'neutron::services::lbaas::haproxy' do
:jinja_config_template => '<SERVICE DEFAULT>'} :jinja_config_template => '<SERVICE DEFAULT>'}
end end
context 'with default params' do shared_examples 'neutron::services::lbaas::haproxy' do
let :params do context 'with default params' do
default_params let :params do
default_params
end
it 'configures haproxy service plugin' do
should contain_neutron_config('haproxy/interface_driver').with_value('<SERVICE DEFAULT>')
should contain_neutron_config('haproxy/periodic_interval').with_value('<SERVICE DEFAULT>')
should contain_neutron_config('haproxy/loadbalancer_state_path').with_value('<SERVICE DEFAULT>')
should contain_neutron_config('haproxy/user_group').with_value('<SERVICE DEFAULT>')
should contain_neutron_config('haproxy/send_gratuitous_arp').with_value('<SERVICE DEFAULT>')
should contain_neutron_config('haproxy/jinja_config_template').with_value('<SERVICE DEFAULT>')
end
end end
it 'configures haproxy service plugin' do context 'when interface driver and gratuitous arp is set' do
is_expected.to contain_neutron_config('haproxy/interface_driver').with_value('<SERVICE DEFAULT>') let :params do
is_expected.to contain_neutron_config('haproxy/periodic_interval').with_value('<SERVICE DEFAULT>') default_params.merge(
is_expected.to contain_neutron_config('haproxy/loadbalancer_state_path').with_value('<SERVICE DEFAULT>') {
is_expected.to contain_neutron_config('haproxy/user_group').with_value('<SERVICE DEFAULT>') :interface_driver => 'neutron.agent.linux.interface.OVSInterfaceDriver',
is_expected.to contain_neutron_config('haproxy/send_gratuitous_arp').with_value('<SERVICE DEFAULT>') :send_gratuitous_arp => true,
is_expected.to contain_neutron_config('haproxy/jinja_config_template').with_value('<SERVICE DEFAULT>') }
)
end
it 'configures haproxy service plugin custom parameters' do
should contain_neutron_config('haproxy/interface_driver').with_value('neutron.agent.linux.interface.OVSInterfaceDriver')
should contain_neutron_config('haproxy/send_gratuitous_arp').with_value(true)
end
end end
end end
context 'when interface driver and gratuitous arp is set' do on_supported_os({
let :params do :supported_os => OSDefaults.get_supported_os
default_params.merge( }).each do |os,facts|
{ :interface_driver => 'neutron.agent.linux.interface.OVSInterfaceDriver', context "on #{os}" do
:send_gratuitous_arp => true, let (:facts) do
} facts.merge!(OSDefaults.get_facts())
) end
end
it 'configures haproxy service plugin custom parameters' do it_behaves_like 'neutron::services::lbaas::haproxy'
is_expected.to contain_neutron_config('haproxy/interface_driver').with_value('neutron.agent.linux.interface.OVSInterfaceDriver')
is_expected.to contain_neutron_config('haproxy/send_gratuitous_arp').with_value(true)
end end
end end
end end

View File

@ -21,9 +21,9 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::services::lbaas::octavia' do describe 'neutron::services::lbaas::octavia' do
let :default_params do let :default_params do
{ :base_url => 'http://127.0.0.1:9876', {
:base_url => 'http://127.0.0.1:9876',
:request_poll_interval => '<SERVICE DEFAULT>', :request_poll_interval => '<SERVICE DEFAULT>',
:request_poll_timeout => '<SERVICE DEFAULT>', :request_poll_timeout => '<SERVICE DEFAULT>',
:allocates_vip => '<SERVICE DEFAULT>', :allocates_vip => '<SERVICE DEFAULT>',
@ -38,98 +38,115 @@ describe 'neutron::services::lbaas::octavia' do
:insecure => '<SERVICE DEFAULT>' } :insecure => '<SERVICE DEFAULT>' }
end end
context 'with default params' do shared_examples 'neutron::services::lbaas::octavia' do
let :params do context 'with default params' do
default_params let :params do
default_params
end
it 'configures octavia service plugin' do
should contain_neutron_config('octavia/base_url').with_value('http://127.0.0.1:9876')
should contain_neutron_config('octavia/request_poll_interval').with_value('<SERVICE DEFAULT>')
should contain_neutron_config('octavia/request_poll_timeout').with_value('<SERVICE DEFAULT>')
should contain_neutron_config('octavia/allocates_vip').with_value('<SERVICE DEFAULT>')
end
it 'configures octavia service authentication' do
should contain_neutron_config('service_auth/auth_url').with_value('<SERVICE DEFAULT>')
should contain_neutron_config('service_auth/admin_user').with_value('<SERVICE DEFAULT>')
should contain_neutron_config('service_auth/admin_tenant_name').with_value('services')
should contain_neutron_config('service_auth/admin_password').with_value('<SERVICE DEFAULT>')
should contain_neutron_config('service_auth/admin_user_domain').with_value('<SERVICE DEFAULT>')
should contain_neutron_config('service_auth/admin_project_domain').with_value('<SERVICE DEFAULT>')
should contain_neutron_config('service_auth/auth_version').with_value('<SERVICE DEFAULT>')
should contain_neutron_config('service_auth/endpoint_type').with_value('<SERVICE DEFAULT>')
should contain_neutron_config('service_auth/insecure').with_value('<SERVICE DEFAULT>')
end
end end
it 'configures octavia service plugin' do context 'when base_url is set' do
is_expected.to contain_neutron_config('octavia/base_url').with_value('http://127.0.0.1:9876') let :params do
is_expected.to contain_neutron_config('octavia/request_poll_interval').with_value('<SERVICE DEFAULT>') default_params.merge(
is_expected.to contain_neutron_config('octavia/request_poll_timeout').with_value('<SERVICE DEFAULT>') {
is_expected.to contain_neutron_config('octavia/allocates_vip').with_value('<SERVICE DEFAULT>') :base_url => 'http://octavia.example.org:9876',
:request_poll_interval => '3',
:request_poll_timeout => '100',
:allocates_vip => 'false'
}
)
end
it 'configures octavia service plugin custom parameters' do
should contain_neutron_config('octavia/base_url').with_value('http://octavia.example.org:9876')
should contain_neutron_config('octavia/request_poll_interval').with_value('3')
should contain_neutron_config('octavia/request_poll_timeout').with_value('100')
should contain_neutron_config('octavia/allocates_vip').with_value('false')
end
it 'configures octavia service authentication' do
should contain_neutron_config('service_auth/auth_url').with_value('<SERVICE DEFAULT>')
should contain_neutron_config('service_auth/admin_user').with_value('<SERVICE DEFAULT>')
should contain_neutron_config('service_auth/admin_tenant_name').with_value('services')
should contain_neutron_config('service_auth/admin_password').with_value('<SERVICE DEFAULT>')
should contain_neutron_config('service_auth/admin_user_domain').with_value('<SERVICE DEFAULT>')
should contain_neutron_config('service_auth/admin_project_domain').with_value('<SERVICE DEFAULT>')
should contain_neutron_config('service_auth/auth_version').with_value('<SERVICE DEFAULT>')
should contain_neutron_config('service_auth/endpoint_type').with_value('<SERVICE DEFAULT>')
should contain_neutron_config('service_auth/insecure').with_value('<SERVICE DEFAULT>')
end
end end
it 'configures octavia service authentication' do context 'when base_url and service credentials are set' do
is_expected.to contain_neutron_config('service_auth/auth_url').with_value('<SERVICE DEFAULT>') let :params do
is_expected.to contain_neutron_config('service_auth/admin_user').with_value('<SERVICE DEFAULT>') default_params.merge(
is_expected.to contain_neutron_config('service_auth/admin_tenant_name').with_value('services') {
is_expected.to contain_neutron_config('service_auth/admin_password').with_value('<SERVICE DEFAULT>') :base_url => 'http://octavia.example.org:9876',
is_expected.to contain_neutron_config('service_auth/admin_user_domain').with_value('<SERVICE DEFAULT>') :request_poll_interval => '3',
is_expected.to contain_neutron_config('service_auth/admin_project_domain').with_value('<SERVICE DEFAULT>') :request_poll_timeout => '100',
is_expected.to contain_neutron_config('service_auth/auth_version').with_value('<SERVICE DEFAULT>') :allocates_vip => 'false',
is_expected.to contain_neutron_config('service_auth/endpoint_type').with_value('<SERVICE DEFAULT>') :auth_url => 'https://auth.openstack.cloud/v3',
is_expected.to contain_neutron_config('service_auth/insecure').with_value('<SERVICE DEFAULT>') :admin_user => 'admin',
:admin_tenant_name => 'service-tenant',
:admin_password => 'secure123',
:admin_user_domain => 'DefaultUsers',
:admin_project_domain => 'DefaultProjects',
:auth_version => '3',
:endpoint_type => 'public',
:insecure => 'false'
}
)
end
it 'configures octavia service plugin custom parameters' do
should contain_neutron_config('octavia/base_url').with_value('http://octavia.example.org:9876')
should contain_neutron_config('octavia/request_poll_interval').with_value('3')
should contain_neutron_config('octavia/request_poll_timeout').with_value('100')
should contain_neutron_config('octavia/allocates_vip').with_value('false')
end
it 'configures octavia service authentication' do
should contain_neutron_config('service_auth/auth_url').with_value('https://auth.openstack.cloud/v3')
should contain_neutron_config('service_auth/admin_user').with_value('admin')
should contain_neutron_config('service_auth/admin_tenant_name').with_value('service-tenant')
should contain_neutron_config('service_auth/admin_password').with_value('secure123')
should contain_neutron_config('service_auth/admin_user_domain').with_value('DefaultUsers')
should contain_neutron_config('service_auth/admin_project_domain').with_value('DefaultProjects')
should contain_neutron_config('service_auth/auth_version').with_value('3')
should contain_neutron_config('service_auth/endpoint_type').with_value('public')
should contain_neutron_config('service_auth/insecure').with_value('false')
end
end end
end end
context 'when base_url is set' do on_supported_os({
let :params do :supported_os => OSDefaults.get_supported_os
default_params.merge( }).each do |os,facts|
{ :base_url => 'http://octavia.example.org:9876', context "on #{os}" do
:request_poll_interval => '3', let (:facts) do
:request_poll_timeout => '100', facts.merge!(OSDefaults.get_facts())
:allocates_vip => 'false' end
}
)
end
it 'configures octavia service plugin custom parameters' do it_behaves_like 'neutron::services::lbaas::octavia'
is_expected.to contain_neutron_config('octavia/base_url').with_value('http://octavia.example.org:9876')
is_expected.to contain_neutron_config('octavia/request_poll_interval').with_value('3')
is_expected.to contain_neutron_config('octavia/request_poll_timeout').with_value('100')
is_expected.to contain_neutron_config('octavia/allocates_vip').with_value('false')
end
it 'configures octavia service authentication' do
is_expected.to contain_neutron_config('service_auth/auth_url').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('service_auth/admin_user').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('service_auth/admin_tenant_name').with_value('services')
is_expected.to contain_neutron_config('service_auth/admin_password').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('service_auth/admin_user_domain').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('service_auth/admin_project_domain').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('service_auth/auth_version').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('service_auth/endpoint_type').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('service_auth/insecure').with_value('<SERVICE DEFAULT>')
end
end
context 'when base_url and service credentials are set' do
let :params do
default_params.merge(
{ :base_url => 'http://octavia.example.org:9876',
:request_poll_interval => '3',
:request_poll_timeout => '100',
:allocates_vip => 'false',
:auth_url => 'https://auth.openstack.cloud/v3',
:admin_user => 'admin',
:admin_tenant_name => 'service-tenant',
:admin_password => 'secure123',
:admin_user_domain => 'DefaultUsers',
:admin_project_domain => 'DefaultProjects',
:auth_version => '3',
:endpoint_type => 'public',
:insecure => 'false' }
)
end
it 'configures octavia service plugin custom parameters' do
is_expected.to contain_neutron_config('octavia/base_url').with_value('http://octavia.example.org:9876')
is_expected.to contain_neutron_config('octavia/request_poll_interval').with_value('3')
is_expected.to contain_neutron_config('octavia/request_poll_timeout').with_value('100')
is_expected.to contain_neutron_config('octavia/allocates_vip').with_value('false')
end
it 'configures octavia service authentication' do
is_expected.to contain_neutron_config('service_auth/auth_url').with_value('https://auth.openstack.cloud/v3')
is_expected.to contain_neutron_config('service_auth/admin_user').with_value('admin')
is_expected.to contain_neutron_config('service_auth/admin_tenant_name').with_value('service-tenant')
is_expected.to contain_neutron_config('service_auth/admin_password').with_value('secure123')
is_expected.to contain_neutron_config('service_auth/admin_user_domain').with_value('DefaultUsers')
is_expected.to contain_neutron_config('service_auth/admin_project_domain').with_value('DefaultProjects')
is_expected.to contain_neutron_config('service_auth/auth_version').with_value('3')
is_expected.to contain_neutron_config('service_auth/endpoint_type').with_value('public')
is_expected.to contain_neutron_config('service_auth/insecure').with_value('false')
end end
end end
end end

View File

@ -21,12 +21,11 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::services::lbaas' do describe 'neutron::services::lbaas' do
let :default_params do let :default_params do
{} {}
end end
shared_examples_for 'neutron lbaas service plugin' do shared_examples 'neutron lbaas service plugin' do
context 'with default params' do context 'with default params' do
let :params do let :params do
@ -34,13 +33,13 @@ describe 'neutron::services::lbaas' do
end end
it 'should contain python-neutron-lbaas package' do it 'should contain python-neutron-lbaas package' do
is_expected.to contain_package('python-neutron-lbaas').with({ :ensure => 'present' }) should contain_package('python-neutron-lbaas').with({ :ensure => 'present' })
end end
it 'should set certificates options with service defaults' do it 'should set certificates options with service defaults' do
is_expected.to contain_neutron_config('certificates/cert_manager_type').with_value('<SERVICE DEFAULT>') should contain_neutron_config('certificates/cert_manager_type').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('certificates/storage_path').with_value('<SERVICE DEFAULT>') should contain_neutron_config('certificates/storage_path').with_value('<SERVICE DEFAULT>')
is_expected.to contain_neutron_config('certificates/barbican_auth').with_value('<SERVICE DEFAULT>') should contain_neutron_config('certificates/barbican_auth').with_value('<SERVICE DEFAULT>')
end end
end end
@ -54,42 +53,23 @@ describe 'neutron::services::lbaas' do
) )
it 'should configure certificates section' do it 'should configure certificates section' do
is_expected.to contain_neutron_config('certificates/cert_manager_type').with_value('barbican') should contain_neutron_config('certificates/cert_manager_type').with_value('barbican')
is_expected.to contain_neutron_config('certificates/storage_path').with_value('/var/lib/neutron-lbaas/certificates/') should contain_neutron_config('certificates/storage_path').with_value('/var/lib/neutron-lbaas/certificates/')
is_expected.to contain_neutron_config('certificates/barbican_auth').with_value('barbican_acl_auth') should contain_neutron_config('certificates/barbican_auth').with_value('barbican_acl_auth')
end end
end end
end end
end end
context 'on Debian platforms' do on_supported_os({
let :facts do :supported_os => OSDefaults.get_supported_os
@default_facts.merge({ }).each do |os,facts|
:osfamily => 'Debian', context "on #{os}" do
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } }, let (:facts) do
}) facts.merge!(OSDefaults.get_facts())
end
it_behaves_like 'neutron lbaas service plugin'
end end
let :platform_params do
{}
end
it_configures 'neutron lbaas service plugin'
end
context 'on Red Hat platforms' do
let :facts do
@default_facts.merge({
:osfamily => 'RedHat',
:operatingsystemrelease => '7',
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
})
end
let :platform_params do
{}
end
it_configures 'neutron lbaas service plugin'
end end
end end

View File

@ -17,7 +17,6 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::services::sfc' do describe 'neutron::services::sfc' do
let :default_params do let :default_params do
{ :package_ensure => 'present', { :package_ensure => 'present',
:sfc_driver => '<SERVICE DEFAULT>', :sfc_driver => '<SERVICE DEFAULT>',
@ -26,7 +25,7 @@ describe 'neutron::services::sfc' do
} }
end end
shared_examples_for 'neutron sfc service plugin' do shared_examples 'neutron sfc service plugin' do
context 'with default params' do context 'with default params' do
let :params do let :params do
@ -34,14 +33,14 @@ describe 'neutron::services::sfc' do
end end
it 'installs sfc package' do it 'installs sfc package' do
is_expected.to contain_package('python-networking-sfc').with( should contain_package('python-networking-sfc').with(
:ensure => params[:package_ensure], :ensure => params[:package_ensure],
:name => platform_params[:sfc_package_name], :name => platform_params[:sfc_package_name],
) )
end end
it 'runs neutron-db-sync' do it 'runs neutron-db-sync' do
is_expected.to contain_exec('sfc-db-sync').with( should contain_exec('sfc-db-sync').with(
:command => 'neutron-db-manage --config-file /etc/neutron/neutron.conf --subproject networking-sfc upgrade head', :command => 'neutron-db-manage --config-file /etc/neutron/neutron.conf --subproject networking-sfc upgrade head',
:path => '/usr/bin', :path => '/usr/bin',
:subscribe => ['Anchor[neutron::install::end]', :subscribe => ['Anchor[neutron::install::end]',
@ -64,10 +63,10 @@ describe 'neutron::services::sfc' do
end end
it 'configures networking-sfc.conf' do it 'configures networking-sfc.conf' do
is_expected.to contain_neutron_sfc_service_config( should contain_neutron_sfc_service_config(
'sfc/drivers' 'sfc/drivers'
).with_value('odl_v2') ).with_value('odl_v2')
is_expected.to contain_neutron_sfc_service_config( should contain_neutron_sfc_service_config(
'flowclassifier/drivers' 'flowclassifier/drivers'
).with_value('odl_v2') ).with_value('odl_v2')
end end
@ -90,7 +89,7 @@ describe 'neutron::services::sfc' do
{ :sfc_package_name => 'python-networking-sfc' } { :sfc_package_name => 'python-networking-sfc' }
end end
end end
it_configures 'neutron sfc service plugin' it_behaves_like 'neutron sfc service plugin'
end end
end end
end end

View File

@ -19,21 +19,21 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::services::vpnaas' do describe 'neutron::services::vpnaas' do
let :default_params do let :default_params do
{ :package_ensure => 'present', {
:service_providers => '<SERVICE DEFAULT>'} :package_ensure => 'present',
:service_providers => '<SERVICE DEFAULT>'
}
end end
shared_examples_for 'neutron vpnaas service plugin' do shared_examples 'neutron vpnaas service plugin' do
context 'with default params' do context 'with default params' do
let :params do let :params do
default_params default_params
end end
it 'installs vpnaas package' do it 'installs vpnaas package' do
is_expected.to contain_package('neutron-vpnaas-agent').with( should contain_package('neutron-vpnaas-agent').with(
:ensure => params[:package_ensure], :ensure => params[:package_ensure],
:name => platform_params[:vpnaas_package_name], :name => platform_params[:vpnaas_package_name],
) )
@ -48,43 +48,35 @@ describe 'neutron::services::vpnaas' do
end end
it 'configures neutron_vpnaas.conf' do it 'configures neutron_vpnaas.conf' do
is_expected.to contain_neutron_vpnaas_service_config( should contain_neutron_vpnaas_service_config(
'service_providers/service_provider' 'service_providers/service_provider'
).with_value(['provider1', 'provider2']) ).with_value(['provider1', 'provider2'])
end end
end end
end end
context 'on Debian platforms' do on_supported_os({
let :facts do :supported_os => OSDefaults.get_supported_os
@default_facts.merge({ }).each do |os,facts|
:osfamily => 'Debian', context "on #{os}" do
:os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } }, let (:facts) do
}) facts.merge!(OSDefaults.get_facts())
end end
let :platform_params do let (:platform_params) do
{ :vpnaas_package_name => 'neutron-vpn-agent'} case facts[:osfamily]
end when 'Debian'
{
:vpnaas_package_name => 'neutron-vpn-agent'
}
when 'RedHat'
{
:vpnaas_package_name => 'openstack-neutron-vpnaas'
}
end
end
it_configures 'neutron vpnaas service plugin' it_behaves_like 'neutron vpnaas service plugin'
end
end end
context 'on Red Hat platforms' do
let :facts do
@default_facts.merge({
:osfamily => 'RedHat',
:operatingsystemrelease => '7',
:os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } },
})
end
let :platform_params do
{ :vpnaas_package_name => 'openstack-neutron-vpnaas'}
end
it_configures 'neutron vpnaas service plugin'
end
end end

View File

@ -1,14 +1,13 @@
require 'spec_helper' require 'spec_helper'
describe 'neutron::wsgi::apache' do describe 'neutron::wsgi::apache' do
shared_examples 'apache serving neutron with mod_wsgi' do
shared_examples_for 'apache serving neutron with mod_wsgi' do
context 'with default parameters' do context 'with default parameters' do
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it { is_expected.to contain_class('apache') } it { should contain_class('apache') }
it { is_expected.to contain_class('apache::mod::wsgi') } it { should contain_class('apache::mod::wsgi') }
it { is_expected.to contain_class('apache::mod::ssl') } it { should contain_class('apache::mod::ssl') }
it { is_expected.to contain_openstacklib__wsgi__apache('neutron_wsgi').with( it { should contain_openstacklib__wsgi__apache('neutron_wsgi').with(
:bind_port => 9696, :bind_port => 9696,
:group => 'neutron', :group => 'neutron',
:path => '/', :path => '/',
@ -45,11 +44,11 @@ describe 'neutron::wsgi::apache' do
:error_log_file => '/var/log/httpd/error_log' :error_log_file => '/var/log/httpd/error_log'
} }
end end
it { is_expected.to contain_class('neutron::params') } it { should contain_class('neutron::params') }
it { is_expected.to contain_class('apache') } it { should contain_class('apache') }
it { is_expected.to contain_class('apache::mod::wsgi') } it { should contain_class('apache::mod::wsgi') }
it { is_expected.to_not contain_class('apache::mod::ssl') } it { should_not contain_class('apache::mod::ssl') }
it { is_expected.to contain_openstacklib__wsgi__apache('neutron_wsgi').with( it { should contain_openstacklib__wsgi__apache('neutron_wsgi').with(
:bind_host => '10.42.51.1', :bind_host => '10.42.51.1',
:bind_port => 12345, :bind_port => 12345,
:group => 'neutron', :group => 'neutron',
@ -106,7 +105,7 @@ describe 'neutron::wsgi::apache' do
end end
end end
it_configures 'apache serving neutron with mod_wsgi' it_behaves_like 'apache serving neutron with mod_wsgi'
end end
end end
end end