beaker-docker 0.5.3 → 0.5.4
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 +4 -4
- data/lib/beaker-docker/version.rb +1 -1
- data/lib/beaker/hypervisor/docker.rb +45 -33
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c08f5cd20c40f88ec243742f3471581e3bdedaac
|
4
|
+
data.tar.gz: a51dd89bab315c5bc3061e4c290335ca305c8932
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b475e8f7ce22f303fbe772749f0176511581ec9b84f3d116ad690fe2c5d318bc4b33b9f68186938bf5715b81e1a5f8b05f2a7833b6a3e469f7970eebfe5068b8
|
7
|
+
data.tar.gz: f7a3654d9252c82362d88be8dcbfa75aa3a546d01f156e65838d0eed1525a17e55c2fbd937c559fb5dba472fce1f02b27282daee917be49d183d52e03ed83c82
|
@@ -144,10 +144,9 @@ module Beaker
|
|
144
144
|
|
145
145
|
container = find_container(host)
|
146
146
|
|
147
|
-
# Provisioning - Only provision if
|
148
|
-
#
|
149
|
-
|
150
|
-
if @options[:provision] || container.nil?
|
147
|
+
# Provisioning - Only provision if the host's container can't be found
|
148
|
+
# via its name or ID
|
149
|
+
if container.nil?
|
151
150
|
unless host['mount_folders'].nil?
|
152
151
|
container_opts['HostConfig'] ||= {}
|
153
152
|
container_opts['HostConfig']['Binds'] = host['mount_folders'].values.map do |mount|
|
@@ -162,6 +161,10 @@ module Beaker
|
|
162
161
|
end
|
163
162
|
end
|
164
163
|
|
164
|
+
if host['docker_env']
|
165
|
+
container_opts['Env'] = host['docker_env']
|
166
|
+
end
|
167
|
+
|
165
168
|
if host['docker_cap_add']
|
166
169
|
container_opts['HostConfig']['CapAdd'] = host['docker_cap_add']
|
167
170
|
end
|
@@ -172,6 +175,8 @@ module Beaker
|
|
172
175
|
|
173
176
|
@logger.debug("Creating container from image #{image_name}")
|
174
177
|
container = ::Docker::Container.create(container_opts)
|
178
|
+
else
|
179
|
+
host['use_existing_container'] = true
|
175
180
|
end
|
176
181
|
|
177
182
|
if container.nil?
|
@@ -279,38 +284,44 @@ module Beaker
|
|
279
284
|
def cleanup
|
280
285
|
@logger.notify "Cleaning up docker"
|
281
286
|
@hosts.each do |host|
|
282
|
-
container
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
@logger.
|
290
|
-
end
|
291
|
-
@logger.debug("delete container #{container.id}")
|
292
|
-
begin
|
293
|
-
container.delete
|
294
|
-
rescue Excon::Errors::ClientError => e
|
295
|
-
@logger.warn("deletion of container #{container.id} failed: #{e.response.body}")
|
296
|
-
end
|
297
|
-
end
|
298
|
-
|
299
|
-
# Do not remove the image if docker_preserve_image is set to true, otherwise remove it
|
300
|
-
unless host['docker_preserve_image']
|
301
|
-
image_id = host['docker_image_id']
|
302
|
-
|
303
|
-
if image_id
|
304
|
-
@logger.debug("deleting image #{image_id}")
|
287
|
+
# leave the container running if docker_preserve_container is set
|
288
|
+
# setting docker_preserve_container also implies docker_preserve_image
|
289
|
+
# is set, since you can't delete an image that's the base of a running
|
290
|
+
# container
|
291
|
+
unless host['docker_preserve_container']
|
292
|
+
container = find_container(host)
|
293
|
+
if container
|
294
|
+
@logger.debug("stop container #{container.id}")
|
305
295
|
begin
|
306
|
-
|
296
|
+
container.kill
|
297
|
+
sleep 2 # avoid a race condition where the root FS can't unmount
|
307
298
|
rescue Excon::Errors::ClientError => e
|
308
|
-
@logger.warn("
|
309
|
-
|
310
|
-
|
299
|
+
@logger.warn("stop of container #{container.id} failed: #{e.response.body}")
|
300
|
+
end
|
301
|
+
@logger.debug("delete container #{container.id}")
|
302
|
+
begin
|
303
|
+
container.delete
|
304
|
+
rescue Excon::Errors::ClientError => e
|
305
|
+
@logger.warn("deletion of container #{container.id} failed: #{e.response.body}")
|
306
|
+
end
|
307
|
+
end
|
308
|
+
|
309
|
+
# Do not remove the image if docker_preserve_image is set to true, otherwise remove it
|
310
|
+
unless host['docker_preserve_image']
|
311
|
+
image_id = host['docker_image_id']
|
312
|
+
|
313
|
+
if image_id
|
314
|
+
@logger.debug("deleting image #{image_id}")
|
315
|
+
begin
|
316
|
+
::Docker::Image.remove(image_id)
|
317
|
+
rescue Excon::Errors::ClientError => e
|
318
|
+
@logger.warn("deletion of image #{image_id} failed: #{e.response.body}")
|
319
|
+
rescue ::Docker::Error::DockerError => e
|
320
|
+
@logger.warn("deletion of image #{image_id} caused internal Docker error: #{e.message}")
|
321
|
+
end
|
322
|
+
else
|
323
|
+
@logger.warn("Intended to delete the host's docker image, but host['docker_image_id'] was not set")
|
311
324
|
end
|
312
|
-
else
|
313
|
-
@logger.warn("Intended to delete the host's docker image, but host['docker_image_id'] was not set")
|
314
325
|
end
|
315
326
|
end
|
316
327
|
end
|
@@ -498,6 +509,7 @@ module Beaker
|
|
498
509
|
|
499
510
|
return container unless container.nil?
|
500
511
|
@logger.debug("Existing container not found")
|
512
|
+
return nil
|
501
513
|
end
|
502
514
|
|
503
515
|
# return true if we are inside a docker container
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beaker-docker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rishi Javia, Kevin Imber, Tony Vu
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-07-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|