--- /dev/null
+Puppet::Type.newtype(:rabbitmq_user) do
+ desc 'Native type for managing rabbitmq users'
+
+ ensurable do
+ defaultto(:present)
+ newvalue(:present) do
+ provider.create
+ end
+ newvalue(:absent) do
+ provider.destroy
+ end
+ end
+
+ newparam(:name, :namevar => true) do
+ desc 'Name of user'
+ newvalues(/^\S+$/)
+ end
+
+ # newproperty(:password) do
+ newparam(:password) do
+ desc 'User password to be set *on creation*'
+ end
+
+ newproperty(:admin) do
+ desc 'rather or not user should be an admin'
+ newvalues(/true|false/)
+ munge do |value|
+ # converting to_s incase its a boolean
+ value.to_s.to_sym
+ end
+ defaultto :false
+ end
+
+ validate do
+ if self[:ensure] == :present and ! self[:password]
+ raise ArgumentError, 'must set password when creating user' unless self[:password]
+ end
+ end
+
+end