From 773cffbf7d50ca16851f5b0884d2c6c69235e954 Mon Sep 17 00:00:00 2001 From: Rocky Date: Thu, 23 Apr 2020 15:53:35 +1000 Subject: [PATCH] Add domain_remap middleware support Change-Id: Ic84af4b6ef0c475d78f70c0d009b35c398b1f265 --- manifests/proxy/domain_remap.pp | 104 ++++++++++++++++++ ...t-proxy-domain_remap-d3b316fb6e964716.yaml | 4 + spec/classes/swift_proxy_domain_remap_spec.rb | 59 ++++++++++ 3 files changed, 167 insertions(+) create mode 100644 manifests/proxy/domain_remap.pp create mode 100644 releasenotes/notes/add-swift-proxy-domain_remap-d3b316fb6e964716.yaml create mode 100644 spec/classes/swift_proxy_domain_remap_spec.rb diff --git a/manifests/proxy/domain_remap.pp b/manifests/proxy/domain_remap.pp new file mode 100644 index 00000000..7f0956b5 --- /dev/null +++ b/manifests/proxy/domain_remap.pp @@ -0,0 +1,104 @@ +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# Configure swift domain_remap. +# +# == Examples +# +# include swift::proxy::domain_remap +# +# == Parameters +# +# [*log_name*] +# The log name of domain_remap. +# Default to $::os_service_default +# +# [*log_facility*] +# The log facility of domain_remap. +# Default to $::os_service_default +# +# [*log_level*] +# The log level of domain_remap. +# Default to $::os_service_default +# +# [*log_headers*] +# The log headers of domain_remap. +# Default to $::os_service_default +# +# [*log_address*] +# The log address of domain_remap. +# Default to $::os_service_default +# +# [*storage_domain*] +# Specify the storage_domain that match your cloud, multiple domains +# can be specified separated by a comma. +# Default to $::os_service_default +# +# [*path_root*] +# Specify a root path part that will be added to the start of paths if not +# already present. +# Default to $::os_service_default +# +# [*reseller_prefixes*] +# A list of reseller_prefixes to lookup a reseller_prefix +# from the given account name. +# Default to $::os_service_default +# +# [*default_reseller_prefix*] +# The default reseller_prefix. +# It will be used if none of reseller_prexies match +# Default to $::os_service_default +# +# [*mangle_client_paths*] +# Enable legacy remapping behavior for versioned path requests. +# Default to $::os_service_default +# +# == Authors +# +# shi.yan@ardc.edu.au +# +# +class swift::proxy::domain_remap( + $log_name = $::os_service_default, + $log_facility = $::os_service_default, + $log_level = $::os_service_default, + $log_headers = $::os_service_default, + $log_address = $::os_service_default, + $storage_domain = $::os_service_default, + $path_root = $::os_service_default, + $reseller_prefixes = $::os_service_default, + $default_reseller_prefix = $::os_service_default, + $mangle_client_paths = $::os_service_default, +) { + + include swift::deps + + if !is_service_default($reseller_prefixes) and is_array($reseller_prefixes) { + $reseller_prefixes_str = join($reseller_prefixes, ',') + } else { + $reseller_prefixes_str = $reseller_prefixes + } + + swift_proxy_config { + 'filter:domain_remap/use': value => 'egg:swift#domain_remap'; + 'filter:domain_remap/set log_name': value => $log_name; + 'filter:domain_remap/set log_facility': value => $log_facility; + 'filter:domain_remap/set log_level': value => $log_level; + 'filter:domain_remap/set log_headers': value => $log_headers; + 'filter:domain_remap/set log_address': value => $log_address; + 'filter:domain_remap/storage_domain' : value => $storage_domain; + 'filter:domain_remap/path_root': value => $path_root; + 'filter:domain_remap/reseller_prefixes': value => $reseller_prefixes_str; + 'filter:domain_remap/default_reseller_prefix': value => $default_reseller_prefix; + 'filter:domain_remap/mangle_client_paths': value => $mangle_client_paths; + } +} diff --git a/releasenotes/notes/add-swift-proxy-domain_remap-d3b316fb6e964716.yaml b/releasenotes/notes/add-swift-proxy-domain_remap-d3b316fb6e964716.yaml new file mode 100644 index 00000000..95b96453 --- /dev/null +++ b/releasenotes/notes/add-swift-proxy-domain_remap-d3b316fb6e964716.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + Add swift::proxy::domain_remap class to configure domain_remap middleware for swift proxy. diff --git a/spec/classes/swift_proxy_domain_remap_spec.rb b/spec/classes/swift_proxy_domain_remap_spec.rb new file mode 100644 index 00000000..abc8b18c --- /dev/null +++ b/spec/classes/swift_proxy_domain_remap_spec.rb @@ -0,0 +1,59 @@ +require 'spec_helper' + +describe 'swift::proxy::domain_remap' do + shared_examples 'swift::proxy::domain_remap' do + describe "when using default parameters" do + it { is_expected.to contain_swift_proxy_config('filter:domain_remap/use').with_value('egg:swift#domain_remap') } + it { is_expected.to contain_swift_proxy_config('filter:domain_remap/set log_name').with_value('') } + it { is_expected.to contain_swift_proxy_config('filter:domain_remap/set log_facility').with_value('') } + it { is_expected.to contain_swift_proxy_config('filter:domain_remap/set log_level').with_value('') } + it { is_expected.to contain_swift_proxy_config('filter:domain_remap/set log_headers').with_value('') } + it { is_expected.to contain_swift_proxy_config('filter:domain_remap/set log_address').with_value('') } + it { is_expected.to contain_swift_proxy_config('filter:domain_remap/storage_domain').with_value('') } + it { is_expected.to contain_swift_proxy_config('filter:domain_remap/path_root').with_value('') } + it { is_expected.to contain_swift_proxy_config('filter:domain_remap/reseller_prefixes').with_value('') } + it { is_expected.to contain_swift_proxy_config('filter:domain_remap/default_reseller_prefix').with_value('') } + it { is_expected.to contain_swift_proxy_config('filter:domain_remap/mangle_client_paths').with_value('') } + end + + describe "when overriding default parameters" do + let :params do + { + :log_name => 'newdomain_remap', + :log_facility => 'LOG_LOCAL3', + :log_level => 'WARN', + :log_headers => 'True', + :log_address => '/var/log', + :storage_domain => 'example.com', + :path_root => 'v1', + :reseller_prefixes => 'AUTH', + :default_reseller_prefix => 'prefix', + :mangle_client_paths => 'True', + } + end + + it { is_expected.to contain_swift_proxy_config('filter:domain_remap/set log_name').with_value('newdomain_remap') } + it { is_expected.to contain_swift_proxy_config('filter:domain_remap/set log_facility').with_value('LOG_LOCAL3') } + it { is_expected.to contain_swift_proxy_config('filter:domain_remap/set log_level').with_value('WARN') } + it { is_expected.to contain_swift_proxy_config('filter:domain_remap/set log_headers').with_value('True') } + it { is_expected.to contain_swift_proxy_config('filter:domain_remap/set log_address').with_value('/var/log') } + it { is_expected.to contain_swift_proxy_config('filter:domain_remap/storage_domain').with_value('example.com') } + it { is_expected.to contain_swift_proxy_config('filter:domain_remap/path_root').with_value('v1') } + it { is_expected.to contain_swift_proxy_config('filter:domain_remap/reseller_prefixes').with_value('AUTH') } + it { is_expected.to contain_swift_proxy_config('filter:domain_remap/default_reseller_prefix').with_value('prefix') } + it { is_expected.to contain_swift_proxy_config('filter:domain_remap/mangle_client_paths').with_value('True') } + 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_configures 'swift::proxy::domain_remap' + end + end +end