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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9f2b96fa5c2f5c53f50a4e9fb7f975ec3a8716ed
4
- data.tar.gz: 88e04c8a5cad4a0b1116660153106d3ef0b556c6
3
+ metadata.gz: cd60a55d3a131c27874348c38051f1955e668df4
4
+ data.tar.gz: 2a5793546f767b4470b2c5380e6630539003808f
5
5
  SHA512:
6
- metadata.gz: 29b21da273ee6583f800719eb92f0ff1e85db0f32d019e1098f2ee4efa821741215b38c1048f32a09e231c3310c1a76605f53dcf86c3204260928b2938cd63b5
7
- data.tar.gz: b607db6ad966d5c07d9110f51a21e89b2a4a5a4762dfb0607277cd23b4f1b66a55f3245e0434ea978c78cc379b71012b96a8e50224101f96504b83ae8bb88120
6
+ metadata.gz: 29a1374e8f4b5d26f31747764b58a191e9f232195ba5ae397c1f25f752724c6c0466d3bf579e4e87992f24ab7de830ed3c12d1242581ba4b27ac20c5f3af3cea
7
+ data.tar.gz: 90ca0afcb191e9c956fe30bd11e568e9a9d040a8410833556f44e10d5ab6d960c1a7dcc9e4b77c171fb4e327ca3c30b411a67a6ff35e8013c7a2c4a54a0109a9
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Vmpooler
2
- VERSION = '0.5.1'.freeze
2
+ VERSION = '0.6.0'.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.5.1
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 00:00:00.000000000 Z
11
+ date: 2019-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pickup