vmpooler 0.5.1 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/vmpooler/api/v1.rb +73 -0
- data/lib/vmpooler/pool_manager.rb +3 -3
- data/lib/vmpooler/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cd60a55d3a131c27874348c38051f1955e668df4
|
4
|
+
data.tar.gz: 2a5793546f767b4470b2c5380e6630539003808f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 29a1374e8f4b5d26f31747764b58a191e9f232195ba5ae397c1f25f752724c6c0466d3bf579e4e87992f24ab7de830ed3c12d1242581ba4b27ac20c5f3af3cea
|
7
|
+
data.tar.gz: 90ca0afcb191e9c956fe30bd11e568e9a9d040a8410833556f44e10d5ab6d960c1a7dcc9e4b77c171fb4e327ca3c30b411a67a6ff35e8013c7a2c4a54a0109a9
|
data/lib/vmpooler/api/v1.rb
CHANGED
@@ -341,6 +341,79 @@ module Vmpooler
|
|
341
341
|
JSON.pretty_generate(Hash[result.sort_by { |k, _v| k }])
|
342
342
|
end
|
343
343
|
|
344
|
+
# request statistics for specific pools by passing parameter 'pool'
|
345
|
+
# with a coma separated list of pools we want to query ?pool=ABC,DEF
|
346
|
+
# returns the ready, max numbers and the aliases (if set)
|
347
|
+
get "#{api_prefix}/poolstat/?" do
|
348
|
+
content_type :json
|
349
|
+
|
350
|
+
result = {}
|
351
|
+
|
352
|
+
poolscopy = []
|
353
|
+
|
354
|
+
if params[:pool]
|
355
|
+
subpool = params[:pool].split(",")
|
356
|
+
poolscopy = pools.select do |p|
|
357
|
+
if subpool.include?(p['name'])
|
358
|
+
true
|
359
|
+
elsif !p['alias'].nil?
|
360
|
+
if p['alias'].is_a?(Array)
|
361
|
+
(p['alias'] & subpool).any?
|
362
|
+
elsif p['alias'].is_a?(String)
|
363
|
+
subpool.include?(p['alias'])
|
364
|
+
end
|
365
|
+
end
|
366
|
+
end
|
367
|
+
end
|
368
|
+
|
369
|
+
result[:pools] = {}
|
370
|
+
|
371
|
+
poolscopy.each do |pool|
|
372
|
+
result[:pools][pool['name']] = {}
|
373
|
+
|
374
|
+
max = pool['size']
|
375
|
+
aka = pool['alias']
|
376
|
+
|
377
|
+
result[:pools][pool['name']][:max] = max
|
378
|
+
|
379
|
+
if aka
|
380
|
+
result[:pools][pool['name']][:alias] = aka
|
381
|
+
end
|
382
|
+
|
383
|
+
end
|
384
|
+
|
385
|
+
# using pipelined is much faster than querying each of the pools
|
386
|
+
res = backend.pipelined do
|
387
|
+
poolscopy.each do |pool|
|
388
|
+
backend.scard('vmpooler__ready__' + pool['name'])
|
389
|
+
end
|
390
|
+
end
|
391
|
+
|
392
|
+
res.each_with_index { |ready, i| result[:pools][poolscopy[i]['name']][:ready] = ready }
|
393
|
+
|
394
|
+
JSON.pretty_generate(Hash[result.sort_by { |k, _v| k }])
|
395
|
+
end
|
396
|
+
|
397
|
+
# requests the total number of running VMs
|
398
|
+
get "#{api_prefix}/totalrunning/?" do
|
399
|
+
content_type :json
|
400
|
+
queue = {
|
401
|
+
running: 0,
|
402
|
+
}
|
403
|
+
|
404
|
+
# using pipelined is much faster than querying each of the pools and adding them
|
405
|
+
# as we get the result.
|
406
|
+
res = backend.pipelined do
|
407
|
+
pools.each do |pool|
|
408
|
+
backend.scard('vmpooler__running__' + pool['name'])
|
409
|
+
end
|
410
|
+
end
|
411
|
+
|
412
|
+
queue[:running] = res.inject(0){ |m, x| m+x }
|
413
|
+
|
414
|
+
JSON.pretty_generate(queue)
|
415
|
+
end
|
416
|
+
|
344
417
|
get "#{api_prefix}/summary/?" do
|
345
418
|
content_type :json
|
346
419
|
|
@@ -943,7 +943,7 @@ module Vmpooler
|
|
943
943
|
|
944
944
|
def check_pending_pool_vms(pool_name, provider, pool_check_response, inventory, pool_timeout = nil)
|
945
945
|
pool_timeout ||= $config[:config]['timeout'] || 15
|
946
|
-
$redis.smembers("vmpooler__pending__#{pool_name}").each do |vm|
|
946
|
+
$redis.smembers("vmpooler__pending__#{pool_name}").reverse.each do |vm|
|
947
947
|
if inventory[vm]
|
948
948
|
begin
|
949
949
|
pool_check_response[:checked_pending_vms] += 1
|
@@ -980,7 +980,7 @@ module Vmpooler
|
|
980
980
|
|
981
981
|
def check_discovered_pool_vms(pool_name)
|
982
982
|
begin
|
983
|
-
$redis.smembers("vmpooler__discovered__#{pool_name}").each do |vm|
|
983
|
+
$redis.smembers("vmpooler__discovered__#{pool_name}").reverse.each do |vm|
|
984
984
|
%w[pending ready running completed].each do |queue|
|
985
985
|
if $redis.sismember("vmpooler__#{queue}__#{pool_name}", vm)
|
986
986
|
$logger.log('d', "[!] [#{pool_name}] '#{vm}' found in '#{queue}', removed from 'discovered' queue")
|
@@ -998,7 +998,7 @@ module Vmpooler
|
|
998
998
|
end
|
999
999
|
|
1000
1000
|
def check_migrating_pool_vms(pool_name, provider, pool_check_response, inventory)
|
1001
|
-
$redis.smembers("vmpooler__migrating__#{pool_name}").each do |vm|
|
1001
|
+
$redis.smembers("vmpooler__migrating__#{pool_name}").reverse.each do |vm|
|
1002
1002
|
if inventory[vm]
|
1003
1003
|
begin
|
1004
1004
|
pool_check_response[:migrated_vms] += 1
|
data/lib/vmpooler/version.rb
CHANGED
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.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppet
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-04-
|
11
|
+
date: 2019-04-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pickup
|