OK trying to evaluate how much work and effort it's going to be to move to Puppet v4.x I have switched on the future parser in our Dev environment.
$ puppet agent -t --trace
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Error while evaluating a Function Call, Failed to parse template grub2/default_grub.erb:
Filepath: /etc/puppet/environments/dev/modules/grub2/templates/default_grub.erb
Line: 15
Detail: undefined method `empty?' for nil:NilClass
at /etc/puppet/environments/dev/modules/grub2/manifests/config.pp:7:16 on node vrdevpds001.iggroup.local
/usr/share/ruby/vendor_ruby/puppet/indirector/rest.rb:207:in `is_http_200?'
/usr/share/ruby/vendor_ruby/puppet/indirector/rest.rb:100:in `find'
/usr/share/ruby/vendor_ruby/puppet/indirector/indirection.rb:201:in `find'
/usr/share/ruby/vendor_ruby/puppet/configurer.rb:294:in `block in retrieve_new_catalog'
/usr/share/ruby/vendor_ruby/puppet/util.rb:335:in `block in thinmark'
/usr/share/ruby/benchmark.rb:296:in `realtime'
/usr/share/ruby/vendor_ruby/puppet/util.rb:334:in `thinmark'
/usr/share/ruby/vendor_ruby/puppet/configurer.rb:293:in `retrieve_new_catalog'
/usr/share/ruby/vendor_ruby/puppet/configurer.rb:61:in `retrieve_catalog'
/usr/share/ruby/vendor_ruby/puppet/configurer.rb:106:in `prepare_and_retrieve_catalog'
/usr/share/ruby/vendor_ruby/puppet/configurer.rb:202:in `run_internal'
/usr/share/ruby/vendor_ruby/puppet/configurer.rb:134:in `block in run'
/usr/share/ruby/vendor_ruby/puppet/context.rb:64:in `override'
/usr/share/ruby/vendor_ruby/puppet.rb:246:in `override'
/usr/share/ruby/vendor_ruby/puppet/configurer.rb:133:in `run'
/usr/share/ruby/vendor_ruby/puppet/agent.rb:47:in `block (4 levels) in run'
/usr/share/ruby/vendor_ruby/puppet/agent/locker.rb:20:in `lock'
/usr/share/ruby/vendor_ruby/puppet/agent.rb:47:in `block (3 levels) in run'
/usr/share/ruby/vendor_ruby/puppet/agent.rb:117:in `with_client'
/usr/share/ruby/vendor_ruby/puppet/agent.rb:44:in `block (2 levels) in run'
/usr/share/ruby/vendor_ruby/puppet/agent.rb:82:in `run_in_fork'
/usr/share/ruby/vendor_ruby/puppet/agent.rb:43:in `block in run'
/usr/share/ruby/vendor_ruby/puppet/application.rb:179:in `call'
/usr/share/ruby/vendor_ruby/puppet/application.rb:179:in `controlled_run'
/usr/share/ruby/vendor_ruby/puppet/agent.rb:41:in `run'
/usr/share/ruby/vendor_ruby/puppet/application/agent.rb:361:in `onetime'
/usr/share/ruby/vendor_ruby/puppet/application/agent.rb:327:in `run_command'
/usr/share/ruby/vendor_ruby/puppet/application.rb:381:in `block (2 levels) in run'
/usr/share/ruby/vendor_ruby/puppet/application.rb:507:in `plugin_hook'
/usr/share/ruby/vendor_ruby/puppet/application.rb:381:in `block in run'
/usr/share/ruby/vendor_ruby/puppet/util.rb:496:in `exit_on_fail'
/usr/share/ruby/vendor_ruby/puppet/application.rb:381:in `run'
/usr/share/ruby/vendor_ruby/puppet/util/command_line.rb:146:in `run'
/usr/share/ruby/vendor_ruby/puppet/util/command_line.rb:92:in `execute'
/usr/bin/puppet:8:in `<main>'
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run
# WARNING: This file maintained by Puppet.
GRUB_DEFAULT=<%= @default_entry %>
GRUB_TIMEOUT=<%= @timeout %>
<% if @hidden_timeout != nil -%>
GRUB_HIDDEN_TIMEOUT=<%= @hidden_timeout %>
<% end -%>
<% if @hidden_timeout_quiet != nil -%>
GRUB_HIDDEN_TIMEOUT_QUIET="<%= @hidden_timeout_quiet %>"
<% end -%>
GRUB_DISTRIBUTOR=<%= @distributor %>
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
<% if !@cmdline_linux.empty? -%>
GRUB_CMDLINE_LINUX="<%= @grub2_options %>"
<% else %>
GRUB_CMDLINE_LINUX=""
<% end -%>
Which parses via erb fine and was working before.
I cannot see what the issue might actually be ?
Any help would be appreciated.
Thanks
Paul