Add CORS configuration support
Change-Id: I2ec2f8d2146e8a067aadc97f5997aa40ad8d4812
This commit is contained in:
parent
ac798d2086
commit
f6b1d1a82f
58
manifests/cors.pp
Normal file
58
manifests/cors.pp
Normal file
@ -0,0 +1,58 @@
|
||||
# == Class: nova::cors
|
||||
#
|
||||
# Configure the nova cors
|
||||
#
|
||||
# === Parameters
|
||||
#
|
||||
# [*allowed_origin*]
|
||||
# (Optional) Indicate whether this resource may be shared with the domain
|
||||
# received in the requests "origin" header.
|
||||
# (string value)
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
# [*allow_credentials*]
|
||||
# (Optional) Indicate that the actual request can include user credentials.
|
||||
# (boolean value)
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
# [*expose_headers*]
|
||||
# (Optional) Indicate which headers are safe to expose to the API.
|
||||
# (list value)
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
# [*max_age*]
|
||||
# (Optional) Maximum cache age of CORS preflight requests.
|
||||
# (integer value)
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
# [*allow_methods*]
|
||||
# (Optional) Indicate which methods can be used during the actual request.
|
||||
# (list value)
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
# [*allow_headers*]
|
||||
# (Optional) Indicate which header field names may be used during the actual
|
||||
# request.
|
||||
# (list value)
|
||||
# Defaults to $::os_service_default.
|
||||
#
|
||||
class nova::cors (
|
||||
$allowed_origin = $::os_service_default,
|
||||
$allow_credentials = $::os_service_default,
|
||||
$expose_headers = $::os_service_default,
|
||||
$max_age = $::os_service_default,
|
||||
$allow_methods = $::os_service_default,
|
||||
$allow_headers = $::os_service_default,
|
||||
) {
|
||||
|
||||
include ::nova::deps
|
||||
|
||||
oslo::cors { 'nova_config':
|
||||
allowed_origin => $allowed_origin,
|
||||
allow_credentials => $allow_credentials,
|
||||
expose_headers => $expose_headers,
|
||||
max_age => $max_age,
|
||||
allow_methods => $allow_methods,
|
||||
allow_headers => $allow_headers,
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
---
|
||||
features:
|
||||
- Add CORS configuration support
|
49
spec/classes/nova_cors_spec.rb
Normal file
49
spec/classes/nova_cors_spec.rb
Normal file
@ -0,0 +1,49 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe 'nova::cors' do
|
||||
|
||||
shared_examples_for 'nova cors' do
|
||||
it 'configure cors default params' do
|
||||
is_expected.to contain_nova_config('cors/allowed_origin').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_nova_config('cors/allow_credentials').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_nova_config('cors/expose_headers').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_nova_config('cors/max_age').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_nova_config('cors/allow_methods').with_value('<SERVICE DEFAULT>')
|
||||
is_expected.to contain_nova_config('cors/allow_headers').with_value('<SERVICE DEFAULT>')
|
||||
end
|
||||
|
||||
context 'with specific parameters' do
|
||||
let :params do
|
||||
{ :allowed_origin => '*',
|
||||
:allow_credentials => true,
|
||||
:expose_headers => 'Content-Language,Expires',
|
||||
:max_age => 3600,
|
||||
:allow_methods => 'GET,POST,PUT,DELETE,OPTIONS',
|
||||
:allow_headers => 'Content-Type,Cache-Control',
|
||||
}
|
||||
end
|
||||
|
||||
it 'configure cors params' do
|
||||
is_expected.to contain_nova_config('cors/allowed_origin').with_value('*')
|
||||
is_expected.to contain_nova_config('cors/allow_credentials').with_value(true)
|
||||
is_expected.to contain_nova_config('cors/expose_headers').with_value('Content-Language,Expires')
|
||||
is_expected.to contain_nova_config('cors/max_age').with_value(3600)
|
||||
is_expected.to contain_nova_config('cors/allow_methods').with_value('GET,POST,PUT,DELETE,OPTIONS')
|
||||
is_expected.to contain_nova_config('cors/allow_headers').with_value('Content-Type,Cache-Control')
|
||||
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 'nova cors'
|
||||
end
|
||||
end
|
||||
|
||||
end
|
Loading…
Reference in New Issue
Block a user