On Fri, Jan 21, 2011 at 8:31 AM, Dick Davies <rasput...@hellooperator.net>wrote:
> 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 > you can call the defaultto method in the param/property. > 2. is there a way to mark attributes as required? > unfortunately not in the param/property blocks, there is supposed to be a method called isrequired,but it does not work. You can do this with the validate method on the type > 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" > > defaultto 'foo' > validate do |n| > raise ArgumentError, "cannot be empty" if (n.empty? or n.nil?) > resource[:provider] = :rabbitmq_user > end > end > validate do raise ArgumentError "initial_password is a required param" unless self[:initial_password] 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<puppet-users%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/puppet-users?hl=en. > -- 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.