Skip to content
This repository was archived by the owner on May 14, 2021. It is now read-only.
This repository was archived by the owner on May 14, 2021. It is now read-only.

chef-shell in client mode does not work #3

@smt116

Description

@smt116

Background

We are using poise-derived cookbook for lazy attributes. It works fine in our ecosystem.

Problem

The problem was when we had to use the chef-shell command in a client mode to make some debugging.

It does not work and it raises the following error:

 $ chef-shell -z -l debug

[...]

[2017-01-02T15:13:45+00:00] DEBUG: [poise-derived] Installing event handler
[2017-01-02T15:13:45+00:00] DEBUG: Filtered backtrace of compile error: /var/chef/cache/cookbooks/poise-derived/files/halite_gem/poise_derived/handler.rb:41:in `<class:Handler>',/var/chef/cache/cookbooks/poise-derived/files/halite_gem/poise_derived/handler.rb:28:in `<module:PoiseDerived>',/var/chef/cache/cookbooks/poise-derived/files/halite_gem/poise_derived/handler.rb:23:in `<top (required)>',/var/chef/cache/cookbooks/poise-derived/files/halite_gem/poise_derived/cheftie.rb:18:in `<top (required)>',/var/chef/cache/cookbooks/poise-derived/libraries/default.rb:19:in `<top (required)>'
[2017-01-02T15:13:45+00:00] DEBUG: Backtrace entry for compile error: '/var/chef/cache/cookbooks/poise-derived/files/halite_gem/poise_derived/handler.rb:41:in `<class:Handler>''
[2017-01-02T15:13:45+00:00] DEBUG: Line number of compile error: '41'

================================================================================
Recipe Compile Error in /var/chef/cache/cookbooks/poise-derived/libraries/default.rb
================================================================================

NoMethodError
-------------
undefined method `events' for nil:NilClass

Cookbook Trace:
---------------
  /var/chef/cache/cookbooks/poise-derived/files/halite_gem/poise_derived/handler.rb:41:in `<class:Handler>'
  /var/chef/cache/cookbooks/poise-derived/files/halite_gem/poise_derived/handler.rb:28:in `<module:PoiseDerived>'
  /var/chef/cache/cookbooks/poise-derived/files/halite_gem/poise_derived/handler.rb:23:in `<top (required)>'
  /var/chef/cache/cookbooks/poise-derived/files/halite_gem/poise_derived/cheftie.rb:18:in `<top (required)>'
  /var/chef/cache/cookbooks/poise-derived/libraries/default.rb:19:in `<top (required)>'

Relevant File Content:
----------------------
/var/chef/cache/cookbooks/poise-derived/files/halite_gem/poise_derived/handler.rb:

 34:
 35:      def attribute_load_complete
 36:        PoiseDerived::DSL.uninstall
 37:      end
 38:
 39:      # Install event handler.
 40:      Chef::Log.debug('[poise-derived] Installing event handler')
 41>>     Chef.run_context.events.register(self.instance)
 42:    end
 43:  end
 44:

Platform:
---------
x86_64-linux

epic fail!

/var/chef/cache/cookbooks/poise-derived/files/halite_gem/poise_derived/handler.rb:41:in `<class:Handler>': undefined method `events' for nil:NilClass (NoMethodError)
	from /var/chef/cache/cookbooks/poise-derived/files/halite_gem/poise_derived/handler.rb:28:in `<module:PoiseDerived>'
	from /var/chef/cache/cookbooks/poise-derived/files/halite_gem/poise_derived/handler.rb:23:in `<top (required)>'
	from /opt/chef/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /opt/chef/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /var/chef/cache/cookbooks/poise-derived/files/halite_gem/poise_derived/cheftie.rb:18:in `<top (required)>'
	from /opt/chef/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /opt/chef/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /var/chef/cache/cookbooks/poise-derived/libraries/default.rb:19:in `<top (required)>'
	from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.17.44/lib/chef/run_context/cookbook_compiler.rb:193:in `load'
	from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.17.44/lib/chef/run_context/cookbook_compiler.rb:193:in `block in load_libraries_from_cookbook'
	from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.17.44/lib/chef/run_context/cookbook_compiler.rb:189:in `each'
	from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.17.44/lib/chef/run_context/cookbook_compiler.rb:189:in `load_libraries_from_cookbook'
	from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.17.44/lib/chef/run_context/cookbook_compiler.rb:99:in `block in compile_libraries'
	from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.17.44/lib/chef/run_context/cookbook_compiler.rb:98:in `each'
	from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.17.44/lib/chef/run_context/cookbook_compiler.rb:98:in `compile_libraries'
	from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.17.44/lib/chef/run_context/cookbook_compiler.rb:71:in `compile'
	from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.17.44/lib/chef/run_context.rb:187:in `load'
	from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.17.44/lib/chef/shell/shell_session.rb:208:in `rebuild_context'
	from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.17.44/lib/chef/shell/shell_session.rb:59:in `block in reset!'
	from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.17.44/lib/chef/shell/shell_session.rb:101:in `loading'
	from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.17.44/lib/chef/shell/shell_session.rb:54:in `reset!'
	from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.17.44/lib/chef/shell.rb:127:in `session'
	from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.17.44/lib/chef/shell.rb:136:in `init'
	from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.17.44/lib/chef/shell.rb:65:in `start'
	from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/chef-12.17.44/bin/chef-shell:34:in `<top (required)>'
	from /usr/bin/chef-shell:57:in `load'
	from /usr/bin/chef-shell:57:in `<main>'

It looks like a bug in the handler definition. Chef.run_context is nil in that mode while in the normal chef-client it is a Chef::RunContext object.

Software versions

Chef: 12.17.44

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions