diff --git a/lib/vmpooler/api/helpers.rb b/lib/vmpooler/api/helpers.rb index 4669b4c..025e0b7 100644 --- a/lib/vmpooler/api/helpers.rb +++ b/lib/vmpooler/api/helpers.rb @@ -289,6 +289,7 @@ module Vmpooler def get_queue_metrics(pools, backend) tracer.in_span("Vmpooler::API::Helpers.#{__method__}") do queue = { + requested: 0, pending: 0, cloning: 0, booting: 0, @@ -298,6 +299,8 @@ module Vmpooler total: 0 } + queue[:requested] = get_total_across_pools_redis_scard(pools, 'vmpooler__provisioning__request', backend) + get_total_across_pools_redis_scard(pools, 'vmpooler__provisioning__processing', backend) + get_total_across_pools_redis_scard(pools, 'vmpooler__odcreate__task', backend) + queue[:pending] = get_total_across_pools_redis_scard(pools, 'vmpooler__pending__', backend) queue[:ready] = get_total_across_pools_redis_scard(pools, 'vmpooler__ready__', backend) queue[:running] = get_total_across_pools_redis_scard(pools, 'vmpooler__running__', backend) @@ -306,7 +309,7 @@ module Vmpooler queue[:cloning] = backend.get('vmpooler__tasks__clone').to_i + backend.get('vmpooler__tasks__ondemandclone').to_i queue[:booting] = queue[:pending].to_i - queue[:cloning].to_i queue[:booting] = 0 if queue[:booting] < 0 - queue[:total] = queue[:pending].to_i + queue[:ready].to_i + queue[:running].to_i + queue[:completed].to_i + queue[:total] = queue[:requested] + queue[:pending].to_i + queue[:ready].to_i + queue[:running].to_i + queue[:completed].to_i queue end diff --git a/spec/unit/api/helpers_spec.rb b/spec/unit/api/helpers_spec.rb index 27176e4..bf34ab4 100644 --- a/spec/unit/api/helpers_spec.rb +++ b/spec/unit/api/helpers_spec.rb @@ -116,7 +116,7 @@ describe Vmpooler::API::Helpers do allow(redis).to receive(:pipelined).with(no_args).and_return [0] allow(redis).to receive(:get).and_return 0 - expect(subject.get_queue_metrics([], redis)).to eq({pending: 0, cloning: 0, booting: 0, ready: 0, running: 0, completed: 0, total: 0}) + expect(subject.get_queue_metrics([], redis)).to eq({requested: 0, pending: 0, cloning: 0, booting: 0, ready: 0, running: 0, completed: 0, total: 0}) end it 'adds pool queues correctly' do @@ -128,7 +128,7 @@ describe Vmpooler::API::Helpers do allow(redis).to receive(:pipelined).with(no_args).and_return [1,1] allow(redis).to receive(:get).and_return(1,0) - expect(subject.get_queue_metrics(pools, redis)).to eq({pending: 2, cloning: 1, booting: 1, ready: 2, running: 2, completed: 2, total: 8}) + expect(subject.get_queue_metrics(pools, redis)).to eq({requested: 6, pending: 2, cloning: 1, booting: 1, ready: 2, running: 2, completed: 2, total: 14}) end it 'sets booting to 0 when negative calculation' do @@ -140,7 +140,7 @@ describe Vmpooler::API::Helpers do allow(redis).to receive(:pipelined).with(no_args).and_return [1,1] allow(redis).to receive(:get).and_return(5,0) - expect(subject.get_queue_metrics(pools, redis)).to eq({pending: 2, cloning: 5, booting: 0, ready: 2, running: 2, completed: 2, total: 8}) + expect(subject.get_queue_metrics(pools, redis)).to eq({requested: 6, pending: 2, cloning: 5, booting: 0, ready: 2, running: 2, completed: 2, total: 14}) end end