Issue #19955 has been updated by Charlie Sharpsteen.

Project changed from Hiera to Puppet
Subject changed from Misleading error when an invalid hiera.yaml is provided to 
Misleading error when Hiera databindings fail
Category changed from hiera to databinding
Target version set to 3.x
Keywords changed from yaml to error

Moving to Puppet as the real issue is that Puppet databindings need to produce 
an error mentioning Hiera if lookup happens to fail for any reason.

<pre>
# puppet apply -e 'include hiera_bug' --trace
Error: can't convert String into Hash at line 1 on node puppetmaster.boxnet
/puppetlabs/hiera/lib/hiera/config.rb:29:in `merge!'
/puppetlabs/hiera/lib/hiera/config.rb:29:in `load'
/puppetlabs/puppet/lib/puppet/indirector/hiera.rb:22:in `hiera_config'
/puppetlabs/puppet/lib/puppet/indirector/hiera.rb:32:in `hiera'
/puppetlabs/puppet/lib/puppet/indirector/hiera.rb:36:in `hiera'
/puppetlabs/puppet/lib/puppet/indirector/hiera.rb:12:in `find'
/puppetlabs/puppet/lib/puppet/indirector/indirection.rb:197:in `find'
/puppetlabs/puppet/lib/puppet/resource.rb:320:in `lookup_external_default_for'
/puppetlabs/puppet/lib/puppet/resource.rb:338:in `set_default_parameters'
/puppetlabs/puppet/lib/puppet/resource.rb:337:in `collect'
/puppetlabs/puppet/lib/puppet/resource.rb:337:in `set_default_parameters'
/puppetlabs/puppet/lib/puppet/resource/type.rb:312:in `set_resource_parameters'
/puppetlabs/puppet/lib/puppet/resource/type.rb:133:in `evaluate_code'
/puppetlabs/puppet/lib/puppet/parser/resource.rb:81:in `evaluate'
/puppetlabs/puppet/lib/puppet/parser/compiler.rb:166:in `evaluate_classes'
/puppetlabs/puppet/lib/puppet/parser/compiler.rb:151:in `each'
/puppetlabs/puppet/lib/puppet/parser/compiler.rb:151:in `evaluate_classes'
/puppetlabs/puppet/lib/puppet/parser/functions/include.rb:11:in 
`real_function_include'
/puppetlabs/puppet/lib/puppet/parser/functions.rb:147:in `send'
/puppetlabs/puppet/lib/puppet/parser/functions.rb:147:in `function_include'
/puppetlabs/puppet/lib/puppet/util/profiler/none.rb:6:in `profile'
/puppetlabs/puppet/lib/puppet/util/profiler.rb:26:in `profile'
/puppetlabs/puppet/lib/puppet/parser/functions.rb:140:in `function_include'
/puppetlabs/puppet/lib/puppet/parser/ast/function.rb:42:in `send'
/puppetlabs/puppet/lib/puppet/parser/ast/function.rb:42:in `evaluate'
/puppetlabs/puppet/lib/puppet/parser/ast.rb:62:in `safeevaluate'
/puppetlabs/puppet/lib/puppet/parser/ast/block_expression.rb:15:in `evaluate'
/puppetlabs/puppet/lib/puppet/parser/ast/block_expression.rb:10:in `each'
/puppetlabs/puppet/lib/puppet/parser/ast/block_expression.rb:10:in `evaluate'
/puppetlabs/puppet/lib/puppet/parser/ast.rb:62:in `safeevaluate'
/puppetlabs/puppet/lib/puppet/resource/type.rb:137:in `evaluate_code'
/puppetlabs/puppet/lib/puppet/parser/resource.rb:81:in `evaluate'
/puppetlabs/puppet/lib/puppet/parser/compiler.rb:293:in `evaluate_main'
/puppetlabs/puppet/lib/puppet/parser/compiler.rb:97:in `compile'
/puppetlabs/puppet/lib/puppet/util/profiler/none.rb:6:in `profile'
/puppetlabs/puppet/lib/puppet/util/profiler.rb:26:in `profile'
/puppetlabs/puppet/lib/puppet/parser/compiler.rb:97:in `compile'
/puppetlabs/puppet/lib/puppet/parser/compiler.rb:29:in `compile'
/puppetlabs/puppet/lib/puppet/indirector/catalog/compiler.rb:86:in `compile'
/puppetlabs/puppet/lib/puppet/util/profiler/none.rb:6:in `profile'
/puppetlabs/puppet/lib/puppet/util/profiler.rb:26:in `profile'
/puppetlabs/puppet/lib/puppet/indirector/catalog/compiler.rb:84:in `compile'
/puppetlabs/puppet/lib/puppet/indirector/catalog/compiler.rb:44:in `find'
/puppetlabs/puppet/lib/puppet/indirector/indirection.rb:197:in `find'
/puppetlabs/puppet/lib/puppet/application/apply.rb:209:in `main'
/puppetlabs/puppet/lib/puppet/application/apply.rb:151:in `run_command'
/puppetlabs/puppet/lib/puppet/application.rb:364:in `run'
/puppetlabs/puppet/lib/puppet/application.rb:456:in `plugin_hook'
/puppetlabs/puppet/lib/puppet/application.rb:364:in `run'
/puppetlabs/puppet/lib/puppet/util.rb:504:in `exit_on_fail'
/puppetlabs/puppet/lib/puppet/application.rb:364:in `run'
/puppetlabs/puppet/lib/puppet/util/command_line.rb:132:in `run'
/puppetlabs/puppet/lib/puppet/util/command_line.rb:86:in `execute'
/puppetlabs/puppet/bin/puppet:4
</pre>

----------------------------------------
Bug #19955: Misleading error when Hiera databindings fail
https://projects.puppetlabs.com/issues/19955#change-94774

* Author: Dolf Schimmel
* Status: Accepted
* Priority: Normal
* Assignee: 
* Category: databinding
* Target version: 3.x
* Affected Puppet version: 
* Keywords: error
* Branch: 
----------------------------------------
Hi,

I just put created a hiera.yaml file with some invalid contents (`echo foobar > 
/etc/puppet/hiera.yaml`). When doing a puppet run, I'm confronted with the 
following error:

<pre>
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: 
can't convert String into Hash at 
/etc/puppet/environments/production/manifests/cluster/core/nodes.pp:4 on node 
puppet01.dev.example.net
</pre>

The contents of the nodes.pp file is:

<pre>
node 'puppet01.dev.node.net' inherits basenode {

  $manage_puppet = false
  include "cluster::core::puppetmaster::pupppet"

  include basenode::general

}
</pre>

Clearly the config file is not parsed, which is alright in this case. The error 
is quite misleading though, as it suggests some error had occurred in my 
manifest, while it was caused (and fixed afterwards) in hiera.yaml.

Proposed fix would be to change the error into something meaningful. Last week 
I had the same error causing me to debug for several hours, only to do a 
vagrant destroy.

<pre>
root@puppet01:/etc/puppet# puppet --version
3.1.1
root@puppet01:/etc/puppet# uname -a
Linux puppet01.dev.example.net 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 
20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
</pre>


-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://projects.puppetlabs.com/my/account

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Bugs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/puppet-bugs.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to