beaker-docker 0.5.3 → 0.5.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|