linecook-gem 0.7.13 → 0.7.14

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: 2e42de890203c6e9b445d91888cc01f3912bcc35
4
- data.tar.gz: 587a632d1cda40b979730c2f6445e45c8473a341
3
+ metadata.gz: cdfda88b02f59d7207a72bb5cf478f5211471ffa
4
+ data.tar.gz: b62d50d1caeaed2126437781ac9591cf2a61db72
5
5
  SHA512:
6
- metadata.gz: 0b17c0e9a5f6234a47e6191eff2bb95dd1126b578cca9ba4d823de36c84bd3f0cffa60792109d143c29a325fdcf2599352978e8f5b179cf7441d37215dbdca45
7
- data.tar.gz: c66d00c7f1d1b7a956632575d9f17827d18798444df26f3cf8e73c7ecbb79371b92d806f0fb959a74acc2114fc4c6cf0bc564fd9fe5836e5fcda79241131d995
6
+ metadata.gz: a09c5d0e13281c5154210a3dffc1f8e7592418afb3b9be478873b0236a0d01a28100005fc3e340cdfef6d5eb184f933680200a521a240e2c2a6d610389492577
7
+ data.tar.gz: d28b99d10e116e387cc6ff69dec1513eb3ab0cf464d3249801eeb43393df125d27eb5acacbc84e39f1623dfb70c22210cc92b3a554b32ffcf7939c0869f2dc79
@@ -4,6 +4,7 @@ require 'fileutils'
4
4
  require 'docker'
5
5
 
6
6
  require 'linecook-gem/image'
7
+ require 'linecook-gem/util/locking'
7
8
 
8
9
  # Until https://github.com/swipely/docker-api/pull/413 gets merged
9
10
  class Excon::Errors::InternalServerError < Excon::Errors::InternalServerErrorError; end
@@ -12,6 +13,7 @@ module Linecook
12
13
  module Baker
13
14
  # FIXME - refactor into a base class with an interface
14
15
  class Docker
16
+ include Locking
15
17
 
16
18
  RETAIN_IMAGES = 3 # number of latest images to retain
17
19
 
@@ -99,13 +101,20 @@ module Linecook
99
101
  end
100
102
 
101
103
  def import(image)
102
- puts "Importing #{image.id}..."
103
- image.fetch
104
- open(image.path) do |io|
105
- ::Docker::Image.import_stream(repo: image.group, tag: image.tag, changes: ['CMD ["/sbin/init"]']) do
106
- io.read(Excon.defaults[:chunk_size] * 10 ) || ""
104
+ lock("import_#{image.id}")
105
+ if image_exists?(image)
106
+ puts "Image #{image.id} has already been imported"
107
+ else
108
+ puts "Importing #{image.id}..."
109
+ image.fetch
110
+ open(image.path) do |io|
111
+ ::Docker::Image.import_stream(repo: image.group, tag: image.tag, changes: ['CMD ["/sbin/init"]']) do
112
+ io.read(Excon.defaults[:chunk_size] * 10 ) || ""
113
+ end
107
114
  end
108
115
  end
116
+ ensure
117
+ unlock("import_#{image.id}")
109
118
  end
110
119
 
111
120
 
@@ -8,12 +8,14 @@ require 'pty'
8
8
 
9
9
  require 'linecook-gem/image'
10
10
  require 'linecook-gem/util/downloader'
11
+ require 'linecook-gem/util/locking'
11
12
  require 'linecook-gem/packager/route53'
12
13
 
13
14
  module Linecook
14
15
  class AmiPacker
15
16
 
16
17
  include Downloader
18
+ include Locking
17
19
 
18
20
  SOURCE_URL = 'https://releases.hashicorp.com/packer/'
19
21
  PACKER_VERSION = '0.8.6'
@@ -186,30 +188,6 @@ module Linecook
186
188
  !File.exists?("/dev/#{device}") && !File.exists?(lock_path(device))
187
189
  end
188
190
 
189
- def lock(name)
190
- lockfile(name).flock(File::LOCK_EX)
191
- end
192
-
193
- def unlock(name)
194
- lockfile(name).flock(File::LOCK_UN)
195
- lockfile(name).close
196
- end
197
-
198
- def clear_lock(name)
199
- unlock(name)
200
- FileUtils.rm_f(lockfile(name))
201
- end
202
-
203
- def lockfile(suffix)
204
- @locks ||= {}
205
- path = lock_path(suffix)
206
- @locks[path] = @locks[path] || File.open(path, File::RDWR|File::CREAT, 0644)
207
- end
208
-
209
- def lock_path(suffix)
210
- "/tmp/free_device_lock_#{suffix.gsub('/','_')}"
211
- end
212
-
213
191
  def device_prefix
214
192
  prefixes = ['xvd', 'sd']
215
193
  `sudo ls -1 /sys/block`.lines.each do |dev| # FIXME
@@ -0,0 +1,29 @@
1
+ require 'fileutils'
2
+
3
+ module Linecook
4
+ module Locking
5
+ def lock(name)
6
+ lockfile(name).flock(File::LOCK_EX)
7
+ end
8
+
9
+ def unlock(name)
10
+ lockfile(name).flock(File::LOCK_UN)
11
+ lockfile(name).close
12
+ end
13
+
14
+ def clear_lock(name)
15
+ unlock(name)
16
+ FileUtils.rm_f(lockfile(name))
17
+ end
18
+
19
+ def lockfile(suffix)
20
+ @locks ||= {}
21
+ path = lock_path(suffix)
22
+ @locks[path] = @locks[path] || File.open(path, File::RDWR|File::CREAT, 0644)
23
+ end
24
+
25
+ def lock_path(suffix)
26
+ "/tmp/lock_#{suffix.gsub('/','_')}"
27
+ end
28
+ end
29
+ end
@@ -1,3 +1,3 @@
1
1
  module Linecook
2
- VERSION = '0.7.13'
2
+ VERSION = '0.7.14'
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.13
4
+ version: 0.7.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dale Hamel
@@ -280,6 +280,7 @@ files:
280
280
  - lib/linecook-gem/packager/route53.rb
281
281
  - lib/linecook-gem/packager/squashfs.rb
282
282
  - lib/linecook-gem/util/downloader.rb
283
+ - lib/linecook-gem/util/locking.rb
283
284
  - lib/linecook-gem/util/secrets.rb
284
285
  - lib/linecook-gem/version.rb
285
286
  - man/LINECOOK.1