From 71b70a16b3939b7d8b25524b1cf32d2f37ed3a30 Mon Sep 17 00:00:00 2001 From: PranaliD Date: Thu, 10 Sep 2020 10:12:02 +0000 Subject: [PATCH] Handle sparse image upload configuration parameters Addng ``rbd_thin_provisioning`` and ``filesystem_thin_provisioning`` to rbd and filesystem backends, to enable or not sparse upload. Depends-On: Ic95fa45af0f1db92d8425862c6267f466764fbbe Change-Id: I90c8ea98a96fa57f5bf3bf0c6b2b37ec95474baf --- manifests/profile/base/glance/backend/file.pp | 18 ++++++++----- manifests/profile/base/glance/backend/rbd.pp | 6 +++++ ...o_profile_base_glance_backend_file_spec.rb | 16 ++++++++++++ ...eo_profile_base_glance_backend_rbd_spec.rb | 26 +++++++++++++++++-- 4 files changed, 58 insertions(+), 8 deletions(-) diff --git a/manifests/profile/base/glance/backend/file.pp b/manifests/profile/base/glance/backend/file.pp index ae848af79..f90be6194 100644 --- a/manifests/profile/base/glance/backend/file.pp +++ b/manifests/profile/base/glance/backend/file.pp @@ -29,6 +29,10 @@ # (Optional) Location where dist images are stored when the backend type is file. # Defaults to hiera('glance::backend::file::filesystem_store_datadir', undef). # +# [*filesystem_thin_provisioning*] +# (Optional) Boolean describing if thin provisioning is enabled or not +# Defaults to hiera('glance::backend::file::filesystem_thin_provisioning', undef). +# # [*store_description*] # (Optional) Provides constructive information about the store backend to # end users. @@ -41,10 +45,11 @@ # class tripleo::profile::base::glance::backend::file ( $backend_names, - $multistore_config = {}, - $filesystem_store_datadir = hiera('glance::backend::file::filesystem_store_datadir', undef), - $store_description = hiera('tripleo::profile::base::glance::api::glance_store_description', 'File store'), - $step = Integer(hiera('step')), + $multistore_config = {}, + $filesystem_store_datadir = hiera('glance::backend::file::filesystem_store_datadir', undef), + $filesystem_thin_provisioning = hiera('glance::backend::file::filesystem_thin_provisioning', undef), + $store_description = hiera('tripleo::profile::base::glance::api::glance_store_description', 'File store'), + $step = Integer(hiera('step')), ) { if $backend_names.length() > 1 { @@ -58,8 +63,9 @@ class tripleo::profile::base::glance::backend::file ( $store_description_real = pick($multistore_description, $store_description) glance::backend::multistore::file { $backend_name: - filesystem_store_datadir => $filesystem_store_datadir, - store_description => $store_description_real, + filesystem_store_datadir => $filesystem_store_datadir, + filesystem_thin_provisioning => $filesystem_thin_provisioning, + store_description => $store_description_real, } } } diff --git a/manifests/profile/base/glance/backend/rbd.pp b/manifests/profile/base/glance/backend/rbd.pp index 60f20e1ff..f728b09be 100644 --- a/manifests/profile/base/glance/backend/rbd.pp +++ b/manifests/profile/base/glance/backend/rbd.pp @@ -41,6 +41,10 @@ # (Optional) RBD chunk size. # Defaults to hiera('glance::backend::rbd::rbd_store_chunk_size', undef). # +# [*rbd_thin_provisioning*] +# (Optional) Boolean describing if thin provisioning is enabled or not +# Defaults to hiera('glance::backend::rbd::rbd_thin_provisioning', undef). +# # [*rados_connect_timeout*] # (Optional) RADOS connection timeout. # Defaults to hiera('glance::backend::rbd::rados_connect_timeout', undef). @@ -62,6 +66,7 @@ class tripleo::profile::base::glance::backend::rbd ( $rbd_store_user = hiera('glance::backend::rbd::rbd_store_user', 'openstack'), $rbd_store_pool = hiera('glance::backend::rbd::rbd_store_pool', 'images'), $rbd_store_chunk_size = hiera('glance::backend::rbd::rbd_store_chunk_size', undef), + $rbd_thin_provisioning = hiera('glance::backend::rbd::rbd_thin_provisioning', undef), $rados_connect_timeout = hiera('glance::backend::rbd::rados_connect_timeout', undef), $store_description = hiera('tripleo::profile::base::glance::api::glance_store_description', 'RBD store'), $step = Integer(hiera('step')), @@ -102,6 +107,7 @@ class tripleo::profile::base::glance::backend::rbd ( rbd_store_user => $rbd_store_user_real, rbd_store_pool => $rbd_store_pool_real, rbd_store_chunk_size => $rbd_store_chunk_size, + rbd_thin_provisioning => $rbd_thin_provisioning, rados_connect_timeout => $rados_connect_timeout, store_description => $store_description_real, } diff --git a/spec/classes/tripleo_profile_base_glance_backend_file_spec.rb b/spec/classes/tripleo_profile_base_glance_backend_file_spec.rb index fea0a9b64..2b13484ce 100644 --- a/spec/classes/tripleo_profile_base_glance_backend_file_spec.rb +++ b/spec/classes/tripleo_profile_base_glance_backend_file_spec.rb @@ -49,6 +49,22 @@ describe 'tripleo::profile::base::glance::backend::file' do ) end + context 'with parameters overridden' do + before :each do + params.merge!({ + :filesystem_thin_provisioning => true + }) + + it 'should configure the backend with the specified parameters' do + is_expected.to contain_glance__backend__multistore__file('my_file').with( + :filesystem_store_datadir => '/path/to/datadir', + :filesystem_thin_provisioning => true, + :store_description => 'File store', + ) + end + end + end + context 'with store description in multistore_config' do before :each do params.merge!({ diff --git a/spec/classes/tripleo_profile_base_glance_backend_rbd_spec.rb b/spec/classes/tripleo_profile_base_glance_backend_rbd_spec.rb index 8039b1b7f..21e362a16 100644 --- a/spec/classes/tripleo_profile_base_glance_backend_rbd_spec.rb +++ b/spec/classes/tripleo_profile_base_glance_backend_rbd_spec.rb @@ -37,8 +37,8 @@ describe 'tripleo::profile::base::glance::backend::rbd' do context 'with step 4' do let(:params) { { - :backend_names => ['my_rbd'], - :step => 4, + :backend_names => ['my_rbd'], + :step => 4, } } it 'should configure the backend' do @@ -56,6 +56,28 @@ describe 'tripleo::profile::base::glance::backend::rbd' do ) end + context 'with parameters overridden' do + before :each do + params.merge!({ + :rbd_store_chunk_size => 512, + :rbd_thin_provisioning => true, + :rados_connect_timeout => 10, + }) + + it 'should configure the backend with the specified parameters' do + is_expected.to contain_glance__backend__multistore__rbd('my_rbd').with( + :rbd_store_ceph_conf => '/etc/ceph/ceph.conf', + :rbd_store_user => 'openstack', + :rbd_store_pool => 'images', + :rbd_store_chunk_size => 512, + :rbd_thin_provisioning => true, + :rados_connect_timeout => 10, + :store_description => 'RBD store', + ) + end + end + end + context 'with store description in multistore_config' do before :each do params.merge!({