On Fri, Jan 21, 2011 at 11:13 AM, Dick Davies <rasput...@hellooperator.net>wrote:
> Thanks for point 2, much appreciated. Is the 'global' validate > option documented anywhere? > ummm.. maybe. > 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<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.