On 19 January 2016 at 01:52, Jakov Sosic <[email protected]> wrote:
> Hi guys,
>
>
> I've noticed the following problem with one of my providers in v4.
>
> This is the original prefetch method I used:
>
> def self.prefetch(resources)
> instances.each do |prov|
> if resource = resources[prov[:name]]
> resource.provider = prov
> + resource.provider = new(prov)
> end
> end
> end
>
>
>
> This was throwing out following errors:
>
> Error: Failed to apply catalog: undefined method `intern' for
> #<Hash:0x000000038f4708>
>
>
>
> After that I changed it to:
>
> def self.prefetch(resources)
> instances.each do |prov|
> if resource = resources[prov[:name]]
> resource.provider = new(prov)
> end
> end
> end
>
> Now, puppet agent doesn't throw out any error, but when I run:
>
> # puppet resource myprovider
> Error: Could not run: undefined method `name' for #<Hash:0x00000002705bf0>
>
>
My guess is it's an issue in your self.instances method and a matter
of exactly where you're called new. I nearly always having something
like:
def self.prefetch(resources)
instances.each do |prov|
if resource = resources[prov.name]
resource.provider = prov
end
end
end
Where instances returns an array of objects created using new.
def self.instances
some_list_of_things.collect do |obj|
new({
name: obj.name,
ensure: :present,
})
end
end
Hopefully that helps, if not I'd recommend posting a gist of the
self.instances method or a pointer to the whole provider.
Thanks
Gareth
> Any ideas??
>
> --
> You received this message because you are subscribed to the Google Groups
> "Puppet Users" 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-users/569D96C4.6070309%40gmail.com.
> For more options, visit https://groups.google.com/d/optout.
--
Gareth Rushgrove
@garethr
devopsweekly.com
morethanseven.net
garethrushgrove.com
--
You received this message because you are subscribed to the Google Groups
"Puppet Users" 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-users/CAFi_6yJ_4Hn2S468HC16LVWvdsvLqNKLYFDiqyD89GrWg8S7OA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.