vmpooler 0.6.1 → 0.6.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: 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