Description: Fix list_users provider
Author: Thomas Goirand <zigo@debian.org>
Forwarded: https://github.com/voxpupuli/puppet-rabbitmq/pull/1060
Last-Update: 2025-05-29

Index: puppet-module-puppetlabs-rabbitmq/lib/puppet/provider/rabbitmq_user/rabbitmqctl.rb
===================================================================
--- puppet-module-puppetlabs-rabbitmq.orig/lib/puppet/provider/rabbitmq_user/rabbitmqctl.rb
+++ puppet-module-puppetlabs-rabbitmq/lib/puppet/provider/rabbitmq_user/rabbitmqctl.rb
@@ -15,7 +15,16 @@ Puppet::Type.type(:rabbitmq_user).provid
       rabbitmqctl_list('users')
     end
 
-    user_list.split(%r{\n}).map do |line|
+    lines = user_list.split(%r{\n})
+
+    # Skip the header lines in RabbitMQ 4.x
+    # Skip "Listing users ..." and "user    tags" lines
+    while lines.any? && (lines.first =~ %r{^Listing users} || lines.first =~ %r{^user\s+tags} || lines.first.strip.empty?)
+      lines.shift
+    end
+
+    # Process remaining lines (should be user data)
+    lines.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*})
