From 896bf1ff5e17543197d6fb759bf293879481c909 Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Thu, 14 Jan 2021 09:48:36 +0900 Subject: [PATCH] Add support for image download via rbd This change introduces some new parameters to the nova::glance class, which are required for the new feature to download glance image via RBD instead of API[1]. [1] https://review.opendev.org/c/openstack/nova/+/574301 Change-Id: I0c9ebc5fd980204c59cc903372820e1ee1245630 --- manifests/glance.pp | 41 +++++++++++++++++-- ...age-download-via-rbd-159f6ccd7fada555.yaml | 5 +++ spec/classes/nova_glance_spec.rb | 19 ++++++++- 3 files changed, 59 insertions(+), 6 deletions(-) create mode 100644 releasenotes/notes/image-download-via-rbd-159f6ccd7fada555.yaml diff --git a/manifests/glance.pp b/manifests/glance.pp index ca40bd831..6a0dae5c9 100644 --- a/manifests/glance.pp +++ b/manifests/glance.pp @@ -12,9 +12,37 @@ # (optional) Number of retries in glance operation # Defaults to $::os_service_default # +# [*enable_rbd_download*] +# (optional) Enable download of Glance images directly via RBD +# Defaults to $::os_service_default +# +# [*rbd_user*] +# (optional) The RADOS client name for accessing Glance images stored as +# rbd volumes. +# Defaults to $::os_service_default +# +# [*rbd_connect_timeout*] +# (optional) THe RADOS client timeout in seconds when initially connecting +# to the cluster. +# Defaults to $::os_service_default +# +# [*rbd_pool*] +# (optional) The RADOS pool in which the Glance images are stored as rbd +# volumes. +# Defaults to $::os_service_default +# +# [*rbd_ceph_conf*] +# (optional) Path to the ceph configuration file to use. +# Defaults to $::os_service_default +# class nova::glance ( - $endpoint_override = $::os_service_default, - $num_retries = $::os_service_default, + $endpoint_override = $::os_service_default, + $num_retries = $::os_service_default, + $enable_rbd_download = $::os_service_default, + $rbd_user = $::os_service_default, + $rbd_connect_timeout = $::os_service_default, + $rbd_pool = $::os_service_default, + $rbd_ceph_conf = $::os_service_default, ) { include nova::deps @@ -23,7 +51,12 @@ class nova::glance ( $num_retries_real = pick($::nova::glance_num_retries, $num_retries) nova_config { - 'glance/endpoint_override': value => $endpoint_override_real; - 'glance/num_retries': value => $num_retries_real; + 'glance/endpoint_override': value => $endpoint_override_real; + 'glance/num_retries': value => $num_retries_real; + 'glance/enable_rbd_download': value => $enable_rbd_download; + 'glance/rbd_user': value => $rbd_user; + 'glance/rbd_connect_timeout': value => $rbd_connect_timeout; + 'glance/rbd_pool': value => $rbd_pool; + 'glance/rbd_ceph_conf': value => $rbd_ceph_conf; } } diff --git a/releasenotes/notes/image-download-via-rbd-159f6ccd7fada555.yaml b/releasenotes/notes/image-download-via-rbd-159f6ccd7fada555.yaml new file mode 100644 index 000000000..799870f1a --- /dev/null +++ b/releasenotes/notes/image-download-via-rbd-159f6ccd7fada555.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Now puppet-nova supports configurations required to download Glance images + into the libvirt image cache via RBD. diff --git a/spec/classes/nova_glance_spec.rb b/spec/classes/nova_glance_spec.rb index 048d9912e..b7366a970 100644 --- a/spec/classes/nova_glance_spec.rb +++ b/spec/classes/nova_glance_spec.rb @@ -11,20 +11,35 @@ describe 'nova::glance' do it 'configure default params' do is_expected.to contain_nova_config('glance/endpoint_override').with_value('') is_expected.to contain_nova_config('glance/num_retries').with_value('') + is_expected.to contain_nova_config('glance/enable_rbd_download').with_value('') + is_expected.to contain_nova_config('glance/rbd_user').with_value('') + is_expected.to contain_nova_config('glance/rbd_connect_timeout').with_value('') + is_expected.to contain_nova_config('glance/rbd_pool').with_value('') + is_expected.to contain_nova_config('glance/rbd_ceph_conf').with_value('') end end context 'with specific parameters' do let :params do { - :endpoint_override => 'http://localhost:9292', - :num_retries => 3, + :endpoint_override => 'http://localhost:9292', + :num_retries => 3, + :enable_rbd_download => true, + :rbd_user => 'nova', + :rbd_connect_timeout => 5, + :rbd_pool => 'images', + :rbd_ceph_conf => '/etc/ceph/ceph.conf', } end it 'configure glance params' do is_expected.to contain_nova_config('glance/endpoint_override').with_value('http://localhost:9292') is_expected.to contain_nova_config('glance/num_retries').with_value(3) + is_expected.to contain_nova_config('glance/enable_rbd_download').with_value(true) + is_expected.to contain_nova_config('glance/rbd_user').with_value('nova') + is_expected.to contain_nova_config('glance/rbd_connect_timeout').with_value(5) + is_expected.to contain_nova_config('glance/rbd_pool').with_value('images') + is_expected.to contain_nova_config('glance/rbd_ceph_conf').with_value('/etc/ceph/ceph.conf') end end end