diff --git a/lib/vmpooler/api/v1.rb b/lib/vmpooler/api/v1.rb index 989a1e1..0bad34a 100644 --- a/lib/vmpooler/api/v1.rb +++ b/lib/vmpooler/api/v1.rb @@ -26,6 +26,30 @@ module Vmpooler capacity end + def get_clone_metrics(date) + clone = { + duration: { + average: 0, + min: 0, + max: 0 + }, + count: { + total: 0 + } + } + + clone[:count][:total] = $redis.hlen('vmpooler__clone__' + date).to_i + + if clone[:count][:total] > 0 + clone_times = get_clone_times(date) + + clone[:duration][:average] = (clone_times.reduce(:+).to_f / clone[:count][:total]).round(1) + clone[:duration][:min], clone[:duration][:max] = clone_times.minmax + end + + clone + end + def get_clone_times(date) $redis.hvals('vmpooler__clone__' + date.to_s).map(&:to_f) end @@ -81,21 +105,12 @@ module Vmpooler status: { ok: true, message: 'Battle station fully armed and operational.' - }, - clone: { - duration: { - average: 0, - min: 0, - max: 0 - }, - count: { - total: 0 - } } } result[:capacity] = get_capacity_metrics() result[:queue] = get_queue_metrics() + result[:clone] = get_clone_metrics(Date.today.to_s) # Check for empty pools $config[:pools].each do |pool| @@ -108,14 +123,6 @@ module Vmpooler end end - result[:clone][:count][:total] = $redis.hlen('vmpooler__clone__' + Date.today.to_s).to_i - if result[:clone][:count][:total] > 0 - clone_times = get_clone_times(Date.today) - - result[:clone][:duration][:average] = (clone_times.reduce(:+).to_f / result[:clone][:count][:total]).round(1) - result[:clone][:duration][:min], result[:clone][:duration][:max] = clone_times.minmax - end - result[:status][:uptime] = (Time.now - $config[:uptime]).round(1) if $config[:uptime] JSON.pretty_generate(Hash[result.sort_by { |k, _v| k }])