kitchen-dokken 2.8.2 → 2.11.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: df4fde3054408e1ba8c4dacac012710a0b0b3e29516535e515909855cf7aa46d
4
- data.tar.gz: b8032f2ab0eb632fd51ada2077623e5d5f28acea7749a8463d57ce1357a885de
3
+ metadata.gz: 98524d476ee9044dfb093ab3de13152ac564103fa663d8d50bdf0393d9bfcf32
4
+ data.tar.gz: 653e8898c6d4cc114edc2dd4d1229744d0fea01745c4a45dfac1e49ada5127e5
5
5
  SHA512:
6
- metadata.gz: f096464210cc65517835268aaedaa98cd002a91da9b4371e1b6f02d0f724eb18d7ff43af17cf2611662e8ea4048429613d5459fdfb7e805e55db20e90ab6392d
7
- data.tar.gz: 45925b398c4a336c0427fb18a5d60f094c9c2e455cc181c871f6bc5f57a7ff7989fbc3ecd2d50ed77afd7a38cfdbe89254ec10b2289d6daada39de8fc79dc8fb
6
+ metadata.gz: 751bf6a56a04c4eaa040cdc0a527d9a0b9202534107d16563af52986b57285337be29cb89203828135f2bf373afad8e4413580a837398e0964c89eff9c6defed
7
+ data.tar.gz: 3828997c2805eb7b2f1d433643c32ceef797a82a1a7d20649c6309c8cc760c965a4bc8c9222fc8fa5956c84657b53040cd26ed86bfdd065303dcdd4d3aa0bcb2
@@ -15,9 +15,9 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
 
18
- require 'digest'
18
+ require 'digest' unless defined?(Digest)
19
19
  require 'kitchen'
20
- require 'tmpdir'
20
+ require 'tmpdir' unless defined?(Dir.mktmpdir)
21
21
  require 'docker'
22
22
  require 'lockfile'
23
23
  require_relative '../helpers'
@@ -61,6 +61,7 @@ module Kitchen
61
61
  default_config :userns_host, false
62
62
  default_config :pull_platform_image, true
63
63
  default_config :pull_chef_image, true
64
+ default_config :memory_limit, 0
64
65
 
65
66
  # (see Base#create)
66
67
  def create(state)
@@ -300,6 +301,7 @@ module Kitchen
300
301
  'NetworkMode' => self[:network_mode],
301
302
  'PortBindings' => port_bindings,
302
303
  'Tmpfs' => dokken_tmpfs,
304
+ 'Memory' => self[:memory_limit],
303
305
  },
