X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=3rdparty%2Fmodules%2Frabbitmq%2Flib%2Fpuppet%2Ftype%2Frabbitmq_policy.rb;h=65275a755b30825d59b479542b2cdd045421bc66;hb=921e69100a563cf143f56a3905d8362336d939ff;hp=259a1d66c09bd59dc0f32ea12e5ac78c1f51eb8d;hpb=b54f52d2899c5785923c804fdfbba0782c147da4;p=mirror%2Fdsa-puppet.git diff --git a/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_policy.rb b/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_policy.rb index 259a1d66c..65275a755 100644 --- a/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_policy.rb +++ b/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_policy.rb @@ -1,5 +1,18 @@ Puppet::Type.newtype(:rabbitmq_policy) do - desc 'Type for managing rabbitmq policies' + desc <<-DESC +Type for managing rabbitmq policies + +@example Create a rabbitmq_policy + rabbitmq_policy { 'ha-all@myvhost': + pattern => '.*', + priority => 0, + applyto => 'all', + definition => { + 'ha-mode' => 'all', + 'ha-sync-mode' => 'automatic', + }, + } +DESC ensurable do defaultto(:present) @@ -14,13 +27,13 @@ Puppet::Type.newtype(:rabbitmq_policy) do autorequire(:service) { 'rabbitmq-server' } validate do - fail('pattern parameter is required.') if self[:ensure] == :present and self[:pattern].nil? - fail('definition parameter is required.') if self[:ensure] == :present and self[:definition].nil? + raise('pattern parameter is required.') if self[:ensure] == :present && self[:pattern].nil? + raise('definition parameter is required.') if self[:ensure] == :present && self[:definition].nil? end - newparam(:name, :namevar => true) do + newparam(:name, namevar: true) do desc 'combination of policy@vhost to create policy for' - newvalues(/^\S+@\S+$/) + newvalues(%r{^\S+@\S+$}) end newproperty(:pattern) do @@ -50,7 +63,7 @@ Puppet::Type.newtype(:rabbitmq_policy) do newproperty(:priority) do desc 'policy priority' - newvalues(/^\d+$/) + newvalues(%r{^\d+$}) defaultto 0 end @@ -59,20 +72,24 @@ Puppet::Type.newtype(:rabbitmq_policy) do end def validate_pattern(value) - begin - Regexp.new(value) - rescue RegexpError - raise ArgumentError, "Invalid regexp #{value}" - end + Regexp.new(value) + rescue RegexpError + raise ArgumentError, "Invalid regexp #{value}" end def validate_definition(definition) unless [Hash].include?(definition.class) - raise ArgumentError, "Invalid definition" + raise ArgumentError, 'Invalid definition' end - definition.each do |k,v| - unless [String].include?(v.class) - raise ArgumentError, "Invalid definition" + definition.each do |k, v| + if k == 'ha-params' && definition['ha-mode'] == 'nodes' + unless [Array].include?(v.class) + raise ArgumentError, "Invalid definition, value #{v} for key #{k} is not an array" + end + else + unless [String].include?(v.class) + raise ArgumentError, "Invalid definition, value #{v} is not a string" + end end end if definition['ha-mode'] == 'exactly' @@ -87,6 +104,36 @@ Puppet::Type.newtype(:rabbitmq_policy) do raise ArgumentError, "Invalid expires value '#{expires_val}'" end end + if definition.key? 'message-ttl' + message_ttl_val = definition['message-ttl'] + unless message_ttl_val.to_i.to_s == message_ttl_val + raise ArgumentError, "Invalid message-ttl value '#{message_ttl_val}'" + end + end + if definition.key? 'max-length' + max_length_val = definition['max-length'] + unless max_length_val.to_i.to_s == max_length_val + raise ArgumentError, "Invalid max-length value '#{max_length_val}'" + end + end + if definition.key? 'max-length-bytes' + max_length_bytes_val = definition['max-length-bytes'] + unless max_length_bytes_val.to_i.to_s == max_length_bytes_val + raise ArgumentError, "Invalid max-length-bytes value '#{max_length_bytes_val}'" + end + end + if definition.key? 'shards-per-node' + shards_per_node_val = definition['shards-per-node'] + unless shards_per_node_val.to_i.to_s == shards_per_node_val + raise ArgumentError, "Invalid shards-per-node value '#{shards_per_node_val}'" + end + end + if definition.key? 'ha-sync-batch-size' # rubocop:disable Style/GuardClause + ha_sync_batch_size_val = definition['ha-sync-batch-size'] + unless ha_sync_batch_size_val.to_i.to_s == ha_sync_batch_size_val + raise ArgumentError, "Invalid ha-sync-batch-size value '#{ha_sync_batch_size_val}'" + end + end end def munge_definition(definition) @@ -96,6 +143,21 @@ Puppet::Type.newtype(:rabbitmq_policy) do if definition.key? 'expires' definition['expires'] = definition['expires'].to_i end + if definition.key? 'message-ttl' + definition['message-ttl'] = definition['message-ttl'].to_i + end + if definition.key? 'max-length' + definition['max-length'] = definition['max-length'].to_i + end + if definition.key? 'max-length-bytes' + definition['max-length-bytes'] = definition['max-length-bytes'].to_i + end + if definition.key? 'shards-per-node' + definition['shards-per-node'] = definition['shards-per-node'].to_i + end + if definition.key? 'ha-sync-batch-size' + definition['ha-sync-batch-size'] = definition['ha-sync-batch-size'].to_i + end definition end end