diff --git a/manifests/backend/defaults/file.pp b/manifests/backend/defaults/file.pp new file mode 100644 index 00000000..fbb41795 --- /dev/null +++ b/manifests/backend/defaults/file.pp @@ -0,0 +1,52 @@ +# == Class: glance::backend::defaults::file +# +# Configure common defaults for all file backends +# +# === Parameters: +# +# [*filesystem_store_datadir*] +# (optional) Directory where dist images are stored. +# Defaults to $facts['os_service_default']. +# +# [*filesystem_store_metadata_file*] +# (optional) Filesystem store metadata file. +# Defaults to $facts['os_service_default']. +# +# [*filesystem_store_file_perm*] +# (optional) File access permissions for the image files. +# Defaults to $facts['os_service_default']. +# +# [*filesystem_store_chunk_size*] +# (optional) Chunk size, in bytes. +# Defaults to $facts['os_service_default']. +# +# [*filesystem_thin_provisioning*] +# (optional) Boolean describing if thin provisioning is enabled or not +# Defaults to $facts['os_service_default'] +# +class glance::backend::defaults::file( + $filesystem_store_datadir = $facts['os_service_default'], + $filesystem_store_metadata_file = $facts['os_service_default'], + $filesystem_store_file_perm = $facts['os_service_default'], + $filesystem_store_chunk_size = $facts['os_service_default'], + $filesystem_thin_provisioning = $facts['os_service_default'], +) { + + include glance::deps + + glance_api_config { + 'backend_defaults/filesystem_store_datadir': value => $filesystem_store_datadir; + 'backend_defaults/filesystem_store_metadata_file': value => $filesystem_store_metadata_file; + 'backend_defaults/filesystem_store_file_perm': value => $filesystem_store_file_perm; + 'backend_defaults/filesystem_store_chunk_size': value => $filesystem_store_chunk_size; + 'backend_defaults/filesystem_thin_provisioning': value => $filesystem_thin_provisioning; + } + + glance_cache_config { + 'backend_defaults/filesystem_store_datadir': value => $filesystem_store_datadir; + 'backend_defaults/filesystem_store_metadata_file': value => $filesystem_store_metadata_file; + 'backend_defaults/filesystem_store_file_perm': value => $filesystem_store_file_perm; + 'backend_defaults/filesystem_store_chunk_size': value => $filesystem_store_chunk_size; + 'backend_defaults/filesystem_thin_provisioning': value => $filesystem_thin_provisioning; + } +} diff --git a/manifests/backend/defaults/rbd.pp b/manifests/backend/defaults/rbd.pp new file mode 100644 index 00000000..2b4b1051 --- /dev/null +++ b/manifests/backend/defaults/rbd.pp @@ -0,0 +1,55 @@ +# == Class: glance::backend::defaults::rbd +# +# Configure common defaults for all rbd backends +# +# === Parameters: +# +# [*rbd_store_user*] +# Optional. Default: $facts['os_service_default']. +# +# [*rbd_store_pool*] +# Optional. Default: $facts['os_service_default']. +# +# [*rbd_store_ceph_conf*] +# Optional. Default: $facts['os_service_default']. +# +# [*rbd_store_chunk_size*] +# Optional. Default: $facts['os_service_default']. +# +# [*rbd_thin_provisioning*] +# Optional. Boolean describing if thin provisioning is enabled or not +# Defaults to $facts['os_service_default'] +# +# [*rados_connect_timeout*] +# Optional. Timeout value (in seconds) used when connecting to ceph cluster. +# Default: $facts['os_service_default']. +# +class glance::backend::defaults::rbd( + $rbd_store_user = $facts['os_service_default'], + $rbd_store_ceph_conf = $facts['os_service_default'], + $rbd_store_pool = $facts['os_service_default'], + $rbd_store_chunk_size = $facts['os_service_default'], + $rbd_thin_provisioning = $facts['os_service_default'], + $rados_connect_timeout = $facts['os_service_default'], +) { + + include glance::deps + + glance_api_config { + 'backend_defaults/rbd_store_user': value => $rbd_store_user; + 'backend_defaults/rbd_store_ceph_conf': value => $rbd_store_ceph_conf; + 'backend_defaults/rbd_store_pool': value => $rbd_store_pool; + 'backend_defaults/rbd_store_chunk_size': value => $rbd_store_chunk_size; + 'backend_defaults/rbd_thin_provisioning': value => $rbd_thin_provisioning; + 'backend_defaults/rados_connect_timeout': value => $rados_connect_timeout; + } + + glance_cache_config { + 'backend_defaults/rbd_store_user': value => $rbd_store_user; + 'backend_defaults/rbd_store_ceph_conf': value => $rbd_store_ceph_conf; + 'backend_defaults/rbd_store_pool': value => $rbd_store_pool; + 'backend_defaults/rbd_store_chunk_size': value => $rbd_store_chunk_size; + 'backend_defaults/rbd_thin_provisioning': value => $rbd_thin_provisioning; + 'backend_defaults/rados_connect_timeout': value => $rados_connect_timeout; + } +} diff --git a/manifests/backend/defaults/s3.pp b/manifests/backend/defaults/s3.pp new file mode 100644 index 00000000..ecaf9a5e --- /dev/null +++ b/manifests/backend/defaults/s3.pp @@ -0,0 +1,82 @@ +# == Class: glance::backend::defaults::s3 +# +# Configure common defaults for all rbd backends +# +# === Parameters: +# +# [*s3_store_host*] +# (required) The host where the S3 server is listening. +# Defaults to $facts['os_service_default']. +# +# [*s3_store_access_key*] +# (required) The S3 query token access key. +# Defaults to $facts['os_service_default']. +# +# [*s3_store_secret_key*] +# (required) The S3 query token secret key. +# Defaults to $facts['os_service_default']. +# +# [*s3_store_bucket*] +# (required) The S3 bucket to be used to store the Glance data. +# Defaults to $facts['os_service_default']. +# +# [*s3_store_create_bucket_on_put*] +# (optional) Determine whether S3 should create a new bucket. +# Defaults to $facts['os_service_default']. +# +# [*s3_store_bucket_url_format*] +# (optional) The S3 calling format used to determine the object. +# Defaults to $facts['os_service_default']. +# +# [*s3_store_large_object_size*] +# (optional) What size, in MB, should S3 start chunking image files and do +# a multipart upload in S3. +# Defaults to $facts['os_service_default']. +# +# [*s3_store_large_object_chunk_size*] +# (optional) What multipart upload part size, in MB, should S3 use when +# uploading parts. +# Defaults to $facts['os_service_default']. +# +# [*s3_store_thread_pools*] +# (optional) The number of thread pools to perform a multipart upload in S3. +# Defaults to $facts['os_service_default']. +# +class glance::backend::defaults::s3( + $s3_store_host = $facts['os_service_default'], + $s3_store_access_key = $facts['os_service_default'], + $s3_store_secret_key = $facts['os_service_default'], + $s3_store_bucket = $facts['os_service_default'], + $s3_store_create_bucket_on_put = $facts['os_service_default'], + $s3_store_bucket_url_format = $facts['os_service_default'], + $s3_store_large_object_size = $facts['os_service_default'], + $s3_store_large_object_chunk_size = $facts['os_service_default'], + $s3_store_thread_pools = $facts['os_service_default'], +) { + + include glance::deps + + glance_api_config { + 'backend_defaults/s3_store_host': value => $s3_store_host; + 'backend_defaults/s3_store_access_key': value => $s3_store_access_key, secret => true; + 'backend_defaults/s3_store_secret_key': value => $s3_store_secret_key, secret => true; + 'backend_defaults/s3_store_bucket': value => $s3_store_bucket; + 'backend_defaults/s3_store_create_bucket_on_put': value => $s3_store_create_bucket_on_put; + 'backend_defaults/s3_store_bucket_url_format': value => $s3_store_bucket_url_format; + 'backend_defaults/s3_store_large_object_size': value => $s3_store_large_object_size; + 'backend_defaults/s3_store_large_object_chunk_size': value => $s3_store_large_object_chunk_size; + 'backend_defaults/s3_store_thread_pools': value => $s3_store_thread_pools; + } + + glance_cache_config { + 'backend_defaults/s3_store_host': value => $s3_store_host; + 'backend_defaults/s3_store_access_key': value => $s3_store_access_key, secret => true; + 'backend_defaults/s3_store_secret_key': value => $s3_store_secret_key, secret => true; + 'backend_defaults/s3_store_bucket': value => $s3_store_bucket; + 'backend_defaults/s3_store_create_bucket_on_put': value => $s3_store_create_bucket_on_put; + 'backend_defaults/s3_store_bucket_url_format': value => $s3_store_bucket_url_format; + 'backend_defaults/s3_store_large_object_size': value => $s3_store_large_object_size; + 'backend_defaults/s3_store_large_object_chunk_size': value => $s3_store_large_object_chunk_size; + 'backend_defaults/s3_store_thread_pools': value => $s3_store_thread_pools; + } +} diff --git a/manifests/backend/defaults/swift.pp b/manifests/backend/defaults/swift.pp new file mode 100644 index 00000000..fe897742 --- /dev/null +++ b/manifests/backend/defaults/swift.pp @@ -0,0 +1,92 @@ +# == Class: glance::backend::defaults::swift +# +# Configure common defaults for all rbd backends +# +# === Parameters: +# +# [*swift_store_container*] +# (Optional) Name of single container to store images/name prefix for +# multiple containers. +# Defaults to $facts['os_service_default']. +# +# [*swift_store_large_object_size*] +# (Optional) The size threshold, in MB, after which Glance will start +# segmenting image data. +# Defaults to $facts['os_service_default']. +# +# [*swift_store_large_object_chunk_size*] +# (Optional) The maximum size, in MB, of the segments when image data is +# segmented. +# Defaults to $facts['os_service_default']. +# +# [*swift_store_create_container_on_put*] +# (Optional) Create container, if it doesn't already exist, when uploading +# image. +# Defaults to $facts['os_service_default']. +# +# [*swift_store_endpoint_type*] +# (Optional) Endpoint type of Swift service. +# Defaults to $facts['os_service_default']. +# +# [*swift_store_service_type*] +# (Optional) Type of the swift service to use. +# Defaults to $facts['os_service_default']. +# +# [*swift_store_region*] +# (Optional) The region of Swift endpoint to use by Glance. +# Defaults to $facts['os_service_default']. +# +# [*swift_buffer_on_upload*] +# (Optional) Buffer image segments before upload to Swift. +# Defaults to $facts['os_service_default']. +# +# [*swift_upload_buffer_dir*] +# (Optional) Directory to buffer image segments before upload to Swift. +# Defaults to $facts['os_service_default']. +# +# [*swift_store_retry_get_count*] +# (Optional) The number of times a Swift download will be retried before +# the request fails. +# Defaults to $facts['os_service_default']. +# +class glance::backend::defaults::swift( + $swift_store_container = $facts['os_service_default'], + $swift_store_large_object_size = $facts['os_service_default'], + $swift_store_large_object_chunk_size = $facts['os_service_default'], + $swift_store_create_container_on_put = $facts['os_service_default'], + $swift_store_endpoint_type = $facts['os_service_default'], + $swift_store_service_type = $facts['os_service_default'], + $swift_store_region = $facts['os_service_default'], + $swift_buffer_on_upload = $facts['os_service_default'], + $swift_upload_buffer_dir = $facts['os_service_default'], + $swift_store_retry_get_count = $facts['os_service_default'], +) { + + include glance::deps + include swift::client + + glance_api_config { + 'backend_defaults/swift_store_region': value => $swift_store_region; + 'backend_defaults/swift_store_container': value => $swift_store_container; + 'backend_defaults/swift_store_create_container_on_put': value => $swift_store_create_container_on_put; + 'backend_defaults/swift_store_large_object_size': value => $swift_store_large_object_size; + 'backend_defaults/swift_store_large_object_chunk_size': value => $swift_store_large_object_chunk_size; + 'backend_defaults/swift_store_endpoint_type': value => $swift_store_endpoint_type; + 'backend_defaults/swift_store_service_type': value => $swift_store_service_type; + 'backend_defaults/swift_buffer_on_upload': value => $swift_buffer_on_upload; + 'backend_defaults/swift_upload_buffer_dir': value => $swift_upload_buffer_dir; + 'backend_defaults/swift_store_retry_get_count': value => $swift_store_retry_get_count; + } + glance_cache_config { + 'backend_defaults/swift_store_region': value => $swift_store_region; + 'backend_defaults/swift_store_container': value => $swift_store_container; + 'backend_defaults/swift_store_create_container_on_put': value => $swift_store_create_container_on_put; + 'backend_defaults/swift_store_large_object_size': value => $swift_store_large_object_size; + 'backend_defaults/swift_store_large_object_chunk_size': value => $swift_store_large_object_chunk_size; + 'backend_defaults/swift_store_endpoint_type': value => $swift_store_endpoint_type; + 'backend_defaults/swift_store_service_type': value => $swift_store_service_type; + 'backend_defaults/swift_buffer_on_upload': value => $swift_buffer_on_upload; + 'backend_defaults/swift_upload_buffer_dir': value => $swift_upload_buffer_dir; + 'backend_defaults/swift_store_retry_get_count': value => $swift_store_retry_get_count; + } +} diff --git a/manifests/backend/multistore/rbd.pp b/manifests/backend/multistore/rbd.pp index 56346b54..50b145b2 100644 --- a/manifests/backend/multistore/rbd.pp +++ b/manifests/backend/multistore/rbd.pp @@ -15,8 +15,7 @@ # # == Define: glance::backend::multistore::rbd # -# configures the storage backend for glance -# as a rbd instance +# configures the storage backend for glance as a rbd instance # # === Parameters: # diff --git a/manifests/backend/multistore/swift.pp b/manifests/backend/multistore/swift.pp index 62780383..5cd835d5 100644 --- a/manifests/backend/multistore/swift.pp +++ b/manifests/backend/multistore/swift.pp @@ -13,10 +13,9 @@ # License for the specific language governing permissions and limitations # under the License. # -# == Define: glance::backend::swift +# == Define: glance::backend::multistore::swift # -# configures the storage backend for glance -# as a swift instance +# configures the storage backend for glance as a swift instance # # === Parameters: # diff --git a/releasenotes/notes/backend-defaults-462ee04b120ff23c.yaml b/releasenotes/notes/backend-defaults-462ee04b120ff23c.yaml new file mode 100644 index 00000000..276a5d51 --- /dev/null +++ b/releasenotes/notes/backend-defaults-462ee04b120ff23c.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Added support for managing options in the new ``[backend_defaults]`` + section. diff --git a/spec/classes/glance_backend_defaults_file_spec.rb b/spec/classes/glance_backend_defaults_file_spec.rb new file mode 100644 index 00000000..b764fc8d --- /dev/null +++ b/spec/classes/glance_backend_defaults_file_spec.rb @@ -0,0 +1,72 @@ +require 'spec_helper' + +describe 'glance::backend::defaults::file' do + + shared_examples_for 'glance::backend::defaults::file' do + it 'configures glance-api.conf' do + is_expected.to contain_glance_api_config('backend_defaults/filesystem_store_datadir').with_value('') + is_expected.to contain_glance_api_config('backend_defaults/filesystem_store_metadata_file').with_value('') + is_expected.to contain_glance_api_config('backend_defaults/filesystem_store_file_perm').with_value('') + is_expected.to contain_glance_api_config('backend_defaults/filesystem_store_chunk_size').with_value('') + is_expected.to contain_glance_api_config('backend_defaults/filesystem_thin_provisioning').with_value('') + end + + it 'configures glance-cache.conf' do + is_expected.to contain_glance_cache_config('backend_defaults/filesystem_store_datadir').with_value('') + is_expected.to contain_glance_cache_config('backend_defaults/filesystem_store_metadata_file').with_value('') + is_expected.to contain_glance_cache_config('backend_defaults/filesystem_store_file_perm').with_value('') + is_expected.to contain_glance_cache_config('backend_defaults/filesystem_store_chunk_size').with_value('') + is_expected.to contain_glance_cache_config('backend_defaults/filesystem_thin_provisioning').with_value('') + end + + describe 'when overriding datadir' do + let :params do + { + :filesystem_store_datadir => '/var/lib/glance/images', + :filesystem_store_metadata_file => '/var/lib/glance/metadata.json', + :filesystem_store_file_perm => 0, + :filesystem_store_chunk_size => 65536, + :filesystem_thin_provisioning => true, + } + end + + it 'configures glance-api.conf' do + is_expected.to contain_glance_api_config('backend_defaults/filesystem_store_datadir')\ + .with_value('/var/lib/glance/images') + is_expected.to contain_glance_api_config('backend_defaults/filesystem_store_metadata_file')\ + .with_value('/var/lib/glance/metadata.json') + is_expected.to contain_glance_api_config('backend_defaults/filesystem_store_file_perm')\ + .with_value(0) + is_expected.to contain_glance_api_config('backend_defaults/filesystem_store_chunk_size')\ + .with_value(65536) + is_expected.to contain_glance_api_config('backend_defaults/filesystem_thin_provisioning')\ + .with_value(true) + end + + it 'configures glance-cache.conf' do + is_expected.to contain_glance_cache_config('backend_defaults/filesystem_store_datadir')\ + .with_value('/var/lib/glance/images') + is_expected.to contain_glance_cache_config('backend_defaults/filesystem_store_metadata_file')\ + .with_value('/var/lib/glance/metadata.json') + is_expected.to contain_glance_cache_config('backend_defaults/filesystem_store_file_perm')\ + .with_value(0) + is_expected.to contain_glance_cache_config('backend_defaults/filesystem_store_chunk_size')\ + .with_value(65536) + is_expected.to contain_glance_cache_config('backend_defaults/filesystem_thin_provisioning')\ + .with_value(true) + 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 'glance::backend::defaults::file' + end + end +end diff --git a/spec/classes/glance_backend_defaults_rbd_spec.rb b/spec/classes/glance_backend_defaults_rbd_spec.rb new file mode 100644 index 00000000..ee4fb778 --- /dev/null +++ b/spec/classes/glance_backend_defaults_rbd_spec.rb @@ -0,0 +1,60 @@ +require 'spec_helper' + +describe 'glance::backend::defaults::rbd' do + shared_examples 'glance::backend::defaults::rbd' do + context 'with default params' do + it 'configures glance-api.conf' do + should contain_glance_api_config('backend_defaults/rbd_store_user').with_value('') + should contain_glance_api_config('backend_defaults/rbd_store_pool').with_value('') + should contain_glance_api_config('backend_defaults/rbd_store_ceph_conf').with_value('') + should contain_glance_api_config('backend_defaults/rbd_store_chunk_size').with_value('') + should contain_glance_api_config('backend_defaults/rbd_thin_provisioning').with_value('') + should contain_glance_api_config('backend_defaults/rados_connect_timeout').with_value('') + end + it 'configures glance-cache.conf' do + should contain_glance_cache_config('backend_defaults/rbd_store_user').with_value('') + should contain_glance_cache_config('backend_defaults/rbd_store_pool').with_value('') + should contain_glance_cache_config('backend_defaults/rbd_store_ceph_conf').with_value('') + should contain_glance_cache_config('backend_defaults/rbd_store_chunk_size').with_value('') + should contain_glance_cache_config('backend_defaults/rbd_thin_provisioning').with_value('') + should contain_glance_cache_config('backend_defaults/rados_connect_timeout').with_value('') + end + end + + context 'when passing params' do + let :params do + { + :rbd_store_user => 'user', + :rbd_store_chunk_size => '2', + :rbd_thin_provisioning => 'true', + :rados_connect_timeout => '30', + } + end + + it 'configures glance-api.conf' do + should contain_glance_api_config('backend_defaults/rbd_store_user').with_value('user') + should contain_glance_api_config('backend_defaults/rbd_store_chunk_size').with_value('2') + should contain_glance_api_config('backend_defaults/rbd_thin_provisioning').with_value('true') + should contain_glance_api_config('backend_defaults/rados_connect_timeout').with_value('30') + end + it 'configures glance-cache.conf' do + should contain_glance_cache_config('backend_defaults/rbd_store_user').with_value('user') + should contain_glance_cache_config('backend_defaults/rbd_store_chunk_size').with_value('2') + should contain_glance_cache_config('backend_defaults/rbd_thin_provisioning').with_value('true') + should contain_glance_cache_config('backend_defaults/rados_connect_timeout').with_value('30') + 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 'glance::backend::defaults::rbd' + end + end +end diff --git a/spec/classes/glance_backend_defaults_s3_spec.rb b/spec/classes/glance_backend_defaults_s3_spec.rb new file mode 100644 index 00000000..2620d5eb --- /dev/null +++ b/spec/classes/glance_backend_defaults_s3_spec.rb @@ -0,0 +1,83 @@ +require 'spec_helper' + +describe 'glance::backend::defaults::s3' do + shared_examples_for 'glance::backend::defaults::s3' do + context 'with defaults' do + it 'configures glance-api.conf' do + is_expected.to contain_glance_api_config('backend_defaults/s3_store_host').with_value('') + is_expected.to contain_glance_api_config('backend_defaults/s3_store_access_key').with_value('').with_secret(true) + is_expected.to contain_glance_api_config('backend_defaults/s3_store_secret_key').with_value('').with_secret(true) + is_expected.to contain_glance_api_config('backend_defaults/s3_store_bucket').with_value('') + is_expected.to contain_glance_api_config('backend_defaults/s3_store_create_bucket_on_put').with_value('') + is_expected.to contain_glance_api_config('backend_defaults/s3_store_bucket_url_format').with_value('') + is_expected.to contain_glance_api_config('backend_defaults/s3_store_large_object_size').with_value('') + is_expected.to contain_glance_api_config('backend_defaults/s3_store_large_object_chunk_size').with_value('') + is_expected.to contain_glance_api_config('backend_defaults/s3_store_thread_pools').with_value('') + end + + it 'configures glance-cache.conf' do + is_expected.to contain_glance_cache_config('backend_defaults/s3_store_host').with_value('') + is_expected.to contain_glance_cache_config('backend_defaults/s3_store_access_key').with_value('').with_secret(true) + is_expected.to contain_glance_cache_config('backend_defaults/s3_store_secret_key').with_value('').with_secret(true) + is_expected.to contain_glance_cache_config('backend_defaults/s3_store_bucket').with_value('') + is_expected.to contain_glance_cache_config('backend_defaults/s3_store_create_bucket_on_put').with_value('') + is_expected.to contain_glance_cache_config('backend_defaults/s3_store_bucket_url_format').with_value('') + is_expected.to contain_glance_cache_config('backend_defaults/s3_store_large_object_size').with_value('') + is_expected.to contain_glance_cache_config('backend_defaults/s3_store_large_object_chunk_size').with_value('') + is_expected.to contain_glance_cache_config('backend_defaults/s3_store_thread_pools').with_value('') + end + end + + context 'when overriding datadir' do + let :params do + { + :s3_store_host => 'host', + :s3_store_access_key => 'access', + :s3_store_secret_key => 'secret', + :s3_store_bucket => 'bucket', + :s3_store_create_bucket_on_put => false, + :s3_store_bucket_url_format => 'auto', + :s3_store_large_object_size => 100, + :s3_store_large_object_chunk_size => 10, + :s3_store_thread_pools => 11, + } + end + + it 'configures glance-api.conf' do + is_expected.to contain_glance_api_config('backend_defaults/s3_store_host').with_value('host') + is_expected.to contain_glance_api_config('backend_defaults/s3_store_access_key').with_value('access').with_secret(true) + is_expected.to contain_glance_api_config('backend_defaults/s3_store_secret_key').with_value('secret').with_secret(true) + is_expected.to contain_glance_api_config('backend_defaults/s3_store_bucket').with_value('bucket') + is_expected.to contain_glance_api_config('backend_defaults/s3_store_create_bucket_on_put').with_value(false) + is_expected.to contain_glance_api_config('backend_defaults/s3_store_bucket_url_format').with_value('auto') + is_expected.to contain_glance_api_config('backend_defaults/s3_store_large_object_size').with_value(100) + is_expected.to contain_glance_api_config('backend_defaults/s3_store_large_object_chunk_size').with_value(10) + is_expected.to contain_glance_api_config('backend_defaults/s3_store_thread_pools').with_value(11) + end + + it 'configures glance-cache.conf' do + is_expected.to contain_glance_cache_config('backend_defaults/s3_store_host').with_value('host') + is_expected.to contain_glance_cache_config('backend_defaults/s3_store_access_key').with_value('access').with_secret(true) + is_expected.to contain_glance_cache_config('backend_defaults/s3_store_secret_key').with_value('secret').with_secret(true) + is_expected.to contain_glance_cache_config('backend_defaults/s3_store_bucket').with_value('bucket') + is_expected.to contain_glance_cache_config('backend_defaults/s3_store_create_bucket_on_put').with_value(false) + is_expected.to contain_glance_cache_config('backend_defaults/s3_store_bucket_url_format').with_value('auto') + is_expected.to contain_glance_cache_config('backend_defaults/s3_store_large_object_size').with_value(100) + is_expected.to contain_glance_cache_config('backend_defaults/s3_store_large_object_chunk_size').with_value(10) + is_expected.to contain_glance_cache_config('backend_defaults/s3_store_thread_pools').with_value(11) + 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 'glance::backend::defaults::s3' + end + end +end diff --git a/spec/classes/glance_backend_defaults_swift_spec.rb b/spec/classes/glance_backend_defaults_swift_spec.rb new file mode 100644 index 00000000..4a1b33ec --- /dev/null +++ b/spec/classes/glance_backend_defaults_swift_spec.rb @@ -0,0 +1,88 @@ +require 'spec_helper' + +describe 'glance::backend::defaults::swift' do + + shared_examples_for 'glance::backend::defaults::swift' do + describe 'when default parameters' do + + it 'configures glance-api.conf' do + is_expected.to contain_glance_api_config('backend_defaults/swift_store_large_object_size').with_value('') + is_expected.to contain_glance_api_config('backend_defaults/swift_store_large_object_chunk_size').with_value('') + is_expected.to contain_glance_api_config('backend_defaults/swift_store_container').with_value('') + is_expected.to contain_glance_api_config('backend_defaults/swift_store_create_container_on_put').with_value('') + is_expected.to contain_glance_api_config('backend_defaults/swift_store_endpoint_type').with_value('') + is_expected.to contain_glance_api_config('backend_defaults/swift_store_service_type').with_value('') + is_expected.to contain_glance_api_config('backend_defaults/swift_store_region').with_value('') + is_expected.to contain_glance_api_config('backend_defaults/swift_buffer_on_upload').with_value('') + is_expected.to contain_glance_api_config('backend_defaults/swift_upload_buffer_dir').with_value('') + is_expected.to contain_glance_api_config('backend_defaults/swift_store_retry_get_count').with_value('') + end + it 'configures glance-cache.conf' do + is_expected.to contain_glance_cache_config('backend_defaults/swift_store_large_object_size').with_value('') + is_expected.to contain_glance_cache_config('backend_defaults/swift_store_large_object_chunk_size').with_value('') + is_expected.to contain_glance_cache_config('backend_defaults/swift_store_container').with_value('') + is_expected.to contain_glance_cache_config('backend_defaults/swift_store_create_container_on_put').with_value('') + is_expected.to contain_glance_cache_config('backend_defaults/swift_store_endpoint_type').with_value('') + is_expected.to contain_glance_cache_config('backend_defaults/swift_store_service_type').with_value('') + is_expected.to contain_glance_cache_config('backend_defaults/swift_store_region').with_value('') + is_expected.to contain_glance_cache_config('backend_defaults/swift_buffer_on_upload').with_value('') + is_expected.to contain_glance_cache_config('backend_defaults/swift_upload_buffer_dir').with_value('') + is_expected.to contain_glance_cache_config('backend_defaults/swift_store_retry_get_count').with_value('') + end + end + + describe 'when overriding parameters' do + let :params do + { + :swift_store_large_object_size => '100', + :swift_store_large_object_chunk_size => '50', + :swift_store_container => 'swift', + :swift_store_create_container_on_put => true, + :swift_store_endpoint_type => 'publicURL', + :swift_store_service_type => 'object-store', + :swift_store_region => 'RegionTwo', + :swift_buffer_on_upload => true, + :swift_upload_buffer_dir => '/var/glance/swift', + :swift_store_retry_get_count => 3, + } + end + + it 'configures glance-api.conf' do + is_expected.to contain_glance_api_config('backend_defaults/swift_store_container').with_value('swift') + is_expected.to contain_glance_api_config('backend_defaults/swift_store_create_container_on_put').with_value(true) + is_expected.to contain_glance_api_config('backend_defaults/swift_store_large_object_size').with_value('100') + is_expected.to contain_glance_api_config('backend_defaults/swift_store_large_object_chunk_size').with_value('50') + is_expected.to contain_glance_api_config('backend_defaults/swift_store_endpoint_type').with_value('publicURL') + is_expected.to contain_glance_api_config('backend_defaults/swift_store_service_type').with_value('object-store') + is_expected.to contain_glance_api_config('backend_defaults/swift_store_region').with_value('RegionTwo') + is_expected.to contain_glance_api_config('backend_defaults/swift_buffer_on_upload').with_value(true) + is_expected.to contain_glance_api_config('backend_defaults/swift_upload_buffer_dir').with_value('/var/glance/swift') + is_expected.to contain_glance_api_config('backend_defaults/swift_store_retry_get_count').with_value(3) + end + it 'configures glance-cache.conf' do + is_expected.to contain_glance_cache_config('backend_defaults/swift_store_container').with_value('swift') + is_expected.to contain_glance_cache_config('backend_defaults/swift_store_create_container_on_put').with_value(true) + is_expected.to contain_glance_cache_config('backend_defaults/swift_store_large_object_size').with_value('100') + is_expected.to contain_glance_cache_config('backend_defaults/swift_store_large_object_chunk_size').with_value('50') + is_expected.to contain_glance_cache_config('backend_defaults/swift_store_endpoint_type').with_value('publicURL') + is_expected.to contain_glance_cache_config('backend_defaults/swift_store_service_type').with_value('object-store') + is_expected.to contain_glance_cache_config('backend_defaults/swift_store_region').with_value('RegionTwo') + is_expected.to contain_glance_cache_config('backend_defaults/swift_buffer_on_upload').with_value(true) + is_expected.to contain_glance_cache_config('backend_defaults/swift_upload_buffer_dir').with_value('/var/glance/swift') + is_expected.to contain_glance_cache_config('backend_defaults/swift_store_retry_get_count').with_value(3) + 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 'glance::backend::defaults::swift' + end + end +end