]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_user.rb
move to puppetlabs rabbitmq module
[dsa-puppet.git] / 3rdparty / modules / rabbitmq / lib / puppet / type / rabbitmq_user.rb
diff --git a/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_user.rb b/3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_user.rb
new file mode 100644 (file)
index 0000000..baf4795
--- /dev/null
@@ -0,0 +1,85 @@
+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
+
+  autorequire(:service) { 'rabbitmq-server' }
+
+  newparam(:name, :namevar => true) do
+    desc 'Name of user'
+    newvalues(/^\S+$/)
+  end
+
+  newproperty(:password) do
+    desc 'User password to be set *on creation* and validated each run'
+    def insync?(is)
+      provider.check_password
+    end
+    def set(value)
+      provider.change_password
+    end
+    def change_to_s(current, desired)
+      "password has been changed"
+    end
+  end
+
+  newproperty(:admin) do
+    desc 'whether or not user should be an admin'
+    newvalues(/true|false/)
+    munge do |value|
+      # converting to_s in case its a boolean
+      value.to_s.to_sym
+    end
+    defaultto :false
+  end
+
+  newproperty(:tags, :array_matching => :all) do
+    desc 'additional tags for the user'
+    validate do |value|
+      unless value =~ /^\S+$/
+        raise ArgumentError, "Invalid tag: #{value.inspect}"
+      end
+
+      if value == "administrator"
+        raise ArgumentError, "must use admin property instead of administrator tag"
+      end
+    end
+    defaultto []
+
+    def insync?(is)
+      self.is_to_s(is) == self.should_to_s
+    end
+
+    def is_to_s(currentvalue = @is)
+      if currentvalue
+        "[#{currentvalue.sort.join(', ')}]"
+      else
+        '[]'
+      end
+    end
+
+    def should_to_s(newvalue = @should)
+      if newvalue
+        "[#{newvalue.sort.join(', ')}]"
+      else
+        '[]'
+      end
+    end
+
+  end
+
+  validate do
+    if self[:ensure] == :present and ! self[:password]
+      raise ArgumentError, 'must set password when creating user' unless self[:password]
+    end
+  end
+
+end