Add CORS config support

Change-Id: I4f750863ba1bde478efff026f9bc64bac13030ec
This commit is contained in:
Pradeep Kilambi 2018-06-15 15:39:09 -04:00
parent 8fe68ff812
commit 91fd9c52ce
2 changed files with 107 additions and 0 deletions

58
manifests/cors.pp Normal file
View File

@ -0,0 +1,58 @@
# == Class: gnocchi::cors
#
# Configure the gnocchi 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 gnocchi::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 ::gnocchi::deps
oslo::cors { 'gnocchi_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,
}
}

View File

@ -0,0 +1,49 @@
require 'spec_helper'
describe 'gnocchi::cors' do
shared_examples_for 'gnocchi cors' do
it 'configure cors default params' do
is_expected.to contain_gnocchi_config('cors/allowed_origin').with_value('<SERVICE DEFAULT>')
is_expected.to contain_gnocchi_config('cors/allow_credentials').with_value('<SERVICE DEFAULT>')
is_expected.to contain_gnocchi_config('cors/expose_headers').with_value('<SERVICE DEFAULT>')
is_expected.to contain_gnocchi_config('cors/max_age').with_value('<SERVICE DEFAULT>')
is_expected.to contain_gnocchi_config('cors/allow_methods').with_value('<SERVICE DEFAULT>')
is_expected.to contain_gnocchi_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_gnocchi_config('cors/allowed_origin').with_value('*')
is_expected.to contain_gnocchi_config('cors/allow_credentials').with_value(true)
is_expected.to contain_gnocchi_config('cors/expose_headers').with_value('Content-Language,Expires')
is_expected.to contain_gnocchi_config('cors/max_age').with_value(3600)
is_expected.to contain_gnocchi_config('cors/allow_methods').with_value('GET,POST,PUT,DELETE,OPTIONS')
is_expected.to contain_gnocchi_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 'gnocchi cors'
end
end
end