diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 4ae585a..81e0069 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -5,9 +5,3 @@ updates: schedule: interval: weekly open-pull-requests-limit: 10 - -- package-ecosystem: github-actions - directory: "/" - schedule: - interval: weekly - open-pull-requests-limit: 10 diff --git a/.github/workflows/auto_release_prep.yml b/.github/workflows/auto_release_prep.yml deleted file mode 100644 index 50d172f..0000000 --- a/.github/workflows/auto_release_prep.yml +++ /dev/null @@ -1,12 +0,0 @@ -name: Automated release prep - -on: - workflow_dispatch: - -jobs: - auto_release_prep: - uses: puppetlabs/release-engineering-repo-standards/.github/workflows/auto_release_prep.yml@v1 - secrets: inherit - with: - project-type: ruby - version-file-path: lib/vmpooler-provider-vsphere/version.rb diff --git a/.github/workflows/dependabot_merge.yml b/.github/workflows/dependabot_merge.yml deleted file mode 100644 index 75b9cea..0000000 --- a/.github/workflows/dependabot_merge.yml +++ /dev/null @@ -1,8 +0,0 @@ -name: Dependabot auto-merge - -on: pull_request - -jobs: - dependabot_merge: - uses: puppetlabs/release-engineering-repo-standards/.github/workflows/dependabot_merge.yml@v1 - secrets: inherit diff --git a/.github/workflows/ensure_label.yml b/.github/workflows/ensure_label.yml deleted file mode 100644 index 50a5fa8..0000000 --- a/.github/workflows/ensure_label.yml +++ /dev/null @@ -1,8 +0,0 @@ -name: Ensure label - -on: pull_request - -jobs: - ensure_label: - uses: puppetlabs/release-engineering-repo-standards/.github/workflows/ensure_label.yml@v1 - secrets: inherit diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1ba42e5..39a358f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -7,10 +7,10 @@ jobs: runs-on: ubuntu-latest if: github.repository == 'puppetlabs/vmpooler-provider-vsphere' steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v3 - name: Get Current Version - uses: actions/github-script@v7 + uses: actions/github-script@v6 id: cv with: script: | @@ -29,26 +29,26 @@ jobs: echo "version=$version" >> $GITHUB_OUTPUT echo "Found version $version from lib/vmpooler-provider-vsphere/version.rb" - - name: Generate Changelog - uses: docker://githubchangeloggenerator/github-changelog-generator:1.16.2 - with: - args: >- - --future-release ${{ steps.nv.outputs.version }} - env: - CHANGELOG_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # - name: Generate Changelog + # uses: docker://githubchangeloggenerator/github-changelog-generator:1.16.2 + # with: + # args: >- + # --future-release ${{ steps.nv.outputs.version }} + # env: + # CHANGELOG_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Validate Changelog - run : | - set -e - if [[ -n $(git status --porcelain) ]]; then - echo "Here is the current git status:" - git status - echo - echo "The following changes were detected:" - git --no-pager diff - echo "Uncommitted PRs found in the changelog. Please submit a release prep PR of changes after running `./update-changelog`" - exit 1 - fi + # - name: Validate Changelog + # run : | + # set -e + # if [[ -n $(git status --porcelain) ]]; then + # echo "Here is the current git status:" + # git status + # echo + # echo "The following changes were detected:" + # git --no-pager diff + # echo "Uncommitted PRs found in the changelog. Please submit a release prep PR of changes after running `./update-changelog`" + # exit 1 + # fi - name: Generate Release Notes uses: docker://githubchangeloggenerator/github-changelog-generator:1.16.2 @@ -73,7 +73,7 @@ jobs: - name: Install Ruby jruby-9.3.6.0 uses: ruby/setup-ruby@v1 with: - ruby-version: 'jruby-9.4.3.0' + ruby-version: 'jruby-9.4.2.0' - name: Build gem run: gem build *.gemspec diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml index ba273f5..666c602 100644 --- a/.github/workflows/security.yml +++ b/.github/workflows/security.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - name: checkout repo content - uses: actions/checkout@v4 + uses: actions/checkout@v3 with: fetch-depth: 1 - name: setup ruby @@ -22,7 +22,7 @@ jobs: - name: check lock run: '[ -f "Gemfile.lock" ] && echo "package lock file exists, skipping" || bundle lock' # install java - - uses: actions/setup-java@v4 + - uses: actions/setup-java@v3 with: distribution: 'temurin' # See 'Supported distributions' for available options java-version: '17' diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 1f2f421..54dab4b 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -18,9 +18,9 @@ jobs: strategy: matrix: ruby-version: - - 'jruby-9.4.3.0' + - 'jruby-9.4.2.0' steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v3 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: @@ -34,9 +34,9 @@ jobs: strategy: matrix: ruby-version: - - 'jruby-9.4.3.0' + - 'jruby-9.4.2.0' steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v3 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e3ca6b..0f47557 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,59 +1,5 @@ # Changelog -## [3.3.4](https://github.com/puppetlabs/vmpooler-provider-vsphere/tree/3.3.4) (2023-08-30) - -[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-vsphere/compare/3.3.3...3.3.4) - -**Fixed bugs:** - -- \(maint\) Convert booleans and Time objects to strings when being added to redis [\#51](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/51) ([isaac-hammes](https://github.com/isaac-hammes)) - -## [3.3.3](https://github.com/puppetlabs/vmpooler-provider-vsphere/tree/3.3.3) (2023-08-28) - -[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-vsphere/compare/3.3.2...3.3.3) - -**Fixed bugs:** - -- \(maint\) Update Gemfile.lock and use block for transaction. [\#49](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/49) ([isaac-hammes](https://github.com/isaac-hammes)) - -## [3.3.2](https://github.com/puppetlabs/vmpooler-provider-vsphere/tree/3.3.2) (2023-08-23) - -[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-vsphere/compare/3.3.1...3.3.2) - -**Fixed bugs:** - -- \(maint\) Increase timeout for cloned vms to obtain IPs. [\#47](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/47) ([isaac-hammes](https://github.com/isaac-hammes)) - -## [3.3.1](https://github.com/puppetlabs/vmpooler-provider-vsphere/tree/3.3.1) (2023-08-22) - -[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-vsphere/compare/3.3.0...3.3.1) - -**Fixed bugs:** - -- \(RE-15710\) Fix IP address that is returned and increase timeout [\#44](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/44) ([yachub](https://github.com/yachub)) - -## [3.3.0](https://github.com/puppetlabs/vmpooler-provider-vsphere/tree/3.3.0) (2023-08-18) - -[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-vsphere/compare/3.2.0...3.3.0) - -**Implemented enhancements:** - -- \(POD-10\) Log reason for failed VM checks. [\#42](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/42) ([isaac-hammes](https://github.com/isaac-hammes)) - -## [3.2.0](https://github.com/puppetlabs/vmpooler-provider-vsphere/tree/3.2.0) (2023-08-10) - -[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-vsphere/compare/3.1.0...3.2.0) - -**Implemented enhancements:** - -- Bump jruby to 9.4.3.0 and update lockfile [\#40](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/40) ([yachub](https://github.com/yachub)) - -**Merged pull requests:** - -- Bump thor from 1.2.1 to 1.2.2 [\#38](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/38) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump vmpooler from 3.0.0 to 3.1.0 [\#37](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/37) ([dependabot[bot]](https://github.com/apps/dependabot)) -- Bump rack-test from 2.0.2 to 2.1.0 [\#36](https://github.com/puppetlabs/vmpooler-provider-vsphere/pull/36) ([dependabot[bot]](https://github.com/apps/dependabot)) - ## [3.1.0](https://github.com/puppetlabs/vmpooler-provider-vsphere/tree/3.1.0) (2023-05-01) [Full Changelog](https://github.com/puppetlabs/vmpooler-provider-vsphere/compare/3.0.0...3.1.0) diff --git a/Gemfile.lock b/Gemfile.lock index 6d96901..83c9c7e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - vmpooler-provider-vsphere (3.3.4) + vmpooler-provider-vsphere (3.1.0) rbvmomi2 (>= 3.1, < 4.0) vmpooler (~> 3.0) @@ -14,125 +14,105 @@ GEM climate_control (1.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) - connection_pool (2.4.1) + connection_pool (2.4.0) deep_merge (1.2.2) diff-lcs (1.5.0) docile (1.4.0) - faraday (2.7.10) + faraday (2.7.4) faraday-net_http (>= 2.0, < 3.1) ruby2_keywords (>= 0.0.4) faraday-net_http (3.0.2) ffi (1.15.5-java) google-cloud-env (1.6.0) faraday (>= 0.17.3, < 3.0) - json (2.6.3) json (2.6.3-java) method_source (1.0.0) - mock_redis (0.37.0) - mustermann (3.0.0) + mock_redis (0.36.0) + ruby2_keywords + mustermann (2.0.2) ruby2_keywords (~> 0.0.1) - net-ldap (0.18.0) - nio4r (2.5.9) - nio4r (2.5.9-java) - nokogiri (1.15.4-java) + net-ldap (0.17.1) + nio4r (2.5.8-java) + nokogiri (1.14.2-java) racc (~> 1.4) - nokogiri (1.15.4-x86_64-linux) - racc (~> 1.4) - opentelemetry-api (1.2.2) - opentelemetry-common (0.20.0) + opentelemetry-api (1.1.0) + opentelemetry-common (0.19.6) opentelemetry-api (~> 1.0) - opentelemetry-exporter-jaeger (0.23.0) - opentelemetry-api (~> 1.1) - opentelemetry-common (~> 0.20) - opentelemetry-sdk (~> 1.2) - opentelemetry-semantic_conventions - thrift - opentelemetry-instrumentation-base (0.22.2) + opentelemetry-exporter-jaeger (0.20.1) opentelemetry-api (~> 1.0) - opentelemetry-registry (~> 0.1) - opentelemetry-instrumentation-concurrent_ruby (0.21.1) - opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-http_client (0.22.2) - opentelemetry-api (~> 1.0) - opentelemetry-common (~> 0.20.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-rack (0.23.4) - opentelemetry-api (~> 1.0) - opentelemetry-common (~> 0.20.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-redis (0.25.3) - opentelemetry-api (~> 1.0) - opentelemetry-common (~> 0.20.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-sinatra (0.23.2) - opentelemetry-api (~> 1.0) - opentelemetry-common (~> 0.20.0) - opentelemetry-instrumentation-base (~> 0.22.1) - opentelemetry-instrumentation-rack (~> 0.21) - opentelemetry-registry (0.3.0) - opentelemetry-api (~> 1.1) - opentelemetry-resource_detectors (0.24.1) - google-cloud-env + opentelemetry-common (~> 0.19.2) opentelemetry-sdk (~> 1.0) - opentelemetry-sdk (1.3.0) + thrift + opentelemetry-instrumentation-base (0.19.0) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-concurrent_ruby (0.19.2) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.19.0) + opentelemetry-instrumentation-http_client (0.19.4) + opentelemetry-api (~> 1.0) + opentelemetry-common (~> 0.19.3) + opentelemetry-instrumentation-base (~> 0.19.0) + opentelemetry-instrumentation-redis (0.21.3) + opentelemetry-api (~> 1.0) + opentelemetry-common (~> 0.19.3) + opentelemetry-instrumentation-base (~> 0.19.0) + opentelemetry-instrumentation-sinatra (0.19.3) + opentelemetry-api (~> 1.0) + opentelemetry-common (~> 0.19.3) + opentelemetry-instrumentation-base (~> 0.19.0) + opentelemetry-registry (0.2.0) opentelemetry-api (~> 1.1) - opentelemetry-common (~> 0.20) + opentelemetry-resource_detectors (0.19.1) + google-cloud-env + opentelemetry-sdk + opentelemetry-sdk (1.2.0) + opentelemetry-api (~> 1.1) + opentelemetry-common (~> 0.19.3) opentelemetry-registry (~> 0.2) opentelemetry-semantic_conventions - opentelemetry-semantic_conventions (1.10.0) + opentelemetry-semantic_conventions (1.8.0) opentelemetry-api (~> 1.0) - optimist (3.1.0) - parallel (1.23.0) - parser (3.2.2.3) + optimist (3.0.1) + parallel (1.22.1) + parser (3.2.1.0) ast (~> 2.4.1) - racc pickup (0.0.11) - prometheus-client (4.2.1) - pry (0.14.2) - coderay (~> 1.1) - method_source (~> 1.0) + prometheus-client (2.1.0) pry (0.14.2-java) coderay (~> 1.1) method_source (~> 1.0) spoon (~> 0.0) - puma (6.3.1) + puma (5.6.5-java) nio4r (~> 2.0) - puma (6.3.1-java) - nio4r (~> 2.0) - racc (1.7.1) - racc (1.7.1-java) - rack (2.2.8) - rack-protection (3.1.0) - rack (~> 2.2, >= 2.2.4) - rack-test (2.1.0) + racc (1.6.2-java) + rack (2.2.6.2) + rack-protection (2.2.4) + rack + rack-test (2.0.2) rack (>= 1.3) rainbow (3.1.1) rake (13.0.6) - rbvmomi2 (3.6.1) + rbvmomi2 (3.6.0) builder (~> 3.2) json (~> 2.3) nokogiri (~> 1.12, >= 1.12.5) optimist (~> 3.0) - redis (5.0.7) - redis-client (>= 0.9.0) - redis-client (0.16.0) - connection_pool - regexp_parser (2.8.1) - rexml (3.2.6) + redis (4.8.1) + regexp_parser (2.7.0) + rexml (3.2.5) rspec (3.12.0) rspec-core (~> 3.12.0) rspec-expectations (~> 3.12.0) rspec-mocks (~> 3.12.0) - rspec-core (3.12.2) + rspec-core (3.12.1) rspec-support (~> 3.12.0) - rspec-expectations (3.12.3) + rspec-expectations (3.12.2) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) - rspec-mocks (3.12.6) + rspec-mocks (3.12.3) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) - rspec-support (3.12.1) + rspec-support (3.12.0) rubocop (1.28.2) parallel (~> 1.10) parser (>= 3.1.0.0) @@ -142,9 +122,9 @@ GEM rubocop-ast (>= 1.17.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 1.4.0, < 3.0) - rubocop-ast (1.29.0) + rubocop-ast (1.27.0) parser (>= 3.2.1.0) - ruby-progressbar (1.13.0) + ruby-progressbar (1.12.0) ruby2_keywords (0.0.5) simplecov (0.22.0) docile (~> 1.1) @@ -152,39 +132,39 @@ GEM simplecov_json_formatter (~> 0.1) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) - sinatra (3.1.0) - mustermann (~> 3.0) - rack (~> 2.2, >= 2.2.4) - rack-protection (= 3.1.0) + sinatra (2.2.4) + mustermann (~> 2.0) + rack (~> 2.2) + rack-protection (= 2.2.4) tilt (~> 2.0) spicy-proton (2.1.15) bindata (~> 2.3) spoon (0.0.6) ffi statsd-ruby (1.5.0) - thor (1.2.2) + thor (1.2.1) thrift (0.18.1) - tilt (2.2.0) + tilt (2.1.0) unicode-display_width (2.4.2) - vmpooler (3.5.1) + vmpooler (3.0.0) concurrent-ruby (~> 1.1) - connection_pool (~> 2.4) + connection_pool (~> 2.2) deep_merge (~> 1.2) net-ldap (~> 0.16) - opentelemetry-exporter-jaeger (= 0.23.0) - opentelemetry-instrumentation-concurrent_ruby (= 0.21.1) - opentelemetry-instrumentation-http_client (= 0.22.2) - opentelemetry-instrumentation-redis (= 0.25.3) - opentelemetry-instrumentation-sinatra (= 0.23.2) - opentelemetry-resource_detectors (= 0.24.1) - opentelemetry-sdk (~> 1.3, >= 1.3.0) + opentelemetry-exporter-jaeger (= 0.20.1) + opentelemetry-instrumentation-concurrent_ruby (= 0.19.2) + opentelemetry-instrumentation-http_client (= 0.19.4) + opentelemetry-instrumentation-redis (= 0.21.3) + opentelemetry-instrumentation-sinatra (= 0.19.3) + opentelemetry-resource_detectors (= 0.19.1) + opentelemetry-sdk (~> 1.0, >= 1.0.2) pickup (~> 0.0.11) - prometheus-client (>= 2, < 5) - puma (>= 5.0.4, < 7) - rack (>= 2.2, < 4.0) + prometheus-client (~> 2.0) + puma (~> 5.0, >= 5.0.4) + rack (~> 2.2) rake (~> 13.0) - redis (~> 5.0) - sinatra (>= 2, < 4) + redis (~> 4.1) + sinatra (~> 2.0) spicy-proton (~> 2.1) statsd-ruby (~> 1.4) yarjuf (2.0.0) @@ -193,7 +173,6 @@ GEM PLATFORMS universal-java-11 - x86_64-linux DEPENDENCIES climate_control (>= 0.2.0) diff --git a/README.md b/README.md index b269094..0529e18 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ - [Usage](#usage) - [Custom VM Config Attribute](#custom-vm-config-attribute) - [Update the Gemfile Lock](#update-the-gemfile-lock) + - [Submitting Issues](#submitting-issues) - [Releasing](#releasing) - [License](#license) @@ -30,6 +31,10 @@ To update the `Gemfile.lock` run `./update-gemfile-lock`. Verify, and update if needed, that the docker tag in the script and GitHub action workflows matches what is used in the [vmpooler-deployment Dockerfile](https://github.com/puppetlabs/vmpooler-deployment/blob/main/docker/Dockerfile). +## Submitting Issues + +Please file any issues or requests in Jira at where project development is tracked across all VMPooler related components. + ## Releasing Follow these steps to publish a new GitHub release, and build and push the gem to . diff --git a/install-gemfile-lock b/install-gemfile-lock index a479b0d..94a5e5e 100755 --- a/install-gemfile-lock +++ b/install-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.2.0-jdk11 \ /bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends make git netbase && cd /app && gem install bundler && bundle install --jobs 3; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"' diff --git a/lib/vmpooler-provider-vsphere/version.rb b/lib/vmpooler-provider-vsphere/version.rb index 36c56a7..e31090c 100644 --- a/lib/vmpooler-provider-vsphere/version.rb +++ b/lib/vmpooler-provider-vsphere/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module VmpoolerProviderVsphere - VERSION = '3.3.4' + VERSION = '3.1.0' end diff --git a/lib/vmpooler/providers/vsphere.rb b/lib/vmpooler/providers/vsphere.rb index efd3c9f..99271bc 100644 --- a/lib/vmpooler/providers/vsphere.rb +++ b/lib/vmpooler/providers/vsphere.rb @@ -68,14 +68,14 @@ module Vmpooler try = 0 if try.nil? max_tries = 3 @redis.with_metrics do |redis| - redis.multi do |transaction| - transaction.srem("vmpooler__completed__#{pool}", vm_name) - transaction.hdel("vmpooler__active__#{pool}", vm_name) - transaction.hset("vmpooler__vm__#{vm_name}", 'destroy', Time.now.to_s) + redis.multi + redis.srem("vmpooler__completed__#{pool}", vm_name) + redis.hdel("vmpooler__active__#{pool}", vm_name) + redis.hset("vmpooler__vm__#{vm_name}", 'destroy', Time.now) - # Auto-expire metadata key - transaction.expire("vmpooler__vm__#{vm_name}", (data_ttl * 60 * 60)) - end + # Auto-expire metadata key + redis.expire("vmpooler__vm__#{vm_name}", (data_ttl * 60 * 60)) + redis.exec end start = Time.now @@ -555,15 +555,14 @@ module Vmpooler true end - def vm_ready?(pool_name, vm_name, redis) + def vm_ready?(pool_name, vm_name) begin domain = domain(pool_name) open_socket(vm_name, domain) - rescue StandardError => e - redis.hset("vmpooler__vm__#{vm_name}", 'open_socket_error', e.to_s) + rescue StandardError => _e return false end - redis.hdel("vmpooler__vm__#{vm_name}", 'open_socket_error') + true end @@ -599,15 +598,13 @@ module Vmpooler boottime = vm_object.runtime.bootTime if vm_object.runtime&.bootTime powerstate = vm_object.runtime.powerState if vm_object.runtime&.powerState - ip_maxloop = 240 + ip_maxloop = 60 ip_loop_delay = 1 ip_loop_count = 1 ip = nil - invalid_addresses = /(0|169)\.(0|254)\.\d+\.\d+/ while ip.nil? sleep(ip_loop_delay) ip = vm_object.guest_ip - ip = nil if !ip.nil? && ip.match?(invalid_addresses) unless ip_maxloop == 0 break if ip_loop_count >= ip_maxloop @@ -1103,9 +1100,6 @@ module Vmpooler begin connection = ensured_vsphere_connection(pool_object) vm_hash = get_vm_details(pool_name, vm_name, connection) - - raise StandardError, 'failed to get vm details. vm is unreachable or no longer exists' if vm_hash.nil? - @redis.with_metrics do |redis| redis.hset("vmpooler__vm__#{vm_name}", 'host', vm_hash['host_name']) migration_count = redis.scard('vmpooler__migration') @@ -1140,10 +1134,10 @@ module Vmpooler target_host_object = find_host_by_dnsname(connection, target_host_name) finish = migrate_vm_and_record_timing(pool_name, vm_name, vm_hash, target_host_object, target_host_name) @redis.with_metrics do |redis| - redis.multi do |transaction| - transaction.hset("vmpooler__vm__#{vm_name}", 'host', target_host_name) - transaction.hset("vmpooler__vm__#{vm_name}", 'migrated', 'true') - end + redis.multi + redis.hset("vmpooler__vm__#{vm_name}", 'host', target_host_name) + redis.hset("vmpooler__vm__#{vm_name}", 'migrated', true) + redis.exec end logger.log('s', "[>] [#{pool_name}] '#{vm_name}' migrated from #{vm_hash['host_name']} to #{target_host_name} in #{finish} seconds") ensure @@ -1161,10 +1155,10 @@ module Vmpooler metrics.increment("migrate_to.#{dest_host_name}") @redis.with_metrics do |redis| checkout_to_migration = format('%