vmpooler 0.5.1 → 0.6.0

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: 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