linecook-gem 0.5.1 → 0.5.2

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: d1b22a12f84db67aa65c0030c0fd60032a86e5c5
4
- data.tar.gz: 3abe7056d47b837005fef0d368718160e646849e
3
+ metadata.gz: ab1e346b376c0135f2fcc9b64ebc12b39ec1e3bf
4
+ data.tar.gz: a1f386fc0fd5a06268b969f4eaa84856eaacbeb7
5
5
  SHA512:
6
- metadata.gz: 8a39b3c93b527cb433d576cd4b8debc63875bb367a31a7f1db52b9c26e26dfec3dfc7b5fb8c104356418067031bf64ec0670086b430d89542ec9f86ac5418dcb
7
- data.tar.gz: f2e9f0d43ab5d55c63cbc025e0680b799965946859b1862b88054cc97c72174e44f79280eea155722c4b1853fcd39a9e3fa50139d70517fc1dc2985e7c6f35a9
6
+ metadata.gz: 03882e161852a60da0d218b18f6a2afaf4037a4889a9672ece8e113a908b067582dbb1eb128e4ec48c2c40f874ded9c300a59a103fdd8c4076e9a456e066b5ef
7
+ data.tar.gz: 16a36d542cc4f1a797c13b34ca9a170f12e9a47c15e480e8a84756a4647eaa5d707687dee96d5015bbfbaaf7a11dbf2129942dd00d89cb7f1366163b662428e3
@@ -33,6 +33,10 @@ module Linecook
33
33
  FileUtils.rm_rf(Cache.path)
34
34
  end
35
35
 
36
+ def chef_port
37
+ ChefProvisioner::Config.server.split(':')[-1].to_i
38
+ end
39
+
36
40
  private
37
41
 
38
42
  def setup
@@ -42,21 +46,17 @@ module Linecook
42
46
  chef_config = config[:chef]
43
47
  chef_config.merge!(node_name: "linecook-#{SecureRandom.hex(4)}",
44
48
  chef_server_url: ChefProvisioner::Config.server)
45
- # FIXME: sort out cache copying here for concurrent builds of different refs
46
49
  Chefdepartie.run(background: true, config: chef_config, cache: Cache.path)
47
50
  chef_config
48
51
  end
49
52
 
50
- def chef_port
51
- ChefProvisioner::Config.server.split(':')[-1].to_i
52
- end
53
-
54
53
  # Required in order to have multiple builds run on different refs
55
54
  module Cache
56
55
  CACHE_PATH = File.join(Linecook::Config::LINECOOK_HOME, 'chefcache').freeze
57
56
  PIDFILE = File.join(CACHE_PATH, 'pid')
58
57
  STAMPFILE = File.join(CACHE_PATH, 'stamp')
59
58
  STALE_THRESHOLD = 86400 # one day in seconds
59
+ WAIT_TIMEOUT = 60 # time to wait for port to become available again
60
60
 
61
61
  extend self
62
62
 
@@ -66,12 +66,34 @@ module Linecook
66
66
  cache_path = Dir.mktmpdir('linecook-chef-cache')
67
67
  build
68
68
  copy(cache_path)
69
+ wait_for_close
69
70
  cache_path
70
71
  end
71
72
  end
72
73
 
73
74
  private
74
75
 
76
+ def wait_for_close
77
+ attempts = 0
78
+ while attempts < WAIT_TIMEOUT
79
+ begin
80
+ Timeout::timeout(1) do
81
+ begin
82
+ s = TCPSocket.new('127.0.0.1', Linecook::Chef.chef_port)
83
+ s.close
84
+ return true
85
+ rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH
86
+ return false
87
+ end
88
+ end
89
+ rescue Timeout::Error
90
+ puts "Port #{Linecook::Chef.chef_port} is still in use"
91
+ sleep(1)
92
+ end
93
+ attempts += 0
94
+ end
95
+ end
96
+
75
97
  def copy(cache_path)
76
98
  FileUtils.copy_entry(CACHE_PATH, cache_path, preserve: true)
77
99
  end
@@ -1,3 +1,3 @@
1
1
  module Linecook
2
- VERSION = '0.5.1'
2
+ VERSION = '0.5.2'
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.5.1
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dale Hamel