304
306
  'NetworkingConfig' => {
305
307
  'EndpointsConfig' => {
@@ -18,6 +18,6 @@
18
18
  module Kitchen
19
19
  module Driver
20
20
  # Version string for Dokken Kitchen driver
21
- DOKKEN_VERSION = '2.8.2'.freeze
21
+ DOKKEN_VERSION = '2.11.1'.freeze
22
22
  end
23
23
  end
@@ -1,8 +1,8 @@
1
1
  module Dokken
2
2
  module Helpers
3
3
  # https://stackoverflow.com/questions/517219/ruby-see-if-a-port-is-open
4
- require 'socket'
5
- require 'timeout'
4
+ require 'socket' unless defined?(Socket)
5
+ require 'timeout' unless defined?(Timeout)
6
6
 
7
7
  def port_open?(ip, port)
8
8
  begin
@@ -11,7 +11,7 @@ module Dokken
11
11
  s = TCPSocket.new(ip, port)
12
12
  s.close
13
13
  return true
14
- rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH
14
+ rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH, Errno::ENETUNREACH, Errno::ENETDOWN
15
15
  return false
16
16
  end
17
17
  end
@@ -243,7 +243,7 @@ VOLUME /opt/verifier
243
243
 
244
244
  def remote_docker_host?
245
245
  return false if config[:docker_info]['OperatingSystem'].include?('Boot2Docker')
246
- return true if config[:docker_host_url] =~ /^tcp:/
246
+ return true if /^tcp:/.match?(config[:docker_host_url])
247
247
  false
248
248
  end
249
249
 
@@ -50,10 +50,12 @@ module Kitchen
50
50
  driver = provisioner.instance.driver
51
51
  driver[:chef_version]
52
52
  end
53
+ default_config :clean_dokken_sandbox, true
53
54
 
54
55
  # (see Base#call)
55
56
  def call(state)
56
57
  create_sandbox
58
+ write_run_command(run_command)
57
59
  instance.transport.connection(state) do |conn|
58
60
  if remote_docker_host?
59
61
  info("Transferring files to #{instance.to_str}")
@@ -62,7 +64,7 @@ module Kitchen
62
64
 
63
65
  conn.execute(prepare_command)
64
66
  conn.execute_with_retry(
65
- run_command,
67
+ "sh #{config[:root_path]}/run_command",
66
68
  config[:retry_on_exit_code],
67
69
  config[:max_retries],
68
70
  config[:wait_for_retry]
@@ -71,6 +73,7 @@ module Kitchen
71
73
  rescue Kitchen::Transport::TransportFailed => ex
72
74
  raise ActionFailed, ex.message
73
75
  ensure
76
+ return unless config[:clean_dokken_sandbox]
74
77
  cleanup_dokken_sandbox
75
78
  end
76
79
 
@@ -103,6 +106,12 @@ module Kitchen
103
106
  cmd << " -F #{config[:chef_output_format]}"
104
107
  cmd << ' -c /opt/kitchen/client.rb'
105
108
  cmd << ' -j /opt/kitchen/dna.json'
109
+
110
+ chef_cmd(cmd)
111
+ end
112
+
113
+ def write_run_command(command)
114
+ File.write("#{dokken_kitchen_sandbox}/run_command", command)
106
115
  end
107
116
 
108
117
  def runner_container_name
@@ -17,8 +17,8 @@
17
17
 
18
18
  require 'kitchen'
19
19
  require 'net/scp'
20
- require 'tmpdir'
21
- require 'digest/sha1'
20
+ require 'tmpdir' unless defined?(Dir.mktmpdir)
21
+ require 'digest/sha1' unless defined?(Digest::SHA1)
22
22
  require_relative '../helpers'
23
23
 
24
24
  include Dokken::Helpers
@@ -82,7 +82,7 @@ module Kitchen
82
82
  ssh_ip = options[:host_ip_override]
83
83
  ssh_port = options[:data_container][:NetworkSettings][:Ports][:"22/tcp"][0][:HostPort]
84
84
 
85
- elsif options[:docker_host_url] =~ /unix:/
85
+ elsif /unix:/.match?(options[:docker_host_url])
86
86
  if options[:data_container][:NetworkSettings][:Ports][:"22/tcp"][0][:HostIp] == '0.0.0.0'
87
87
  ssh_ip = options[:data_container][:NetworkSettings][:IPAddress]
88
88
  ssh_port = '22'
@@ -92,16 +92,16 @@ module Kitchen
92
92
  ssh_port = options[:data_container][:NetworkSettings][:Ports][:"22/tcp"][0][:HostPort]
93
93
  end
94
94
 
95
- elsif options[:docker_host_url] =~ /tcp:/
95
+ elsif /tcp:/.match?(options[:docker_host_url])
96
96
  name = options[:data_container][:Name]
97
97
 
98
98
  # DOCKER_HOST
99
99
  docker_host_url_ip = options[:docker_host_url].split('tcp://')[1].split(':')[0]
100
100
 
101
101
  # mapped IP of data container
102
- candidate_ip = ::Docker::Container.all.select do |x|
102
+ candidate_ip = ::Docker::Container.all.find do |x|
103
103
  x.info['Names'][0].eql?(name)
104
- end.first.info['NetworkSettings']['Networks']['dokken']['IPAddress']
104
+ end.info['NetworkSettings']['Networks']['dokken']['IPAddress']
105
105
 
106
106
  # mapped port
107
107
  candidate_ssh_port = options[:data_container][:NetworkSettings][:Ports][:"22/tcp"][0][:HostPort]
metadata CHANGED
@@ -1,29 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-dokken
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.8.2
4
+ version: 2.11.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean OMeara
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-10 00:00:00.000000000 Z
11
+ date: 2020-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: docker-api
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.33'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '3'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '1.33'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '3'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: lockfile
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -58,7 +64,8 @@ dependencies:
58
64
  - - "<"
59
65
  - !ruby/object:Gem::Version
60
66
  version: '3'
61
- description: A Test Kitchen Driver for Dokken
67
+ description: A Test Kitchen Driver for Docker & Chef Infra optimized for rapid testing
68
+ using Chef Infra docker images
62
69
  email:
63
70
  - sean@sean.io
64
71
  executables: []
@@ -75,7 +82,7 @@ homepage: https://github.com/someara/kitchen-dokken
75
82
  licenses:
76
83
  - Apache-2.0
77
84
  metadata: {}
78
- post_install_message:
85
+ post_install_message:
79
86
  rdoc_options: []
80
87
  require_paths:
81
88
  - lib
@@ -90,9 +97,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
90
97
  - !ruby/object:Gem::Version
91
98
  version: '0'
92
99
  requirements: []
93
- rubygems_version: 3.1.2
94
- signing_key:
100
+ rubygems_version: 3.1.4
101
+ signing_key:
95
102
  specification_version: 4
96
- summary: A Test Kitchen Driver that talks to the Docker Remote API and uses Volumes
97
- to produce sparse container images
103
+ summary: A Test Kitchen Driver for Docker & Chef Infra optimized for rapid testing
104
+ using Chef Infra docker images
98
105
  test_files: []