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.

Reply via email to