7eb5fd6113
- Switched default linter to cookstyle - Freshened image locations - Renamed rake tasks to align with Chef conventions - Normalized template comment Change-Id: Ib99d9b12f036ff52e44a270455f0d2e16561f98a
149 lines
4.5 KiB
Ruby
149 lines
4.5 KiB
Ruby
# encoding: UTF-8
|
|
require_relative 'spec_helper'
|
|
|
|
describe 'openstack-image::registry' do
|
|
describe 'ubuntu' do
|
|
before do
|
|
# Lame we must still stub this, since the recipe contains shell
|
|
# guards. Need to work on a way to resolve this.
|
|
stub_command('glance-manage db_version').and_return(true)
|
|
end
|
|
|
|
let(:runner) { ChefSpec::SoloRunner.new(UBUNTU_OPTS) }
|
|
let(:node) { runner.node }
|
|
let(:chef_run) do
|
|
runner.converge(described_recipe)
|
|
end
|
|
|
|
include_context 'image-stubs'
|
|
|
|
it 'converges when configured to use sqlite' do
|
|
node.set['openstack']['db']['image']['service_type'] = 'sqlite'
|
|
expect { chef_run }.to_not raise_error
|
|
end
|
|
|
|
it 'upgrades mysql python package' do
|
|
expect(chef_run).to upgrade_package('python-mysqldb')
|
|
end
|
|
|
|
%w(db2 postgresql).each do |service_type|
|
|
it "upgrades #{service_type} python packages if chosen" do
|
|
node.set['openstack']['db']['image']['service_type'] = service_type
|
|
node.set['openstack']['db']['python_packages'][service_type] = ["my-#{service_type}-py"]
|
|
expect(chef_run).to upgrade_package("my-#{service_type}-py")
|
|
end
|
|
end
|
|
|
|
it do
|
|
expect(chef_run).to create_directory('/var/cache/glance/registry').with(
|
|
user: 'glance',
|
|
group: 'glance',
|
|
mode: 0o0700
|
|
)
|
|
end
|
|
|
|
it 'deletes glance.sqlite' do
|
|
expect(chef_run).to delete_file('/var/lib/glance/glance.sqlite')
|
|
end
|
|
|
|
it 'does not delete glance.sqlite when configured to use sqlite' do
|
|
node.set['openstack']['db']['image']['service_type'] = 'sqlite'
|
|
expect(chef_run).not_to delete_file('/var/lib/glance/glance.sqlite')
|
|
end
|
|
|
|
describe 'glance-registry.conf' do
|
|
let(:file) { chef_run.template('/etc/glance/glance-registry.conf') }
|
|
|
|
it 'creates glance-registry.conf' do
|
|
expect(chef_run).to create_template(file.name).with(
|
|
source: 'openstack-service.conf.erb',
|
|
cookbook: 'openstack-common',
|
|
user: 'glance',
|
|
group: 'glance',
|
|
mode: 0o0640
|
|
)
|
|
end
|
|
|
|
context 'template contents' do
|
|
it do
|
|
[
|
|
%r{^transport_url = rabbit://guest:mypass@127.0.0.1:5672$},
|
|
%r{^log_file = /var/log/glance/registry.log$},
|
|
/^bind_port = 9191$/,
|
|
/^bind_host = 127.0.0.1$/,
|
|
].each do |line|
|
|
expect(chef_run).to render_config_file(file.name)
|
|
.with_section_content('DEFAULT', line)
|
|
end
|
|
end
|
|
|
|
it do
|
|
[
|
|
/^flavor = keystone$/,
|
|
].each do |line|
|
|
expect(chef_run).to render_config_file(file.name)
|
|
.with_section_content('paste_deploy', line)
|
|
end
|
|
end
|
|
|
|
it do
|
|
[
|
|
/^auth_type = v3password$/,
|
|
/^region_name = RegionOne$/,
|
|
/^username = glance$/,
|
|
/^project_name = service/,
|
|
%r{^signing_dir = /var/cache/glance/registry},
|
|
%r{^auth_url = http://127.0.0.1:5000/v3},
|
|
/^user_domain_name = Default$/,
|
|
/^password = glance-pass$/,
|
|
].each do |line|
|
|
expect(chef_run).to render_config_file(file.name)
|
|
.with_section_content('keystone_authtoken', line)
|
|
end
|
|
end
|
|
|
|
it do
|
|
[
|
|
%r{^connection = mysql\+pymysql://glance:db-pass@127\.0\.0\.1:3306/glance\?charset=utf8$},
|
|
].each do |line|
|
|
expect(chef_run).to render_config_file(file.name)
|
|
.with_section_content('database', line)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
it do
|
|
expect(chef_run).to run_ruby_block(
|
|
"delete all attributes in node['openstack']['image_registry']['conf_secrets']"
|
|
)
|
|
end
|
|
|
|
describe 'db_sync' do
|
|
let(:cmd) { 'glance-manage db_sync' }
|
|
|
|
it 'runs migrations' do
|
|
expect(chef_run).to run_execute(cmd).with(user: 'glance', group: 'glance')
|
|
end
|
|
|
|
it 'does not run migrations when openstack/image/db/migrate is false' do
|
|
node.set['openstack']['db']['image']['migrate'] = false
|
|
expect(chef_run).not_to run_execute(cmd)
|
|
end
|
|
end
|
|
|
|
it do
|
|
expect(chef_run).to enable_service('glance-registry')
|
|
end
|
|
|
|
it do
|
|
expect(chef_run).to start_service('glance-registry')
|
|
end
|
|
|
|
it do
|
|
resource = chef_run.service('glance-registry')
|
|
expect(resource).to subscribe_to('template[/etc/glance/glance-registry.conf]').on(:restart).immediately
|
|
end
|
|
end
|
|
end
|