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.
