From f1ffc56131aa193cd5abd623e4a13cec428cf511 Mon Sep 17 00:00:00 2001 From: Thomas Goirand Date: Tue, 5 Aug 2025 09:27:27 +0200 Subject: [PATCH] Correctly handle rabbitmqctl list_users output The rabbitmq_user provider seemed broken to me, at least with a recent version of rabbitmq (I'm talking about 4.0.5 in Debian 13 aka Trixie). This small patch fixes the provider. --- .../provider/rabbitmq_user/rabbitmqctl.rb | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/lib/puppet/provider/rabbitmq_user/rabbitmqctl.rb b/lib/puppet/provider/rabbitmq_user/rabbitmqctl.rb index 8f624a388..a2cba427d 100644 --- a/lib/puppet/provider/rabbitmq_user/rabbitmqctl.rb +++ b/lib/puppet/provider/rabbitmq_user/rabbitmqctl.rb @@ -18,16 +18,20 @@ def self.instances rabbitmqctl_list('users') end - user_list.split(%r{\n}).map do |line| - raise Puppet::Error, "Cannot parse invalid user line: #{line}" unless line =~ %r{^(\S+)\s+\[(.*?)\]$} - - user = Regexp.last_match(1) - tags = Regexp.last_match(2).split(%r{,\s*}) - new( - ensure: :present, - name: user, - tags: tags - ) + if user_list.split(%r{\n}).size > 0 + user_list.split(%r{\n}).map do |line| + raise Puppet::Error, "Cannot parse invalid user line: #{line}" unless line =~ %r{^(\S+)\s+\[(.*?)\]$} + + user = Regexp.last_match(1) + tags = Regexp.last_match(2).split(%r{,\s*}) + new( + ensure: :present, + name: user, + tags: tags + ) + end + else + user_list = [] end end