X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=3rdparty%2Fmodules%2Frabbitmq%2Flib%2Fpuppet%2Fprovider%2Frabbitmq_user_permissions%2Frabbitmqctl.rb;fp=3rdparty%2Fmodules%2Frabbitmq%2Flib%2Fpuppet%2Fprovider%2Frabbitmq_user_permissions%2Frabbitmqctl.rb;h=d44d4586d0b48e04eaeca708a5832db72a22a446;hb=94a8783f522bbf2996cb8a59b977dea583e8b0c7;hp=a0b8b5a1ae7f4de91d66978fccb16076f98a3ff4;hpb=e107504bce7d9b21cc301124fc7c39fdb0762374;p=mirror%2Fdsa-puppet.git diff --git a/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_user_permissions/rabbitmqctl.rb b/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_user_permissions/rabbitmqctl.rb index a0b8b5a1a..d44d4586d 100644 --- a/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_user_permissions/rabbitmqctl.rb +++ b/3rdparty/modules/rabbitmq/lib/puppet/provider/rabbitmq_user_permissions/rabbitmqctl.rb @@ -1,31 +1,28 @@ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'rabbitmqctl')) -Puppet::Type.type(:rabbitmq_user_permissions).provide(:rabbitmqctl, :parent => Puppet::Provider::Rabbitmqctl) do - +Puppet::Type.type(:rabbitmq_user_permissions).provide(:rabbitmqctl, parent: Puppet::Provider::Rabbitmqctl) do if Puppet::PUPPETVERSION.to_f < 3 - commands :rabbitmqctl => 'rabbitmqctl' + commands rabbitmqctl: 'rabbitmqctl' else - has_command(:rabbitmqctl, 'rabbitmqctl') do - environment :HOME => "/tmp" - end + has_command(:rabbitmqctl, 'rabbitmqctl') do + environment HOME: '/tmp' + end end - defaultfor :feature=> :posix + confine feature: :posix # cache users permissions def self.users(name, vhost) @users = {} unless @users unless @users[name] @users[name] = {} - self.run_with_retries { + user_permission_list = run_with_retries do rabbitmqctl('-q', 'list_user_permissions', name) - }.split(/\n/).each do |line| - line = self::strip_backslashes(line) - if line =~ /^(\S+)\s+(\S*)\s+(\S*)\s+(\S*)$/ - @users[name][$1] = - {:configure => $2, :read => $4, :write => $3} - else - raise Puppet::Error, "cannot parse line from list_user_permissions:#{line}" - end + end + user_permission_list.split(%r{\n}).each do |line| + line = strip_backslashes(line) + raise Puppet::Error, "cannot parse line from list_user_permissions:#{line}" unless line =~ %r{^(\S+)\s+(\S*)\s+(\S*)\s+(\S*)$} + @users[name][Regexp.last_match(1)] = + { configure: Regexp.last_match(2), read: Regexp.last_match(4), write: Regexp.last_match(3) } end end @users[name][vhost] @@ -72,7 +69,7 @@ Puppet::Type.type(:rabbitmq_user_permissions).provide(:rabbitmqctl, :parent => P users(should_user, should_vhost)[:configure] end - def configure_permission=(perm) + def configure_permission=(_perm) set_permissions end @@ -80,7 +77,7 @@ Puppet::Type.type(:rabbitmq_user_permissions).provide(:rabbitmqctl, :parent => P users(should_user, should_vhost)[:read] end - def read_permission=(perm) + def read_permission=(_perm) set_permissions end @@ -88,27 +85,30 @@ Puppet::Type.type(:rabbitmq_user_permissions).provide(:rabbitmqctl, :parent => P users(should_user, should_vhost)[:write] end - def write_permission=(perm) + def write_permission=(_perm) set_permissions end # implement memoization so that we only call set_permissions once def set_permissions - unless @permissions_set - @permissions_set = true - resource[:configure_permission] ||= configure_permission - resource[:read_permission] ||= read_permission - resource[:write_permission] ||= write_permission - rabbitmqctl('set_permissions', '-p', should_vhost, should_user, - resource[:configure_permission], resource[:write_permission], - resource[:read_permission] - ) - end + return if @permissions_set + + @permissions_set = true + resource[:configure_permission] ||= configure_permission + resource[:read_permission] ||= read_permission + resource[:write_permission] ||= write_permission + rabbitmqctl( + 'set_permissions', + '-p', should_vhost, + should_user, + resource[:configure_permission], + resource[:write_permission], + resource[:read_permission] + ) end def self.strip_backslashes(string) # See: https://github.com/rabbitmq/rabbitmq-server/blob/v1_7/docs/rabbitmqctl.1.pod#output-escaping - string.gsub(/\\\\/, '\\') + string.gsub(%r{\\\\}, '\\') end - end