From f6af7cd2a6072ea7ca46d2cd12dc26c3f23e1488 Mon Sep 17 00:00:00 2001 From: isaac-hammes Date: Thu, 8 May 2025 11:45:31 -0700 Subject: [PATCH 1/2] (P4DEVOPS-6096) Include VMs that have been requested but not moved to pending when getting queue metrics --- lib/vmpooler/api/helpers.rb | 5 ++++- spec/unit/api/helpers_spec.rb | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) 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 From 49adcfdbb6360a335762d5197fa0bb60bcc16965 Mon Sep 17 00:00:00 2001 From: isaac-hammes Date: Thu, 8 May 2025 12:03:37 -0700 Subject: [PATCH 2/2] (maint) Update jruby to version 9.4.12.1 --- .github/workflows/release.yml | 4 ++-- .github/workflows/testing.yml | 4 ++-- Gemfile.lock | 1 + release-prep | 2 +- update-gemfile-lock | 2 +- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 279aa37..88b6e43 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -70,10 +70,10 @@ jobs: prerelease: false # This step should closely match what is used in `docker/Dockerfile` in vmpooler-deployment - - name: Install Ruby jruby-9.4.3.0 + - name: Install Ruby jruby-9.4.12.1 uses: ruby/setup-ruby@v1 with: - ruby-version: 'jruby-9.4.3.0' + ruby-version: 'jruby-9.4.12.1' - name: Build gem run: gem build *.gemspec diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 1f2f421..d93859a 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -18,7 +18,7 @@ jobs: strategy: matrix: ruby-version: - - 'jruby-9.4.3.0' + - 'jruby-9.4.12.1' steps: - uses: actions/checkout@v4 - name: Set up Ruby @@ -34,7 +34,7 @@ jobs: strategy: matrix: ruby-version: - - 'jruby-9.4.3.0' + - 'jruby-9.4.12.1' steps: - uses: actions/checkout@v4 - name: Set up Ruby diff --git a/Gemfile.lock b/Gemfile.lock index 6235916..f6263a1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -187,6 +187,7 @@ GEM PLATFORMS arm64-darwin-22 universal-java-11 + universal-java-17 x86_64-darwin-22 x86_64-linux diff --git a/release-prep b/release-prep index de8135d..79f04b2 100755 --- a/release-prep +++ b/release-prep @@ -5,7 +5,7 @@ # Update Gemfile.lock docker run -t --rm \ -v $(pwd):/app \ - jruby:9.4.3.0-jdk11 \ + jruby:9.4.12.1-jdk11 \ /bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends git make netbase && cd /app && gem install bundler && bundle install --jobs 3; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"' # Update Changelog diff --git a/update-gemfile-lock b/update-gemfile-lock index 31986cc..2ec1df1 100755 --- a/update-gemfile-lock +++ b/update-gemfile-lock @@ -3,5 +3,5 @@ # The container tag should closely match what is used in `docker/Dockerfile` in vmpooler-deployment docker run -it --rm \ -v $(pwd):/app \ - jruby:9.4.3.0-jdk11 \ + jruby:9.4.12.1-jdk11 \ /bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends git make netbase && cd /app && gem install bundler && bundle install --jobs 3 && bundle update; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"'