Thanks for point 2, much appreciated. Is the 'global' validate option documented anywhere?
on point 1, using the 'ensurable' magic means I don't have anywhere to stick the defaultto keyword (I tried ensurable do defaultto 'present' end but didn't seem to do the trick (blows up with a "change from present to present failed: The rabbitmq_user provider can not handle attribute ensure" . Am I out of luck without an explicit newparam{} block to work in? On Fri, Jan 21, 2011 at 4:40 PM, Dan Bode <d...@puppetlabs.com> wrote: > > > 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<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.