From 11b193cab8f880f1b73c57208646a889979e6fd8 Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Mon, 22 Aug 2022 17:11:34 +0900 Subject: [PATCH] Fix type validation warning for storage policy rings Since 63688a14e57282ae97072b406c81d0da2f61965c was merged, this module support configuring storage policies. When multiple storage policies are used, we need to create multiple object rings like object.ring.gz, object-1.ring.gz. However the current regexp to validate the ring name does not consider this format and shows the type validation warning when creating a non-default policy rings. This change updates the regexp used in validation to accept that object- format as well. Closes-Bug: #1987260 Change-Id: Ibc7479e7defbfa4c49bf3c9f1574cdcf61b90ab9 --- manifests/ringbuilder/create.pp | 6 ++++-- manifests/ringbuilder/rebalance.pp | 6 ++++-- spec/defines/swift_ringbuilder_create_spec.rb | 14 +++++++++----- spec/defines/swift_ringbuilder_rebalance_spec.rb | 16 ++++++++++------ 4 files changed, 27 insertions(+), 15 deletions(-) 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