coderanger / kitchen-sync

Test Kitchen transport plugin to speed up tests.
Apache License 2.0
81 stars 24 forks source link

undefined method `lstat' for nil:NilClass #29

Closed chewi closed 7 years ago

chewi commented 7 years ago

Love this thing! It was working fine for me and then broke for no apparent reason on an existing Vagrant guest. Repeated attempts don't help. My colleague also ran into the same error the first time he tried it. I've tried to diagnose the issue but all I've found is that the SFTP::Session's protocol is nil for some reason.

E, [2016-11-28T17:40:06.300276 #31457] ERROR -- Kitchen: ---Nested Exception---
E, [2016-11-28T17:40:06.300292 #31457] ERROR -- Kitchen: Class: Kitchen::ActionFailed
E, [2016-11-28T17:40:06.300307 #31457] ERROR -- Kitchen: Message: Failed to complete #converge action: [undefined method `lstat' for nil:NilClass]
E, [2016-11-28T17:40:06.300323 #31457] ERROR -- Kitchen: ----------------------
E, [2016-11-28T17:40:06.300338 #31457] ERROR -- Kitchen: ------Backtrace-------
E, [2016-11-28T17:40:06.300354 #31457] ERROR -- Kitchen: /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/net-sftp-2.1.2/lib/net/sftp/session.rb:830:in `request'
E, [2016-11-28T17:40:06.300369 #31457] ERROR -- Kitchen: /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/net-sftp-2.1.2/lib/net/sftp/session.rb:311:in `lstat'
E, [2016-11-28T17:40:06.300386 #31457] ERROR -- Kitchen: /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/net-sftp-2.1.2/lib/net/sftp/session.rb:320:in `lstat!'
E, [2016-11-28T17:40:06.300402 #31457] ERROR -- Kitchen: /home/jlecuirot/.chefdk/gem/ruby/2.3.0/gems/kitchen-sync-2.1.1/lib/kitchen/transport/sftp.rb:160:in `safe_stat'
E, [2016-11-28T17:40:06.300418 #31457] ERROR -- Kitchen: /home/jlecuirot/.chefdk/gem/ruby/2.3.0/gems/kitchen-sync-2.1.1/lib/kitchen/transport/sftp.rb:91:in `sftp_upload!'
E, [2016-11-28T17:40:06.300434 #31457] ERROR -- Kitchen: /home/jlecuirot/.chefdk/gem/ruby/2.3.0/gems/kitchen-sync-2.1.1/lib/kitchen/transport/sftp.rb:81:in `block (2 levels) in upload'
E, [2016-11-28T17:40:06.300450 #31457] ERROR -- Kitchen: /opt/chefdk/embedded/lib/ruby/2.3.0/benchmark.rb:308:in `realtime'
E, [2016-11-28T17:40:06.300466 #31457] ERROR -- Kitchen: /home/jlecuirot/.chefdk/gem/ruby/2.3.0/gems/kitchen-sync-2.1.1/lib/kitchen/transport/sftp.rb:80:in `block in upload'
E, [2016-11-28T17:40:06.300483 #31457] ERROR -- Kitchen: /home/jlecuirot/.chefdk/gem/ruby/2.3.0/gems/kitchen-sync-2.1.1/lib/kitchen/transport/sftp.rb:73:in `each'
E, [2016-11-28T17:40:06.300499 #31457] ERROR -- Kitchen: /home/jlecuirot/.chefdk/gem/ruby/2.3.0/gems/kitchen-sync-2.1.1/lib/kitchen/transport/sftp.rb:73:in `upload'
E, [2016-11-28T17:40:06.300520 #31457] ERROR -- Kitchen: /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.13.2/lib/kitchen/provisioner/base.rb:75:in `block in call'
E, [2016-11-28T17:40:06.300538 #31457] ERROR -- Kitchen: /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.13.2/lib/kitchen/transport/base.rb:94:in `initialize'
E, [2016-11-28T17:40:06.300555 #31457] ERROR -- Kitchen: /home/jlecuirot/.chefdk/gem/ruby/2.3.0/gems/kitchen-sync-2.1.1/lib/kitchen/transport/sftp.rb:45:in `new'
E, [2016-11-28T17:40:06.300571 #31457] ERROR -- Kitchen: /home/jlecuirot/.chefdk/gem/ruby/2.3.0/gems/kitchen-sync-2.1.1/lib/kitchen/transport/sftp.rb:45:in `create_new_connection'
E, [2016-11-28T17:40:06.300587 #31457] ERROR -- Kitchen: /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.13.2/lib/kitchen/transport/ssh.rb:93:in `connection'
E, [2016-11-28T17:40:06.300603 #31457] ERROR -- Kitchen: /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.13.2/lib/kitchen/provisioner/base.rb:71:in `call'
E, [2016-11-28T17:40:06.300620 #31457] ERROR -- Kitchen: /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.13.2/lib/kitchen/instance.rb:380:in `block in converge_action'
E, [2016-11-28T17:40:06.300636 #31457] ERROR -- Kitchen: /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.13.2/lib/kitchen/instance.rb:520:in `synchronize_or_call'
E, [2016-11-28T17:40:06.300664 #31457] ERROR -- Kitchen: /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.13.2/lib/kitchen/instance.rb:485:in `block in action'
E, [2016-11-28T17:40:06.300685 #31457] ERROR -- Kitchen: /opt/chefdk/embedded/lib/ruby/2.3.0/benchmark.rb:293:in `measure'
E, [2016-11-28T17:40:06.300702 #31457] ERROR -- Kitchen: /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.13.2/lib/kitchen/instance.rb:484:in `action'
E, [2016-11-28T17:40:06.300719 #31457] ERROR -- Kitchen: /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.13.2/lib/kitchen/instance.rb:376:in `converge_action'
E, [2016-11-28T17:40:06.300735 #31457] ERROR -- Kitchen: /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.13.2/lib/kitchen/instance.rb:355:in `block in transition_to'
E, [2016-11-28T17:40:06.300772 #31457] ERROR -- Kitchen: /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.13.2/lib/kitchen/instance.rb:354:in `each'
E, [2016-11-28T17:40:06.300791 #31457] ERROR -- Kitchen: /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.13.2/lib/kitchen/instance.rb:354:in `transition_to'
E, [2016-11-28T17:40:06.300808 #31457] ERROR -- Kitchen: /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.13.2/lib/kitchen/instance.rb:138:in `converge'
E, [2016-11-28T17:40:06.300824 #31457] ERROR -- Kitchen: /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.13.2/lib/kitchen/command.rb:201:in `public_send'
E, [2016-11-28T17:40:06.300840 #31457] ERROR -- Kitchen: /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.13.2/lib/kitchen/command.rb:201:in `run_action_in_thread'
E, [2016-11-28T17:40:06.300856 #31457] ERROR -- Kitchen: /opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.13.2/lib/kitchen/command.rb:173:in `block (2 levels) in run_action'
E, [2016-11-28T17:40:06.300872 #31457] ERROR -- Kitchen: ----End Backtrace-----
coderanger commented 7 years ago

Check that the SFTP subsystem is enabled on the guest? It would be configured in /etc/sshd_config or similar in the guest OS.

chewi commented 7 years ago

Ah yes, the openssh cookbook had stomped over the configuration with the wrong sftp-server path as noted in chef-cookbooks/openssh#90. Thanks!