On Wed, Sep 5, 2012 at 8:15 AM, JeremyCampbell <[email protected]>wrote:
> > > On Wednesday, September 5, 2012 4:15:31 PM UTC+2, Dan Bode wrote: > >> >> >> On Wed, Sep 5, 2012 at 7:05 AM, JeremyCampbell <[email protected]>wrote: >> >>> I have written a custom function that returns a hash of data to be used >>> by the *create_resources* function. >>> >>> class network::multiroute::mhpeers ( >>> ) { >>> $routes = gen_ip_routes("gw.uk") >>> create_resources(network::**multiroute::mhpeer, $routes) >>> } >>> >>> However, on the puppet client I get "err: Could not retrieve catalog >>> from remote server: Error 400 on SERVER: can't convert Array into Hash" >>> >> >> can you try this with --trace and post the output? >>> >> > # puppet agent --test --server devbox --trace > info: Retrieving plugin > info: Loading facts in /var/lib/puppet/lib/facter/defgw_ipv4.rb > info: Loading facts in /var/lib/puppet/lib/facter/puppet_vardir.rb > info: Loading facts in /var/lib/puppet/lib/facter/virtual.rb > info: Loading facts in /var/lib/puppet/lib/facter/root_home.rb > /usr/lib/ruby/site_ruby/1.8/puppet/indirector/rest.rb:56:in `deserialize' > /usr/lib/ruby/site_ruby/1.8/puppet/indirector/rest.rb:126:in `find' > /usr/lib/ruby/site_ruby/1.8/puppet/indirector/indirection.rb:195:in `find' > /usr/lib/ruby/site_ruby/1.8/puppet/configurer.rb:239:in > `retrieve_new_catalog' > /usr/lib/ruby/site_ruby/1.8/puppet/util.rb:493:in `thinmark' > /usr/lib/ruby/1.8/benchmark.rb:308:in `realtime' > /usr/lib/ruby/site_ruby/1.8/puppet/util.rb:492:in `thinmark' > /usr/lib/ruby/site_ruby/1.8/puppet/configurer.rb:238:in > `retrieve_new_catalog' > /usr/lib/ruby/site_ruby/1.8/puppet/configurer.rb:86:in `retrieve_catalog' > /usr/lib/ruby/site_ruby/1.8/puppet/configurer.rb:112:in > `retrieve_and_apply_catalog' > /usr/lib/ruby/site_ruby/1.8/puppet/configurer.rb:152:in `run' > /usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:43:in `run' > /usr/lib/ruby/site_ruby/1.8/puppet/agent/locker.rb:21:in `lock' > /usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:43:in `run' > /usr/lib/ruby/1.8/sync.rb:230:in `synchronize' > /usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:43:in `run' > /usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:95:in `with_client' > /usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:41:in `run' > /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:172:in `call' > /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:172:in `controlled_run' > /usr/lib/ruby/site_ruby/1.8/puppet/agent.rb:39:in `run' > /usr/lib/ruby/site_ruby/1.8/puppet/application/agent.rb:339:in `onetime' > /usr/lib/ruby/site_ruby/1.8/puppet/application/agent.rb:313:in > `run_command' > /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:309:in `run' > /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:416:in `hook' > /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:309:in `run' > /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:407:in `exit_on_fail' > /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:309:in `run' > /usr/lib/ruby/site_ruby/1.8/puppet/util/command_line.rb:69:in `execute' > /usr/bin/puppet:4 > err: Could not retrieve catalog from remote server: Error 400 on SERVER: > can't convert Array into Hash at > /etc/puppet/puppet/modules/network/manifests/multiroute/mhpeers.pp:7 on > node gw1.zz > warning: Not using cache on failed catalog > err: Could not retrieve catalog; skipping run > actually, I care way more about --trace on the master > > >>> also,can you put the following line before the call to create_resources >>> just to verify the data structure? >>> >>> $foo = inline_template("<% puts routes.inspect %>") >>> >> > I've done that but I'm not sure where/what output you expect. Please > advise. > This should print the actual data structure in the masters logs. I would recommend just running the master from the foreground and looking for this output. > >> also, could you try quoting the name of the defined type? 'network:: >>> multiroute::mhpeer' >>> >> > Ok, Ive done this, but it doesn't make any difference. > ok, it was worth a try, that would have been easy :) > >>> My custom function <https://gist.github.com/796ad5b9d81c01d1dced>returns >>> the following data structure: >>> >>> {"10.100.0.9"=>{"dstip"=>"10.**100.0.10", "dsthost"=>"gw1.uk"}, >>> "10.100.0.46"=>{"dstip"=>"10.**100.0.45", "dsthost"=>"gw1.fr"}, >>> "10.100.0.17"=>{"dstip"=>"10.**100.0.18", "dsthost"=>"gw2.us"}, >>> "10.100.0.13"=>{"dstip"=>"10.**100.0.14", "dsthost"=>"gw1.us"}} >>> >>> Based on the puppet >>> source<https://github.com/puppetlabs/puppet/blob/master/lib/puppet/parser/functions/create_resources.rb> >>> the rdoc states: >>> >>> The hash should be in the form `{title => {parameters} }` >>> >>> I believe I am returning the hash in the correct format so I am confused >>> as to what the problem could be. I've been stuck on this issue for >>> quite some time, any pointers would be really appreciated! >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Puppet Users" group. >>> To view this discussion on the web visit https://groups.google.com/d/** >>> msg/puppet-users/-/**h4EyleCsPLsJ<https://groups.google.com/d/msg/puppet-users/-/h4EyleCsPLsJ> >>> . >>> To post to this group, send email to [email protected]. >>> To unsubscribe from this group, send email to puppet-users...@** >>> googlegroups.com. >>> >>> For more options, visit this group at http://groups.google.com/** >>> group/puppet-users?hl=en<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 view this discussion on the web visit > https://groups.google.com/d/msg/puppet-users/-/V4MvJx5TfXAJ. > > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > 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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
