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.

Reply via email to