3724ee989c
This reverts commit 1694f0ce20
.
Reason for revert:
It later turned out that setenv does not override os.environ in wsgi
applications and this option can't be used to customize the environment
variable as intended. Let's revert the change to keep the interface
as much simple as possible instead of keeping the useless option.
Change-Id: I9f41273654693c57798c4a34fbc1fe7b535a9ff4
238 lines
7.5 KiB
Ruby
238 lines
7.5 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe 'nova::wsgi::apache_metadata' do
|
|
shared_examples_for 'apache serving nova-metadata with mod_wsgi' do
|
|
context 'with default parameters' do
|
|
|
|
let :pre_condition do
|
|
"include nova
|
|
class { 'nova::keystone::authtoken':
|
|
password => 'secrete',
|
|
}
|
|
class { 'nova::metadata': }"
|
|
end
|
|
it { is_expected.to contain_class('nova::params') }
|
|
it { is_expected.to contain_openstacklib__wsgi__apache('nova_metadata_wsgi').with(
|
|
:bind_port => 8775,
|
|
:group => 'nova',
|
|
:path => '/',
|
|
:priority => 10,
|
|
:servername => 'foo.example.com',
|
|
:ssl => false,
|
|
:threads => 1,
|
|
:user => 'nova',
|
|
:workers => facts[:os_workers],
|
|
:wsgi_daemon_process => 'nova-metadata',
|
|
:wsgi_process_group => 'nova-metadata',
|
|
:wsgi_script_dir => platform_params[:wsgi_script_path],
|
|
:wsgi_script_file => 'nova-metadata-api',
|
|
:wsgi_script_source => platform_params[:metadata_wsgi_script_source],
|
|
:headers => nil,
|
|
:request_headers => nil,
|
|
:custom_wsgi_process_options => {},
|
|
:access_log_file => nil,
|
|
:access_log_pipe => nil,
|
|
:access_log_syslog => nil,
|
|
:access_log_format => nil,
|
|
:error_log_file => nil,
|
|
:error_log_pipe => nil,
|
|
:error_log_syslog => nil,
|
|
)}
|
|
end
|
|
|
|
context 'when overriding parameters' do
|
|
let :pre_condition do
|
|
"include nova
|
|
class { 'nova::keystone::authtoken':
|
|
password => 'secrete',
|
|
}
|
|
class { 'nova::metadata': }"
|
|
end
|
|
|
|
let :params do
|
|
{
|
|
:servername => 'dummy.host',
|
|
:bind_host => '10.42.51.1',
|
|
:port => 12345,
|
|
:ssl => true,
|
|
:vhost_custom_fragment => 'Timeout 99',
|
|
:wsgi_process_display_name => 'nova-metadata',
|
|
:workers => 37,
|
|
:custom_wsgi_process_options => {
|
|
'python_path' => '/my/python/path',
|
|
},
|
|
:headers => ['set X-XSS-Protection "1; mode=block"'],
|
|
:request_headers => ['set Content-Type "application/json"'],
|
|
}
|
|
end
|
|
|
|
it { is_expected.to contain_class('nova::params') }
|
|
it { is_expected.to contain_openstacklib__wsgi__apache('nova_metadata_wsgi').with(
|
|
:bind_host => '10.42.51.1',
|
|
:bind_port => 12345,
|
|
:group => 'nova',
|
|
:path => '/',
|
|
:servername => 'dummy.host',
|
|
:ssl => true,
|
|
:threads => 1,
|
|
:user => 'nova',
|
|
:vhost_custom_fragment => 'Timeout 99',
|
|
:workers => 37,
|
|
:wsgi_daemon_process => 'nova-metadata',
|
|
:wsgi_process_display_name => 'nova-metadata',
|
|
:wsgi_process_group => 'nova-metadata',
|
|
:wsgi_script_dir => platform_params[:wsgi_script_path],
|
|
:wsgi_script_file => 'nova-metadata-api',
|
|
:wsgi_script_source => platform_params[:metadata_wsgi_script_source],
|
|
:headers => ['set X-XSS-Protection "1; mode=block"'],
|
|
:request_headers => ['set Content-Type "application/json"'],
|
|
:custom_wsgi_process_options => {
|
|
'python_path' => '/my/python/path',
|
|
},
|
|
)}
|
|
end
|
|
|
|
context 'when nova::metadata is missing in the composition layer' do
|
|
|
|
let :pre_condition do
|
|
"include nova"
|
|
end
|
|
|
|
it { should raise_error(Puppet::Error, /nova::metadata class must be declared in composition layer./) }
|
|
end
|
|
|
|
context 'with custom access logging' do
|
|
let :pre_condition do
|
|
"include nova
|
|
class { 'nova::keystone::authtoken':
|
|
password => 'secrete',
|
|
}
|
|
class { 'nova::metadata': }"
|
|
end
|
|
|
|
let :params do
|
|
{
|
|
:access_log_format => 'foo',
|
|
:access_log_syslog => 'syslog:local0',
|
|
:error_log_syslog => 'syslog:local1',
|
|
}
|
|
end
|
|
|
|
it { should contain_openstacklib__wsgi__apache('nova_metadata_wsgi').with(
|
|
:access_log_format => params[:access_log_format],
|
|
:access_log_syslog => params[:access_log_syslog],
|
|
:error_log_syslog => params[:error_log_syslog],
|
|
)}
|
|
end
|
|
|
|
context 'with access_log_file' do
|
|
let :pre_condition do
|
|
"include nova
|
|
class { 'nova::keystone::authtoken':
|
|
password => 'secrete',
|
|
}
|
|
class { 'nova::metadata': }"
|
|
end
|
|
|
|
let :params do
|
|
{
|
|
:access_log_file => '/path/to/file',
|
|
}
|
|
end
|
|
|
|
it { should contain_openstacklib__wsgi__apache('nova_metadata_wsgi').with(
|
|
:access_log_file => params[:access_log_file],
|
|
)}
|
|
end
|
|
|
|
context 'with access_log_pipe' do
|
|
let :pre_condition do
|
|
"include nova
|
|
class { 'nova::keystone::authtoken':
|
|
password => 'secrete',
|
|
}
|
|
class { 'nova::metadata': }"
|
|
end
|
|
|
|
let :params do
|
|
{
|
|
:access_log_pipe => 'pipe',
|
|
}
|
|
end
|
|
|
|
it { should contain_openstacklib__wsgi__apache('nova_metadata_wsgi').with(
|
|
:access_log_pipe => params[:access_log_pipe],
|
|
)}
|
|
end
|
|
|
|
context 'with error_log_file' do
|
|
let :pre_condition do
|
|
"include nova
|
|
class { 'nova::keystone::authtoken':
|
|
password => 'secrete',
|
|
}
|
|
class { 'nova::metadata': }"
|
|
end
|
|
|
|
let :params do
|
|
{
|
|
:error_log_file => '/path/to/file',
|
|
}
|
|
end
|
|
|
|
it { should contain_openstacklib__wsgi__apache('nova_metadata_wsgi').with(
|
|
:error_log_file => params[:error_log_file],
|
|
)}
|
|
end
|
|
|
|
context 'with error_log_pipe' do
|
|
let :pre_condition do
|
|
"include nova
|
|
class { 'nova::keystone::authtoken':
|
|
password => 'secrete',
|
|
}
|
|
class { 'nova::metadata': }"
|
|
end
|
|
|
|
let :params do
|
|
{
|
|
:error_log_pipe => 'pipe',
|
|
}
|
|
end
|
|
|
|
it { should contain_openstacklib__wsgi__apache('nova_metadata_wsgi').with(
|
|
:error_log_pipe => params[:error_log_pipe],
|
|
)}
|
|
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({
|
|
:os_workers => 42,
|
|
}))
|
|
end
|
|
|
|
let(:platform_params) do
|
|
case facts[:os]['family']
|
|
when 'Debian'
|
|
{
|
|
:wsgi_script_path => '/usr/lib/cgi-bin/nova',
|
|
:metadata_wsgi_script_source => '/usr/bin/nova-metadata-wsgi',
|
|
}
|
|
when 'RedHat'
|
|
{
|
|
:wsgi_script_path => '/var/www/cgi-bin/nova',
|
|
:metadata_wsgi_script_source => '/usr/bin/nova-metadata-wsgi',
|
|
}
|
|
end
|
|
end
|
|
|
|
it_behaves_like 'apache serving nova-metadata with mod_wsgi'
|
|
end
|
|
end
|
|
end
|