linecook-gem 0.7.17 → 0.7.18

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
  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