X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=modules%2Frabbitmq%2Flib%2Fpuppet%2Ftype%2Frabbitmq_user_permissions.rb;fp=modules%2Frabbitmq%2Flib%2Fpuppet%2Ftype%2Frabbitmq_user_permissions.rb;h=427da6caa09c3b7ef8d600e03cf66b4dda93a28c;hb=0daa0d704c7bc516b1e9a481109e881005144aee;hp=0000000000000000000000000000000000000000;hpb=18c87466f6eaaffc14973a6623b4247c58b22e16;p=dsa-puppet.git diff --git a/modules/rabbitmq/lib/puppet/type/rabbitmq_user_permissions.rb b/modules/rabbitmq/lib/puppet/type/rabbitmq_user_permissions.rb new file mode 100644 index 00000000..427da6ca --- /dev/null +++ b/modules/rabbitmq/lib/puppet/type/rabbitmq_user_permissions.rb @@ -0,0 +1,57 @@ +Puppet::Type.newtype(:rabbitmq_user_permissions) do + desc 'Type for managing rabbitmq user permissions' + + ensurable do + defaultto(:present) + newvalue(:present) do + provider.create + end + newvalue(:absent) do + provider.destroy + end + end + + newparam(:name, :namevar => true) do + 'combination of user@vhost to grant privileges to' + newvalues(/^\S+@\S+$/) + end + + newproperty(:configure_permission) do + desc 'regexp representing configuration permissions' + validate do |value| + resource.validate_permissions(value) + end + end + + newproperty(:read_permission) do + desc 'regexp representing read permissions' + validate do |value| + resource.validate_permissions(value) + end + end + + newproperty(:write_permission) do + desc 'regexp representing write permissions' + validate do |value| + resource.validate_permissions(value) + end + end + + autorequire(:rabbitmq_vhost) do + [self[:name].split('@')[1]] + end + + autorequire(:rabbitmq_user) do + [self[:name].split('@')[0]] + end + + # I may want to dissalow whitespace + def validate_permissions(value) + begin + Regexp.new(value) + rescue RegexpError + raise ArgumentError, "Invalid regexp #{value}" + end + end + +end