kitchen-dokken 2.0.4 → 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e2a3c5f4cc8cda372b5443ba6a7db37b1c30d931
4
- data.tar.gz: 0f73a2567ef6f90cf577b70f6250d37e5bd0ef82
3
+ metadata.gz: 12ee1dc19f8d22d9f5aa9f88f392f3dd8ea55b66
4
+ data.tar.gz: 72a617ee991bf7fc87a566c1d787e616d88e2f75
5
5
  SHA512:
6
- metadata.gz: a6c0b7166bda56df26537a6ca22ac4949aad575ff0f3d5158d8ee4e59cefcaded112c9b394df615596f7833da259d5c8f6d71351d37e3abf614f42cc159c73f8
7
- data.tar.gz: b1d3adc2bf5e47ff0228ca5f9d553e2b557f51ad7d6af1654e91a46a2d3b5df4797e896c421361615bc1b25f0c162183b0f945497d3f79a93697091d102ead8f
6
+ metadata.gz: aa34003deca0e959a5d5eae5bf2088e6543a9136b7e98b2b3a5997c6917aeae6b08ed3070004cfeaf214ef85afbf81d2b24c694c3bc1db98a06dd96cd3f705db
7
+ data.tar.gz: 7df22675aff22cba3a9c15ce2d5c1cb1bc47a0889b52298ba35176aad0e685e3d4b74d568495f3a826882004c01dd3a065e9a775f09b212f024ccd0c258e13ce
@@ -32,27 +32,27 @@ module Kitchen
32
32
  #
33
33
  # @author Sean OMeara <sean@chef.io>
34
34
  class Dokken < Kitchen::Driver::Base
35
- default_config :pid_one_command, 'sh -c "trap exit 0 SIGTERM; while :; do sleep 1; done"'
36
- default_config :image_prefix, nil
35
+ default_config :api_retries, 20
36
+ default_config :binds, []
37
+ default_config :cap_add, nil
38
+ default_config :cap_drop, nil
37
39
  default_config :chef_image, 'chef/chef'
38
40
  default_config :chef_version, 'current'
39
41
  default_config :data_image, 'dokken/kitchen-cache:latest'
40
- default_config :docker_host_url, default_docker_host
41
42
  default_config :dns, nil
42
43
  default_config :dns_search, nil
43
- default_config :read_timeout, 3600
44
- default_config :write_timeout, 3600
45
- default_config :api_retries, 20
46
- # docker run args
47
- default_config :privileged, false
44
+ default_config :docker_host_url, default_docker_host
45
+ default_config :forward, nil
48
46
  default_config :hostname, nil
49
- default_config :binds, nil # volumes to mount
47
+ default_config :image_prefix, nil
50
48
  default_config :links, nil
51
- default_config :cap_add, nil
52
- default_config :cap_drop, nil
53
- default_config :security_opt, nil
54
- default_config :forward, nil
55
49
  default_config :network_mode, 'bridge'
50
+ default_config :pid_one_command, 'sh -c "trap exit 0 SIGTERM; while :; do sleep 1; done"'
51
+ default_config :privileged, false
52
+ default_config :read_timeout, 3600
53
+ default_config :security_opt, nil
54
+ default_config :volumes, nil
55
+ default_config :write_timeout, 3600
56
56
 
57
57
  # (see Base#create)
58
58
  def create(state)
@@ -134,7 +134,7 @@ module Kitchen
134
134
  docker_connection
135
135
  )
136
136
  rescue
137
- raise "work_image build failed"
137
+ raise 'work_image build failed'
138
138
  end
139
139
 
140
140
  state[:work_image] = work_image
@@ -192,11 +192,47 @@ module Kitchen
192
192
  instance_name
193
193
  end
194
194
 
195
+ class PartialHash < Hash
196
+ def ==(other)
197
+ other.is_a?(Hash) && all? { |key, val| other.key?(key) && other[key] == val }
198
+ end
199
+ end
200
+
195
201
  def dokken_binds
196
202
  ret = []
197
203
  ret << "#{dokken_sandbox_path}:/opt/kitchen" unless dokken_sandbox_path.nil?
198
- ret + Array(config[:binds]) unless config[:binds].nil?
199
- ret
204
+ ret << Array(config[:binds]) unless config[:binds].nil?
205
+ ret.flatten
206
+ end
207
+
208
+ def dokken_volumes
209
+ coerce_volumes(config[:volumes])
210
+ end
211
+
212
+ def coerce_volumes(v)
213
+ case v
214
+ when PartialHash, nil
215
+ v
216
+ when Hash
217
+ PartialHash[v]
218
+ else
219
+ b = []
220
+ v = Array(v).to_a # in case v.is_A?(Chef::Node::ImmutableArray)
221
+ v.delete_if do |x|
222
+ parts = x.split(':')
223
+ b << x if parts.length > 1
224
+ end
225
+ b = nil if b.empty?
226
+ config[:binds] << b unless b.nil?
227
+ return PartialHash.new if v.empty?
228
+ v.each_with_object(PartialHash.new) { |volume, h| h[volume] = {} }
229
+ end
230
+ end
231
+
232
+ def dokken_volumes_from
233
+ ret = []
234
+ ret << chef_container_name
235
+ ret << data_container_name if remote_docker_host?
200
236
  end
201
237
 
202
238
  def start_runner_container(state)
@@ -207,12 +243,10 @@ module Kitchen
207
243
  'Image' => "#{repo(work_image)}:#{tag(work_image)}",
208
244
  'Hostname' => config[:hostname],
209
245
  'ExposedPorts' => exposed_ports({}, config[:forward]),
246
+ 'Volumes' => dokken_volumes,
210
247
  'HostConfig' => {
211
248
  'Privileged' => config[:privileged],
212
- 'VolumesFrom' => [
213
- chef_container_name,
214
- # data_container_name
215
- ],
249
+ 'VolumesFrom' => dokken_volumes_from,
216
250
  'Binds' => dokken_binds,
217
251
  'Dns' => config[:dns],
218
252
  'DnsSearch' => config[:dns_search],
@@ -19,6 +19,6 @@
19
19
  module Kitchen
20
20
  module Driver
21
21
  # Version string for Dokken Kitchen driver
22
- DOKKEN_VERSION = '2.0.4'.freeze
22
+ DOKKEN_VERSION = '2.0.5'.freeze
23
23
  end
24
24
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-dokken
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.4
4
+ version: 2.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean OMeara
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-29 00:00:00.000000000 Z
11
+ date: 2017-01-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: test-kitchen