Update rabbitmq module
[mirror/dsa-puppet.git] / 3rdparty / modules / rabbitmq / lib / puppet / provider / rabbitmq_user_permissions / rabbitmqctl.rb
index a0b8b5a..d44d458 100644 (file)
@@ -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