diff --git a/manifests/ringbuilder/create.pp b/manifests/ringbuilder/create.pp index bb951eff..b5660676 100644 --- a/manifests/ringbuilder/create.pp +++ b/manifests/ringbuilder/create.pp @@ -41,8 +41,10 @@ define swift::ringbuilder::create( include swift::deps - validate_legacy(Enum['object', 'container', 'account'], 'validate_re', $name, - ['^object|container|account$']) + validate_legacy( + Pattern[/^(object(-(\d)+)?|container|account)$/], 'validate_re', $name, + ['^(object(-(\d)+)?|container|account)$'] + ) exec { "create_${name}": command => "swift-ring-builder /etc/swift/${name}.builder create ${part_power} ${replicas} ${min_part_hours}", diff --git a/manifests/ringbuilder/rebalance.pp b/manifests/ringbuilder/rebalance.pp index 919e7d63..97fa0206 100644 --- a/manifests/ringbuilder/rebalance.pp +++ b/manifests/ringbuilder/rebalance.pp @@ -14,8 +14,10 @@ define swift::ringbuilder::rebalance( include swift::deps - validate_legacy(Enum['object', 'container', 'account'], 'validate_re', $name, - ['^object|container|account$']) + validate_legacy( + Pattern[/^(object(-(\d)+)?|container|account)$/], 'validate_re', $name, + ['^(object(-(\d)+)?|container|account)$'] + ) if $seed { validate_legacy(Integer, 'validate_re', $seed, ['^\d+$']) diff --git a/spec/defines/swift_ringbuilder_create_spec.rb b/spec/defines/swift_ringbuilder_create_spec.rb index 7689172e..3049e170 100644 --- a/spec/defines/swift_ringbuilder_create_spec.rb +++ b/spec/defines/swift_ringbuilder_create_spec.rb @@ -12,7 +12,7 @@ describe 'swift::ringbuilder::create' do shared_examples 'swift::ringbuilder::create' do describe 'with allowed titles' do - ['object', 'container', 'account'].each do |type| + ['object', 'container', 'account', 'object-1', 'object-123'].each do |type| describe "when title is #{type}" do let :title do type @@ -46,11 +46,15 @@ describe 'swift::ringbuilder::create' do end describe 'with an invalid title' do - let :title do - 'invalid' - end + ['invalid', 'container-1', 'account-1', 'object-a', 'object-12a'].each do |type| + describe "when title is #{type}" do + let :title do + type + end - it { should raise_error(Puppet::Error) } + it { should raise_error(Puppet::Error) } + end + end end end diff --git a/spec/defines/swift_ringbuilder_rebalance_spec.rb b/spec/defines/swift_ringbuilder_rebalance_spec.rb index e4e8d29a..85b02c3b 100644 --- a/spec/defines/swift_ringbuilder_rebalance_spec.rb +++ b/spec/defines/swift_ringbuilder_rebalance_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' describe 'swift::ringbuilder::rebalance' do shared_examples 'swift::ringbuilder::rebalance' do describe 'with allowed titles' do - ['object', 'container', 'account'].each do |type| + ['object', 'container', 'account', 'object-1', 'object-123'].each do |type| describe "when title is #{type}" do let :title do type @@ -49,12 +49,16 @@ describe 'swift::ringbuilder::rebalance' do end describe 'with an invalid title' do - let :title do - 'invalid' - end + ['invalid', 'container-1', 'account-1', 'object-a', 'object-12a'].each do |type| + describe "when title is #{type}" do + let :title do + type + end - it 'should raise an error' do - expect { catalogue }.to raise_error(Puppet::Error) + it 'should raise an error' do + expect { catalogue }.to raise_error(Puppet::Error) + end + end end end end