linecook-gem 0.7.17 → 0.7.18

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: 1fc909f3951c5ae4fc57416d814aa35af64dd4ca
4
- data.tar.gz: 5475b236c792a6081006491ac34e272e87920054
3
+ metadata.gz: b001996cfee5a58c8e31afa14333fc10a8d6ab41
4
+ data.tar.gz: e5a68c7c98d64b00457d15e5d4e1e8d5cc1c4a6e
5
5
  SHA512:
6
- metadata.gz: 589950d3ed66b497d9e89de3c990ba9f5ac04b0d3d28f33d657c8d66ac643d55636b651345031dd5803cdd0434cceb0ba51c699645cffef8f83bbec428c29165
7
- data.tar.gz: 4d4667fb844e1e3d8c3d45839e6252f45a50d9addcc50832b4032f2b9ad9487d016e9853c23de73ddd00d435e77eb8dd68891850a965e4aa0d4c090252fa0491
6
+ metadata.gz: 03ae2fd874ea77e9f14ad96a292f0b553111fbca750fbdef5d0a77f23588bf4af99a3bf46bce069a0c787fb7d7dc26d2d4fb7aec7c98906df1d8d70020228542
7
+ data.tar.gz: f040be86621c1904e742d91ce695e24e1926f2c780770f40ac6ef3404856c547f16d62889ce0de686dbc3ea59a32d51a598ecad158e3b33d3fde7a58ef756935
@@ -5,6 +5,7 @@ require 'docker'
5
5
 
6
6
  require 'linecook-gem/image'
7
7
  require 'linecook-gem/util/locking'
8
+ require 'linecook-gem/util/common'
8
9
 
9
10
  module Linecook
10
11
  module Baker
@@ -34,7 +35,18 @@ module Linecook
34
35
  end
35
36
 
36
37
  def converge
38
+ if @inherited
39
+ lock("create_#{@inherited.id}")
40
+
41
+ with_retries(3) do
42
+ instance.create
43
+ end
44
+
45
+ unlock("create_#{@inherited.id}")
46
+ end
37
47
  instance.converge
48
+ ensure
49
+ unlock("create_#{@inherited.id}") if @inherited
38
50
  end
39
51
 
40
52
  def destroy
@@ -52,9 +64,11 @@ module Linecook
52
64
  def inherit(image)
53
65
  puts "Inheriting from #{image.id}..."
54
66
  import(image) unless image_exists?(image)
67
+ @inherited = image
55
68
  end
56
69
 
57
70
  private
71
+
58
72
  def container
59
73
  @container ||= ::Docker::Container::get(@image.id)
60
74
  end
@@ -0,0 +1,14 @@
1
+ def with_retries(retries, &block)
2
+ attempts = 0
3
+ while attempts < retries
4
+ begin
5
+ yield
6
+ rescue => e
7
+ puts "Retrying a failed action, error was:"
8
+ puts e.message
9
+ puts e.backtrace
10
+ ensure
11
+ attempts += 1
12
+ end
13
+ end
14
+ end
@@ -7,8 +7,11 @@ module Linecook
7
7
  end
8
8
 
9
9
  def unlock(name)
10
+ return unless File.exists?(lock_path(name))
10
11
  lockfile(name).flock(File::LOCK_UN)
11
12
  lockfile(name).close
13
+ rescue IOError => e
14
+ puts e.message
12
15
  end
13
16
 
14
17
  def clear_lock(name)
@@ -1,3 +1,3 @@
1
1
  module Linecook
2
- VERSION = '0.7.17'
2
+ VERSION = '0.7.18'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: linecook-gem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.17
4
+ version: 0.7.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dale Hamel
@@ -285,6 +285,7 @@ files:
285
285
  - lib/linecook-gem/packager/packer.rb
286
286
  - lib/linecook-gem/packager/route53.rb
287
287
  - lib/linecook-gem/packager/squashfs.rb
288
+ - lib/linecook-gem/util/common.rb
288
289
  - lib/linecook-gem/util/downloader.rb
289
290
  - lib/linecook-gem/util/locking.rb
290
291
  - lib/linecook-gem/util/secrets.rb