Files
puppet-neutron/spec/classes/neutron_plugins_cisco_spec.rb
Clayton O'Neill 8b2319e210 Add hooks for external install & svc management
This adds defined anchor points for external modules to hook into the
software install, config and service dependency chain.  This allows
external modules to manage software installation (virtualenv,
containers, etc) and service management (pacemaker) without needing rely
on resources that may change or be renamed.

Change-Id: Idb1332dd498bb3065720f2ccaf68e6b0e9fa80c3
2016-06-09 09:55:27 -04:00

212 lines
7.4 KiB
Ruby

require 'spec_helper'
describe 'neutron::plugins::cisco' do
let :pre_condition do
"class { 'neutron::server': auth_password => 'password'}
class { 'neutron': rabbit_password => 'passw0rd' }"
end
let :params do
{ :keystone_username => 'neutron',
:keystone_password => 'neutron_pass',
:keystone_auth_url => 'http://127.0.0.1:35357/v2.0/',
:keystone_tenant => 'tenant',
:database_name => 'neutron',
:database_pass => 'dbpass',
:database_host => 'localhost',
:database_user => 'neutron'}
end
let :params_default do
{
:vswitch_plugin => 'neutron.plugins.openvswitch.ovs_neutron_plugin.OVSNeutronPluginV2',
:vlan_start => '100',
:vlan_end => '3000',
:vlan_name_prefix => 'q-',
:model_class => 'neutron.plugins.cisco.models.virt_phy_sw_v2.VirtualPhysicalSwitchModelV2',
:max_ports => '100',
:max_port_profiles => '65568',
:max_networks => '65568',
:manager_class => 'neutron.plugins.cisco.segmentation.l2network_vlan_mgr_v2.L2NetworkVLANMgr',
:purge_config => false,
}
end
let :test_facts do
{ :operatingsystem => 'default',
:operatingsystemrelease => 'default'
}
end
shared_examples_for 'default cisco plugin' do
before do
params.merge!(params_default)
end
it 'should create plugin symbolic link' do
is_expected.to contain_file('/etc/neutron/plugin.ini').with(
:ensure => 'link',
:target => '/etc/neutron/plugins/cisco/cisco_plugins.ini',
)
is_expected.to 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]')
end
it 'should have a plugin config folder' do
is_expected.to contain_file('/etc/neutron/plugins').with(
:ensure => 'directory',
:owner => 'root',
:group => 'neutron',
:mode => '0640'
)
end
it 'should have a cisco plugin config folder' do
is_expected.to contain_file('/etc/neutron/plugins/cisco').with(
:ensure => 'directory',
:owner => 'root',
:group => 'neutron',
:mode => '0640'
)
end
it 'passes purge to resource plugin_cisco' do
is_expected.to contain_resources('neutron_plugin_cisco').with({
:purge => false
})
end
it 'passes purge to resource cisco_db_conn' do
is_expected.to contain_resources('neutron_plugin_cisco_db_conn').with({
:purge => false
})
end
it 'passes purge to resource cisco_l2network' do
is_expected.to contain_resources('neutron_plugin_cisco_l2network').with({
:purge => false
})
end
it 'passes purge to resource cisco_credentials' do
is_expected.to contain_resources('neutron_plugin_cisco_credentials').with({
:purge => false
})
end
it 'should perform default l2 configuration' do
is_expected.to contain_neutron_plugin_cisco_l2network('VLANS/vlan_start').\
with_value(params[:vlan_start])
is_expected.to contain_neutron_plugin_cisco_l2network('VLANS/vlan_end').\
with_value(params[:vlan_end])
is_expected.to contain_neutron_plugin_cisco_l2network('VLANS/vlan_name_prefix').\
with_value(params[:vlan_name_prefix])
is_expected.to contain_neutron_plugin_cisco_l2network('MODEL/model_class').\
with_value(params[:model_class])
is_expected.to contain_neutron_plugin_cisco_l2network('PORTS/max_ports').\
with_value(params[:max_ports])
is_expected.to contain_neutron_plugin_cisco_l2network('PORTPROFILES/max_port_profiles').\
with_value(params[:max_port_profiles])
is_expected.to contain_neutron_plugin_cisco_l2network('NETWORKS/max_networks').\
with_value(params[:max_networks])
is_expected.to contain_neutron_plugin_cisco_l2network('SEGMENTATION/manager_class').\
with_value(params[:manager_class])
end
it 'should create a dummy inventory item' do
is_expected.to contain_neutron_plugin_cisco('INVENTORY/dummy').\
with_value('dummy')
end
it 'should configure the db connection' do
is_expected.to contain_neutron_plugin_cisco_db_conn('DATABASE/name').\
with_value(params[:database_name])
is_expected.to contain_neutron_plugin_cisco_db_conn('DATABASE/user').\
with_value(params[:database_user])
is_expected.to contain_neutron_plugin_cisco_db_conn('DATABASE/pass').\
with_value(params[:database_pass])
is_expected.to contain_neutron_plugin_cisco_db_conn('DATABASE/host').\
with_value(params[:database_host])
end
it 'should configure the admin credentials' do
is_expected.to contain_neutron_plugin_cisco_credentials('keystone/username').\
with_value(params[:keystone_username])
is_expected.to contain_neutron_plugin_cisco_credentials('keystone/password').\
with_value(params[:keystone_password])
is_expected.to contain_neutron_plugin_cisco_credentials('keystone/password').with_secret( true )
is_expected.to contain_neutron_plugin_cisco_credentials('keystone/auth_url').\
with_value(params[:keystone_auth_url])
is_expected.to contain_neutron_plugin_cisco_credentials('keystone/tenant').\
with_value(params[:keystone_tenant])
end
it 'should perform vswitch plugin configuration' do
is_expected.to contain_neutron_plugin_cisco('PLUGINS/vswitch_plugin').\
with_value('neutron.plugins.openvswitch.ovs_neutron_plugin.OVSNeutronPluginV2')
end
describe 'with nexus plugin' do
before do
params.merge!(:nexus_plugin => 'neutron.plugins.cisco.nexus.cisco_nexus_plugin_v2.NexusPlugin')
end
it 'should perform nexus plugin configuration' do
is_expected.to contain_neutron_plugin_cisco('PLUGINS/nexus_plugin').\
with_value('neutron.plugins.cisco.nexus.cisco_nexus_plugin_v2.NexusPlugin')
end
end
end
context 'on Debian platforms' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'Debian'
}))
end
context 'on Ubuntu operating systems' do
before do
facts.merge!({:operatingsystem => 'Ubuntu'})
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/cisco/cisco_plugins.ini',
: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
context 'on RedHat platforms' do
let :facts do
@default_facts.merge(test_facts.merge({
:osfamily => 'RedHat',
:operatingsystemrelease => '7'
}))
end
it_configures 'default cisco plugin'
end
end