diff --git a/manifests/storage/rbd/osd.pp b/manifests/storage/rbd/osd.pp index e85608cc..16e5d5dc 100644 --- a/manifests/storage/rbd/osd.pp +++ b/manifests/storage/rbd/osd.pp @@ -16,7 +16,7 @@ class cloud::storage::rbd::osd ( $public_address = '127.0.0.1', $cluster_address = '127.0.0.1', - $devices = ['sdb','sdc'], + $devices = ['sdb','/dev/sdc'], ) { include 'cloud::storage::rbd' @@ -26,7 +26,16 @@ class cloud::storage::rbd::osd ( cluster_address => $cluster_address, } - $osd_ceph = prefix($devices,'/dev/') - ceph::osd::device { $osd_ceph: } - + if is_array($devices) { + if '/dev/' in $devices { + ceph::osd::device { $devices: } + } + else { + $osd_ceph = prefix($devices,'/dev/') + ceph::osd::device { $osd_ceph: } + } + } + elsif is_hash($devices) { + create_resources('ceph::osd::device', $devices) + } } diff --git a/spec/classes/cloud_storage_rbd_osd_spec.rb b/spec/classes/cloud_storage_rbd_osd_spec.rb index a53cc667..b36ed791 100644 --- a/spec/classes/cloud_storage_rbd_osd_spec.rb +++ b/spec/classes/cloud_storage_rbd_osd_spec.rb @@ -31,8 +31,7 @@ describe 'cloud::storage::rbd::osd' do let :params do { :public_address => '10.0.0.1', - :cluster_address => '192.168.0.1', - :devices => ['sdb','sdc','sdd'] } + :cluster_address => '192.168.0.1' } end it 'configure ceph common' do @@ -50,7 +49,16 @@ describe 'cloud::storage::rbd::osd' do :public_address => '10.0.0.1', :cluster_address => '192.168.0.1' ) - is_expected.to contain_ceph__osd__device('/dev/sdb','/dev/sdc','/dev/sdd') + end + + context 'without specified journal' do + before :each do + params.merge!( :devices => ['sdb','sdc','sdd'] ) + end + + it 'configure ceph osd with a mixed full-qualified and short device name' do + is_expected.to contain_ceph__osd__device('/dev/sdb','/dev/sdc','sdd') + end end end @@ -61,7 +69,6 @@ describe 'cloud::storage::rbd::osd' do :concat_basedir => '/var/lib/puppet/concat', :uniqueid => '123' } end - it_configures 'ceph osd' end