vmpooler 0.6.1 → 0.6.2

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: 13821cbed5546dca2c06d551c7085619f011cc1b
4
- data.tar.gz: d3c6dea081a11077cf42c8951b01c72ebf8ef420
3
+ metadata.gz: 03cf2be498c698d23100da26391cef6f2a63bb87
4
+ data.tar.gz: f239eb2ccb445f4ef5a6dc31bad5cdd80fb02f37
5
5
  SHA512:
6
- metadata.gz: c1fdfe8601ff5922b6de1630428a30e155fa6d3db5e1e1b75ad68b5368f6724382f495ce1d2e13af8a2db5243bc26d3e0519b059ac7c0bdce657d37d49aed707
7
- data.tar.gz: cd19df2ac6912d190528a5c24ae24fe253303437e3bdf4c038b75276a64aac7e8f6fd82fd7dc149bf509be5d981b74a48e8fa6b939559128109ca29a0c908dea
6
+ metadata.gz: 83d8fbf7d283098ead4b860e83fe4f1cee94760450fe240609678137581a33c7007bd2bc33e9cfaeb73f91eff59b71eedd4f9cacec6b661499deb33846bab746
7
+ data.tar.gz: 28983a8ffa2a190699f0169de957ee182a2194abb96f1aa42f62e17d32f5085fd36afd24c014f649142766594cd4e9e85cd682f273fa78e5ee297f577d6a2094
@@ -470,6 +470,29 @@ module Vmpooler
470
470
  rescue
471
471
  false
472
472
  end
473
+
474
+ def open_socket(host, domain = nil, timeout = 1, port = 22, &_block)
475
+ Timeout.timeout(timeout) do
476
+ target_host = host
477
+ target_host = "#{host}.#{domain}" if domain
478
+ sock = TCPSocket.new target_host, port
479
+ begin
480
+ yield sock if block_given?
481
+ ensure
482
+ sock.close
483
+ end
484
+ end
485
+ end
486
+
487
+ def vm_ready?(vm_name, domain = nil)
488
+ begin
489
+ open_socket(vm_name, domain)
490
+ rescue => _err
491
+ return false
492
+ end
493
+
494
+ true
495
+ end
473
496
  end
474
497
  end
475
498
  end
@@ -68,10 +68,17 @@ module Vmpooler
68
68
  end
69
69
 
70
70
  template_backends.each do |template_backend|
71
- vm = backend.smembers("vmpooler__ready__#{template_backend}")[-1]
72
- if vm
73
- backend.smove("vmpooler__ready__#{template_backend}", "vmpooler__running__#{template_backend}", vm)
74
- return [vm, template_backend, template]
71
+ vms = backend.smembers("vmpooler__ready__#{template_backend}")
72
+ next if vms.empty?
73
+ vms.reverse.each do |vm|
74
+ ready = vm_ready?(vm, config['domain'])
75
+ if ready
76
+ backend.smove("vmpooler__ready__#{template_backend}", "vmpooler__running__#{template_backend}", vm)
77
+ return [vm, template_backend, template]
78
+ else
79
+ backend.smove("vmpooler__ready__#{template_backend}", "vmpooler__completed__#{template_backend}", vm)
80
+ metrics.increment("checkout.nonresponsive.#{template_backend}")
81
+ end
75
82
  end
76
83
  end
77
84
  [nil, nil, nil]
@@ -1,3 +1,3 @@
1
1
  module Vmpooler
2
- VERSION = '0.6.1'.freeze
2
+ VERSION = '0.6.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vmpooler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-08 00:00:00.000000000 Z
11
+ date: 2019-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pickup