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.

Reply via email to