Skip to content

Instantly share code, notes, and snippets.

@sds
Created March 16, 2015 19:38
Show Gist options
  • Save sds/911c5d38ee6e4cada1c3 to your computer and use it in GitHub Desktop.
Save sds/911c5d38ee6e4cada1c3 to your computer and use it in GitHub Desktop.
Override rm_container to properly shutdown containers
require 'kitchen/driver/docker'
module Kitchen
module Driver
class Docker < Kitchen::Driver::SSHBase
...
def rm_container(state)
container_id = state[:container_id]
docker_command("exec #{container_id} shutdown now")
docker_command("wait #{container_id}") # Wait for shutdown
docker_command("rm #{container_id}")
end
end
end
end
@tilman
Copy link

tilman commented May 30, 2017

This does not work for me, or perhaps in does also not work with newest versions. I tried with following versions:

CentOS Linux release 7.3.1611 (Core)
Chef Development Kit Version: 1.4.3                                
chef-client version: 12.19.36                                      
delivery version: master (41b94ffb5efd33723cf72a89bf4d273c8151c9dc)
berks version: 5.6.4                                               
kitchen version: 1.16.0                                            
inspec version: 1.25.1

installed Gems:
kitchen-docker (2.6.0)    
kitchen-dokken (2.1.2)    
kitchen-ec2 (1.3.2)       
kitchen-inspec (0.17.0)   
kitchen-openstack (3.5.0) 
kitchen-vagrant (1.1.0)   
test-kitchen (1.16.0)

And i receive this error:

[user1@test ~]$ kitchen create default-centos-7
-----> Starting Kitchen (v1.16.0)
>>>>>> ------Exception-------
>>>>>> Class: Kitchen::UserError
>>>>>> Message: Kitchen YAML file /home/user1/.kitchen.yml does not exist.
>>>>>> ----------------------
>>>>>> Please see .kitchen/logs/kitchen.log for more details
>>>>>> Also try running `kitchen diagnose --all` for configuration

[user1@test ~]$ kitchen diagnose --all
---
timestamp: 2017-05-30 14:18:25 UTC
kitchen_version: 1.16.0
plugins:
  error:
    exception: "#<Kitchen::UserError: Kitchen YAML file /home/user1/.kitchen.yml
      does not exist.>"
    message: Kitchen YAML file /home/user1/.kitchen.yml does not exist.
    backtrace:
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/loader/yaml.rb:71:in
      `read'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/config.rb:152:in
      `data'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/config.rb:131:in
      `suites'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/config.rb:182:in
      `filter_instances'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/config.rb:141:in
      `build_instances'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/config.rb:117:in
      `instances'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/command.rb:112:in
      `filtered_instances'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/command.rb:142:in
      `parse_subcommand'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/command/diagnose.rb:53:in
      `load_instances'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/command/diagnose.rb:32:in
      `block in call'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/command/diagnose.rb:73:in
      `record_failure'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/command/diagnose.rb:32:in
      `call'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/cli.rb:53:in
      `perform'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/cli.rb:143:in
      `diagnose'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor/command.rb:27:in
      `run'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor/invocation.rb:126:in
      `invoke_command'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/cli.rb:334:in
      `invoke_task'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor.rb:359:in
      `dispatch'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor/base.rb:440:in
      `start'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/bin/kitchen:13:in
      `block in <top (required)>'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/errors.rb:171:in
      `with_friendly_errors'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/bin/kitchen:13:in
      `<top (required)>'"
    - "/usr/bin/kitchen:21:in `load'"
    - "/usr/bin/kitchen:21:in `<main>'"
loader:
  process_erb: true
  process_local: true
  process_global: true
  global_config:
  project_config:
  local_config:
  combined_config:
    filename:
    raw_data: {}
instances:
  error:
    exception: "#<Kitchen::UserError: Kitchen YAML file /home/user1/.kitchen.yml
      does not exist.>"
    message: Kitchen YAML file /home/user1/.kitchen.yml does not exist.
    backtrace:
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/loader/yaml.rb:71:in
      `read'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/config.rb:152:in
      `data'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/config.rb:131:in
      `suites'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/config.rb:182:in
      `filter_instances'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/config.rb:141:in
      `build_instances'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/config.rb:117:in
      `instances'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/command.rb:112:in
      `filtered_instances'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/command.rb:142:in
      `parse_subcommand'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/command/diagnose.rb:53:in
      `load_instances'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/command/diagnose.rb:32:in
      `block in call'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/command/diagnose.rb:73:in
      `record_failure'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/command/diagnose.rb:32:in
      `call'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/cli.rb:53:in
      `perform'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/cli.rb:143:in
      `diagnose'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor/command.rb:27:in
      `run'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor/invocation.rb:126:in
      `invoke_command'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/cli.rb:334:in
      `invoke_task'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor.rb:359:in
      `dispatch'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/thor-0.19.1/lib/thor/base.rb:440:in
      `start'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/bin/kitchen:13:in
      `block in <top (required)>'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/lib/kitchen/errors.rb:171:in
      `with_friendly_errors'"
    - "/opt/chefdk/embedded/lib/ruby/gems/2.3.0/gems/test-kitchen-1.16.0/bin/kitchen:13:in
      `<top (required)>'"
    - "/usr/bin/kitchen:21:in `load'"
    - "/usr/bin/kitchen:21:in `<main>'"

Any Idea how to fix this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment