Hey Josh, thanks for the reply.

I'm still struggling with this. I have a hash of the values passed in from 
the manifest with the keys including '_' which need to be re-written.

  properties => {'john_wayne' => '1', 'liberty_valance' => '0', ...}

this needs to become:

  properties => {'john-wayne' => '1', 'liberty-valance' => '0', ...}

I believe this is where they are defined in my type:

newproperty(:properties) do
   desc "A hash table of propname=propvalue entries to apply to the link"
end

So, I should write a method in the type to re-write the keys? Something 
like (forgive my ruby too):

       def modify_keys(h)
          h.keys.each do |k|
              if(k.include? '_') then
                h[k.gsub(/_/, '-')] = h[k]
                h.delete(k)
              end
          end 
       end

Can I add a method like this to my property? How is such a method then 
called in the provider?

Thanks,
Geoffrey

On Monday, December 1, 2014 11:09:47 PM UTC-7, Josh Cooper wrote:
>
>
>
> On Mon, Dec 1, 2014 at 9:06 PM, Geoffrey Gardella <[email protected] 
> <javascript:>> wrote:
>
>> I am working on updating types/providers for new functionality in 
>> Solaris. I need to take a list of properties (not their values) and modify 
>> them before any operations (checking current values, etc). Specifically, I 
>> will need to substitute '-' for '_' in the property names. What is the 
>> proper place for me to do this? In the provider or type? I am very new to 
>> Puppet, and don't want to implement a solution that isn't done the right 
>> way. 
>>
>> I know I'm being a bit vague, but this is in response to functional 
>> changes in Solaris, which aren't even integrated yet.
>>
>
> Assuming this is a static list of properties, then you would define the 
> list of properties in the type, e.g. newproperty(:property_one), and then 
> define getter and setters in the provider:
>
> def property_one
>   # retrieve the value
> end
>
> def property_one=(value)
>   # set the new value
> end
>
> That assumes each property can be independently managed. If you need both 
> property_one and property_two to be set before you apply the changes to the 
> underlying native resource, then you'd want the setters to store the new 
> values:
>
> def property_one=(value)
>   @one = value
> end
>
> def property_two=(value)
>   @two = value
> end
>
> and implement a `flush` method to update the resource with all of the new 
> values.
>
> def flush
>   # save resource using @one & @two
> end
>
> Josh
>
> -- 
> Josh Cooper
> Developer, Puppet Labs
>
> *Join us at **PuppetConf 2015, October 5-9 in Portland, OR - *
> http://2015.puppetconf.com.  
> *Register early to save 40%!*
>  

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-dev/ad0a3285-aa79-4761-8110-679155d9aac3%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to