I've almost finished a pretty simple type/provider to manage
RabbitMQ users and virtual hosts.
I'm using the 'ensurable' keyword in my type to save a bit of boilerplate.

Type is below (the provider is just a wrapper around the 'rabbitmqctl'
command.

Have a feeling there's a developer guide somewhere I haven't found
(been working from the puppetlabs site and @kartars blog).
Couple of basic questions:

1. how can I set the type to default to 'ensure => present, isadmin =>
false' ?
    Not sure if the ensurable mechanism is causing the first to be hard,
    but I can't see a way to set defaults in general

2. is there a way to mark attributes as required?

I've provided a validation for the initial_password parameter, but it only
seems to fire if the parameter is there;
it doesn't get checked if the parameter is absent.


=======================================================
# cat lib/puppet/type/rabbitmq_user.rb
Puppet::Type.newtype(:rabbitmq_user) do
  @doc = "Manage RabbitMQ users"

  ensurable

  newparam(:name) do
    desc "The name of the user"

    validate do |n|
      raise ArgumentError, "cannot be empty" if n.empty?
      raise ArgumentError, "can't contain spaces" if ( n =~ %r(\s+) )
      resource[:provider] = :rabbitmq_user
    end

    isnamevar
  end

  newparam(:initial_password) do
    desc "the password for the user - only set on creation time"

    validate do |n|
      raise ArgumentError, "cannot be empty" if (n.empty? or n.nil?)
      resource[:provider] = :rabbitmq_user
    end
  end
end

===================================================

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to