Files
cookbook-openstack-block-st…/spec/spec_helper.rb
Lance Albertson 0566bf9578 Properly notify apache restarts on cinder configuration updates
This uses edit_resource to add a notification in the block storage
apache configuration when it gets updated. This is a workaround due to
the fact we are using a version of the apache2 cookbook that is still
using definitions and cannot add notifications with definitions.

This will be removed in the Stein release when we migrate to the newer
apache2 cookbook which uses proper resources.

Change-Id: I7efddef83333ca0794ee3c298ca1a2488defe941
Signed-off-by: Lance Albertson <lance@osuosl.org>
2019-07-09 12:56:37 -07:00

134 lines
4.0 KiB
Ruby

# encoding: UTF-8
#
# Cookbook Name:: openstack-block-storage
require 'chefspec'
require 'chefspec/berkshelf'
ChefSpec::Coverage.start! { add_filter 'openstack-block-storage' }
require 'chef/application'
RSpec.configure do |config|
config.color = true
config.formatter = :documentation
config.log_level = :fatal
config.file_cache_path = '/var/chef/cache'
end
REDHAT_OPTS = {
platform: 'redhat',
version: '7.4',
}.freeze
UBUNTU_OPTS = {
platform: 'ubuntu',
version: '16.04',
}.freeze
shared_context 'block-storage-stubs' do
before do
allow_any_instance_of(Chef::Recipe).to receive(:rabbit_servers)
.and_return('1.1.1.1:5672,2.2.2.2:5672')
allow_any_instance_of(Chef::Recipe).to receive(:get_password)
.with('service', anything)
.and_return('')
allow_any_instance_of(Chef::Recipe).to receive(:get_password)
.with('db', anything)
.and_return('')
allow_any_instance_of(Chef::Recipe).to receive(:get_password)
.with('token', 'openstack_vmware_secret_name')
.and_return 'vmware_secret_name'
allow_any_instance_of(Chef::Recipe).to receive(:get_password)
.with('user', 'guest')
.and_return('mq-pass')
allow_any_instance_of(Chef::Recipe).to receive(:get_password)
.with('service', 'netapp')
.and_return 'netapp-pass'
allow_any_instance_of(Chef::Recipe).to receive(:get_password)
.with('service', 'openstack-block-storage')
.and_return('cinder-pass')
allow_any_instance_of(Chef::Recipe).to receive(:get_password)
.with('user', 'admin')
.and_return('emc_test_pass')
allow_any_instance_of(Chef::Recipe).to receive(:get_password)
.with('user', 'ibmnas_admin')
.and_return('test_pass')
allow_any_instance_of(Chef::Recipe).to receive(:rabbit_transport_url)
.with('block_storage')
.and_return('rabbit://guest:mypass@127.0.0.1:5672')
stub_command('/usr/sbin/httpd -t').and_return(true)
stub_command('/usr/sbin/apache2 -t').and_return(true)
allow(Chef::Application).to receive(:fatal!)
end
end
shared_examples 'common-logging' do
context 'when syslog.use is true' do
before do
node.override['openstack']['block-storage']['syslog']['use'] = true
end
it 'runs logging recipe if node attributes say to' do
expect(chef_run).to include_recipe 'openstack-common::logging'
end
end
context 'when syslog.use is false' do
before do
node.override['openstack']['block-storage']['syslog']['use'] = false
end
it 'runs logging recipe if node attributes say to' do
expect(chef_run).to_not include_recipe 'openstack-common::logging'
end
end
end
def expect_runs_openstack_common_logging_recipe
it 'runs logging recipe if node attributes say to' do
expect(chef_run).to include_recipe 'openstack-common::logging'
end
end
shared_examples 'creates_cinder_conf' do |service, user, group, action = :restart|
describe 'cinder.conf' do
let(:file) { chef_run.template('/etc/cinder/cinder.conf') }
it 'creates the /etc/cinder/cinder.conf file' do
expect(chef_run).to create_template(file.name).with(
user: user,
group: group,
mode: 0o640
)
end
it 'notifies service restart' do
expect(file).to notify(service).to(action)
end
it do
[
/^auth_type = password$/,
/^region_name = RegionOne$/,
/^username = cinder/,
/^project_name = service$/,
/^user_domain_name = Default/,
/^project_domain_name = Default/,
%r{^auth_url = http://127.0.0.1:5000/v3$},
/^password = cinder-pass$/,
].each do |line|
expect(chef_run).to render_config_file(file.name)
.with_section_content('keystone_authtoken', line)
end
end
it 'has oslo_messaging_notifications conf values' do
[
/^driver = cinder.openstack.common.notifier.rpc_notifier$/,
].each do |line|
expect(chef_run).to render_config_file(file.name).with_section_content('oslo_messaging_notifications', line)
end
end
end
end