From c5b9e1d184e122add1172c8382ac2b38ed8f716a Mon Sep 17 00:00:00 2001 From: Jesse Scott Date: Tue, 22 Sep 2020 12:07:11 -0700 Subject: [PATCH 001/115] Update completion scripts for `service` subcommands --- extras/completions/floaty.bash | 24 ++++++++++++++++-------- extras/completions/floaty.zsh | 20 +++++++++++++------- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/extras/completions/floaty.bash b/extras/completions/floaty.bash index 0c18c49..17a5b24 100644 --- a/extras/completions/floaty.bash +++ b/extras/completions/floaty.bash @@ -2,29 +2,37 @@ _vmfloaty() { - local cur prev subcommands template_subcommands hostname_subcommands + local cur prev commands template_arg_commands hostname_arg_commands service_subcommands + COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" - subcommands="delete get help list modify query revert service snapshot ssh status summary token" - template_subcommands="get ssh" - hostname_subcommands="delete modify query revert snapshot" + commands="delete get help list modify query revert service snapshot ssh status summary token" + template_arg_commands="get ssh" + hostname_arg_commands="delete modify query revert snapshot" + service_subcommands="types examples" if [[ $cur == -* ]] ; then # TODO: option completion COMPREPLY=() - elif [[ $template_subcommands =~ (^| )$prev($| ) ]] ; then + elif [[ $template_arg_commands =~ (^| )$prev($| ) ]] ; then if [[ -z "$_vmfloaty_avail_templates" ]] ; then + # TODO: need a --hostnameonly equivalent here because the section headers of + # `floaty list` are adding some spurious entries (including files in current + # directory because part of the headers is `**` which is getting expanded) _vmfloaty_avail_templates=$(floaty list 2>/dev/null) fi COMPREPLY=( $(compgen -W "${_vmfloaty_avail_templates}" -- "${cur}") ) - elif [[ $hostname_subcommands =~ (^| )$prev($| ) ]] ; then + elif [[ $hostname_arg_commands =~ (^| )$prev($| ) ]] ; then _vmfloaty_active_hostnames=$(floaty list --active --hostnameonly 2>/dev/null) COMPREPLY=( $(compgen -W "${_vmfloaty_active_hostnames}" -- "${cur}") ) - else - COMPREPLY=( $(compgen -W "${subcommands}" -- "${cur}") ) + elif [[ "service" == $prev ]] ; then + COMPREPLY=( $(compgen -W "${service_subcommands}" -- "${cur}") ) + elif [[ $1 == $prev ]] ; then + # only show top level commands we are at root + COMPREPLY=( $(compgen -W "${commands}" -- "${cur}") ) fi } complete -F _vmfloaty floaty diff --git a/extras/completions/floaty.zsh b/extras/completions/floaty.zsh index 77edf17..1dbc292 100644 --- a/extras/completions/floaty.zsh +++ b/extras/completions/floaty.zsh @@ -1,26 +1,32 @@ _floaty() { - local line subcommands template_subcommands hostname_subcommands + local line commands template_arg_commands hostname_arg_commands service_subcommands - subcommands="delete get help list modify query revert snapshot ssh status summary token" + commands="delete get help list modify query revert service snapshot ssh status summary token" - template_subcommands=("get" "ssh") - hostname_subcommands=("delete" "modify" "query" "revert" "snapshot") + template_arg_commands=("get" "ssh") + hostname_arg_commands=("delete" "modify" "query" "revert" "snapshot") + service_subcommands=("types" "examples") _arguments -C \ - "1: :(${subcommands})" \ + "1: :(${commands})" \ "*::arg:->args" - if ((template_subcommands[(Ie)$line[1]])); then + if ((template_arg_commands[(Ie)$line[1]])); then _floaty_template_sub - elif ((hostname_subcommands[(Ie)$line[1]])); then + elif ((hostname_arg_commands[(Ie)$line[1]])); then _floaty_hostname_sub + elif [[ "service" == $line[1] ]]; then + _arguments "1: :(${service_subcommands})" fi } _floaty_template_sub() { if [[ -z "$_vmfloaty_avail_templates" ]] ; then + # TODO: need a --hostnameonly equivalent here because the section headers of + # `floaty list` are adding some spurious entries (including files in current + # directory because part of the headers is `**` which is getting expanded) _vmfloaty_avail_templates=$(floaty list 2>/dev/null) fi From 5c8aa13081a6f00bebc80d56a9f4ec149ae22b3f Mon Sep 17 00:00:00 2001 From: Christopher Thorn Date: Wed, 23 Sep 2020 15:06:24 -0700 Subject: [PATCH 002/115] (maint) Add vmpooler_fallback to the get service check Previously the vmpooler_fallback setting was not being recognizied, this PR will fix it. --- lib/vmfloaty/utils.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/vmfloaty/utils.rb b/lib/vmfloaty/utils.rb index a569415..5f43345 100644 --- a/lib/vmfloaty/utils.rb +++ b/lib/vmfloaty/utils.rb @@ -254,6 +254,7 @@ class Utils 'url' => config['url'], 'user' => config['user'], 'token' => config['token'], + 'vmpooler_fallback' => config['vmpooler_fallback'], 'type' => config['type'] || 'vmpooler', } From 3a60ffbdbd58daaa964c4b62bfa92e991681090c Mon Sep 17 00:00:00 2001 From: Samuel Beaulieu Date: Thu, 24 Sep 2020 09:46:22 -0500 Subject: [PATCH 003/115] (maint) Don't require config file for list --active Will fallback to printing ABS information, which is less than what you get if vmpooler_fallback is available --- lib/vmfloaty/utils.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/vmfloaty/utils.rb b/lib/vmfloaty/utils.rb index a569415..5a2775b 100644 --- a/lib/vmfloaty/utils.rb +++ b/lib/vmfloaty/utils.rb @@ -116,7 +116,7 @@ class Utils output_target.puts "- [JobID:#{host_data['request']['job']['id']}] <#{host_data['state']}>" host_data['allocated_resources'].each do |allocated_resources, _i| - if allocated_resources['engine'] == "vmpooler" + if allocated_resources['engine'] == "vmpooler" && service.config["vmpooler_fallback"] vmpooler_service = service.clone vmpooler_service.silent = true vmpooler_service.maybe_use_vmpooler From 6deadb22674e8a1b0bee4a77b3547b161f78ce14 Mon Sep 17 00:00:00 2001 From: Samuel Beaulieu Date: Thu, 24 Sep 2020 10:00:15 -0500 Subject: [PATCH 004/115] Fix tests --- spec/vmfloaty/utils_spec.rb | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/spec/vmfloaty/utils_spec.rb b/spec/vmfloaty/utils_spec.rb index e26e0f1..a90d3b1 100644 --- a/spec/vmfloaty/utils_spec.rb +++ b/spec/vmfloaty/utils_spec.rb @@ -5,6 +5,11 @@ require 'json' require 'commander/command' require_relative '../../lib/vmfloaty/utils' +# allow changing config in service for tests +class Service + attr_writer :config +end + describe Utils do describe '#standardize_hostnames' do before :each do @@ -441,7 +446,7 @@ describe Utils do end let(:default_output_first_line) { "- [JobID:#{hostname}] " } - let(:default_output_second_line) { " - #{fqdn} (#{template}, 7.67/48 hours, user: bob, role: agent)" } + let(:default_output_second_line) { " - #{fqdn} (#{template})" } it 'prints output with job id, host, and template' do expect(STDOUT).to receive(:puts).with(default_output_first_line) @@ -450,6 +455,16 @@ describe Utils do subject end + it 'prints more information when vmpooler_fallback is set output with job id, host, template, lifetime, user and role' do + fallback = {'vmpooler_fallback' => 'vmpooler'} + service.config.merge! fallback + default_output_second_line=" - #{fqdn} (#{template}, 7.67/48 hours, user: bob, role: agent)" + expect(STDOUT).to receive(:puts).with(default_output_first_line) + expect(STDOUT).to receive(:puts).with(default_output_second_line) + + subject + end + context 'when print_to_stderr option is true' do let(:print_to_stderr) { true } @@ -529,7 +544,7 @@ describe Utils do end let(:default_output_first_line) { "- [JobID:#{hostname}] " } - let(:default_output_second_line) { " - #{fqdn} (#{template}, 7.67/48 hours, user: bob, role: agent)" } + let(:default_output_second_line) { " - #{fqdn} (#{template})" } let(:default_output_third_line) { " - #{fqdn_ns} (#{template_ns})" } it 'prints output with job id, host, and template' do From 56f0896d48c6e23dc22e3a935ac918673f1b4980 Mon Sep 17 00:00:00 2001 From: Nate Wolfe Date: Wed, 23 Sep 2020 15:52:32 -0700 Subject: [PATCH 005/115] (maint) Don't require configuration file for get Make the vmpooler_fallback optional for cases when there's no configuration file and everything is specified on the CLI invocation. --- lib/vmfloaty/abs.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/vmfloaty/abs.rb b/lib/vmfloaty/abs.rb index 2426c32..a2bb6bc 100644 --- a/lib/vmfloaty/abs.rb +++ b/lib/vmfloaty/abs.rb @@ -249,7 +249,6 @@ class ABS conn.headers['X-AUTH-TOKEN'] = token if token saved_job_id = DateTime.now.strftime('%Q') - vmpooler_config = Utils.get_vmpooler_service_config(config['vmpooler_fallback']) req_obj = { :resources => os_types, :job => { @@ -258,9 +257,14 @@ class ABS :user => user, }, }, - :vm_token => vmpooler_config['token'] # request with this token, on behalf of this user } + if config['vmpooler_fallback'] + vmpooler_config = Utils.get_vmpooler_service_config(config['vmpooler_fallback']) + # request with this token, on behalf of this user + req_obj[:vm_token] = vmpooler_config['token'] + end + if config['priority'] req_obj[:priority] = if config['priority'] == 'high' 1 From fbd98f93aefc722a3821401a07bbbef1ff15b89d Mon Sep 17 00:00:00 2001 From: Samuel Beaulieu Date: Fri, 9 Oct 2020 10:18:53 -0500 Subject: [PATCH 006/115] (maint) Fix bug with detecting ABS service Before this change the code would try to check if an object was ABS by using is_a? which is only for instances of a class. It also compared with ABS.class which returns the Class class. Now fixed by comparing the object to the static class --- lib/vmfloaty/service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/vmfloaty/service.rb b/lib/vmfloaty/service.rb index a0303c4..ee41648 100644 --- a/lib/vmfloaty/service.rb +++ b/lib/vmfloaty/service.rb @@ -139,7 +139,7 @@ class Service # some methods do not exist for ABS, and if possible should target the Pooler service def maybe_use_vmpooler - if @service_object.is_a?(ABS.class) + if @service_object == ABS # this is not an instance if !self.silent FloatyLogger.info "The service in use is ABS, but the requested method should run against vmpooler directly, using fallback_vmpooler config from ~/.vmfloaty.yml" self.silent = true From e0fac0bb6c9ee7771f506b1a98cd9a9d0eba793f Mon Sep 17 00:00:00 2001 From: Samuel Beaulieu Date: Fri, 9 Oct 2020 10:23:23 -0500 Subject: [PATCH 007/115] (maint) Add more uniqueness to jobid Before this change there was a non zero chance that two requests could be received at the same millisecond and have the same jobid. Added the username as a prefix to the job id --- lib/vmfloaty/abs.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/vmfloaty/abs.rb b/lib/vmfloaty/abs.rb index 2426c32..1d1755a 100644 --- a/lib/vmfloaty/abs.rb +++ b/lib/vmfloaty/abs.rb @@ -248,7 +248,7 @@ class ABS conn = Http.get_conn(verbose, url) conn.headers['X-AUTH-TOKEN'] = token if token - saved_job_id = DateTime.now.strftime('%Q') + saved_job_id = user + "-" + DateTime.now.strftime('%Q') vmpooler_config = Utils.get_vmpooler_service_config(config['vmpooler_fallback']) req_obj = { :resources => os_types, From 671623bc4f13d77ff91c2b755560520cdd6c5f0f Mon Sep 17 00:00:00 2001 From: Samuel Beaulieu Date: Fri, 9 Oct 2020 10:37:16 -0500 Subject: [PATCH 008/115] handle ctrl-c and term signal and return useful message on how to query ABS for the state of the request or to delete it --- lib/vmfloaty/abs.rb | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/vmfloaty/abs.rb b/lib/vmfloaty/abs.rb index 1d1755a..4eb657e 100644 --- a/lib/vmfloaty/abs.rb +++ b/lib/vmfloaty/abs.rb @@ -284,15 +284,20 @@ class ABS validate_queue_status_response(res.status, res.body, "Initial request", verbose) - (1..retries).each do |i| - queue_place, res_body = check_queue(conn, saved_job_id, req_obj, verbose) - return translated(res_body, saved_job_id) if res_body + begin + (1..retries).each do |i| + queue_place, res_body = check_queue(conn, saved_job_id, req_obj, verbose) + return translated(res_body, saved_job_id) if res_body - sleep_seconds = 10 if i >= 10 - sleep_seconds = i if i < 10 - FloatyLogger.info "Waiting #{sleep_seconds} seconds to check if ABS request has been filled. Queue Position: #{queue_place}... (x#{i})" + sleep_seconds = 10 if i >= 10 + sleep_seconds = i if i < 10 + FloatyLogger.info "Waiting #{sleep_seconds} seconds to check if ABS request has been filled. Queue Position: #{queue_place}... (x#{i})" - sleep(sleep_seconds) + sleep(sleep_seconds) + end + rescue SystemExit, Interrupt + FloatyLogger.info "\n\nFloaty interrupted, you can query the state of your request via\n1) `floaty query #{saved_job_id}` or delete it via\n2) `floaty delete #{saved_job_id}`" + exit 1 end nil end From 846cc7050c9d46eb966d3976612efd1601309daa Mon Sep 17 00:00:00 2001 From: Samuel Beaulieu Date: Fri, 16 Oct 2020 13:14:57 -0500 Subject: [PATCH 009/115] when missing, adds the api/v2 to the url endpoint --- lib/vmfloaty/abs.rb | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/lib/vmfloaty/abs.rb b/lib/vmfloaty/abs.rb index 42c1df0..873a0e0 100644 --- a/lib/vmfloaty/abs.rb +++ b/lib/vmfloaty/abs.rb @@ -64,7 +64,7 @@ class ABS end def self.get_active_requests(verbose, url, user) - conn = Http.get_conn(verbose, url) + conn = Http.get_conn(verbose, supported_abs_url(url)) res = conn.get 'status/queue' if valid_json?(res.body) requests = JSON.parse(res.body) @@ -105,7 +105,7 @@ class ABS def self.delete(verbose, url, hosts, token, user) # In ABS terms, this is a "returned" host. - conn = Http.get_conn(verbose, url) + conn = Http.get_conn(verbose, supported_abs_url(url)) conn.headers['X-AUTH-TOKEN'] = token if token FloatyLogger.info "Trying to delete hosts #{hosts}" if verbose @@ -163,7 +163,7 @@ class ABS # List available VMs in ABS def self.list(verbose, url, os_filter = nil) - conn = Http.get_conn(verbose, url) + conn = Http.get_conn(verbose, supported_abs_url(url)) os_list = [] @@ -245,7 +245,7 @@ class ABS # } # } - conn = Http.get_conn(verbose, url) + conn = Http.get_conn(verbose, supported_abs_url(url)) conn.headers['X-AUTH-TOKEN'] = token if token saved_job_id = user + "-" + DateTime.now.strftime('%Q') @@ -348,7 +348,7 @@ class ABS end def self.status(verbose, url) - conn = Http.get_conn(verbose, url) + conn = Http.get_conn(verbose, supported_abs_url(url)) res = conn.get 'status' @@ -366,7 +366,7 @@ class ABS return @active_hostnames if @active_hostnames && !@active_hostnames.empty? # If using the cli query job_id - conn = Http.get_conn(verbose, url) + conn = Http.get_conn(verbose, supported_abs_url(url)) queue_info_res = conn.get "status/queue/info/#{job_id}" if valid_json?(queue_info_res.body) queue_info = JSON.parse(queue_info_res.body) @@ -411,4 +411,15 @@ class ABS rescue TypeError, JSON::ParserError => e return false end + + # when missing, adds the required api/v2 in the url + def self.supported_abs_url(url) + expected_ending = "api/v2" + if !url.include?(expected_ending) + # add a slash if missing + expected_ending = "/#{expected_ending}" if url[-1] != "/" + url = "#{url}#{expected_ending}" + end + url + end end From ced6b46032dc9d0d9b1323cd038fc3f9e7884603 Mon Sep 17 00:00:00 2001 From: Samuel Beaulieu Date: Fri, 16 Oct 2020 13:15:15 -0500 Subject: [PATCH 010/115] (v1.1.1) Prepare for pushing the gem to rubygems --- lib/vmfloaty/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/vmfloaty/version.rb b/lib/vmfloaty/version.rb index 18711c4..c991fab 100644 --- a/lib/vmfloaty/version.rb +++ b/lib/vmfloaty/version.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true class Vmfloaty - VERSION = '1.0.0' + VERSION = '1.1.1' end From 4aa78a1b66ae8af9ab1c118fa85552cef3391d67 Mon Sep 17 00:00:00 2001 From: Samuel Beaulieu Date: Fri, 16 Oct 2020 13:23:50 -0500 Subject: [PATCH 011/115] fix tests --- spec/vmfloaty/abs_spec.rb | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/spec/vmfloaty/abs_spec.rb b/spec/vmfloaty/abs_spec.rb index 40804cf..d6eabfc 100644 --- a/spec/vmfloaty/abs_spec.rb +++ b/spec/vmfloaty/abs_spec.rb @@ -11,11 +11,11 @@ describe ABS do describe '#list' do it 'skips empty platforms and lists aws' do - stub_request(:get, "http://foo/status/platforms/vmpooler"). + stub_request(:get, "http://foo/api/v2/status/platforms/vmpooler"). to_return(:status => 200, :body => "", :headers => {}) - stub_request(:get, "http://foo/status/platforms/ondemand_vmpooler"). + stub_request(:get, "http://foo/api/v2/status/platforms/ondemand_vmpooler"). to_return(:status => 200, :body => "", :headers => {}) - stub_request(:get, "http://foo/status/platforms/nspooler"). + stub_request(:get, "http://foo/api/v2/status/platforms/nspooler"). to_return(:status => 200, :body => "", :headers => {}) body = '{ "aws_platforms": [ @@ -26,7 +26,7 @@ describe ABS do "redhat-8-arm64" ] }' - stub_request(:get, "http://foo/status/platforms/aws"). + stub_request(:get, "http://foo/api/v2/status/platforms/aws"). to_return(:status => 200, :body => body, :headers => {}) @@ -35,16 +35,16 @@ describe ABS do expect(results).to include("amazon-6-x86_64", "amazon-7-x86_64", "amazon-7-arm64", "centos-7-x86-64-west", "redhat-8-arm64") end it 'legacy JSON string, prior to PR 306' do - stub_request(:get, "http://foo/status/platforms/vmpooler"). + stub_request(:get, "http://foo/api/v2/status/platforms/vmpooler"). to_return(:status => 200, :body => "", :headers => {}) - stub_request(:get, "http://foo/status/platforms/ondemand_vmpooler"). + stub_request(:get, "http://foo/api/v2/status/platforms/ondemand_vmpooler"). to_return(:status => 200, :body => "", :headers => {}) - stub_request(:get, "http://foo/status/platforms/nspooler"). + stub_request(:get, "http://foo/api/v2/status/platforms/nspooler"). to_return(:status => 200, :body => "", :headers => {}) body = '{ "aws_platforms": "[\"amazon-6-x86_64\",\"amazon-7-x86_64\",\"amazon-7-arm64\",\"centos-7-x86-64-west\",\"redhat-8-arm64\"]" }' - stub_request(:get, "http://foo/status/platforms/aws"). + stub_request(:get, "http://foo/api/v2/status/platforms/aws"). to_return(:status => 200, :body => body, :headers => {}) results = ABS.list(false, "http://foo") @@ -125,7 +125,7 @@ describe ABS do end it 'will skip a line with a null value returned from abs' do - stub_request(:get, 'https://abs.example.com/status/queue') + stub_request(:get, 'https://abs.example.com/api/v2/status/queue') .to_return(:status => 200, :body => @active_requests_response, :headers => {}) ret = ABS.get_active_requests(false, @abs_url, @test_user) @@ -156,9 +156,9 @@ describe ABS do end it 'will delete the whole job' do - stub_request(:get, 'https://abs.example.com/status/queue') + stub_request(:get, 'https://abs.example.com/api/v2/status/queue') .to_return(:status => 200, :body => @active_requests_response, :headers => {}) - stub_request(:post, 'https://abs.example.com/return') + stub_request(:post, 'https://abs.example.com/api/v2/return') .with(:body => @return_request) .to_return(:status => 200, :body => 'OK', :headers => {}) From c969e9c55215c0bfa28ca682ad33a23c14c7fcc2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Nov 2020 13:03:24 +0000 Subject: [PATCH 012/115] Update rspec requirement from ~> 3.9.0 to ~> 3.10.0 Updates the requirements on [rspec](https://github.com/rspec/rspec) to permit the latest version. - [Release notes](https://github.com/rspec/rspec/releases) - [Commits](https://github.com/rspec/rspec/compare/v3.9.0...v3.10.0) Signed-off-by: dependabot[bot] --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index b8bcc0f..31842ef 100644 --- a/Gemfile +++ b/Gemfile @@ -10,7 +10,7 @@ group :test do gem 'coveralls', '~> 0.8.23' gem 'pry' gem 'rb-readline' - gem 'rspec', '~> 3.9.0' + gem 'rspec', '~> 3.10.0' gem 'rubocop', '~> 0.52' gem 'webmock', '1.21.0' end From d4c2795df0bb0ce2c07a1bdfd480de623df93125 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Dec 2020 13:04:56 +0000 Subject: [PATCH 013/115] Update rubocop requirement from ~> 0.52 to ~> 1.6 Updates the requirements on [rubocop](https://github.com/rubocop-hq/rubocop) to permit the latest version. - [Release notes](https://github.com/rubocop-hq/rubocop/releases) - [Changelog](https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop-hq/rubocop/compare/v0.52.0...v1.6.0) Signed-off-by: dependabot[bot] --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index b8bcc0f..229a437 100644 --- a/Gemfile +++ b/Gemfile @@ -11,6 +11,6 @@ group :test do gem 'pry' gem 'rb-readline' gem 'rspec', '~> 3.9.0' - gem 'rubocop', '~> 0.52' + gem 'rubocop', '~> 1.6' gem 'webmock', '1.21.0' end From a3d848412484242fdd68a8ef571ba0184c04761a Mon Sep 17 00:00:00 2001 From: Samuel Beaulieu Date: Tue, 9 Feb 2021 11:29:08 -0600 Subject: [PATCH 014/115] (DIO-908) Floaty can now report the status of ABS requests - If ABS queries returns a body for 200 or 202, floaty will print it this is useful in the new version of ABS, since it shows the progress for ondemand requests (AWS or vmpooler) - removed the queue_place and querying the queue for a 'get' request this queue_place number was misleading since it was just a redis index and did not represent well where the request was in the queue - Also added a flag option --continue to be used when the cli was interrupted for example with ctrl-c --- lib/vmfloaty.rb | 13 +++++----- lib/vmfloaty/abs.rb | 38 ++++++++++++++---------------- lib/vmfloaty/nonstandard_pooler.rb | 2 +- lib/vmfloaty/pooler.rb | 2 +- lib/vmfloaty/service.rb | 4 ++-- lib/vmfloaty/utils.rb | 2 +- 6 files changed, 30 insertions(+), 31 deletions(-) diff --git a/lib/vmfloaty.rb b/lib/vmfloaty.rb index 7d015f3..cd654f7 100644 --- a/lib/vmfloaty.rb +++ b/lib/vmfloaty.rb @@ -39,6 +39,7 @@ class Vmfloaty c.option '--force', 'Forces vmfloaty to get requested vms' c.option '--json', 'Prints retrieved vms in JSON format' c.option '--ondemand', 'Requested vms are provisioned upon receival of the request, tracked by a request ID' + c.option '--continue STRING', String, 'resume polling ABS for job_id, for use when the cli was interrupted' c.action do |args, options| verbose = options.verbose || config['verbose'] service = Service.new(options, config) @@ -52,6 +53,11 @@ class Vmfloaty os_types = Utils.generate_os_hash(args) + if os_types.empty? + FloatyLogger.error 'No operating systems provided to obtain. See `floaty get --help` for more information on how to get VMs.' + exit 1 + end + max_pool_request = 5 large_pool_requests = os_types.select { |_, v| v > max_pool_request } if !large_pool_requests.empty? && !force @@ -60,12 +66,7 @@ class Vmfloaty exit 1 end - if os_types.empty? - FloatyLogger.error 'No operating systems provided to obtain. See `floaty get --help` for more information on how to get VMs.' - exit 1 - end - - response = service.retrieve(verbose, os_types, use_token, options.ondemand) + response = service.retrieve(verbose, os_types, use_token, options.ondemand, options.continue) request_id = response['request_id'] if options.ondemand response = service.wait_for_request(verbose, request_id) if options.ondemand diff --git a/lib/vmfloaty/abs.rb b/lib/vmfloaty/abs.rb index 873a0e0..08027b7 100644 --- a/lib/vmfloaty/abs.rb +++ b/lib/vmfloaty/abs.rb @@ -228,7 +228,7 @@ class ABS end # Retrieve an OS from ABS. - def self.retrieve(verbose, os_types, token, url, user, config, _ondemand = nil) + def self.retrieve(verbose, os_types, token, url, user, config, _ondemand = nil, continue = nil) # # Contents of post must be like: # @@ -248,7 +248,12 @@ class ABS conn = Http.get_conn(verbose, supported_abs_url(url)) conn.headers['X-AUTH-TOKEN'] = token if token - saved_job_id = user + "-" + DateTime.now.strftime('%Q') + if continue.nil? + saved_job_id = user + "-" + DateTime.now.strftime('%Q') + else + saved_job_id = continue + end + req_obj = { :resources => os_types, :job => { @@ -281,26 +286,28 @@ class ABS # os_string = os_type.map { |os, num| Array(os) * num }.flatten.join('+') # raise MissingParamError, 'No operating systems provided to obtain.' if os_string.empty? - FloatyLogger.info "Requesting VMs with job_id: #{saved_job_id}. Will retry for up to an hour." + FloatyLogger.info "Requesting VMs with job_id: #{saved_job_id} Will retry for up to an hour." res = conn.post 'request', req_obj.to_json retries = 360 - validate_queue_status_response(res.status, res.body, "Initial request", verbose) + status = validate_queue_status_response(res.status, res.body, "Initial request", verbose) begin (1..retries).each do |i| - queue_place, res_body = check_queue(conn, saved_job_id, req_obj, verbose) - return translated(res_body, saved_job_id) if res_body + res_body = check_queue(conn, saved_job_id, req_obj, verbose) + if res_body && res_body.is_a?(Array) # when we get a response with hostnames + return translated(res_body, saved_job_id) + end sleep_seconds = 10 if i >= 10 sleep_seconds = i if i < 10 - FloatyLogger.info "Waiting #{sleep_seconds} seconds to check if ABS request has been filled. Queue Position: #{queue_place}... (x#{i})" + FloatyLogger.info "Waiting #{sleep_seconds}s (x#{i}) #{res_body.strip}" sleep(sleep_seconds) end rescue SystemExit, Interrupt - FloatyLogger.info "\n\nFloaty interrupted, you can query the state of your request via\n1) `floaty query #{saved_job_id}` or delete it via\n2) `floaty delete #{saved_job_id}`" + FloatyLogger.info "\n\nFloaty interrupted, you can resume polling with\n1) `floaty get [same arguments] and adding the flag --continue #{saved_job_id}` or query the state of the queue via\n2) `floaty query #{saved_job_id}` or delete it via\n3) `floaty delete #{saved_job_id}`" exit 1 end nil @@ -325,22 +332,13 @@ class ABS end def self.check_queue(conn, job_id, req_obj, verbose) - queue_info_res = conn.get "status/queue/info/#{job_id}" - if valid_json?(queue_info_res.body) - queue_info = JSON.parse(queue_info_res.body) - else - FloatyLogger.warn "Could not parse the status/queue/info/#{job_id}" - return [nil, nil] - end - res = conn.post 'request', req_obj.to_json - validate_queue_status_response(res.status, res.body, "Check queue request", verbose) - + status = validate_queue_status_response(res.status, res.body, "Check queue request", verbose) unless res.body.empty? || !valid_json?(res.body) res_body = JSON.parse(res.body) - return queue_info['queue_place'], res_body + return res_body end - [queue_info['queue_place'], nil] + res.body end def self.snapshot(_verbose, _url, _hostname, _token) diff --git a/lib/vmfloaty/nonstandard_pooler.rb b/lib/vmfloaty/nonstandard_pooler.rb index 5d755a9..0746034 100644 --- a/lib/vmfloaty/nonstandard_pooler.rb +++ b/lib/vmfloaty/nonstandard_pooler.rb @@ -22,7 +22,7 @@ class NonstandardPooler status['reserved_hosts'] || [] end - def self.retrieve(verbose, os_type, token, url, _user, _options, ondemand = nil) + def self.retrieve(verbose, os_type, token, url, _user, _options, ondemand = nil, _continue = nil) conn = Http.get_conn(verbose, url) conn.headers['X-AUTH-TOKEN'] = token if token diff --git a/lib/vmfloaty/pooler.rb b/lib/vmfloaty/pooler.rb index fb811cf..5b5f65c 100644 --- a/lib/vmfloaty/pooler.rb +++ b/lib/vmfloaty/pooler.rb @@ -28,7 +28,7 @@ class Pooler vms end - def self.retrieve(verbose, os_type, token, url, _user, _options, ondemand = nil) + def self.retrieve(verbose, os_type, token, url, _user, _options, ondemand = nil, _continue = nil) # NOTE: # Developers can use `Utils.generate_os_hash` to # generate the os_type param. diff --git a/lib/vmfloaty/service.rb b/lib/vmfloaty/service.rb index ee41648..196ac4c 100644 --- a/lib/vmfloaty/service.rb +++ b/lib/vmfloaty/service.rb @@ -77,10 +77,10 @@ class Service @service_object.list_active verbose, url, token, user end - def retrieve(verbose, os_types, use_token = true, ondemand = nil) + def retrieve(verbose, os_types, use_token = true, ondemand = nil, continue = nil) FloatyLogger.info 'Requesting a vm without a token...' unless use_token token_value = use_token ? token : nil - @service_object.retrieve verbose, os_types, token_value, url, user, @config, ondemand + @service_object.retrieve verbose, os_types, token_value, url, user, @config, ondemand, continue end def wait_for_request(verbose, requestid) diff --git a/lib/vmfloaty/utils.rb b/lib/vmfloaty/utils.rb index e3408f3..a356ec3 100644 --- a/lib/vmfloaty/utils.rb +++ b/lib/vmfloaty/utils.rb @@ -116,7 +116,7 @@ class Utils output_target.puts "- [JobID:#{host_data['request']['job']['id']}] <#{host_data['state']}>" host_data['allocated_resources'].each do |allocated_resources, _i| - if allocated_resources['engine'] == "vmpooler" && service.config["vmpooler_fallback"] + if (allocated_resources['engine'] == "vmpooler" || allocated_resources['engine'] == 'ondemand') && service.config["vmpooler_fallback"] vmpooler_service = service.clone vmpooler_service.silent = true vmpooler_service.maybe_use_vmpooler From 4192631d70e681331886965a33e92b89e07bd829 Mon Sep 17 00:00:00 2001 From: Samuel Beaulieu Date: Tue, 9 Feb 2021 15:38:43 -0600 Subject: [PATCH 015/115] (DIO-908) Adding a way to set Logger level via --loglevel this is specially useful if you also use in combination --json to remove superfluous stdout --- lib/vmfloaty.rb | 17 +++++++++++++++++ lib/vmfloaty/logger.rb | 13 +++++++++++++ 2 files changed, 30 insertions(+) diff --git a/lib/vmfloaty.rb b/lib/vmfloaty.rb index cd654f7..0e1bad5 100644 --- a/lib/vmfloaty.rb +++ b/lib/vmfloaty.rb @@ -40,8 +40,12 @@ class Vmfloaty c.option '--json', 'Prints retrieved vms in JSON format' c.option '--ondemand', 'Requested vms are provisioned upon receival of the request, tracked by a request ID' c.option '--continue STRING', String, 'resume polling ABS for job_id, for use when the cli was interrupted' + c.option '--loglevel STRING', String, 'the log level to use (debug, info, error)' c.action do |args, options| verbose = options.verbose || config['verbose'] + if options.loglevel + FloatyLogger.setlevel = options.loglevel + end service = Service.new(options, config) use_token = !options.notoken force = options.force @@ -93,8 +97,12 @@ class Vmfloaty c.option '--token STRING', String, 'Token for pooler service' c.option '--url STRING', String, 'URL of pooler service' c.option '--user STRING', String, 'User to authenticate with' + c.option '--loglevel STRING', String, 'the log level to use (debug, info, error)' c.action do |args, options| verbose = options.verbose || config['verbose'] + if options.loglevel + FloatyLogger.setlevel = options.loglevel + end service = Service.new(options, config) filter = args[0] @@ -230,8 +238,13 @@ class Vmfloaty c.option '--token STRING', String, 'Token for pooler service' c.option '--url STRING', String, 'URL of pooler service' c.option '--user STRING', String, 'User to authenticate with' + c.option '--loglevel STRING', String, 'the log level to use (debug, info, error)' c.action do |args, options| verbose = options.verbose || config['verbose'] + if options.loglevel + FloatyLogger.setlevel = options.loglevel + end + service = Service.new(options, config) hostnames = args[0] delete_all = options.all @@ -375,8 +388,12 @@ class Vmfloaty c.option '--service STRING', String, 'Configured pooler service name' c.option '--url STRING', String, 'URL of pooler service' c.option '--json', 'Prints status in JSON format' + c.option '--loglevel STRING', String, 'the log level to use (debug, info, error)' c.action do |_, options| verbose = options.verbose || config['verbose'] + if options.loglevel + FloatyLogger.setlevel = options.loglevel + end service = Service.new(options, config) if options.json pp service.status(verbose) diff --git a/lib/vmfloaty/logger.rb b/lib/vmfloaty/logger.rb index d669d78..88bf5f1 100644 --- a/lib/vmfloaty/logger.rb +++ b/lib/vmfloaty/logger.rb @@ -17,6 +17,19 @@ class FloatyLogger < ::Logger FloatyLogger.logger.error msg end + def self.setlevel=(level) + level = level.downcase + if level == "debug" + self.logger.level = ::Logger::DEBUG + elsif level == "info" + self.logger.level = ::Logger::INFO + elsif level == "error" + self.logger.level = ::Logger::ERROR + else + error("set loglevel to debug, info or error") + end + end + def initialize super(STDERR) self.level = ::Logger::INFO From a9c8d17e9a053ec25d9b65f15fc515b9698721e1 Mon Sep 17 00:00:00 2001 From: Gene Liverman Date: Thu, 11 Feb 2021 10:16:21 -0500 Subject: [PATCH 016/115] Release prep for 1.2.0 --- lib/vmfloaty/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/vmfloaty/version.rb b/lib/vmfloaty/version.rb index c991fab..d74edd1 100644 --- a/lib/vmfloaty/version.rb +++ b/lib/vmfloaty/version.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true class Vmfloaty - VERSION = '1.1.1' + VERSION = '1.2.0' end From 8143641f831bb075286ca4debdfe4fa035774997 Mon Sep 17 00:00:00 2001 From: Samuel Beaulieu Date: Thu, 25 Feb 2021 10:04:30 -0600 Subject: [PATCH 017/115] (DIO-1522) Show the VM state (running, destroyed) and colorize in red when it has been deleted the ABS system does not have a real sense of the current state of the resources it has allocated. When running list --active it can list VMs that have been deleted or reaped after their lifetime expired. This change enables to show more information when a vmpooler_fallback service is provided to ABS, and will show the state (running, destroyed) and colorize in red when the VM is destroyed. --- lib/vmfloaty/utils.rb | 9 +++++++-- spec/vmfloaty/utils_spec.rb | 17 ++++++++++++++--- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/lib/vmfloaty/utils.rb b/lib/vmfloaty/utils.rb index a356ec3..113a6da 100644 --- a/lib/vmfloaty/utils.rb +++ b/lib/vmfloaty/utils.rb @@ -130,8 +130,13 @@ class Utils tag_pairs = [] tag_pairs = host_data['tags'].map { |key, value| "#{key}: #{value}" } unless host_data['tags'].nil? duration = "#{host_data['running']}/#{host_data['lifetime']} hours" - metadata = [host_data['template'], duration, *tag_pairs] - output_target.puts "- #{hostname}.#{host_data['domain']} (#{metadata.join(', ')})".gsub(/^/, ' ' * indent) + metadata = [host_data['state'], host_data['template'], duration, *tag_pairs] + message = "- #{hostname}.#{host_data['domain']} (#{metadata.join(', ')})".gsub(/^/, ' ' * indent) + if host_data['state'] && host_data['state'] == "destroyed" + output_target.puts message.colorize(:red) + else + output_target.puts message + end when 'NonstandardPooler' line = "- #{host_data['fqdn']} (#{host_data['os_triple']}" line += ", #{host_data['hours_left_on_reservation']}h remaining" diff --git a/spec/vmfloaty/utils_spec.rb b/spec/vmfloaty/utils_spec.rb index a90d3b1..ab5846e 100644 --- a/spec/vmfloaty/utils_spec.rb +++ b/spec/vmfloaty/utils_spec.rb @@ -283,7 +283,7 @@ describe Utils do } end - let(:default_output) { "- #{fqdn} (ubuntu-1604-x86_64, 9.66/12 hours)" } + let(:default_output) { "- #{fqdn} (running, ubuntu-1604-x86_64, 9.66/12 hours)" } it 'prints output with host fqdn, template and duration info' do expect(STDOUT).to receive(:puts).with(default_output) @@ -311,7 +311,7 @@ describe Utils do end it 'prints output with host fqdn, template, duration info, and tags' do - output = "- #{fqdn} (redhat-7-x86_64, 7.67/48 hours, user: bob, role: agent)" + output = "- #{fqdn} (running, redhat-7-x86_64, 7.67/48 hours, user: bob, role: agent)" expect(STDOUT).to receive(:puts).with(output) @@ -458,13 +458,24 @@ describe Utils do it 'prints more information when vmpooler_fallback is set output with job id, host, template, lifetime, user and role' do fallback = {'vmpooler_fallback' => 'vmpooler'} service.config.merge! fallback - default_output_second_line=" - #{fqdn} (#{template}, 7.67/48 hours, user: bob, role: agent)" + default_output_second_line=" - #{fqdn} (running, #{template}, 7.67/48 hours, user: bob, role: agent)" expect(STDOUT).to receive(:puts).with(default_output_first_line) expect(STDOUT).to receive(:puts).with(default_output_second_line) subject end + it 'prints in red when destroyed' do + fallback = {'vmpooler_fallback' => 'vmpooler'} + service.config.merge! fallback + response_body_vmpooler[fqdn_hostname]['state'] = "destroyed" + default_output_second_line_red=" - #{fqdn} (destroyed, #{template}, 7.67/48 hours, user: bob, role: agent)".red + expect(STDOUT).to receive(:puts).with(default_output_first_line) + expect(STDOUT).to receive(:puts).with(default_output_second_line_red) + + subject + end + context 'when print_to_stderr option is true' do let(:print_to_stderr) { true } From eb99ba1dec39d1a76af3340725098a4d5bb5fe68 Mon Sep 17 00:00:00 2001 From: Samuel Beaulieu Date: Thu, 25 Feb 2021 13:38:11 -0600 Subject: [PATCH 018/115] Run the rubocop auto_correct fixed 27 files inspected, 975 offenses detected, 804 offenses corrected --- Gemfile | 2 +- Rakefile | 2 +- lib/vmfloaty.rb | 106 ++++--- lib/vmfloaty/abs.rb | 101 ++++--- lib/vmfloaty/http.rb | 8 +- lib/vmfloaty/logger.rb | 23 +- lib/vmfloaty/nonstandard_pooler.rb | 5 +- lib/vmfloaty/pooler.rb | 43 ++- lib/vmfloaty/service.rb | 6 +- lib/vmfloaty/utils.rb | 121 ++++---- lib/vmfloaty/version.rb | 1 - spec/spec_helper.rb | 6 +- spec/vmfloaty/abs/auth_spec.rb | 19 +- spec/vmfloaty/abs_spec.rb | 91 +++--- spec/vmfloaty/auth_spec.rb | 15 +- spec/vmfloaty/nonstandard_pooler_spec.rb | 59 ++-- spec/vmfloaty/pooler_spec.rb | 55 ++-- spec/vmfloaty/service_spec.rb | 20 +- spec/vmfloaty/ssh_spec.rb | 6 +- spec/vmfloaty/utils_spec.rb | 334 ++++++++++++----------- vmfloaty.gemspec | 4 +- 21 files changed, 516 insertions(+), 511 deletions(-) diff --git a/Gemfile b/Gemfile index ef85ae0..042d6db 100644 --- a/Gemfile +++ b/Gemfile @@ -4,7 +4,7 @@ source 'https://rubygems.org' gemspec -gem 'rake', :require => false +gem 'rake', require: false group :test do gem 'coveralls', '~> 0.8.23' diff --git a/Rakefile b/Rakefile index bde93cf..cdd6c8f 100644 --- a/Rakefile +++ b/Rakefile @@ -28,4 +28,4 @@ RuboCop::RakeTask.new(:rubocop) do |task| end # Default task is to run the unit tests -task :default => :spec +task default: :spec diff --git a/lib/vmfloaty.rb b/lib/vmfloaty.rb index 0e1bad5..d7e2196 100644 --- a/lib/vmfloaty.rb +++ b/lib/vmfloaty.rb @@ -20,7 +20,8 @@ class Vmfloaty def run # rubocop:disable Metrics/AbcSize program :version, Vmfloaty::VERSION - program :description, "A CLI helper tool for Puppet's vmpooler to help you stay afloat.\n\nConfiguration may be placed in a ~/.vmfloaty.yml file." + program :description, + "A CLI helper tool for Puppet's vmpooler to help you stay afloat.\n\nConfiguration may be placed in a ~/.vmfloaty.yml file." config = Conf.read_config @@ -43,9 +44,7 @@ class Vmfloaty c.option '--loglevel STRING', String, 'the log level to use (debug, info, error)' c.action do |args, options| verbose = options.verbose || config['verbose'] - if options.loglevel - FloatyLogger.setlevel = options.loglevel - end + FloatyLogger.setlevel = options.loglevel if options.loglevel service = Service.new(options, config) use_token = !options.notoken force = options.force @@ -100,21 +99,19 @@ class Vmfloaty c.option '--loglevel STRING', String, 'the log level to use (debug, info, error)' c.action do |args, options| verbose = options.verbose || config['verbose'] - if options.loglevel - FloatyLogger.setlevel = options.loglevel - end + FloatyLogger.setlevel = options.loglevel if options.loglevel service = Service.new(options, config) filter = args[0] if options.active # list active vms - if service.type == "ABS" - # this is actually job_ids - running_vms = service.list_active_job_ids(verbose, service.url, service.user) - else - running_vms = service.list_active(verbose) - end + running_vms = if service.type == 'ABS' + # this is actually job_ids + service.list_active_job_ids(verbose, service.url, service.user) + else + service.list_active(verbose) + end host = URI.parse(service.url).host if running_vms.empty? if options.json @@ -122,17 +119,15 @@ class Vmfloaty else FloatyLogger.info "You have no running VMs on #{host}" end - else - if options.json - puts Utils.get_host_data(verbose, service, running_vms).to_json - elsif options.hostnameonly - Utils.get_host_data(verbose, service, running_vms).each do |hostname, host_data| - Utils.print_fqdn_for_host(service, hostname, host_data) - end - else - puts "Your VMs on #{host}:" - Utils.pretty_print_hosts(verbose, service, running_vms) + elsif options.json + puts Utils.get_host_data(verbose, service, running_vms).to_json + elsif options.hostnameonly + Utils.get_host_data(verbose, service, running_vms).each do |hostname, host_data| + Utils.print_fqdn_for_host(service, hostname, host_data) end + else + puts "Your VMs on #{host}:" + Utils.pretty_print_hosts(verbose, service, running_vms) end else # list available vms from pooler @@ -164,7 +159,8 @@ class Vmfloaty c.syntax = 'floaty modify hostname [options]' c.summary = 'Modify a VM\'s tags, time to live, disk space, or reservation reason' c.description = 'This command makes modifications to the virtual machines state in the pooler service. You can either append tags to the vm, increase how long it stays active for, or increase the amount of disk space.' - c.example 'Modifies myhost1 to have a TTL of 12 hours and adds a custom tag', 'floaty modify myhost1 --lifetime 12 --url https://myurl --token mytokenstring --tags \'{"tag":"myvalue"}\'' + c.example 'Modifies myhost1 to have a TTL of 12 hours and adds a custom tag', + 'floaty modify myhost1 --lifetime 12 --url https://myurl --token mytokenstring --tags \'{"tag":"myvalue"}\'' c.option '--verbose', 'Enables verbose output' c.option '--service STRING', String, 'Configured pooler service name' c.option '--url STRING', String, 'URL of pooler service' @@ -185,18 +181,18 @@ class Vmfloaty exit 1 end running_vms = - if modify_all - service.list_active(verbose) - else - hostname.split(',') - end + if modify_all + service.list_active(verbose) + else + hostname.split(',') + end tags = options.tags ? JSON.parse(options.tags) : nil modify_hash = { - :lifetime => options.lifetime, - :disk => options.disk, - :tags => tags, - :reason => options.reason, + lifetime: options.lifetime, + disk: options.disk, + tags: tags, + reason: options.reason } modify_hash.delete_if { |_, value| value.nil? } @@ -204,12 +200,10 @@ class Vmfloaty ok = true modified_hash = {} running_vms.each do |vm| - begin - modified_hash[vm] = service.modify(verbose, vm, modify_hash) - rescue ModifyError => e - FloatyLogger.error e - ok = false - end + modified_hash[vm] = service.modify(verbose, vm, modify_hash) + rescue ModifyError => e + FloatyLogger.error e + ok = false end if ok if modify_all @@ -241,9 +235,7 @@ class Vmfloaty c.option '--loglevel STRING', String, 'the log level to use (debug, info, error)' c.action do |args, options| verbose = options.verbose || config['verbose'] - if options.loglevel - FloatyLogger.setlevel = options.loglevel - end + FloatyLogger.setlevel = options.loglevel if options.loglevel service = Service.new(options, config) hostnames = args[0] @@ -254,17 +246,17 @@ class Vmfloaty successes = [] if delete_all - if service.type == "ABS" - # this is actually job_ids - running_vms = service.list_active_job_ids(verbose, service.url, service.user) - else - running_vms = service.list_active(verbose) - end + running_vms = if service.type == 'ABS' + # this is actually job_ids + service.list_active_job_ids(verbose, service.url, service.user) + else + service.list_active(verbose) + end if running_vms.empty? if options.json puts {}.to_json else - FloatyLogger.info "You have no running VMs." + FloatyLogger.info 'You have no running VMs.' end else confirmed = true @@ -328,7 +320,8 @@ class Vmfloaty c.syntax = 'floaty snapshot hostname [options]' c.summary = 'Takes a snapshot of a given vm' c.description = 'Will request a snapshot be taken of the given hostname in the pooler service. This command is known to take a while depending on how much load is on the pooler service.' - c.example 'Takes a snapshot for a given host', 'floaty snapshot myvm.example.com --url http://vmpooler.example.com --token a9znth9dn01t416hrguu56ze37t790bl' + c.example 'Takes a snapshot for a given host', + 'floaty snapshot myvm.example.com --url http://vmpooler.example.com --token a9znth9dn01t416hrguu56ze37t790bl' c.option '--verbose', 'Enables verbose output' c.option '--service STRING', String, 'Configured pooler service name' c.option '--url STRING', String, 'URL of pooler service' @@ -354,7 +347,8 @@ class Vmfloaty c.syntax = 'floaty revert hostname snapshot [options]' c.summary = 'Reverts a vm to a specified snapshot' c.description = 'Given a snapshot SHA, vmfloaty will request a revert to the pooler service to go back to a previous snapshot.' - c.example 'Reverts to a snapshot for a given host', 'floaty revert myvm.example.com n4eb4kdtp7rwv4x158366vd9jhac8btq --url http://vmpooler.example.com --token a9znth9dn01t416hrguu56ze37t790bl' + c.example 'Reverts to a snapshot for a given host', + 'floaty revert myvm.example.com n4eb4kdtp7rwv4x158366vd9jhac8btq --url http://vmpooler.example.com --token a9znth9dn01t416hrguu56ze37t790bl' c.option '--verbose', 'Enables verbose output' c.option '--service STRING', String, 'Configured pooler service name' c.option '--url STRING', String, 'URL of pooler service' @@ -366,7 +360,9 @@ class Vmfloaty hostname = args[0] snapshot_sha = args[1] || options.snapshot - FloatyLogger.info "Two snapshot arguments were given....using snapshot #{snapshot_sha}" if args[1] && options.snapshot + if args[1] && options.snapshot + FloatyLogger.info "Two snapshot arguments were given....using snapshot #{snapshot_sha}" + end begin revert_req = service.revert(verbose, hostname, snapshot_sha) @@ -391,9 +387,7 @@ class Vmfloaty c.option '--loglevel STRING', String, 'the log level to use (debug, info, error)' c.action do |_, options| verbose = options.verbose || config['verbose'] - if options.loglevel - FloatyLogger.setlevel = options.loglevel - end + FloatyLogger.setlevel = options.loglevel if options.loglevel service = Service.new(options, config) if options.json pp service.status(verbose) @@ -527,7 +521,7 @@ class Vmfloaty c.example 'Print a list of the valid service types', 'floaty service types' c.example 'Print a sample config file with multiple services', 'floaty service examples' c.example 'list vms from the service named "nspooler-prod"', 'floaty list --service nspooler-prod' - c.action do |args, options| + c.action do |args, _options| action = args.first example_config = Utils.strip_heredoc(<<-CONFIG) diff --git a/lib/vmfloaty/abs.rb b/lib/vmfloaty/abs.rb index 08027b7..e6769e0 100644 --- a/lib/vmfloaty/abs.rb +++ b/lib/vmfloaty/abs.rb @@ -53,10 +53,10 @@ class ABS def self.list_active(verbose, url, _token, user) hosts = [] get_active_requests(verbose, url, user).each do |req_hash| - if req_hash.key?('allocated_resources') - req_hash['allocated_resources'].each do |onehost| - hosts.push(onehost['hostname']) - end + next unless req_hash.key?('allocated_resources') + + req_hash['allocated_resources'].each do |onehost| + hosts.push(onehost['hostname']) end end @@ -116,7 +116,7 @@ class ABS ret_status = {} hosts.each do |host| ret_status[host] = { - 'ok' => false, + 'ok' => false } end @@ -132,7 +132,7 @@ class ABS if hosts.include? vm_name['hostname'] if all_job_resources_accounted_for(req_hash['allocated_resources'], hosts) ret_status[vm_name['hostname']] = { - 'ok' => true, + 'ok' => true } jobs_to_delete.push(req_hash) else @@ -147,7 +147,7 @@ class ABS jobs_to_delete.each do |job| req_obj = { 'job_id' => job['request']['job']['id'], - 'hosts' => job['allocated_resources'], + 'hosts' => job['allocated_resources'] } FloatyLogger.info "Deleting #{req_obj}" if verbose @@ -172,11 +172,11 @@ class ABS res_body = JSON.parse(res.body) if res_body.key?('vmpooler_platforms') os_list << '*** VMPOOLER Pools ***' - if res_body['vmpooler_platforms'].is_a?(String) - os_list += JSON.parse(res_body['vmpooler_platforms']) # legacy ABS had another JSON string always-be-scheduling/pull/306 - else - os_list += res_body['vmpooler_platforms'] - end + os_list += if res_body['vmpooler_platforms'].is_a?(String) + JSON.parse(res_body['vmpooler_platforms']) # legacy ABS had another JSON string always-be-scheduling/pull/306 + else + res_body['vmpooler_platforms'] + end end end @@ -200,11 +200,11 @@ class ABS if res_body.key?('nspooler_platforms') os_list << '' os_list << '*** NSPOOLER Pools ***' - if res_body['nspooler_platforms'].is_a?(String) - os_list += JSON.parse(res_body['nspooler_platforms']) # legacy ABS had another JSON string always-be-scheduling/pull/306 - else - os_list += res_body['nspooler_platforms'] - end + os_list += if res_body['nspooler_platforms'].is_a?(String) + JSON.parse(res_body['nspooler_platforms']) # legacy ABS had another JSON string always-be-scheduling/pull/306 + else + res_body['nspooler_platforms'] + end end end @@ -214,11 +214,11 @@ class ABS if res_body.key?('aws_platforms') os_list << '' os_list << '*** AWS Pools ***' - if res_body['aws_platforms'].is_a?(String) - os_list += JSON.parse(res_body['aws_platforms']) # legacy ABS had another JSON string always-be-scheduling/pull/306 - else - os_list += res_body['aws_platforms'] - end + os_list += if res_body['aws_platforms'].is_a?(String) + JSON.parse(res_body['aws_platforms']) # legacy ABS had another JSON string always-be-scheduling/pull/306 + else + res_body['aws_platforms'] + end end end @@ -248,20 +248,20 @@ class ABS conn = Http.get_conn(verbose, supported_abs_url(url)) conn.headers['X-AUTH-TOKEN'] = token if token - if continue.nil? - saved_job_id = user + "-" + DateTime.now.strftime('%Q') - else - saved_job_id = continue - end + saved_job_id = if continue.nil? + "#{user}-#{DateTime.now.strftime('%Q')}" + else + continue + end req_obj = { - :resources => os_types, - :job => { - :id => saved_job_id, - :tags => { - :user => user, - }, - }, + resources: os_types, + job: { + id: saved_job_id, + tags: { + user: user + } + } } if config['vmpooler_fallback'] # optional and not available as cli flag @@ -271,11 +271,12 @@ class ABS end if config['priority'] - req_obj[:priority] = if config['priority'] == 'high' + req_obj[:priority] = case config['priority'] + when 'high' 1 - elsif config['priority'] == 'medium' + when 'medium' 2 - elsif config['priority'] == 'low' + when 'low' 3 else config['priority'].to_i @@ -291,14 +292,12 @@ class ABS retries = 360 - status = validate_queue_status_response(res.status, res.body, "Initial request", verbose) + status = validate_queue_status_response(res.status, res.body, 'Initial request', verbose) begin (1..retries).each do |i| res_body = check_queue(conn, saved_job_id, req_obj, verbose) - if res_body && res_body.is_a?(Array) # when we get a response with hostnames - return translated(res_body, saved_job_id) - end + return translated(res_body, saved_job_id) if res_body.is_a?(Array) # when we get a response with hostnames sleep_seconds = 10 if i >= 10 sleep_seconds = i if i < 10 @@ -317,10 +316,10 @@ class ABS # We should fix the ABS API to be more like the vmpooler or nspooler api, but for now # def self.translated(res_body, job_id) - vmpooler_formatted_body = {'job_id' => job_id} + vmpooler_formatted_body = { 'job_id' => job_id } res_body.each do |host| - if vmpooler_formatted_body[host['type']] && vmpooler_formatted_body[host['type']]['hostname'].class == Array + if vmpooler_formatted_body[host['type']] && vmpooler_formatted_body[host['type']]['hostname'].instance_of?(Array) vmpooler_formatted_body[host['type']]['hostname'] << host['hostname'] else vmpooler_formatted_body[host['type']] = { 'hostname' => [host['hostname']] } @@ -331,9 +330,9 @@ class ABS vmpooler_formatted_body end - def self.check_queue(conn, job_id, req_obj, verbose) + def self.check_queue(conn, _job_id, req_obj, verbose) res = conn.post 'request', req_obj.to_json - status = validate_queue_status_response(res.status, res.body, "Check queue request", verbose) + status = validate_queue_status_response(res.status, res.body, 'Check queue request', verbose) unless res.body.empty? || !valid_json?(res.body) res_body = JSON.parse(res.body) return res_body @@ -353,7 +352,7 @@ class ABS res.body == 'OK' end - def self.summary(verbose, url) + def self.summary(_verbose, _url) raise NoMethodError, 'summary is not defined for ABS' end @@ -405,17 +404,17 @@ class ABS def self.valid_json?(json) JSON.parse(json) - return true + true rescue TypeError, JSON::ParserError => e - return false + false end # when missing, adds the required api/v2 in the url def self.supported_abs_url(url) - expected_ending = "api/v2" - if !url.include?(expected_ending) + expected_ending = 'api/v2' + unless url.include?(expected_ending) # add a slash if missing - expected_ending = "/#{expected_ending}" if url[-1] != "/" + expected_ending = "/#{expected_ending}" if url[-1] != '/' url = "#{url}#{expected_ending}" end url diff --git a/lib/vmfloaty/http.rb b/lib/vmfloaty/http.rb index b1984b8..c1f03f6 100644 --- a/lib/vmfloaty/http.rb +++ b/lib/vmfloaty/http.rb @@ -21,13 +21,11 @@ class Http url = "https://#{url}" unless url?(url) - conn = Faraday.new(:url => url, :ssl => { :verify => false }) do |faraday| + Faraday.new(url: url, ssl: { verify: false }) do |faraday| faraday.request :url_encoded faraday.response :logger if verbose faraday.adapter Faraday.default_adapter end - - conn end def self.get_conn_with_auth(verbose, url, user, password) @@ -37,13 +35,11 @@ class Http url = "https://#{url}" unless url?(url) - conn = Faraday.new(:url => url, :ssl => { :verify => false }) do |faraday| + Faraday.new(url: url, ssl: { verify: false }) do |faraday| faraday.request :url_encoded faraday.request :basic_auth, user, password faraday.response :logger if verbose faraday.adapter Faraday.default_adapter end - - conn end end diff --git a/lib/vmfloaty/logger.rb b/lib/vmfloaty/logger.rb index 88bf5f1..bdc2bb4 100644 --- a/lib/vmfloaty/logger.rb +++ b/lib/vmfloaty/logger.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'logger' class FloatyLogger < ::Logger @@ -19,22 +21,23 @@ class FloatyLogger < ::Logger def self.setlevel=(level) level = level.downcase - if level == "debug" - self.logger.level = ::Logger::DEBUG - elsif level == "info" - self.logger.level = ::Logger::INFO - elsif level == "error" - self.logger.level = ::Logger::ERROR + case level + when 'debug' + logger.level = ::Logger::DEBUG + when 'info' + logger.level = ::Logger::INFO + when 'error' + logger.level = ::Logger::ERROR else - error("set loglevel to debug, info or error") + error('set loglevel to debug, info or error') end end def initialize - super(STDERR) + super($stderr) self.level = ::Logger::INFO - self.formatter = proc do |severity, datetime, progname, msg| - "#{msg}\n" + self.formatter = proc do |_severity, _datetime, _progname, msg| + "#{msg}\n" end end end diff --git a/lib/vmfloaty/nonstandard_pooler.rb b/lib/vmfloaty/nonstandard_pooler.rb index 0746034..eb6c6a7 100644 --- a/lib/vmfloaty/nonstandard_pooler.rb +++ b/lib/vmfloaty/nonstandard_pooler.rb @@ -22,7 +22,7 @@ class NonstandardPooler status['reserved_hosts'] || [] end - def self.retrieve(verbose, os_type, token, url, _user, _options, ondemand = nil, _continue = nil) + def self.retrieve(verbose, os_type, token, url, _user, _options, _ondemand = nil, _continue = nil) conn = Http.get_conn(verbose, url) conn.headers['X-AUTH-TOKEN'] = token if token @@ -46,7 +46,8 @@ class NonstandardPooler raise TokenError, 'Token provided was nil; Request cannot be made to modify VM' if token.nil? modify_hash.each do |key, _value| - raise ModifyError, "Configured service type does not support modification of #{key}" unless %i[reason reserved_for_reason].include? key + raise ModifyError, "Configured service type does not support modification of #{key}" unless %i[reason + reserved_for_reason].include? key end if modify_hash[:reason] diff --git a/lib/vmfloaty/pooler.rb b/lib/vmfloaty/pooler.rb index 5b5f65c..855e604 100644 --- a/lib/vmfloaty/pooler.rb +++ b/lib/vmfloaty/pooler.rb @@ -12,13 +12,11 @@ class Pooler response = conn.get 'vm' response_body = JSON.parse(response.body) - hosts = if os_filter - response_body.select { |i| i[/#{os_filter}/] } - else - response_body - end - - hosts + if os_filter + response_body.select { |i| i[/#{os_filter}/] } + else + response_body + end end def self.list_active(verbose, url, token, _user) @@ -50,7 +48,10 @@ class Pooler elsif response.status == 403 raise "HTTP #{response.status}: Failed to obtain VMs from the pooler at #{url}/vm/#{os_string}. Request exceeds the configured per pool maximum. #{res_body}" else - raise "HTTP #{response.status}: Failed to obtain VMs from the pooler at #{url}/vm/#{os_string}. #{res_body}" unless ondemand + unless ondemand + raise "HTTP #{response.status}: Failed to obtain VMs from the pooler at #{url}/vm/#{os_string}. #{res_body}" + end + raise "HTTP #{response.status}: Failed to obtain VMs from the pooler at #{url}/ondemandvm/#{os_string}. #{res_body}" end end @@ -63,7 +64,7 @@ class Pooler FloatyLogger.info "waiting for request #{request_id} to be fulfilled" sleep 5 end - FloatyLogger.info "The request has been fulfilled" + FloatyLogger.info 'The request has been fulfilled' check_ondemandvm(verbose, request_id, url) end @@ -84,8 +85,9 @@ class Pooler def self.modify(verbose, url, hostname, token, modify_hash) raise TokenError, 'Token provided was nil. Request cannot be made to modify vm' if token.nil? - modify_hash.keys.each do |key| - raise ModifyError, "Configured service type does not support modification of #{key}." unless %i[tags lifetime disk].include? key + modify_hash.each_key do |key| + raise ModifyError, "Configured service type does not support modification of #{key}." unless %i[tags lifetime + disk].include? key end conn = Http.get_conn(verbose, url) @@ -120,8 +122,7 @@ class Pooler response = conn.post "vm/#{hostname}/disk/#{disk}" - res_body = JSON.parse(response.body) - res_body + JSON.parse(response.body) end def self.delete(verbose, url, hosts, token, _user) @@ -146,25 +147,21 @@ class Pooler conn = Http.get_conn(verbose, url) response = conn.get '/status' - res_body = JSON.parse(response.body) - res_body + JSON.parse(response.body) end def self.summary(verbose, url) conn = Http.get_conn(verbose, url) response = conn.get '/summary' - res_body = JSON.parse(response.body) - res_body + JSON.parse(response.body) end def self.query(verbose, url, hostname) conn = Http.get_conn(verbose, url) response = conn.get "vm/#{hostname}" - res_body = JSON.parse(response.body) - - res_body + JSON.parse(response.body) end def self.snapshot(verbose, url, hostname, token) @@ -174,8 +171,7 @@ class Pooler conn.headers['X-AUTH-TOKEN'] = token response = conn.post "vm/#{hostname}/snapshot" - res_body = JSON.parse(response.body) - res_body + JSON.parse(response.body) end def self.revert(verbose, url, hostname, token, snapshot_sha) @@ -187,7 +183,6 @@ class Pooler raise "Snapshot SHA provided was nil, could not revert #{hostname}" if snapshot_sha.nil? response = conn.post "vm/#{hostname}/snapshot/#{snapshot_sha}" - res_body = JSON.parse(response.body) - res_body + JSON.parse(response.body) end end diff --git a/lib/vmfloaty/service.rb b/lib/vmfloaty/service.rb index 196ac4c..05904a1 100644 --- a/lib/vmfloaty/service.rb +++ b/lib/vmfloaty/service.rb @@ -39,7 +39,7 @@ class Service def user unless @config['user'] FloatyLogger.info "Enter your #{@config['url']} service username:" - @config['user'] = STDIN.gets.chomp + @config['user'] = $stdin.gets.chomp end @config['user'] end @@ -140,8 +140,8 @@ class Service # some methods do not exist for ABS, and if possible should target the Pooler service def maybe_use_vmpooler if @service_object == ABS # this is not an instance - if !self.silent - FloatyLogger.info "The service in use is ABS, but the requested method should run against vmpooler directly, using fallback_vmpooler config from ~/.vmfloaty.yml" + unless silent + FloatyLogger.info 'The service in use is ABS, but the requested method should run against vmpooler directly, using fallback_vmpooler config from ~/.vmfloaty.yml' self.silent = true end diff --git a/lib/vmfloaty/utils.rb b/lib/vmfloaty/utils.rb index 113a6da..c1c4577 100644 --- a/lib/vmfloaty/utils.rb +++ b/lib/vmfloaty/utils.rb @@ -39,7 +39,10 @@ class Utils # "engine"=>"vmpooler" # } - raise ArgumentError, "Bad GET response passed to format_hosts: #{response_body.to_json}" unless response_body.delete('ok') + unless response_body.delete('ok') + raise ArgumentError, + "Bad GET response passed to format_hosts: #{response_body.to_json}" + end # vmpooler reports the domain separately from the hostname domain = response_body.delete('domain') @@ -50,7 +53,7 @@ class Utils abs_job_id = response_body.delete('job_id') result['job_id'] = abs_job_id unless abs_job_id.nil? - filtered_response_body = response_body.reject { |key, _| key == 'request_id' || key == 'ready' } + filtered_response_body = response_body.reject { |key, _| %w[request_id ready].include?(key) } filtered_response_body.each do |os, value| hostnames = Array(value['hostname']) hostnames.map! { |host| "#{host}.#{domain}" } if domain @@ -106,7 +109,7 @@ class Utils def self.pretty_print_hosts(verbose, service, hostnames = [], print_to_stderr = false, indent = 0) output_target = print_to_stderr ? $stderr : $stdout - fetched_data = self.get_host_data(verbose, service, hostnames) + fetched_data = get_host_data(verbose, service, hostnames) fetched_data.each do |hostname, host_data| case service.type when 'ABS' @@ -116,13 +119,14 @@ class Utils output_target.puts "- [JobID:#{host_data['request']['job']['id']}] <#{host_data['state']}>" host_data['allocated_resources'].each do |allocated_resources, _i| - if (allocated_resources['engine'] == "vmpooler" || allocated_resources['engine'] == 'ondemand') && service.config["vmpooler_fallback"] + if (allocated_resources['engine'] == 'vmpooler' || allocated_resources['engine'] == 'ondemand') && service.config['vmpooler_fallback'] vmpooler_service = service.clone vmpooler_service.silent = true vmpooler_service.maybe_use_vmpooler - self.pretty_print_hosts(verbose, vmpooler_service, allocated_resources['hostname'].split('.')[0], print_to_stderr, indent+2) + pretty_print_hosts(verbose, vmpooler_service, allocated_resources['hostname'].split('.')[0], + print_to_stderr, indent + 2) else - #TODO we could add more specific metadata for the other services, nspooler and aws + # TODO: we could add more specific metadata for the other services, nspooler and aws output_target.puts " - #{allocated_resources['hostname']} (#{allocated_resources['type']})" end end @@ -132,7 +136,7 @@ class Utils duration = "#{host_data['running']}/#{host_data['lifetime']} hours" metadata = [host_data['state'], host_data['template'], duration, *tag_pairs] message = "- #{hostname}.#{host_data['domain']} (#{metadata.join(', ')})".gsub(/^/, ' ' * indent) - if host_data['state'] && host_data['state'] == "destroyed" + if host_data['state'] && host_data['state'] == 'destroyed' output_target.puts message.colorize(:red) else output_target.puts message @@ -153,30 +157,26 @@ class Utils result = {} hostnames = [hostnames] unless hostnames.is_a? Array hostnames.each do |hostname| - begin - response = service.query(verbose, hostname) - host_data = response[hostname] - if block_given? - yield host_data result + response = service.query(verbose, hostname) + host_data = response[hostname] + if block_given? + yield host_data result + else + case service.type + when 'ABS' + # For ABS, 'hostname' variable is the jobID + result[hostname] = host_data if host_data['state'] == 'allocated' || host_data['state'] == 'filled' + when 'Pooler' + result[hostname] = host_data + when 'NonstandardPooler' + result[hostname] = host_data else - case service.type - when 'ABS' - # For ABS, 'hostname' variable is the jobID - if host_data['state'] == 'allocated' || host_data['state'] == 'filled' - result[hostname] = host_data - end - when 'Pooler' - result[hostname] = host_data - when 'NonstandardPooler' - result[hostname] = host_data - else - raise "Invalid service type #{service.type}" - end + raise "Invalid service type #{service.type}" end - rescue StandardError => e - FloatyLogger.error("Something went wrong while trying to gather information on #{hostname}:") - FloatyLogger.error(e) end + rescue StandardError => e + FloatyLogger.error("Something went wrong while trying to gather information on #{hostname}:") + FloatyLogger.error(e) end result end @@ -192,16 +192,14 @@ class Utils width = pools.keys.map(&:length).max pools.each do |name, pool| - begin - max = pool['max'] - ready = pool['ready'] - pending = pool['pending'] - missing = max - ready - pending - char = 'o' - puts "#{name.ljust(width)} #{(char * ready).green}#{(char * pending).yellow}#{(char * missing).red}" - rescue StandardError => e - FloatyLogger.error "#{name.ljust(width)} #{e.red}" - end + max = pool['max'] + ready = pool['ready'] + pending = pool['pending'] + missing = max - ready - pending + char = 'o' + puts "#{name.ljust(width)} #{(char * ready).green}#{(char * pending).yellow}#{(char * missing).red}" + rescue StandardError => e + FloatyLogger.error "#{name.ljust(width)} #{e.red}" end puts message.colorize(status_response['status']['ok'] ? :default : :red) when 'NonstandardPooler' @@ -211,16 +209,14 @@ class Utils width = pools.keys.map(&:length).max pools.each do |name, pool| - begin - max = pool['total_hosts'] - ready = pool['available_hosts'] - pending = pool['pending'] || 0 # not available for nspooler - missing = max - ready - pending - char = 'o' - puts "#{name.ljust(width)} #{(char * ready).green}#{(char * pending).yellow}#{(char * missing).red}" - rescue StandardError => e - FloatyLogger.error "#{name.ljust(width)} #{e.red}" - end + max = pool['total_hosts'] + ready = pool['available_hosts'] + pending = pool['pending'] || 0 # not available for nspooler + missing = max - ready - pending + char = 'o' + puts "#{name.ljust(width)} #{(char * ready).green}#{(char * pending).yellow}#{(char * missing).red}" + rescue StandardError => e + FloatyLogger.error "#{name.ljust(width)} #{e.red}" end when 'ABS' FloatyLogger.error 'ABS Not OK' unless status_response @@ -256,11 +252,11 @@ class Utils def self.get_service_config(config, options) # The top-level url, user, and token values in the config file are treated as defaults service_config = { - 'url' => config['url'], - 'user' => config['user'], + 'url' => config['url'], + 'user' => config['user'], 'token' => config['token'], 'vmpooler_fallback' => config['vmpooler_fallback'], - 'type' => config['type'] || 'vmpooler', + 'type' => config['type'] || 'vmpooler' } if config['services'] @@ -271,7 +267,10 @@ class Utils service_config.merge! values else # If the user provided a service name at the command line, use that service if posible, or fail - raise ArgumentError, "Could not find a configured service named '#{options.service}' in ~/.vmfloaty.yml" unless config['services'][options.service] + unless config['services'][options.service] + raise ArgumentError, + "Could not find a configured service named '#{options.service}' in ~/.vmfloaty.yml" + end # If the service is configured but some values are missing, use the top-level defaults to fill them in service_config.merge! config['services'][options.service] @@ -295,22 +294,22 @@ class Utils config = Conf.read_config # The top-level url, user, and token values in the config file are treated as defaults service_config = { - 'url' => config['url'], - 'user' => config['user'], - 'token' => config['token'], - 'type' => 'vmpooler', + 'url' => config['url'], + 'user' => config['user'], + 'token' => config['token'], + 'type' => 'vmpooler' } # at a minimum, the url needs to be configured if config['services'] && config['services'][vmpooler_fallback] && config['services'][vmpooler_fallback]['url'] # If the service is configured but some values are missing, use the top-level defaults to fill them in service_config.merge! config['services'][vmpooler_fallback] + elsif vmpooler_fallback.nil? + raise ArgumentError, + "The abs service should have a key named 'vmpooler_fallback' in ~/.vmfloaty.yml with a value that points to a vmpooler service name use this format:\nservices:\n myabs:\n url: 'http://abs.com'\n user: 'superman'\n token: 'kryptonite'\n vmpooler_fallback: 'myvmpooler'\n myvmpooler:\n url: 'http://vmpooler.com'\n user: 'superman'\n token: 'kryptonite'" else - if vmpooler_fallback.nil? - raise ArgumentError, "The abs service should have a key named 'vmpooler_fallback' in ~/.vmfloaty.yml with a value that points to a vmpooler service name use this format:\nservices:\n myabs:\n url: 'http://abs.com'\n user: 'superman'\n token: 'kryptonite'\n vmpooler_fallback: 'myvmpooler'\n myvmpooler:\n url: 'http://vmpooler.com'\n user: 'superman'\n token: 'kryptonite'" - else - raise ArgumentError, "Could not find a configured service named '#{vmpooler_fallback}' in ~/.vmfloaty.yml use this format:\nservices:\n #{vmpooler_fallback}:\n url: 'http://vmpooler.com'\n user: 'superman'\n token: 'kryptonite'" - end + raise ArgumentError, + "Could not find a configured service named '#{vmpooler_fallback}' in ~/.vmfloaty.yml use this format:\nservices:\n #{vmpooler_fallback}:\n url: 'http://vmpooler.com'\n user: 'superman'\n token: 'kryptonite'" end service_config diff --git a/lib/vmfloaty/version.rb b/lib/vmfloaty/version.rb index d74edd1..3c99d63 100644 --- a/lib/vmfloaty/version.rb +++ b/lib/vmfloaty/version.rb @@ -3,4 +3,3 @@ class Vmfloaty VERSION = '1.2.0' end - diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index e23a554..6d17c36 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -4,9 +4,9 @@ require 'simplecov' require 'coveralls' SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([ - SimpleCov::Formatter::HTMLFormatter, - Coveralls::SimpleCov::Formatter -]) + SimpleCov::Formatter::HTMLFormatter, + Coveralls::SimpleCov::Formatter + ]) SimpleCov.start do add_filter %r{^/spec/} end diff --git a/spec/vmfloaty/abs/auth_spec.rb b/spec/vmfloaty/abs/auth_spec.rb index 555d6c5..fcf2392 100644 --- a/spec/vmfloaty/abs/auth_spec.rb +++ b/spec/vmfloaty/abs/auth_spec.rb @@ -16,7 +16,7 @@ describe Pooler do it 'returns a token from abs' do stub_request(:post, 'https://first.last:password@abs.example.com/api/v2/token') - .to_return(:status => 200, :body => @get_token_response, :headers => {}) + .to_return(status: 200, body: @get_token_response, headers: {}) token = Auth.get_token(false, @abs_url, 'first.last', 'password') expect(token).to eq @token @@ -24,7 +24,7 @@ describe Pooler do it 'raises a token error if something goes wrong' do stub_request(:post, 'https://first.last:password@abs.example.com/api/v2/token') - .to_return(:status => 500, :body => '{"ok":false}', :headers => {}) + .to_return(status: 500, body: '{"ok":false}', headers: {}) expect { Auth.get_token(false, @abs_url, 'first.last', 'password') }.to raise_error(TokenError) end @@ -38,14 +38,15 @@ describe Pooler do it 'deletes the specified token' do stub_request(:delete, 'https://first.last:password@abs.example.com/api/v2/token/utpg2i2xswor6h8ttjhu3d47z53yy47y') - .to_return(:status => 200, :body => @delete_token_response, :headers => {}) + .to_return(status: 200, body: @delete_token_response, headers: {}) - expect(Auth.delete_token(false, @abs_url, 'first.last', 'password', @token)).to eq JSON.parse(@delete_token_response) + expect(Auth.delete_token(false, @abs_url, 'first.last', 'password', + @token)).to eq JSON.parse(@delete_token_response) end it 'raises a token error if something goes wrong' do stub_request(:delete, 'https://first.last:password@abs.example.com/api/v2/token/utpg2i2xswor6h8ttjhu3d47z53yy47y') - .to_return(:status => 500, :body => '{"ok":false}', :headers => {}) + .to_return(status: 500, body: '{"ok":false}', headers: {}) expect { Auth.delete_token(false, @abs_url, 'first.last', 'password', @token) }.to raise_error(TokenError) end @@ -63,16 +64,16 @@ describe Pooler do it 'checks the status of a token' do stub_request(:get, "#{@abs_url}/token/utpg2i2xswor6h8ttjhu3d47z53yy47y") - .with(:headers => { 'Accept' => '*/*', 'Accept-Encoding' => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3' }) - .to_return(:status => 200, :body => @token_status_response, :headers => {}) + .with(headers: { 'Accept' => '*/*', 'Accept-Encoding' => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3' }) + .to_return(status: 200, body: @token_status_response, headers: {}) expect(Auth.token_status(false, @abs_url, @token)).to eq JSON.parse(@token_status_response) end it 'raises a token error if something goes wrong' do stub_request(:get, "#{@abs_url}/token/utpg2i2xswor6h8ttjhu3d47z53yy47y") - .with(:headers => { 'Accept' => '*/*', 'Accept-Encoding' => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3' }) - .to_return(:status => 500, :body => '{"ok":false}', :headers => {}) + .with(headers: { 'Accept' => '*/*', 'Accept-Encoding' => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3' }) + .to_return(status: 500, body: '{"ok":false}', headers: {}) expect { Auth.token_status(false, @abs_url, @token) }.to raise_error(TokenError) end diff --git a/spec/vmfloaty/abs_spec.rb b/spec/vmfloaty/abs_spec.rb index d6eabfc..4199c53 100644 --- a/spec/vmfloaty/abs_spec.rb +++ b/spec/vmfloaty/abs_spec.rb @@ -11,12 +11,12 @@ describe ABS do describe '#list' do it 'skips empty platforms and lists aws' do - stub_request(:get, "http://foo/api/v2/status/platforms/vmpooler"). - to_return(:status => 200, :body => "", :headers => {}) - stub_request(:get, "http://foo/api/v2/status/platforms/ondemand_vmpooler"). - to_return(:status => 200, :body => "", :headers => {}) - stub_request(:get, "http://foo/api/v2/status/platforms/nspooler"). - to_return(:status => 200, :body => "", :headers => {}) + stub_request(:get, 'http://foo/api/v2/status/platforms/vmpooler') + .to_return(status: 200, body: '', headers: {}) + stub_request(:get, 'http://foo/api/v2/status/platforms/ondemand_vmpooler') + .to_return(status: 200, body: '', headers: {}) + stub_request(:get, 'http://foo/api/v2/status/platforms/nspooler') + .to_return(status: 200, body: '', headers: {}) body = '{ "aws_platforms": [ "amazon-6-x86_64", @@ -26,50 +26,55 @@ describe ABS do "redhat-8-arm64" ] }' - stub_request(:get, "http://foo/api/v2/status/platforms/aws"). - to_return(:status => 200, :body => body, :headers => {}) + stub_request(:get, 'http://foo/api/v2/status/platforms/aws') + .to_return(status: 200, body: body, headers: {}) + results = ABS.list(false, 'http://foo') - results = ABS.list(false, "http://foo") - - expect(results).to include("amazon-6-x86_64", "amazon-7-x86_64", "amazon-7-arm64", "centos-7-x86-64-west", "redhat-8-arm64") + expect(results).to include('amazon-6-x86_64', 'amazon-7-x86_64', 'amazon-7-arm64', 'centos-7-x86-64-west', + 'redhat-8-arm64') end it 'legacy JSON string, prior to PR 306' do - stub_request(:get, "http://foo/api/v2/status/platforms/vmpooler"). - to_return(:status => 200, :body => "", :headers => {}) - stub_request(:get, "http://foo/api/v2/status/platforms/ondemand_vmpooler"). - to_return(:status => 200, :body => "", :headers => {}) - stub_request(:get, "http://foo/api/v2/status/platforms/nspooler"). - to_return(:status => 200, :body => "", :headers => {}) + stub_request(:get, 'http://foo/api/v2/status/platforms/vmpooler') + .to_return(status: 200, body: '', headers: {}) + stub_request(:get, 'http://foo/api/v2/status/platforms/ondemand_vmpooler') + .to_return(status: 200, body: '', headers: {}) + stub_request(:get, 'http://foo/api/v2/status/platforms/nspooler') + .to_return(status: 200, body: '', headers: {}) body = '{ "aws_platforms": "[\"amazon-6-x86_64\",\"amazon-7-x86_64\",\"amazon-7-arm64\",\"centos-7-x86-64-west\",\"redhat-8-arm64\"]" }' - stub_request(:get, "http://foo/api/v2/status/platforms/aws"). - to_return(:status => 200, :body => body, :headers => {}) + stub_request(:get, 'http://foo/api/v2/status/platforms/aws') + .to_return(status: 200, body: body, headers: {}) - results = ABS.list(false, "http://foo") + results = ABS.list(false, 'http://foo') - expect(results).to include("amazon-6-x86_64", "amazon-7-x86_64", "amazon-7-arm64", "centos-7-x86-64-west", "redhat-8-arm64") + expect(results).to include('amazon-6-x86_64', 'amazon-7-x86_64', 'amazon-7-arm64', 'centos-7-x86-64-west', + 'redhat-8-arm64') end end describe '#format' do it 'returns an hash formatted like a vmpooler return, plus the job_id' do - job_id = "generated_by_floaty_12345" + job_id = 'generated_by_floaty_12345' abs_formatted_response = [ - { 'hostname' => 'aaaaaaaaaaaaaaa.delivery.puppetlabs.net', 'type' => 'centos-7.2-x86_64', 'engine' => 'vmpooler' }, - { 'hostname' => 'aaaaaaaaaaaaaab.delivery.puppetlabs.net', 'type' => 'centos-7.2-x86_64', 'engine' => 'vmpooler' }, - { 'hostname' => 'aaaaaaaaaaaaaac.delivery.puppetlabs.net', 'type' => 'ubuntu-7.2-x86_64', 'engine' => 'vmpooler' }, + { 'hostname' => 'aaaaaaaaaaaaaaa.delivery.puppetlabs.net', 'type' => 'centos-7.2-x86_64', + 'engine' => 'vmpooler' }, + { 'hostname' => 'aaaaaaaaaaaaaab.delivery.puppetlabs.net', 'type' => 'centos-7.2-x86_64', + 'engine' => 'vmpooler' }, + { 'hostname' => 'aaaaaaaaaaaaaac.delivery.puppetlabs.net', 'type' => 'ubuntu-7.2-x86_64', + 'engine' => 'vmpooler' } ] vmpooler_formatted_response = ABS.translated(abs_formatted_response, job_id) vmpooler_formatted_compare = { 'centos-7.2-x86_64' => {}, - 'ubuntu-7.2-x86_64' => {}, + 'ubuntu-7.2-x86_64' => {} } - vmpooler_formatted_compare['centos-7.2-x86_64']['hostname'] = ['aaaaaaaaaaaaaaa.delivery.puppetlabs.net', 'aaaaaaaaaaaaaab.delivery.puppetlabs.net'] + vmpooler_formatted_compare['centos-7.2-x86_64']['hostname'] = + ['aaaaaaaaaaaaaaa.delivery.puppetlabs.net', 'aaaaaaaaaaaaaab.delivery.puppetlabs.net'] vmpooler_formatted_compare['ubuntu-7.2-x86_64']['hostname'] = ['aaaaaaaaaaaaaac.delivery.puppetlabs.net'] vmpooler_formatted_compare['ok'] = true @@ -86,22 +91,22 @@ describe ABS do hosts = ['host1'] allocated_resources = [ { - 'hostname' => 'host1', + 'hostname' => 'host1' }, { - 'hostname' => 'host2', - }, + 'hostname' => 'host2' + } ] expect(ABS.all_job_resources_accounted_for(allocated_resources, hosts)).to eq(false) - hosts = ['host1', 'host2'] + hosts = %w[host1 host2] allocated_resources = [ { - 'hostname' => 'host1', + 'hostname' => 'host1' }, { - 'hostname' => 'host2', - }, + 'hostname' => 'host2' + } ] expect(ABS.all_job_resources_accounted_for(allocated_resources, hosts)).to eq(true) end @@ -126,16 +131,16 @@ describe ABS do it 'will skip a line with a null value returned from abs' do stub_request(:get, 'https://abs.example.com/api/v2/status/queue') - .to_return(:status => 200, :body => @active_requests_response, :headers => {}) + .to_return(status: 200, body: @active_requests_response, headers: {}) ret = ABS.get_active_requests(false, @abs_url, @test_user) expect(ret[0]).to include( 'allocated_resources' => [{ 'hostname' => 'take-this.delivery.puppetlabs.net', - 'type' => 'win-2012r2-x86_64', - 'engine' => 'vmpooler', - }], + 'type' => 'win-2012r2-x86_64', + 'engine' => 'vmpooler' + }] ) end end @@ -147,7 +152,7 @@ describe ABS do [ { "state":"allocated", "last_processed":"2020-01-17 22:29:13 +0000", "allocated_resources":[{"hostname":"craggy-chord.delivery.puppetlabs.net", "type":"centos-7-x86_64", "engine":"vmpooler"}, {"hostname":"visible-revival.delivery.puppetlabs.net", "type":"centos-7-x86_64", "engine":"vmpooler"}], "audit_log":{"2020-01-17 22:28:45 +0000":"Allocated craggy-chord.delivery.puppetlabs.net, visible-revival.delivery.puppetlabs.net for job 1579300120799"}, "request":{"resources":{"centos-7-x86_64":2}, "job":{"id":"1579300120799", "tags":{"user":"test-user"}, "user":"test-user", "time-received":1579300120}, "priority":3}} ]' - @return_request = { '{"job_id":"1579300120799","hosts":{"hostname":"craggy-chord.delivery.puppetlabs.net","type":"centos-7-x86_64","engine":"vmpooler"},{"hostname":"visible-revival.delivery.puppetlabs.net","type":"centos-7-x86_64","engine":"vmpooler"}}'=>true } + @return_request = { '{"job_id":"1579300120799","hosts":{"hostname":"craggy-chord.delivery.puppetlabs.net","type":"centos-7-x86_64","engine":"vmpooler"},{"hostname":"visible-revival.delivery.puppetlabs.net","type":"centos-7-x86_64","engine":"vmpooler"}}' => true } # rubocop:enable Layout/LineLength @token = 'utpg2i2xswor6h8ttjhu3d47z53yy47y' @test_user = 'test-user' @@ -157,15 +162,15 @@ describe ABS do it 'will delete the whole job' do stub_request(:get, 'https://abs.example.com/api/v2/status/queue') - .to_return(:status => 200, :body => @active_requests_response, :headers => {}) + .to_return(status: 200, body: @active_requests_response, headers: {}) stub_request(:post, 'https://abs.example.com/api/v2/return') - .with(:body => @return_request) - .to_return(:status => 200, :body => 'OK', :headers => {}) + .with(body: @return_request) + .to_return(status: 200, body: 'OK', headers: {}) ret = ABS.delete(false, @abs_url, @hosts, @token, @test_user) expect(ret).to include( - 'craggy-chord.delivery.puppetlabs.net' => { 'ok'=>true }, 'visible-revival.delivery.puppetlabs.net' => { 'ok'=>true }, + 'craggy-chord.delivery.puppetlabs.net' => { 'ok' => true }, 'visible-revival.delivery.puppetlabs.net' => { 'ok' => true } ) end end diff --git a/spec/vmfloaty/auth_spec.rb b/spec/vmfloaty/auth_spec.rb index 65cadc4..80effe1 100644 --- a/spec/vmfloaty/auth_spec.rb +++ b/spec/vmfloaty/auth_spec.rb @@ -16,7 +16,7 @@ describe Pooler do it 'returns a token from vmpooler' do stub_request(:post, 'https://first.last:password@vmpooler.example.com/token') - .to_return(:status => 200, :body => @get_token_response, :headers => {}) + .to_return(status: 200, body: @get_token_response, headers: {}) token = Auth.get_token(false, @vmpooler_url, 'first.last', 'password') expect(token).to eq @token @@ -24,7 +24,7 @@ describe Pooler do it 'raises a token error if something goes wrong' do stub_request(:post, 'https://first.last:password@vmpooler.example.com/token') - .to_return(:status => 500, :body => '{"ok":false}', :headers => {}) + .to_return(status: 500, body: '{"ok":false}', headers: {}) expect { Auth.get_token(false, @vmpooler_url, 'first.last', 'password') }.to raise_error(TokenError) end @@ -38,14 +38,15 @@ describe Pooler do it 'deletes the specified token' do stub_request(:delete, 'https://first.last:password@vmpooler.example.com/token/utpg2i2xswor6h8ttjhu3d47z53yy47y') - .to_return(:status => 200, :body => @delete_token_response, :headers => {}) + .to_return(status: 200, body: @delete_token_response, headers: {}) - expect(Auth.delete_token(false, @vmpooler_url, 'first.last', 'password', @token)).to eq JSON.parse(@delete_token_response) + expect(Auth.delete_token(false, @vmpooler_url, 'first.last', 'password', + @token)).to eq JSON.parse(@delete_token_response) end it 'raises a token error if something goes wrong' do stub_request(:delete, 'https://first.last:password@vmpooler.example.com/token/utpg2i2xswor6h8ttjhu3d47z53yy47y') - .to_return(:status => 500, :body => '{"ok":false}', :headers => {}) + .to_return(status: 500, body: '{"ok":false}', headers: {}) expect { Auth.delete_token(false, @vmpooler_url, 'first.last', 'password', @token) }.to raise_error(TokenError) end @@ -63,14 +64,14 @@ describe Pooler do it 'checks the status of a token' do stub_request(:get, "#{@vmpooler_url}/token/utpg2i2xswor6h8ttjhu3d47z53yy47y") - .to_return(:status => 200, :body => @token_status_response, :headers => {}) + .to_return(status: 200, body: @token_status_response, headers: {}) expect(Auth.token_status(false, @vmpooler_url, @token)).to eq JSON.parse(@token_status_response) end it 'raises a token error if something goes wrong' do stub_request(:get, "#{@vmpooler_url}/token/utpg2i2xswor6h8ttjhu3d47z53yy47y") - .to_return(:status => 500, :body => '{"ok":false}', :headers => {}) + .to_return(status: 500, body: '{"ok":false}', headers: {}) expect { Auth.token_status(false, @vmpooler_url, @token) }.to raise_error(TokenError) end diff --git a/spec/vmfloaty/nonstandard_pooler_spec.rb b/spec/vmfloaty/nonstandard_pooler_spec.rb index 8bcfe3c..8b1ab7c 100644 --- a/spec/vmfloaty/nonstandard_pooler_spec.rb +++ b/spec/vmfloaty/nonstandard_pooler_spec.rb @@ -9,7 +9,7 @@ describe NonstandardPooler do before :each do @nspooler_url = 'https://nspooler.example.com' @auth_token_headers = { - 'X-Auth-Token' => 'token-value', + 'X-Auth-Token' => 'token-value' } end @@ -36,7 +36,7 @@ describe NonstandardPooler do it 'returns an array with operating systems from the pooler' do stub_request(:get, "#{@nspooler_url}/status") - .to_return(:status => 200, :body => @status_response_body, :headers => {}) + .to_return(status: 200, body: @status_response_body, headers: {}) list = NonstandardPooler.list(false, @nspooler_url, nil) expect(list).to be_an_instance_of Array @@ -44,7 +44,7 @@ describe NonstandardPooler do it 'filters operating systems based on the filter param' do stub_request(:get, "#{@nspooler_url}/status") - .to_return(:status => 200, :body => @status_response_body, :headers => {}) + .to_return(status: 200, body: @status_response_body, headers: {}) list = NonstandardPooler.list(false, @nspooler_url, 'aix') expect(list).to be_an_instance_of Array @@ -53,7 +53,7 @@ describe NonstandardPooler do it 'returns nothing if the filter does not match' do stub_request(:get, "#{@nspooler_url}/status") - .to_return(:status => 199, :body => @status_response_body, :headers => {}) + .to_return(status: 199, body: @status_response_body, headers: {}) list = NonstandardPooler.list(false, @nspooler_url, 'windows') expect(list).to be_an_instance_of Array @@ -89,7 +89,7 @@ describe NonstandardPooler do .and_return(JSON.parse(@token_status_body_active)) list = NonstandardPooler.list_active(false, @nspooler_url, 'token-value', 'user') - expect(list).to eql ['sol10-9', 'sol10-11'] + expect(list).to eql %w[sol10-9 sol10-11] end end @@ -121,17 +121,19 @@ describe NonstandardPooler do it 'raises an AuthError if the token is invalid' do stub_request(:post, "#{@nspooler_url}/host/solaris-11-sparc") - .with(:headers => @auth_token_headers) - .to_return(:status => 401, :body => '{"ok":false,"reason": "token: token-value does not exist"}', :headers => {}) + .with(headers: @auth_token_headers) + .to_return(status: 401, body: '{"ok":false,"reason": "token: token-value does not exist"}', headers: {}) vm_hash = { 'solaris-11-sparc' => 1 } - expect { NonstandardPooler.retrieve(false, vm_hash, 'token-value', @nspooler_url, 'first.last', {}) }.to raise_error(AuthError) + expect do + NonstandardPooler.retrieve(false, vm_hash, 'token-value', @nspooler_url, 'first.last', {}) + end.to raise_error(AuthError) end it 'retrieves a single vm with a token' do stub_request(:post, "#{@nspooler_url}/host/solaris-11-sparc") - .with(:headers => @auth_token_headers) - .to_return(:status => 200, :body => @retrieve_response_body_single, :headers => {}) + .with(headers: @auth_token_headers) + .to_return(status: 200, body: @retrieve_response_body_single, headers: {}) vm_hash = { 'solaris-11-sparc' => 1 } vm_req = NonstandardPooler.retrieve(false, vm_hash, 'token-value', @nspooler_url, 'first.last', {}) @@ -142,15 +144,16 @@ describe NonstandardPooler do it 'retrieves a multiple vms with a token' do stub_request(:post, "#{@nspooler_url}/host/aix-7.1-power+solaris-10-sparc+solaris-10-sparc") - .with(:headers => @auth_token_headers) - .to_return(:status => 200, :body => @retrieve_response_body_many, :headers => {}) + .with(headers: @auth_token_headers) + .to_return(status: 200, body: @retrieve_response_body_many, headers: {}) vm_hash = { 'aix-7.1-power' => 1, 'solaris-10-sparc' => 2 } vm_req = NonstandardPooler.retrieve(false, vm_hash, 'token-value', @nspooler_url, 'first.last', {}) expect(vm_req).to be_an_instance_of Hash expect(vm_req['ok']).to equal true expect(vm_req['solaris-10-sparc']['hostname']).to be_an_instance_of Array - expect(vm_req['solaris-10-sparc']['hostname']).to eq ['sol10-9.delivery.puppetlabs.net', 'sol10-10.delivery.puppetlabs.net'] + expect(vm_req['solaris-10-sparc']['hostname']).to eq ['sol10-9.delivery.puppetlabs.net', + 'sol10-10.delivery.puppetlabs.net'] expect(vm_req['aix-7.1-power']['hostname']).to eq 'pe-aix-71-ci-acceptance.delivery.puppetlabs.net' end end @@ -162,10 +165,10 @@ describe NonstandardPooler do it 'raises an error if the user tries to modify an unsupported attribute' do stub_request(:put, 'https://nspooler.example.com/host/myfakehost') - .with(:body => { '{}' => true }, - :headers => @auth_token_headers) - .to_return(:status => 200, :body => '', :headers => {}) - details = { :lifetime => 12 } + .with(body: { '{}' => true }, + headers: @auth_token_headers) + .to_return(status: 200, body: '', headers: {}) + details = { lifetime: 12 } expect { NonstandardPooler.modify(false, @nspooler_url, 'myfakehost', 'token-value', details) } .to raise_error(ModifyError) end @@ -173,11 +176,11 @@ describe NonstandardPooler do it 'modifies the reason of a vm' do modify_request_body = { '{"reserved_for_reason":"testing"}' => true } stub_request(:put, "#{@nspooler_url}/host/myfakehost") - .with(:body => modify_request_body, - :headers => @auth_token_headers) - .to_return(:status => 200, :body => '{"ok": true}', :headers => {}) + .with(body: modify_request_body, + headers: @auth_token_headers) + .to_return(status: 200, body: '{"ok": true}', headers: {}) - modify_hash = { :reason => 'testing' } + modify_hash = { reason: 'testing' } modify_req = NonstandardPooler.modify(false, @nspooler_url, 'myfakehost', 'token-value', modify_hash) expect(modify_req['ok']).to be true end @@ -208,7 +211,7 @@ describe NonstandardPooler do it 'prints the status' do stub_request(:get, "#{@nspooler_url}/status") - .to_return(:status => 200, :body => @status_response_body, :headers => {}) + .to_return(status: 200, body: @status_response_body, headers: {}) status = NonstandardPooler.status(false, @nspooler_url) expect(status).to be_an_instance_of Hash @@ -231,7 +234,7 @@ describe NonstandardPooler do it 'prints the summary' do stub_request(:get, "#{@nspooler_url}/summary") - .to_return(:status => 200, :body => @status_response_body, :headers => {}) + .to_return(status: 200, body: @status_response_body, headers: {}) summary = NonstandardPooler.summary(false, @nspooler_url) expect(summary).to be_an_instance_of Hash @@ -256,7 +259,7 @@ describe NonstandardPooler do it 'makes a query about a vm' do stub_request(:get, "#{@nspooler_url}/host/sol10-11") - .to_return(:status => 200, :body => @query_response_body, :headers => {}) + .to_return(status: 200, body: @query_response_body, headers: {}) query_req = NonstandardPooler.query(false, @nspooler_url, 'sol10-11') expect(query_req).to be_an_instance_of Hash @@ -271,8 +274,8 @@ describe NonstandardPooler do it 'deletes a single existing vm' do stub_request(:delete, "#{@nspooler_url}/host/sol11-7") - .with(:headers => @auth_token_headers) - .to_return(:status => 200, :body => @delete_response_success, :headers => {}) + .with(headers: @auth_token_headers) + .to_return(status: 200, body: @delete_response_success, headers: {}) request = NonstandardPooler.delete(false, @nspooler_url, 'sol11-7', 'token-value', nil) expect(request['sol11-7']['ok']).to be true @@ -280,8 +283,8 @@ describe NonstandardPooler do it 'does not delete a nonexistant vm' do stub_request(:delete, "#{@nspooler_url}/host/fakehost") - .with(:headers => @auth_token_headers) - .to_return(:status => 401, :body => @delete_response_failure, :headers => {}) + .with(headers: @auth_token_headers) + .to_return(status: 401, body: @delete_response_failure, headers: {}) request = NonstandardPooler.delete(false, @nspooler_url, 'fakehost', 'token-value', nil) expect(request['fakehost']['ok']).to be false diff --git a/spec/vmfloaty/pooler_spec.rb b/spec/vmfloaty/pooler_spec.rb index 7d83c79..0604176 100644 --- a/spec/vmfloaty/pooler_spec.rb +++ b/spec/vmfloaty/pooler_spec.rb @@ -15,7 +15,7 @@ describe Pooler do it 'returns a hash with operating systems from the pooler' do stub_request(:get, "#{@vmpooler_url}/vm") - .to_return(:status => 200, :body => @list_response_body, :headers => {}) + .to_return(status: 200, body: @list_response_body, headers: {}) list = Pooler.list(false, @vmpooler_url, nil) expect(list).to be_an_instance_of Array @@ -23,7 +23,7 @@ describe Pooler do it 'filters operating systems based on the filter param' do stub_request(:get, "#{@vmpooler_url}/vm") - .to_return(:status => 200, :body => @list_response_body, :headers => {}) + .to_return(status: 200, body: @list_response_body, headers: {}) list = Pooler.list(false, @vmpooler_url, 'deb') expect(list).to be_an_instance_of Array @@ -32,7 +32,7 @@ describe Pooler do it 'returns nothing if the filter does not match' do stub_request(:get, "#{@vmpooler_url}/vm") - .to_return(:status => 200, :body => @list_response_body, :headers => {}) + .to_return(status: 200, body: @list_response_body, headers: {}) list = Pooler.list(false, @vmpooler_url, 'windows') expect(list).to be_an_instance_of Array @@ -48,8 +48,8 @@ describe Pooler do it 'raises an AuthError if the token is invalid' do stub_request(:post, "#{@vmpooler_url}/vm/debian-7-i386") - .with(:headers => { 'X-Auth-Token' => 'mytokenfile' }) - .to_return(:status => 401, :body => '{"ok":false}', :headers => {}) + .with(headers: { 'X-Auth-Token' => 'mytokenfile' }) + .to_return(status: 401, body: '{"ok":false}', headers: {}) vm_hash = {} vm_hash['debian-7-i386'] = 1 @@ -58,8 +58,8 @@ describe Pooler do it 'retrieves a single vm with a token' do stub_request(:post, "#{@vmpooler_url}/vm/debian-7-i386") - .with(:headers => { 'X-Auth-Token' => 'mytokenfile' }) - .to_return(:status => 200, :body => @retrieve_response_body_single, :headers => {}) + .with(headers: { 'X-Auth-Token' => 'mytokenfile' }) + .to_return(status: 200, body: @retrieve_response_body_single, headers: {}) vm_hash = {} vm_hash['debian-7-i386'] = 1 @@ -71,8 +71,8 @@ describe Pooler do it 'retrieves a multiple vms with a token' do stub_request(:post, "#{@vmpooler_url}/vm/debian-7-i386+debian-7-i386+centos-7-x86_64") - .with(:headers => { 'X-Auth-Token' => 'mytokenfile' }) - .to_return(:status => 200, :body => @retrieve_response_body_double, :headers => {}) + .with(headers: { 'X-Auth-Token' => 'mytokenfile' }) + .to_return(status: 200, body: @retrieve_response_body_double, headers: {}) vm_hash = {} vm_hash['debian-7-i386'] = 2 @@ -89,11 +89,11 @@ describe Pooler do let(:ondemand_response) { '{"ok":true,"request_id":"1234"}' } it 'retreives the vm with a token' do stub_request(:post, "#{@vmpooler_url}/ondemandvm/debian-7-i386") - .with(:headers => { 'X-Auth-Token' => 'mytokenfile' }) - .to_return(:status => 200, :body => ondemand_response, :headers => {}) + .with(headers: { 'X-Auth-Token' => 'mytokenfile' }) + .to_return(status: 200, body: ondemand_response, headers: {}) stub_request(:get, "#{@vmpooler_url}/ondemandvm/1234") - .to_return(:status => 200, :body => @retrieve_response_body_single, :headers => {}) + .to_return(status: 200, body: @retrieve_response_body_single, headers: {}) vm_hash = {} vm_hash['debian-7-i386'] = 1 @@ -117,11 +117,11 @@ describe Pooler do end it 'modifies the TTL of a vm' do - modify_hash = { :lifetime => 12 } + modify_hash = { lifetime: 12 } stub_request(:put, "#{@vmpooler_url}/vm/fq6qlpjlsskycq6") - .with(:body => { '{"lifetime":12}' => true }, - :headers => { 'Content-Type' => 'application/x-www-form-urlencoded', 'X-Auth-Token' => 'mytokenfile' }) - .to_return(:status => 200, :body => @modify_response_body_success, :headers => {}) + .with(body: { '{"lifetime":12}' => true }, + headers: { 'Content-Type' => 'application/x-www-form-urlencoded', 'X-Auth-Token' => 'mytokenfile' }) + .to_return(status: 200, body: @modify_response_body_success, headers: {}) modify_req = Pooler.modify(false, @vmpooler_url, 'fq6qlpjlsskycq6', 'mytokenfile', modify_hash) expect(modify_req['ok']).to be true @@ -136,8 +136,8 @@ describe Pooler do it 'deletes a specified vm' do stub_request(:delete, "#{@vmpooler_url}/vm/fq6qlpjlsskycq6") - .with(:headers => { 'X-Auth-Token' => 'mytokenfile' }) - .to_return(:status => 200, :body => @delete_response_body_success, :headers => {}) + .with(headers: { 'X-Auth-Token' => 'mytokenfile' }) + .to_return(status: 200, body: @delete_response_body_success, headers: {}) expect(Pooler.delete(false, @vmpooler_url, ['fq6qlpjlsskycq6'], 'mytokenfile', nil)).to eq @delete_response end @@ -155,7 +155,7 @@ describe Pooler do it 'prints the status' do stub_request(:get, "#{@vmpooler_url}/status") - .to_return(:status => 200, :body => @status_response_body, :headers => {}) + .to_return(status: 200, body: @status_response_body, headers: {}) status = Pooler.status(false, @vmpooler_url) expect(status).to be_an_instance_of Hash @@ -178,7 +178,7 @@ describe Pooler do it 'makes a query about a vm' do stub_request(:get, "#{@vmpooler_url}/vm/fq6qlpjlsskycq6") - .to_return(:status => 200, :body => @query_response_body, :headers => {}) + .to_return(status: 200, body: @query_response_body, headers: {}) query_req = Pooler.query(false, @vmpooler_url, 'fq6qlpjlsskycq6') expect(query_req).to be_an_instance_of Hash @@ -192,8 +192,8 @@ describe Pooler do it 'makes a snapshot for a single vm' do stub_request(:post, "#{@vmpooler_url}/vm/fq6qlpjlsskycq6/snapshot") - .with(:headers => { 'X-Auth-Token' => 'mytokenfile' }) - .to_return(:status => 200, :body => @snapshot_response_body, :headers => {}) + .with(headers: { 'X-Auth-Token' => 'mytokenfile' }) + .to_return(status: 200, body: @snapshot_response_body, headers: {}) snapshot_req = Pooler.snapshot(false, @vmpooler_url, 'fq6qlpjlsskycq6', 'mytokenfile') expect(snapshot_req['ok']).to be true @@ -207,15 +207,18 @@ describe Pooler do it 'makes a request to revert a vm from a snapshot' do stub_request(:post, "#{@vmpooler_url}/vm/fq6qlpjlsskycq6/snapshot/dAfewKNfaweLKNve") - .with(:headers => { 'X-Auth-Token' => 'mytokenfile' }) - .to_return(:status => 200, :body => @revert_response_body, :headers => {}) + .with(headers: { 'X-Auth-Token' => 'mytokenfile' }) + .to_return(status: 200, body: @revert_response_body, headers: {}) revert_req = Pooler.revert(false, @vmpooler_url, 'fq6qlpjlsskycq6', 'mytokenfile', 'dAfewKNfaweLKNve') expect(revert_req['ok']).to be true end it "doesn't make a request to revert a vm if snapshot is not provided" do - expect { Pooler.revert(false, @vmpooler_url, 'fq6qlpjlsskycq6', 'mytokenfile', nil) }.to raise_error(RuntimeError, 'Snapshot SHA provided was nil, could not revert fq6qlpjlsskycq6') + expect do + Pooler.revert(false, @vmpooler_url, 'fq6qlpjlsskycq6', 'mytokenfile', + nil) + end.to raise_error(RuntimeError, 'Snapshot SHA provided was nil, could not revert fq6qlpjlsskycq6') end it 'raises a TokenError if no token was provided' do @@ -231,7 +234,7 @@ describe Pooler do it 'makes a request to extend disk space of a vm' do stub_request(:post, "#{@vmpooler_url}/vm/fq6qlpjlsskycq6/disk/12") - .with(:headers => { 'X-Auth-Token' => 'mytokenfile' }). to_return(:status => 200, :body => @disk_response_body_success, :headers => {}) + .with(headers: { 'X-Auth-Token' => 'mytokenfile' }).to_return(status: 200, body: @disk_response_body_success, headers: {}) disk_req = Pooler.disk(false, @vmpooler_url, 'fq6qlpjlsskycq6', 'mytokenfile', 12) expect(disk_req['ok']).to be true diff --git a/spec/vmfloaty/service_spec.rb b/spec/vmfloaty/service_spec.rb index 13426b3..70c7199 100644 --- a/spec/vmfloaty/service_spec.rb +++ b/spec/vmfloaty/service_spec.rb @@ -16,7 +16,7 @@ describe Service do it 'prompts the user for their password and retrieves a token' do config = { 'user' => 'first.last', 'url' => 'http://default.url' } service = Service.new(MockOptions.new, config) - allow(STDOUT).to receive(:puts).with('Enter your http://default.url service password:') + allow($stdout).to receive(:puts).with('Enter your http://default.url service password:') allow(Commander::UI).to(receive(:password) .with('Enter your http://default.url service password:', '*') .and_return('hunter2')) @@ -29,9 +29,9 @@ describe Service do it 'prompts the user for their username and password if the username is unknown' do config = { 'url' => 'http://default.url' } service = Service.new(MockOptions.new({}), config) - allow(STDOUT).to receive(:puts).with 'Enter your http://default.url service username:' - allow(STDOUT).to receive(:puts).with "\n" - allow(STDIN).to receive(:gets).and_return('first.last') + allow($stdout).to receive(:puts).with 'Enter your http://default.url service username:' + allow($stdout).to receive(:puts).with "\n" + allow($stdin).to receive(:gets).and_return('first.last') allow(Commander::UI).to(receive(:password) .with('Enter your http://default.url service password:', '*') .and_return('hunter2')) @@ -59,16 +59,16 @@ describe Service do it 'reports the status of a token' do config = { 'user' => 'first.last', - 'url' => 'http://default.url', + 'url' => 'http://default.url' } options = MockOptions.new('token' => 'token-value') service = Service.new(options, config) status = { - 'ok' => true, - 'user' => config['user'], - 'created' => '2017-09-22 02:04:18 +0000', - 'last_accessed' => '2017-09-22 02:04:28 +0000', - 'reserved_hosts' => [], + 'ok' => true, + 'user' => config['user'], + 'created' => '2017-09-22 02:04:18 +0000', + 'last_accessed' => '2017-09-22 02:04:28 +0000', + 'reserved_hosts' => [] } allow(Auth).to(receive(:token_status) .with(nil, config['url'], 'token-value') diff --git a/spec/vmfloaty/ssh_spec.rb b/spec/vmfloaty/ssh_spec.rb index c780a88..c16bb30 100644 --- a/spec/vmfloaty/ssh_spec.rb +++ b/spec/vmfloaty/ssh_spec.rb @@ -8,14 +8,14 @@ class ServiceStub if os_types.keys[0] == 'abs_host_string' return { os_types.keys[0] => { 'hostname' => ['abs-hostname.delivery.puppetlabs.net'] }, - 'ok' => true, + 'ok' => true } end { os_types.keys[0] => { 'hostname' => 'vmpooler-hostname' }, - 'domain' => 'delivery.puppetlabs.net', - 'ok' => true, + 'domain' => 'delivery.puppetlabs.net', + 'ok' => true } end diff --git a/spec/vmfloaty/utils_spec.rb b/spec/vmfloaty/utils_spec.rb index ab5846e..bade876 100644 --- a/spec/vmfloaty/utils_spec.rb +++ b/spec/vmfloaty/utils_spec.rb @@ -36,13 +36,14 @@ describe Utils do it 'formats a result from vmpooler into a hash of os to hostnames' do result = Utils.standardize_hostnames(JSON.parse(@vmpooler_response_body)) - expect(result).to eq('centos-7-x86_64' => ['dlgietfmgeegry2.delivery.mycompany.net'], - 'ubuntu-1610-x86_64' => ['gdoy8q3nckuob0i.delivery.mycompany.net', 'ctnktsd0u11p9tm.delivery.mycompany.net']) + expect(result).to eq('centos-7-x86_64' => ['dlgietfmgeegry2.delivery.mycompany.net'], + 'ubuntu-1610-x86_64' => ['gdoy8q3nckuob0i.delivery.mycompany.net', + 'ctnktsd0u11p9tm.delivery.mycompany.net']) end it 'formats a result from the nonstandard pooler into a hash of os to hostnames' do result = Utils.standardize_hostnames(JSON.parse(@nonstandard_response_body)) - expect(result).to eq('solaris-10-sparc' => ['sol10-10.delivery.mycompany.net', 'sol10-11.delivery.mycompany.net'], + expect(result).to eq('solaris-10-sparc' => ['sol10-10.delivery.mycompany.net', 'sol10-11.delivery.mycompany.net'], 'ubuntu-16.04-power8' => ['power8-ubuntu16.04-6.delivery.mycompany.net']) end end @@ -50,12 +51,12 @@ describe Utils do describe '#format_host_output' do before :each do @vmpooler_results = { - 'centos-7-x86_64' => ['dlgietfmgeegry2.delivery.mycompany.net'], - 'ubuntu-1610-x86_64' => ['gdoy8q3nckuob0i.delivery.mycompany.net', 'ctnktsd0u11p9tm.delivery.mycompany.net'], + 'centos-7-x86_64' => ['dlgietfmgeegry2.delivery.mycompany.net'], + 'ubuntu-1610-x86_64' => ['gdoy8q3nckuob0i.delivery.mycompany.net', 'ctnktsd0u11p9tm.delivery.mycompany.net'] } @nonstandard_results = { - 'solaris-10-sparc' => ['sol10-10.delivery.mycompany.net', 'sol10-11.delivery.mycompany.net'], - 'ubuntu-16.04-power8' => ['power8-ubuntu16.04-6.delivery.mycompany.net'], + 'solaris-10-sparc' => ['sol10-10.delivery.mycompany.net', 'sol10-11.delivery.mycompany.net'], + 'ubuntu-16.04-power8' => ['power8-ubuntu16.04-6.delivery.mycompany.net'] } @vmpooler_output = <<~OUT.chomp - dlgietfmgeegry2.delivery.mycompany.net (centos-7-x86_64) @@ -98,23 +99,23 @@ describe Utils do describe '#get_service_config' do before :each do @default_config = { - 'url' => 'http://default.url', - 'user' => 'first.last.default', - 'token' => 'default-token', + 'url' => 'http://default.url', + 'user' => 'first.last.default', + 'token' => 'default-token' } @services_config = { 'services' => { 'vm' => { - 'url' => 'http://vmpooler.url', - 'user' => 'first.last.vmpooler', - 'token' => 'vmpooler-token', + 'url' => 'http://vmpooler.url', + 'user' => 'first.last.vmpooler', + 'token' => 'vmpooler-token' }, 'ns' => { - 'url' => 'http://nspooler.url', - 'user' => 'first.last.nspooler', - 'token' => 'nspooler-token', - }, - }, + 'url' => 'http://nspooler.url', + 'user' => 'first.last.nspooler', + 'token' => 'nspooler-token' + } + } } end @@ -126,26 +127,26 @@ describe Utils do it 'allows selection by configured service key' do config = @default_config.merge @services_config - options = MockOptions.new(:service => 'ns') + options = MockOptions.new(service: 'ns') expect(Utils.get_service_config(config, options)).to include @services_config['services']['ns'] end it 'uses top-level service config values as defaults when configured service values are missing' do config = @default_config.merge @services_config config['services']['vm'].delete 'url' - options = MockOptions.new(:service => 'vm') + options = MockOptions.new(service: 'vm') expect(Utils.get_service_config(config, options)['url']).to eq 'http://default.url' end it "raises an error if passed a service name that hasn't been configured" do config = @default_config.merge @services_config - options = MockOptions.new(:service => 'none') + options = MockOptions.new(service: 'none') expect { Utils.get_service_config(config, options) }.to raise_error ArgumentError end it 'prioritizes values passed as command line options over configuration options' do config = @default_config - options = MockOptions.new(:url => 'http://alternate.url', :token => 'alternate-token') + options = MockOptions.new(url: 'http://alternate.url', token: 'alternate-token') expected = config.merge('url' => 'http://alternate.url', 'token' => 'alternate-token') expect(Utils.get_service_config(config, options)).to include expected end @@ -182,15 +183,15 @@ describe Utils do { 'template' => 'ubuntu-1604-x86_64', 'lifetime' => 12, - 'running' => 9.66, - 'state' => 'running', - 'ip' => '127.0.0.1', - 'domain' => domain, + 'running' => 9.66, + 'state' => 'running', + 'ip' => '127.0.0.1', + 'domain' => domain } end it 'outputs fqdn for host' do - expect(STDOUT).to receive(:puts).with(fqdn) + expect($stdout).to receive(:puts).with(fqdn) subject end @@ -201,17 +202,17 @@ describe Utils do let(:hostname) { 'sol11-9.delivery.mycompany.net' } let(:host_data) do { - 'fqdn' => hostname, - 'os_triple' => 'solaris-11-sparc', - 'reserved_by_user' => 'first.last', - 'reserved_for_reason' => '', - 'hours_left_on_reservation' => 35.89, + 'fqdn' => hostname, + 'os_triple' => 'solaris-11-sparc', + 'reserved_by_user' => 'first.last', + 'reserved_for_reason' => '', + 'hours_left_on_reservation' => 35.89 } end let(:fqdn) { hostname } # for nspooler these are the same it 'outputs fqdn for host' do - expect(STDOUT).to receive(:puts).with(fqdn) + expect($stdout).to receive(:puts).with(fqdn) subject end @@ -231,19 +232,19 @@ describe Utils do { 'hostname' => fqdn, 'type' => template, - 'enging' => 'vmpooler', - }, + 'enging' => 'vmpooler' + } ], 'request' => { 'job' => { - 'id' => hostname, + 'id' => hostname } - }, + } } end it 'outputs fqdn for host' do - expect(STDOUT).to receive(:puts).with(fqdn) + expect($stdout).to receive(:puts).with(fqdn) subject end @@ -275,10 +276,10 @@ describe Utils do hostname => { 'template' => 'ubuntu-1604-x86_64', 'lifetime' => 12, - 'running' => 9.66, - 'state' => 'running', - 'ip' => '127.0.0.1', - 'domain' => domain, + 'running' => 9.66, + 'state' => 'running', + 'ip' => '127.0.0.1', + 'domain' => domain } } end @@ -286,7 +287,7 @@ describe Utils do let(:default_output) { "- #{fqdn} (running, ubuntu-1604-x86_64, 9.66/12 hours)" } it 'prints output with host fqdn, template and duration info' do - expect(STDOUT).to receive(:puts).with(default_output) + expect($stdout).to receive(:puts).with(default_output) subject end @@ -298,14 +299,14 @@ describe Utils do hostname => { 'template' => 'redhat-7-x86_64', 'lifetime' => 48, - 'running' => 7.67, - 'state' => 'running', - 'tags' => { + 'running' => 7.67, + 'state' => 'running', + 'tags' => { 'user' => 'bob', - 'role' => 'agent', + 'role' => 'agent' }, - 'ip' => '127.0.0.1', - 'domain' => domain, + 'ip' => '127.0.0.1', + 'domain' => domain } } end @@ -313,7 +314,7 @@ describe Utils do it 'prints output with host fqdn, template, duration info, and tags' do output = "- #{fqdn} (running, redhat-7-x86_64, 7.67/48 hours, user: bob, role: agent)" - expect(STDOUT).to receive(:puts).with(output) + expect($stdout).to receive(:puts).with(output) subject end @@ -323,7 +324,7 @@ describe Utils do let(:print_to_stderr) { true } it 'outputs to stderr instead of stdout' do - expect(STDERR).to receive(:puts).with(default_output) + expect($stderr).to receive(:puts).with(default_output) subject end @@ -337,11 +338,11 @@ describe Utils do let(:response_body) do { hostname => { - 'fqdn' => hostname, - 'os_triple' => 'solaris-11-sparc', - 'reserved_by_user' => 'first.last', - 'reserved_for_reason' => '', - 'hours_left_on_reservation' => 35.89, + 'fqdn' => hostname, + 'os_triple' => 'solaris-11-sparc', + 'reserved_by_user' => 'first.last', + 'reserved_for_reason' => '', + 'hours_left_on_reservation' => 35.89 } } end @@ -349,7 +350,7 @@ describe Utils do let(:default_output) { "- #{hostname} (solaris-11-sparc, 35.89h remaining)" } it 'prints output with host, template, and time remaining' do - expect(STDOUT).to receive(:puts).with(default_output) + expect($stdout).to receive(:puts).with(default_output) subject end @@ -358,11 +359,11 @@ describe Utils do let(:response_body) do { hostname => { - 'fqdn' => hostname, - 'os_triple' => 'solaris-11-sparc', - 'reserved_by_user' => 'first.last', - 'reserved_for_reason' => 'testing', - 'hours_left_on_reservation' => 35.89, + 'fqdn' => hostname, + 'os_triple' => 'solaris-11-sparc', + 'reserved_by_user' => 'first.last', + 'reserved_for_reason' => 'testing', + 'hours_left_on_reservation' => 35.89 } } end @@ -370,7 +371,7 @@ describe Utils do it 'prints output with host, template, time remaining, and reason' do output = '- sol11-9.delivery.mycompany.net (solaris-11-sparc, 35.89h remaining, reason: testing)' - expect(STDOUT).to receive(:puts).with(output) + expect($stdout).to receive(:puts).with(output) subject end @@ -380,7 +381,7 @@ describe Utils do let(:print_to_stderr) { true } it 'outputs to stderr instead of stdout' do - expect(STDERR).to receive(:puts).with(default_output) + expect($stderr).to receive(:puts).with(default_output) subject end @@ -392,7 +393,7 @@ describe Utils do let(:hostname) { '1597952189390' } let(:fqdn) { 'example-noun.delivery.mycompany.net' } - let(:fqdn_hostname) {'example-noun'} + let(:fqdn_hostname) { 'example-noun' } let(:template) { 'ubuntu-1604-x86_64' } # This seems to be the miminal stub response from ABS for the current output @@ -404,14 +405,14 @@ describe Utils do { 'hostname' => fqdn, 'type' => template, - 'engine' => 'vmpooler', - }, + 'engine' => 'vmpooler' + } ], 'request' => { 'job' => { - 'id' => hostname, + 'id' => hostname } - }, + } } } end @@ -420,58 +421,58 @@ describe Utils do let(:domain) { 'delivery.mycompany.net' } let(:response_body_vmpooler) do { - fqdn_hostname => { - 'template' => template, - 'lifetime' => 48, - 'running' => 7.67, - 'state' => 'running', - 'tags' => { - 'user' => 'bob', - 'role' => 'agent', - }, - 'ip' => '127.0.0.1', - 'domain' => domain, - } + fqdn_hostname => { + 'template' => template, + 'lifetime' => 48, + 'running' => 7.67, + 'state' => 'running', + 'tags' => { + 'user' => 'bob', + 'role' => 'agent' + }, + 'ip' => '127.0.0.1', + 'domain' => domain + } } end before(:each) do allow(Utils).to receive(:get_vmpooler_service_config).and_return({ - 'url' => 'http://vmpooler.example.com', - 'token' => 'krypto-knight' - }) + 'url' => 'http://vmpooler.example.com', + 'token' => 'krypto-knight' + }) allow(service).to receive(:query) - .with(anything, fqdn_hostname) - .and_return(response_body_vmpooler) + .with(anything, fqdn_hostname) + .and_return(response_body_vmpooler) end let(:default_output_first_line) { "- [JobID:#{hostname}] " } let(:default_output_second_line) { " - #{fqdn} (#{template})" } it 'prints output with job id, host, and template' do - expect(STDOUT).to receive(:puts).with(default_output_first_line) - expect(STDOUT).to receive(:puts).with(default_output_second_line) + expect($stdout).to receive(:puts).with(default_output_first_line) + expect($stdout).to receive(:puts).with(default_output_second_line) subject end it 'prints more information when vmpooler_fallback is set output with job id, host, template, lifetime, user and role' do - fallback = {'vmpooler_fallback' => 'vmpooler'} + fallback = { 'vmpooler_fallback' => 'vmpooler' } service.config.merge! fallback - default_output_second_line=" - #{fqdn} (running, #{template}, 7.67/48 hours, user: bob, role: agent)" - expect(STDOUT).to receive(:puts).with(default_output_first_line) - expect(STDOUT).to receive(:puts).with(default_output_second_line) + default_output_second_line = " - #{fqdn} (running, #{template}, 7.67/48 hours, user: bob, role: agent)" + expect($stdout).to receive(:puts).with(default_output_first_line) + expect($stdout).to receive(:puts).with(default_output_second_line) subject end it 'prints in red when destroyed' do - fallback = {'vmpooler_fallback' => 'vmpooler'} + fallback = { 'vmpooler_fallback' => 'vmpooler' } service.config.merge! fallback - response_body_vmpooler[fqdn_hostname]['state'] = "destroyed" - default_output_second_line_red=" - #{fqdn} (destroyed, #{template}, 7.67/48 hours, user: bob, role: agent)".red - expect(STDOUT).to receive(:puts).with(default_output_first_line) - expect(STDOUT).to receive(:puts).with(default_output_second_line_red) + response_body_vmpooler[fqdn_hostname]['state'] = 'destroyed' + default_output_second_line_red = " - #{fqdn} (destroyed, #{template}, 7.67/48 hours, user: bob, role: agent)".red + expect($stdout).to receive(:puts).with(default_output_first_line) + expect($stdout).to receive(:puts).with(default_output_second_line_red) subject end @@ -480,8 +481,8 @@ describe Utils do let(:print_to_stderr) { true } it 'outputs to stderr instead of stdout' do - expect(STDERR).to receive(:puts).with(default_output_first_line) - expect(STDERR).to receive(:puts).with(default_output_second_line) + expect($stderr).to receive(:puts).with(default_output_first_line) + expect($stderr).to receive(:puts).with(default_output_second_line) subject end @@ -494,34 +495,34 @@ describe Utils do let(:hostname) { '1597952189390' } let(:fqdn) { 'this-noun.delivery.mycompany.net' } let(:fqdn_ns) { 'that-noun.delivery.mycompany.net' } - let(:fqdn_hostname) {'this-noun'} - let(:fqdn_ns_hostname) {'that-noun'} + let(:fqdn_hostname) { 'this-noun' } + let(:fqdn_ns_hostname) { 'that-noun' } let(:template) { 'ubuntu-1604-x86_64' } let(:template_ns) { 'solaris-10-sparc' } # This seems to be the miminal stub response from ABS for the current output let(:response_body) do { - hostname => { - 'state' => 'allocated', - 'allocated_resources' => [ - { - 'hostname' => fqdn, - 'type' => template, - 'engine' => 'vmpooler', - }, - { - 'hostname' => fqdn_ns, - 'type' => template_ns, - 'engine' => 'nspooler', - }, - ], - 'request' => { - 'job' => { - 'id' => hostname, - } - }, + hostname => { + 'state' => 'allocated', + 'allocated_resources' => [ + { + 'hostname' => fqdn, + 'type' => template, + 'engine' => 'vmpooler' + }, + { + 'hostname' => fqdn_ns, + 'type' => template_ns, + 'engine' => 'nspooler' + } + ], + 'request' => { + 'job' => { + 'id' => hostname + } } + } } end @@ -529,29 +530,29 @@ describe Utils do let(:domain) { 'delivery.mycompany.net' } let(:response_body_vmpooler) do { - fqdn_hostname => { - 'template' => template, - 'lifetime' => 48, - 'running' => 7.67, - 'state' => 'running', - 'tags' => { - 'user' => 'bob', - 'role' => 'agent', - }, - 'ip' => '127.0.0.1', - 'domain' => domain, - } + fqdn_hostname => { + 'template' => template, + 'lifetime' => 48, + 'running' => 7.67, + 'state' => 'running', + 'tags' => { + 'user' => 'bob', + 'role' => 'agent' + }, + 'ip' => '127.0.0.1', + 'domain' => domain + } } end before(:each) do allow(Utils).to receive(:get_vmpooler_service_config).and_return({ - 'url' => 'http://vmpooler.example.com', - 'token' => 'krypto-knight' + 'url' => 'http://vmpooler.example.com', + 'token' => 'krypto-knight' }) allow(service).to receive(:query) - .with(anything, fqdn_hostname) - .and_return(response_body_vmpooler) + .with(anything, fqdn_hostname) + .and_return(response_body_vmpooler) end let(:default_output_first_line) { "- [JobID:#{hostname}] " } @@ -559,9 +560,9 @@ describe Utils do let(:default_output_third_line) { " - #{fqdn_ns} (#{template_ns})" } it 'prints output with job id, host, and template' do - expect(STDOUT).to receive(:puts).with(default_output_first_line) - expect(STDOUT).to receive(:puts).with(default_output_second_line) - expect(STDOUT).to receive(:puts).with(default_output_third_line) + expect($stdout).to receive(:puts).with(default_output_first_line) + expect($stdout).to receive(:puts).with(default_output_second_line) + expect($stdout).to receive(:puts).with(default_output_third_line) subject end @@ -570,9 +571,9 @@ describe Utils do let(:print_to_stderr) { true } it 'outputs to stderr instead of stdout' do - expect(STDERR).to receive(:puts).with(default_output_first_line) - expect(STDERR).to receive(:puts).with(default_output_second_line) - expect(STDERR).to receive(:puts).with(default_output_third_line) + expect($stderr).to receive(:puts).with(default_output_first_line) + expect($stderr).to receive(:puts).with(default_output_second_line) + expect($stderr).to receive(:puts).with(default_output_third_line) subject end @@ -586,54 +587,59 @@ describe Utils do config = { 'user' => 'foo', 'services' => { - 'myabs' => { - 'url' => 'http://abs.com', - 'token' => 'krypto-night', - 'type' => 'abs' - } + 'myabs' => { + 'url' => 'http://abs.com', + 'token' => 'krypto-night', + 'type' => 'abs' + } } } allow(Conf).to receive(:read_config).and_return(config) - expect{Utils.get_vmpooler_service_config(config['services']['myabs']['vmpooler_fallback'])}.to raise_error(ArgumentError) + expect do + Utils.get_vmpooler_service_config(config['services']['myabs']['vmpooler_fallback']) + end.to raise_error(ArgumentError) end it 'returns an error if the vmpooler_fallback is setup but cannot be found' do config = { 'user' => 'foo', 'services' => { 'myabs' => { - 'url' => 'http://abs.com', - 'token' => 'krypto-night', - 'type' => 'abs', - 'vmpooler_fallback' => 'myvmpooler' + 'url' => 'http://abs.com', + 'token' => 'krypto-night', + 'type' => 'abs', + 'vmpooler_fallback' => 'myvmpooler' } } } allow(Conf).to receive(:read_config).and_return(config) - expect{Utils.get_vmpooler_service_config(config['services']['myabs']['vmpooler_fallback'])}.to raise_error(ArgumentError, /myvmpooler/) + expect do + Utils.get_vmpooler_service_config(config['services']['myabs']['vmpooler_fallback']) + end.to raise_error(ArgumentError, + /myvmpooler/) end it 'returns the vmpooler_fallback config' do config = { 'user' => 'foo', 'services' => { 'myabs' => { - 'url' => 'http://abs.com', - 'token' => 'krypto-night', - 'type' => 'abs', - 'vmpooler_fallback' => 'myvmpooler' + 'url' => 'http://abs.com', + 'token' => 'krypto-night', + 'type' => 'abs', + 'vmpooler_fallback' => 'myvmpooler' }, 'myvmpooler' => { - 'url' => 'http://vmpooler.com', - 'token' => 'krypto-knight' + 'url' => 'http://vmpooler.com', + 'token' => 'krypto-knight' } } } allow(Conf).to receive(:read_config).and_return(config) expect(Utils.get_vmpooler_service_config(config['services']['myabs']['vmpooler_fallback'])).to include({ - 'url' => 'http://vmpooler.com', - 'token' => 'krypto-knight', - 'user' => 'foo', - 'type' => 'vmpooler' - }) + 'url' => 'http://vmpooler.com', + 'token' => 'krypto-knight', + 'user' => 'foo', + 'type' => 'vmpooler' + }) end end end diff --git a/vmfloaty.gemspec b/vmfloaty.gemspec index 572c255..14e3db2 100644 --- a/vmfloaty.gemspec +++ b/vmfloaty.gemspec @@ -8,11 +8,11 @@ Gem::Specification.new do |s| s.version = Vmfloaty::VERSION s.authors = [ 'Brian Cain', - 'Puppet', + 'Puppet' ] s.email = [ 'brianccain@gmail.com', - 'dio-gems@puppet.com', + 'dio-gems@puppet.com' ] s.license = 'Apache-2.0' s.homepage = 'https://github.com/puppetlabs/vmfloaty' From 38f24f4ad1514cd8ef03b80fa80d9c5ad66d3020 Mon Sep 17 00:00:00 2001 From: Samuel Date: Wed, 3 Mar 2021 12:25:08 -0600 Subject: [PATCH 019/115] Release prep for v1.3.0 --- lib/vmfloaty/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/vmfloaty/version.rb b/lib/vmfloaty/version.rb index d74edd1..f07179f 100644 --- a/lib/vmfloaty/version.rb +++ b/lib/vmfloaty/version.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true class Vmfloaty - VERSION = '1.2.0' + VERSION = '1.3.0' end From f6febc9b8f50eec7fa34ac220f299f712dc62205 Mon Sep 17 00:00:00 2001 From: Nick Burgan-Illig Date: Mon, 12 Jul 2021 17:32:12 +0000 Subject: [PATCH 020/115] (maint) Use latest Faraday/webmock, update specs This unpins Faraday and webmock, and updates specs so that the Faraday changes (primarily including auth in the header rather than in the URL) is reflected. --- Gemfile | 2 +- spec/spec_helper.rb | 17 +++++++++++++ spec/vmfloaty/abs/auth_spec.rb | 32 +++++++++++++++--------- spec/vmfloaty/abs_spec.rb | 8 ++++-- spec/vmfloaty/auth_spec.rb | 23 +++++++++++------ spec/vmfloaty/nonstandard_pooler_spec.rb | 8 +++--- spec/vmfloaty/pooler_spec.rb | 4 +-- vmfloaty.gemspec | 2 +- 8 files changed, 66 insertions(+), 30 deletions(-) diff --git a/Gemfile b/Gemfile index 042d6db..69ed407 100644 --- a/Gemfile +++ b/Gemfile @@ -12,5 +12,5 @@ group :test do gem 'rb-readline' gem 'rspec', '~> 3.10.0' gem 'rubocop', '~> 1.6' - gem 'webmock', '1.21.0' + gem 'webmock', '~> 3.13' end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 6d17c36..750528d 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -2,6 +2,7 @@ require 'simplecov' require 'coveralls' +require 'base64' SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([ SimpleCov::Formatter::HTMLFormatter, @@ -26,3 +27,19 @@ RSpec.configure do |config| config.tty = true config.formatter = :documentation end + +def get_headers(username: nil, password: nil, token: nil, content_type: nil, content_length: nil) + headers = { + 'Accept' => '*/*', + 'Accept-Encoding' => /gzip/, + 'User-Agent' => /Faraday/, + } + if username && password + auth = Base64.encode64("#{username}:#{password}").chomp + headers['Authorization'] = "Basic #{auth}" + end + headers['X-Auth-Token'] = token if token + headers['Content-Type'] = content_type if content_type + headers['Content-Length'] = content_length.to_s if content_length + headers +end \ No newline at end of file diff --git a/spec/vmfloaty/abs/auth_spec.rb b/spec/vmfloaty/abs/auth_spec.rb index fcf2392..ca1aec2 100644 --- a/spec/vmfloaty/abs/auth_spec.rb +++ b/spec/vmfloaty/abs/auth_spec.rb @@ -3,7 +3,11 @@ require 'spec_helper' require_relative '../../../lib/vmfloaty/auth' +user = 'first.last' +pass = 'password' + describe Pooler do + before :each do @abs_url = 'https://abs.example.com/api/v2' end @@ -15,18 +19,20 @@ describe Pooler do end it 'returns a token from abs' do - stub_request(:post, 'https://first.last:password@abs.example.com/api/v2/token') + stub_request(:post, 'https://abs.example.com/api/v2/token') + .with(headers: get_headers(username: user, password: pass, content_length: 0)) .to_return(status: 200, body: @get_token_response, headers: {}) - token = Auth.get_token(false, @abs_url, 'first.last', 'password') + token = Auth.get_token(false, @abs_url, user, pass) expect(token).to eq @token end it 'raises a token error if something goes wrong' do - stub_request(:post, 'https://first.last:password@abs.example.com/api/v2/token') + stub_request(:post, 'https://abs.example.com/api/v2/token') + .with(headers: get_headers(username: user, password: pass, content_length: 0)) .to_return(status: 500, body: '{"ok":false}', headers: {}) - expect { Auth.get_token(false, @abs_url, 'first.last', 'password') }.to raise_error(TokenError) + expect { Auth.get_token(false, @abs_url, user, pass) }.to raise_error(TokenError) end end @@ -37,22 +43,24 @@ describe Pooler do end it 'deletes the specified token' do - stub_request(:delete, 'https://first.last:password@abs.example.com/api/v2/token/utpg2i2xswor6h8ttjhu3d47z53yy47y') + stub_request(:delete, 'https://abs.example.com/api/v2/token/utpg2i2xswor6h8ttjhu3d47z53yy47y') + .with(headers: get_headers(username: user, password: pass)) .to_return(status: 200, body: @delete_token_response, headers: {}) - expect(Auth.delete_token(false, @abs_url, 'first.last', 'password', - @token)).to eq JSON.parse(@delete_token_response) + expect(Auth.delete_token(false, @abs_url, user, pass, + @token)).to eq JSON.parse(@delete_token_response) end it 'raises a token error if something goes wrong' do - stub_request(:delete, 'https://first.last:password@abs.example.com/api/v2/token/utpg2i2xswor6h8ttjhu3d47z53yy47y') + stub_request(:delete, 'https://abs.example.com/api/v2/token/utpg2i2xswor6h8ttjhu3d47z53yy47y') + .with(headers: get_headers(username: user, password: pass)) .to_return(status: 500, body: '{"ok":false}', headers: {}) - expect { Auth.delete_token(false, @abs_url, 'first.last', 'password', @token) }.to raise_error(TokenError) + expect { Auth.delete_token(false, @abs_url, user, pass, @token) }.to raise_error(TokenError) end it 'raises a token error if no token provided' do - expect { Auth.delete_token(false, @abs_url, 'first.last', 'password', nil) }.to raise_error(TokenError) + expect { Auth.delete_token(false, @abs_url, user, pass, nil) }.to raise_error(TokenError) end end @@ -64,7 +72,7 @@ describe Pooler do it 'checks the status of a token' do stub_request(:get, "#{@abs_url}/token/utpg2i2xswor6h8ttjhu3d47z53yy47y") - .with(headers: { 'Accept' => '*/*', 'Accept-Encoding' => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3' }) + .with(headers: get_headers) .to_return(status: 200, body: @token_status_response, headers: {}) expect(Auth.token_status(false, @abs_url, @token)).to eq JSON.parse(@token_status_response) @@ -72,7 +80,7 @@ describe Pooler do it 'raises a token error if something goes wrong' do stub_request(:get, "#{@abs_url}/token/utpg2i2xswor6h8ttjhu3d47z53yy47y") - .with(headers: { 'Accept' => '*/*', 'Accept-Encoding' => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3' }) + .with(headers: get_headers) .to_return(status: 500, body: '{"ok":false}', headers: {}) expect { Auth.token_status(false, @abs_url, @token) }.to raise_error(TokenError) diff --git a/spec/vmfloaty/abs_spec.rb b/spec/vmfloaty/abs_spec.rb index 4199c53..4a66c5c 100644 --- a/spec/vmfloaty/abs_spec.rb +++ b/spec/vmfloaty/abs_spec.rb @@ -152,7 +152,11 @@ describe ABS do [ { "state":"allocated", "last_processed":"2020-01-17 22:29:13 +0000", "allocated_resources":[{"hostname":"craggy-chord.delivery.puppetlabs.net", "type":"centos-7-x86_64", "engine":"vmpooler"}, {"hostname":"visible-revival.delivery.puppetlabs.net", "type":"centos-7-x86_64", "engine":"vmpooler"}], "audit_log":{"2020-01-17 22:28:45 +0000":"Allocated craggy-chord.delivery.puppetlabs.net, visible-revival.delivery.puppetlabs.net for job 1579300120799"}, "request":{"resources":{"centos-7-x86_64":2}, "job":{"id":"1579300120799", "tags":{"user":"test-user"}, "user":"test-user", "time-received":1579300120}, "priority":3}} ]' - @return_request = { '{"job_id":"1579300120799","hosts":{"hostname":"craggy-chord.delivery.puppetlabs.net","type":"centos-7-x86_64","engine":"vmpooler"},{"hostname":"visible-revival.delivery.puppetlabs.net","type":"centos-7-x86_64","engine":"vmpooler"}}' => true } + @return_request = { + "job_id" => "1579300120799", + "hosts" => [{"hostname"=>"craggy-chord.delivery.puppetlabs.net","type"=>"centos-7-x86_64","engine"=>"vmpooler"}, + {"hostname"=>"visible-revival.delivery.puppetlabs.net","type"=>"centos-7-x86_64","engine"=>"vmpooler"}] + } # rubocop:enable Layout/LineLength @token = 'utpg2i2xswor6h8ttjhu3d47z53yy47y' @test_user = 'test-user' @@ -164,7 +168,7 @@ describe ABS do stub_request(:get, 'https://abs.example.com/api/v2/status/queue') .to_return(status: 200, body: @active_requests_response, headers: {}) stub_request(:post, 'https://abs.example.com/api/v2/return') - .with(body: @return_request) + .with(headers: get_headers(content_type: 'application/x-www-form-urlencoded', token: @token), body: @return_request.to_json) .to_return(status: 200, body: 'OK', headers: {}) ret = ABS.delete(false, @abs_url, @hosts, @token, @test_user) diff --git a/spec/vmfloaty/auth_spec.rb b/spec/vmfloaty/auth_spec.rb index 80effe1..6ce4b77 100644 --- a/spec/vmfloaty/auth_spec.rb +++ b/spec/vmfloaty/auth_spec.rb @@ -3,6 +3,9 @@ require 'spec_helper' require_relative '../../lib/vmfloaty/auth' +user = 'first.last' +pass = 'password' + describe Pooler do before :each do @vmpooler_url = 'https://vmpooler.example.com' @@ -15,18 +18,20 @@ describe Pooler do end it 'returns a token from vmpooler' do - stub_request(:post, 'https://first.last:password@vmpooler.example.com/token') + stub_request(:post, 'https://vmpooler.example.com/token') + .with(headers: get_headers(username: user, password: pass, content_length: 0)) .to_return(status: 200, body: @get_token_response, headers: {}) - token = Auth.get_token(false, @vmpooler_url, 'first.last', 'password') + token = Auth.get_token(false, @vmpooler_url, user, pass) expect(token).to eq @token end it 'raises a token error if something goes wrong' do - stub_request(:post, 'https://first.last:password@vmpooler.example.com/token') + stub_request(:post, 'https://vmpooler.example.com/token') + .with(headers: get_headers(username: user, password: pass, content_length: 0)) .to_return(status: 500, body: '{"ok":false}', headers: {}) - expect { Auth.get_token(false, @vmpooler_url, 'first.last', 'password') }.to raise_error(TokenError) + expect { Auth.get_token(false, @vmpooler_url, user, pass) }.to raise_error(TokenError) end end @@ -37,15 +42,17 @@ describe Pooler do end it 'deletes the specified token' do - stub_request(:delete, 'https://first.last:password@vmpooler.example.com/token/utpg2i2xswor6h8ttjhu3d47z53yy47y') + stub_request(:delete, 'https://vmpooler.example.com/token/utpg2i2xswor6h8ttjhu3d47z53yy47y') + .with(headers: get_headers(username: user, password: pass)) .to_return(status: 200, body: @delete_token_response, headers: {}) - expect(Auth.delete_token(false, @vmpooler_url, 'first.last', 'password', + expect(Auth.delete_token(false, @vmpooler_url, user, pass, @token)).to eq JSON.parse(@delete_token_response) end it 'raises a token error if something goes wrong' do - stub_request(:delete, 'https://first.last:password@vmpooler.example.com/token/utpg2i2xswor6h8ttjhu3d47z53yy47y') + stub_request(:delete, 'https://vmpooler.example.com/token/utpg2i2xswor6h8ttjhu3d47z53yy47y') + .with(headers: get_headers(username: user, password: pass)) .to_return(status: 500, body: '{"ok":false}', headers: {}) expect { Auth.delete_token(false, @vmpooler_url, 'first.last', 'password', @token) }.to raise_error(TokenError) @@ -64,6 +71,7 @@ describe Pooler do it 'checks the status of a token' do stub_request(:get, "#{@vmpooler_url}/token/utpg2i2xswor6h8ttjhu3d47z53yy47y") + .with(headers: get_headers) .to_return(status: 200, body: @token_status_response, headers: {}) expect(Auth.token_status(false, @vmpooler_url, @token)).to eq JSON.parse(@token_status_response) @@ -71,6 +79,7 @@ describe Pooler do it 'raises a token error if something goes wrong' do stub_request(:get, "#{@vmpooler_url}/token/utpg2i2xswor6h8ttjhu3d47z53yy47y") + .with(headers: get_headers) .to_return(status: 500, body: '{"ok":false}', headers: {}) expect { Auth.token_status(false, @vmpooler_url, @token) }.to raise_error(TokenError) diff --git a/spec/vmfloaty/nonstandard_pooler_spec.rb b/spec/vmfloaty/nonstandard_pooler_spec.rb index 8b1ab7c..1f86dd2 100644 --- a/spec/vmfloaty/nonstandard_pooler_spec.rb +++ b/spec/vmfloaty/nonstandard_pooler_spec.rb @@ -8,9 +8,7 @@ require 'vmfloaty/nonstandard_pooler' describe NonstandardPooler do before :each do @nspooler_url = 'https://nspooler.example.com' - @auth_token_headers = { - 'X-Auth-Token' => 'token-value' - } + @auth_token_headers = get_headers(token: 'token-value') end describe '#list' do @@ -121,7 +119,7 @@ describe NonstandardPooler do it 'raises an AuthError if the token is invalid' do stub_request(:post, "#{@nspooler_url}/host/solaris-11-sparc") - .with(headers: @auth_token_headers) + .with(headers: get_headers(token: 'token-value')) .to_return(status: 401, body: '{"ok":false,"reason": "token: token-value does not exist"}', headers: {}) vm_hash = { 'solaris-11-sparc' => 1 } @@ -174,7 +172,7 @@ describe NonstandardPooler do end it 'modifies the reason of a vm' do - modify_request_body = { '{"reserved_for_reason":"testing"}' => true } + modify_request_body = { '{"reserved_for_reason":"testing"}' => nil } stub_request(:put, "#{@nspooler_url}/host/myfakehost") .with(body: modify_request_body, headers: @auth_token_headers) diff --git a/spec/vmfloaty/pooler_spec.rb b/spec/vmfloaty/pooler_spec.rb index 0604176..e9cebdd 100644 --- a/spec/vmfloaty/pooler_spec.rb +++ b/spec/vmfloaty/pooler_spec.rb @@ -119,8 +119,8 @@ describe Pooler do it 'modifies the TTL of a vm' do modify_hash = { lifetime: 12 } stub_request(:put, "#{@vmpooler_url}/vm/fq6qlpjlsskycq6") - .with(body: { '{"lifetime":12}' => true }, - headers: { 'Content-Type' => 'application/x-www-form-urlencoded', 'X-Auth-Token' => 'mytokenfile' }) + .with(body: { '{"lifetime":12}' => nil }, + headers: get_headers(content_type: 'application/x-www-form-urlencoded', token: 'mytokenfile')) .to_return(status: 200, body: @modify_response_body_success, headers: {}) modify_req = Pooler.modify(false, @vmpooler_url, 'fq6qlpjlsskycq6', 'mytokenfile', modify_hash) diff --git a/vmfloaty.gemspec b/vmfloaty.gemspec index 14e3db2..a8410ab 100644 --- a/vmfloaty.gemspec +++ b/vmfloaty.gemspec @@ -26,5 +26,5 @@ Gem::Specification.new do |s| s.add_dependency 'colorize', '~> 0.8.1' s.add_dependency 'commander', '>= 4.4.3', '< 4.6.0' - s.add_dependency 'faraday', '~> 0.17.0' + s.add_dependency 'faraday', '~> 1.5', '>= 1.5.1' end From bcd08fca15152f1fedaf3b7963b4d534e1958dd3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Jul 2021 17:02:52 +0000 Subject: [PATCH 021/115] Update commander requirement from >= 4.4.3, < 4.6.0 to >= 4.4.3, < 4.7.0 Updates the requirements on [commander](https://github.com/commander-rb/commander) to permit the latest version. - [Release notes](https://github.com/commander-rb/commander/releases) - [Changelog](https://github.com/commander-rb/commander/blob/master/History.rdoc) - [Commits](https://github.com/commander-rb/commander/compare/v4.4.3...v4.6.0) Signed-off-by: dependabot[bot] --- vmfloaty.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vmfloaty.gemspec b/vmfloaty.gemspec index a8410ab..c79a040 100644 --- a/vmfloaty.gemspec +++ b/vmfloaty.gemspec @@ -25,6 +25,6 @@ Gem::Specification.new do |s| s.require_path = 'lib' s.add_dependency 'colorize', '~> 0.8.1' - s.add_dependency 'commander', '>= 4.4.3', '< 4.6.0' + s.add_dependency 'commander', '>= 4.4.3', '< 4.7.0' s.add_dependency 'faraday', '~> 1.5', '>= 1.5.1' end From b89154648fe4b3dbf8f8cf1f480b84476c3cffe1 Mon Sep 17 00:00:00 2001 From: Gene Liverman Date: Fri, 16 Jul 2021 16:24:32 -0400 Subject: [PATCH 022/115] v1.4.0 release prep --- lib/vmfloaty/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/vmfloaty/version.rb b/lib/vmfloaty/version.rb index ffd73af..28841aa 100644 --- a/lib/vmfloaty/version.rb +++ b/lib/vmfloaty/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true class Vmfloaty - VERSION = '1.3.0' + VERSION = '1.4.0' end From 38a465e862b2a46fa6b7455e23a59b1c5a8b74ac Mon Sep 17 00:00:00 2001 From: Gene Liverman Date: Fri, 16 Jul 2021 16:42:45 -0400 Subject: [PATCH 023/115] Migrate CI to GitHub Actions --- .coveralls.yml | 1 - .github/workflows/ci.yml | 53 ++++++++++++++++++++++++++++++++++++++++ .travis.yml | 7 ------ Gemfile | 4 ++- README.md | 4 +-- spec/spec_helper.rb | 18 ++++++++++---- 6 files changed, 71 insertions(+), 16 deletions(-) delete mode 100644 .coveralls.yml create mode 100644 .github/workflows/ci.yml delete mode 100644 .travis.yml diff --git a/.coveralls.yml b/.coveralls.yml deleted file mode 100644 index cf27a37..0000000 --- a/.coveralls.yml +++ /dev/null @@ -1 +0,0 @@ -service_name: travis-pro diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..42edd97 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,53 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. +# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake +# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby + +name: CI + +on: + pull_request: + branches: + - main + +jobs: + test: + + runs-on: ubuntu-latest + strategy: + matrix: + ruby-version: + - '2.6' + - '2.7' + - '3.0' + + steps: + - uses: actions/checkout@v2 + - name: Set up Ruby + # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby, + # change this to (see https://github.com/ruby/setup-ruby#versioning): + # uses: ruby/setup-ruby@v1 + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby-version }} + bundler-cache: true # runs 'bundle install' and caches installed gems automatically + - name: Run tests + run: bundle exec rake spec + - name: Coveralls + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + flag-name: run-${{ matrix.ruby-version }} + parallel: true + + finish: + needs: test + runs-on: ubuntu-latest + steps: + - name: Coveralls Finished + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.github_token }} + parallel-finished: true \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 770839e..0000000 --- a/.travis.yml +++ /dev/null @@ -1,7 +0,0 @@ -language: ruby -dist: xenial -os: - - linux -rvm: - - 2.6.5 -script: bundle exec rake spec diff --git a/Gemfile b/Gemfile index 69ed407..6e26d2a 100644 --- a/Gemfile +++ b/Gemfile @@ -7,7 +7,9 @@ gemspec gem 'rake', require: false group :test do - gem 'coveralls', '~> 0.8.23' + gem 'simplecov', '~> 0.21.2' + gem 'simplecov-html', '~> 0.12.3' + gem 'simplecov-lcov', '~> 0.8.0' gem 'pry' gem 'rb-readline' gem 'rspec', '~> 3.10.0' diff --git a/README.md b/README.md index 54e246e..f897005 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # vmfloaty [![Gem Version](https://badge.fury.io/rb/vmfloaty.svg)](https://badge.fury.io/rb/vmfloaty) -[![Build Status](https://travis-ci.com/puppetlabs/vmfloaty.svg?branch=master)](https://travis-ci.com/puppetlabs/vmfloaty) -[![Coverage Status](https://coveralls.io/repos/github/puppetlabs/vmfloaty/badge.svg?branch=master)](https://coveralls.io/github/puppetlabs/vmfloaty?branch=master) +[![Build Status](https://github.com/puppetlabs/vmfloaty/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/puppetlabs/vmfloaty/actions/workflows/ci.yml) +[![Coverage Status](https://github.com/puppetlabs/vmfloaty/badge.svg?branch=main)](https://coveralls.io/github/puppetlabs/vmfloaty?branch=main) [![Dependabot Status](https://api.dependabot.com/badges/status?host=github&repo=puppetlabs/vmfloaty)](https://dependabot.com) A CLI helper tool for [Puppet's vmpooler](https://github.com/puppetlabs/vmpooler) to help you stay afloat. diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 750528d..1ed7ef7 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,13 +1,21 @@ # frozen_string_literal: true require 'simplecov' -require 'coveralls' +require 'simplecov-lcov' require 'base64' -SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([ - SimpleCov::Formatter::HTMLFormatter, - Coveralls::SimpleCov::Formatter - ]) +SimpleCov::Formatter::LcovFormatter.config do |c| + c.report_with_single_file = true + c.single_report_path = 'coverage/lcov.info' +end + +SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new( + [ + SimpleCov::Formatter::HTMLFormatter, + SimpleCov::Formatter::LcovFormatter + ] +) + SimpleCov.start do add_filter %r{^/spec/} end From 33758081d1434a332bcc260b56e0a5cf61038e97 Mon Sep 17 00:00:00 2001 From: Samuel Beaulieu Date: Wed, 11 Aug 2021 15:13:24 -0500 Subject: [PATCH 024/115] (DIO-2135) Update docker FROM image to ruby 3.0.2 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index c564fa8..ceaa74e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ruby:2.7 +FROM ruby:3.0.1-slim-buster COPY ./ ./ From bd5d1a36f019746bd3331d0e12bf14ba12da5b81 Mon Sep 17 00:00:00 2001 From: Tanisha Payne Date: Fri, 8 Oct 2021 11:44:45 -0400 Subject: [PATCH 025/115] priority flag added to ssh command --- lib/vmfloaty.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/vmfloaty.rb b/lib/vmfloaty.rb index d7e2196..4abba2d 100644 --- a/lib/vmfloaty.rb +++ b/lib/vmfloaty.rb @@ -469,6 +469,7 @@ class Vmfloaty c.option '--user STRING', String, 'User to authenticate with' c.option '--token STRING', String, 'Token for pooler service' c.option '--notoken', 'Makes a request without a token' + c.option '--priority STRING', 'Priority for supported backends(ABS) (High(1), Medium(2), Low(3))' c.action do |args, options| verbose = options.verbose || config['verbose'] service = Service.new(options, config) From 3c3623689ada9eb46ef26425eb23b8a1d6e53aa1 Mon Sep 17 00:00:00 2001 From: Tanisha Payne Date: Tue, 12 Oct 2021 10:39:06 -0400 Subject: [PATCH 026/115] ondemand added to ssh command --- lib/vmfloaty.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/vmfloaty.rb b/lib/vmfloaty.rb index 4abba2d..846bf4d 100644 --- a/lib/vmfloaty.rb +++ b/lib/vmfloaty.rb @@ -470,6 +470,7 @@ class Vmfloaty c.option '--token STRING', String, 'Token for pooler service' c.option '--notoken', 'Makes a request without a token' c.option '--priority STRING', 'Priority for supported backends(ABS) (High(1), Medium(2), Low(3))' + c.option '--ondemand', 'Requested vms are provisioned upon receival of the request, tracked by a request ID' c.action do |args, options| verbose = options.verbose || config['verbose'] service = Service.new(options, config) From 62f97319107ac1c261dbd6dc0919ab522e02bf37 Mon Sep 17 00:00:00 2001 From: Gene Liverman Date: Tue, 12 Oct 2021 13:11:30 -0400 Subject: [PATCH 027/115] Release prep for 1.5.0 --- lib/vmfloaty/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/vmfloaty/version.rb b/lib/vmfloaty/version.rb index 28841aa..fd1b9c7 100644 --- a/lib/vmfloaty/version.rb +++ b/lib/vmfloaty/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true class Vmfloaty - VERSION = '1.4.0' + VERSION = '1.5.0' end From 61b87a5a589bbf27274f208d6fcf0ee9cd5e2241 Mon Sep 17 00:00:00 2001 From: Gene Liverman Date: Tue, 12 Oct 2021 13:35:39 -0400 Subject: [PATCH 028/115] Minor cleanup to the readme --- README.md | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index f897005..4c60f87 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,9 @@ # vmfloaty [![Gem Version](https://badge.fury.io/rb/vmfloaty.svg)](https://badge.fury.io/rb/vmfloaty) -[![Build Status](https://github.com/puppetlabs/vmfloaty/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/puppetlabs/vmfloaty/actions/workflows/ci.yml) -[![Coverage Status](https://github.com/puppetlabs/vmfloaty/badge.svg?branch=main)](https://coveralls.io/github/puppetlabs/vmfloaty?branch=main) -[![Dependabot Status](https://api.dependabot.com/badges/status?host=github&repo=puppetlabs/vmfloaty)](https://dependabot.com) +[![CI](https://github.com/puppetlabs/vmfloaty/actions/workflows/ci.yml/badge.svg)](https://github.com/puppetlabs/vmfloaty/actions/workflows/ci.yml) -A CLI helper tool for [Puppet's vmpooler](https://github.com/puppetlabs/vmpooler) to help you stay afloat. +A CLI helper tool for [Puppet's VMPooler](https://github.com/puppetlabs/vmpooler) to help you stay afloat. ![float image](float.jpg) @@ -18,7 +16,7 @@ A CLI helper tool for [Puppet's vmpooler](https://github.com/puppetlabs/vmpooler - [Using backends besides VMPooler](#using-backends-besides-vmpooler) - [Valid config keys](#valid-config-keys) - [Tab Completion](#tab-completion) -- [vmpooler API](#vmpooler-api) +- [VMPooler API](#vmpooler-api) - [Using the Pooler class](#using-the-pooler-class) - [Example Projects](#example-projects) - [Special thanks](#special-thanks) @@ -41,7 +39,7 @@ $ floaty --help DESCRIPTION: - A CLI helper tool for Puppet's vmpooler to help you stay afloat + A CLI helper tool for Puppet's VMPooler to help you stay afloat COMMANDS: @@ -151,13 +149,13 @@ There is also tab completion for zsh: source $(floaty completion --shell zsh) ``` -## vmpooler API +## VMPooler API -This cli tool uses the [vmpooler API](https://github.com/puppetlabs/vmpooler/blob/master/API.md). +This cli tool uses the [VMPooler API](https://github.com/puppetlabs/vmpooler/blob/master/API.md). ## Using the Pooler class -vmfloaty providers a `Pooler` class that gives users the ability to make requests to vmpooler without having to write their own requests. It also provides an `Auth` class for managing vmpooler tokens within your application. +vmfloaty providers a `Pooler` class that gives users the ability to make requests to VMPooler without having to write their own requests. It also provides an `Auth` class for managing VMPooler tokens within your application. ### Example Projects From 903e59afb88c78f8df4fe8c58a08e842aca79138 Mon Sep 17 00:00:00 2001 From: Gene Liverman Date: Tue, 12 Oct 2021 13:48:52 -0400 Subject: [PATCH 029/115] ignore .dccache --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 5102fb1..1351382 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,8 @@ build/ /vendor/ /lib/bundler/man/ +.dccache + # for a library or gem, you might want to ignore these files since the code is # intended to run in multiple environments; otherwise, check them in: Gemfile.lock From 5793ea78b908c454a250af8fbbf037a887864c71 Mon Sep 17 00:00:00 2001 From: Christopher Thorn Date: Tue, 8 Feb 2022 11:53:55 -0800 Subject: [PATCH 030/115] (maint) Fix up nspooler list active bug If no reason is defined for checking out a nspooler VM we'd get a nil refrence error message when listing active nspooler VMs. This PR fixes that. --- lib/vmfloaty/utils.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/vmfloaty/utils.rb b/lib/vmfloaty/utils.rb index c1c4577..bfd4a4a 100644 --- a/lib/vmfloaty/utils.rb +++ b/lib/vmfloaty/utils.rb @@ -144,7 +144,7 @@ class Utils when 'NonstandardPooler' line = "- #{host_data['fqdn']} (#{host_data['os_triple']}" line += ", #{host_data['hours_left_on_reservation']}h remaining" - line += ", reason: #{host_data['reserved_for_reason']}" unless host_data['reserved_for_reason'].empty? + line += ", reason: #{host_data['reserved_for_reason']}" unless host_data['reserved_for_reason'].nil? || host_data['reserved_for_reason'].empty? line += ')' output_target.puts line else From 6b9b4ea6267b9aef2ec9f6fc290f2d5fd002a62c Mon Sep 17 00:00:00 2001 From: Samuel Beaulieu Date: Wed, 16 Feb 2022 13:07:05 -0600 Subject: [PATCH 031/115] (DIO-2700) Vmfloaty should not use the Colorize gem removing cosmetic use of colorize --- lib/vmfloaty.rb | 1 - lib/vmfloaty/utils.rb | 4 ++-- lib/vmfloaty/version.rb | 2 +- spec/vmfloaty/utils_spec.rb | 6 +++--- vmfloaty.gemspec | 1 - 5 files changed, 6 insertions(+), 8 deletions(-) diff --git a/lib/vmfloaty.rb b/lib/vmfloaty.rb index 846bf4d..237632b 100644 --- a/lib/vmfloaty.rb +++ b/lib/vmfloaty.rb @@ -2,7 +2,6 @@ require 'rubygems' require 'commander' -require 'colorize' require 'json' require 'pp' require 'uri' diff --git a/lib/vmfloaty/utils.rb b/lib/vmfloaty/utils.rb index bfd4a4a..a24d7c5 100644 --- a/lib/vmfloaty/utils.rb +++ b/lib/vmfloaty/utils.rb @@ -137,7 +137,7 @@ class Utils metadata = [host_data['state'], host_data['template'], duration, *tag_pairs] message = "- #{hostname}.#{host_data['domain']} (#{metadata.join(', ')})".gsub(/^/, ' ' * indent) if host_data['state'] && host_data['state'] == 'destroyed' - output_target.puts message.colorize(:red) + output_target.puts "- DESTROYED #{hostname}.#{host_data['domain']}".gsub(/^/, ' ' * indent) else output_target.puts message end @@ -201,7 +201,7 @@ class Utils rescue StandardError => e FloatyLogger.error "#{name.ljust(width)} #{e.red}" end - puts message.colorize(status_response['status']['ok'] ? :default : :red) + puts message when 'NonstandardPooler' pools = status_response pools.delete 'ok' diff --git a/lib/vmfloaty/version.rb b/lib/vmfloaty/version.rb index fd1b9c7..119c4c5 100644 --- a/lib/vmfloaty/version.rb +++ b/lib/vmfloaty/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true class Vmfloaty - VERSION = '1.5.0' + VERSION = '1.6.0' end diff --git a/spec/vmfloaty/utils_spec.rb b/spec/vmfloaty/utils_spec.rb index bade876..a567b0c 100644 --- a/spec/vmfloaty/utils_spec.rb +++ b/spec/vmfloaty/utils_spec.rb @@ -466,13 +466,13 @@ describe Utils do subject end - it 'prints in red when destroyed' do + it 'prints DESTROYED and hostname when destroyed' do fallback = { 'vmpooler_fallback' => 'vmpooler' } service.config.merge! fallback response_body_vmpooler[fqdn_hostname]['state'] = 'destroyed' - default_output_second_line_red = " - #{fqdn} (destroyed, #{template}, 7.67/48 hours, user: bob, role: agent)".red + default_output_second_line = " - DESTROYED #{fqdn}" expect($stdout).to receive(:puts).with(default_output_first_line) - expect($stdout).to receive(:puts).with(default_output_second_line_red) + expect($stdout).to receive(:puts).with(default_output_second_line) subject end diff --git a/vmfloaty.gemspec b/vmfloaty.gemspec index c79a040..5b15eff 100644 --- a/vmfloaty.gemspec +++ b/vmfloaty.gemspec @@ -24,7 +24,6 @@ Gem::Specification.new do |s| s.test_files = Dir['spec/**/*'] s.require_path = 'lib' - s.add_dependency 'colorize', '~> 0.8.1' s.add_dependency 'commander', '>= 4.4.3', '< 4.7.0' s.add_dependency 'faraday', '~> 1.5', '>= 1.5.1' end From 0463180a67914041ce112bf10c8f6d1de9e1bf86 Mon Sep 17 00:00:00 2001 From: Ben Ford Date: Thu, 17 Mar 2022 08:53:31 -0700 Subject: [PATCH 032/115] (maint) removing previous maintainers Cleaning up our github org and repos. I checked in with each previous maintainer and they're cool with being off the hook here ;-) --- .github/PULL_REQUEST_TEMPLATE | 5 ----- CODEOWNERS | 2 +- vmfloaty.gemspec | 5 +---- 3 files changed, 2 insertions(+), 10 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE b/.github/PULL_REQUEST_TEMPLATE index 0259cfe..5b0d10e 100644 --- a/.github/PULL_REQUEST_TEMPLATE +++ b/.github/PULL_REQUEST_TEMPLATE @@ -15,8 +15,3 @@ FIXME - [ ] Tests - [ ] Documentation -## Reviewers - -@puppetlabs/dio -@highb -@briancain diff --git a/CODEOWNERS b/CODEOWNERS index 321cebf..a478baf 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,3 +1,3 @@ # Set the default code owners -* @puppetlabs/dio @briancain @highb +* @puppetlabs/dio diff --git a/vmfloaty.gemspec b/vmfloaty.gemspec index 5b15eff..b8abec1 100644 --- a/vmfloaty.gemspec +++ b/vmfloaty.gemspec @@ -10,10 +10,7 @@ Gem::Specification.new do |s| 'Brian Cain', 'Puppet' ] - s.email = [ - 'brianccain@gmail.com', - 'dio-gems@puppet.com' - ] + s.email = 'dio-gems@puppet.com' s.license = 'Apache-2.0' s.homepage = 'https://github.com/puppetlabs/vmfloaty' s.description = 'A helper tool for vmpooler to help you stay afloat' From 577579ffdd4fe31940a717f7d95b4bdeb5731bbd Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Fri, 1 Apr 2022 11:35:55 -0400 Subject: [PATCH 033/115] Add Ruby 3.1 to test matrix + dockerfile and drop EOL Ruby 2.6 --- .github/workflows/ci.yml | 2 +- Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 42edd97..eadf380 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,9 +19,9 @@ jobs: strategy: matrix: ruby-version: - - '2.6' - '2.7' - '3.0' + - '3.1' steps: - uses: actions/checkout@v2 diff --git a/Dockerfile b/Dockerfile index ceaa74e..a38235d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ruby:3.0.1-slim-buster +FROM ruby:3.1.1-slim-buster COPY ./ ./ From 6b67c216f5072f80aebda99d87c645abccd7b2fe Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 4 Apr 2022 11:25:56 -0400 Subject: [PATCH 034/115] Remove colorize usage from `floaty status` --- lib/vmfloaty/utils.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/vmfloaty/utils.rb b/lib/vmfloaty/utils.rb index a24d7c5..8470921 100644 --- a/lib/vmfloaty/utils.rb +++ b/lib/vmfloaty/utils.rb @@ -197,9 +197,9 @@ class Utils pending = pool['pending'] missing = max - ready - pending char = 'o' - puts "#{name.ljust(width)} #{(char * ready).green}#{(char * pending).yellow}#{(char * missing).red}" + puts "#{name.ljust(width)} #{(char * ready)}#{(char * pending)}#{(char * missing)}" rescue StandardError => e - FloatyLogger.error "#{name.ljust(width)} #{e.red}" + FloatyLogger.error "#{name.ljust(width)} #{e}" end puts message when 'NonstandardPooler' @@ -214,13 +214,13 @@ class Utils pending = pool['pending'] || 0 # not available for nspooler missing = max - ready - pending char = 'o' - puts "#{name.ljust(width)} #{(char * ready).green}#{(char * pending).yellow}#{(char * missing).red}" + puts "#{name.ljust(width)} #{(char * ready)}#{(char * pending)}#{(char * missing)}" rescue StandardError => e - FloatyLogger.error "#{name.ljust(width)} #{e.red}" + FloatyLogger.error "#{name.ljust(width)} #{e}" end when 'ABS' FloatyLogger.error 'ABS Not OK' unless status_response - puts 'ABS is OK'.green if status_response + puts 'ABS is OK' if status_response else raise "Invalid service type #{service.type}" end From da48a4de0ae830704a5a478977849e2ff2c8b34d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Apr 2022 15:44:45 +0000 Subject: [PATCH 035/115] Update rspec requirement from ~> 3.10.0 to ~> 3.11.0 Updates the requirements on [rspec](https://github.com/rspec/rspec-metagem) to permit the latest version. - [Release notes](https://github.com/rspec/rspec-metagem/releases) - [Commits](https://github.com/rspec/rspec-metagem/compare/v3.10.0...v3.11.0) --- updated-dependencies: - dependency-name: rspec dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index 6e26d2a..acc82eb 100644 --- a/Gemfile +++ b/Gemfile @@ -12,7 +12,7 @@ group :test do gem 'simplecov-lcov', '~> 0.8.0' gem 'pry' gem 'rb-readline' - gem 'rspec', '~> 3.10.0' + gem 'rspec', '~> 3.11.0' gem 'rubocop', '~> 1.6' gem 'webmock', '~> 3.13' end From 4103fdecccdde1a022fd0d6e4006bfbd8306fe14 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Fri, 1 Apr 2022 11:32:22 -0400 Subject: [PATCH 036/115] Add VMPooler api v2 support for `floaty get` --- lib/vmfloaty/utils.rb | 19 +++++++++++++++++-- spec/vmfloaty/utils_spec.rb | 22 +++++++++++++++++++--- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/lib/vmfloaty/utils.rb b/lib/vmfloaty/utils.rb index 8470921..39c97a3 100644 --- a/lib/vmfloaty/utils.rb +++ b/lib/vmfloaty/utils.rb @@ -9,7 +9,7 @@ class Utils # TODO: Takes the json response body from an HTTP GET # request and "pretty prints" it def self.standardize_hostnames(response_body) - # vmpooler response body example when `floaty get` arguments are `ubuntu-1610-x86_64=2 centos-7-x86_64`: + # vmpooler api v1 response body example when `floaty get` arguments are `ubuntu-1610-x86_64=2 centos-7-x86_64`: # { # "ok": true, # "domain": "delivery.mycompany.net", @@ -21,6 +21,17 @@ class Utils # } # } + # vmpooler api v2 response body example when `floaty get` arguments are `ubuntu-1610-x86_64=2 centos-7-x86_64`: + # { + # "ok": true, + # "ubuntu-1610-x86_64": { + # "hostname": ["gdoy8q3nckuob0i.pooler.example.com", "ctnktsd0u11p9tm.pooler.example.com"] + # }, + # "centos-7-x86_64": { + # "hostname": "dlgietfmgeegry2.pooler.example.com" + # } + # } + # nonstandard pooler response body example when `floaty get` arguments are `solaris-11-sparc=2 ubuntu-16.04-power8`: # { # "ok": true, @@ -98,7 +109,11 @@ class Utils puts abs_hostnames.join("\n") when 'Pooler' - puts "#{hostname}.#{host_data['domain']}" + if host_data['domain'].nil? + puts hostname + else + puts "#{hostname}.#{host_data['domain']}" + end when 'NonstandardPooler' puts host_data['fqdn'] else diff --git a/spec/vmfloaty/utils_spec.rb b/spec/vmfloaty/utils_spec.rb index a567b0c..0994107 100644 --- a/spec/vmfloaty/utils_spec.rb +++ b/spec/vmfloaty/utils_spec.rb @@ -13,7 +13,7 @@ end describe Utils do describe '#standardize_hostnames' do before :each do - @vmpooler_response_body = '{ + @vmpooler_api_v1_response_body = '{ "ok": true, "domain": "delivery.mycompany.net", "ubuntu-1610-x86_64": { @@ -23,6 +23,15 @@ describe Utils do "hostname": "dlgietfmgeegry2" } }' + @vmpooler_api_v2_response_body = '{ + "ok": true, + "ubuntu-1610-x86_64": { + "hostname": ["gdoy8q3nckuob0i.delivery.mycompany.net", "ctnktsd0u11p9tm.delivery.mycompany.net"] + }, + "centos-7-x86_64": { + "hostname": "dlgietfmgeegry2.delivery.mycompany.net" + } + }' @nonstandard_response_body = '{ "ok": true, "solaris-10-sparc": { @@ -34,8 +43,15 @@ describe Utils do }' end - it 'formats a result from vmpooler into a hash of os to hostnames' do - result = Utils.standardize_hostnames(JSON.parse(@vmpooler_response_body)) + it 'formats a result from vmpooler v1 api into a hash of os to hostnames' do + result = Utils.standardize_hostnames(JSON.parse(@vmpooler_api_v1_response_body)) + expect(result).to eq('centos-7-x86_64' => ['dlgietfmgeegry2.delivery.mycompany.net'], + 'ubuntu-1610-x86_64' => ['gdoy8q3nckuob0i.delivery.mycompany.net', + 'ctnktsd0u11p9tm.delivery.mycompany.net']) + end + + it 'formats a result from vmpooler v2 api into a hash of os to hostnames' do + result = Utils.standardize_hostnames(JSON.parse(@vmpooler_api_v2_response_body)) expect(result).to eq('centos-7-x86_64' => ['dlgietfmgeegry2.delivery.mycompany.net'], 'ubuntu-1610-x86_64' => ['gdoy8q3nckuob0i.delivery.mycompany.net', 'ctnktsd0u11p9tm.delivery.mycompany.net']) From 3e8ddca1e30aa9247361304f24f5afa685cb43db Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Tue, 5 Apr 2022 11:36:35 -0400 Subject: [PATCH 037/115] Update release workflow to on dispatch and add notes about releasing --- .github/workflows/gempush.yml | 29 ------------------------ .github/workflows/release.yml | 42 +++++++++++++++++++++++++++++++++++ README.md | 18 +++++++++++++++ 3 files changed, 60 insertions(+), 29 deletions(-) delete mode 100644 .github/workflows/gempush.yml create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/gempush.yml b/.github/workflows/gempush.yml deleted file mode 100644 index 0d8a445..0000000 --- a/.github/workflows/gempush.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Ruby Gem - -on: - push: - tags: - - 'v*.*.*' - -jobs: - build: - name: Build + Publish - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - name: Set up Ruby 2.6 - uses: actions/setup-ruby@v1 - with: - version: 2.6.x - - - name: Publish to RubyGems - run: | - mkdir -p $HOME/.gem - touch $HOME/.gem/credentials - chmod 0600 $HOME/.gem/credentials - printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials - gem build *.gemspec - gem push *.gem - env: - GEM_HOST_API_KEY: ${{secrets.RUBYGEMS_AUTH_TOKEN}} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..273a263 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,42 @@ +name: Release + +on: workflow_dispatch + +jobs: + release: + name: Build + Publish + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Get Version + id: gv + run: | + echo "::set-output name=ver::$(grep VERSION lib/vmfloaty/version.rb |rev |cut -d "'" -f2 |rev)" + + - name: Tag Release + uses: ncipollo/release-action@v1 + with: + tag: ${{ steps.gv.outputs.ver }} + token: ${{ secrets.GITHUB_TOKEN }} + draft: false + prerelease: false + generateReleaseNotes: true + + - name: Set up Ruby 2.7 + uses: actions/setup-ruby@v1 + with: + version: 2.7.x + + - name: Build gem + run: gem build *.gemspec + + - name: Publish gem + run: | + mkdir -p $HOME/.gem + touch $HOME/.gem/credentials + chmod 0600 $HOME/.gem/credentials + printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials + gem push *.gem + env: + GEM_HOST_API_KEY: ${{secrets.RUBYGEMS_AUTH_TOKEN}} diff --git a/README.md b/README.md index 4c60f87..15ec356 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,9 @@ A CLI helper tool for [Puppet's VMPooler](https://github.com/puppetlabs/vmpooler - [VMPooler API](#vmpooler-api) - [Using the Pooler class](#using-the-pooler-class) - [Example Projects](#example-projects) +- [Contributing](#contributing) + - [Code Reviews](#code-reviews) +- [Releasing](#releasing) - [Special thanks](#special-thanks) ## Install @@ -164,6 +167,21 @@ vmfloaty providers a `Pooler` class that gives users the ability to make request - [Brian Cain: vagrant-vmpooler](https://github.com/briancain/vagrant-vmpooler) - Use Vagrant to manage your vmpooler instances +## Contributing + +PR's are welcome! We always love to see how others think this tool can be made better. + +### Code Reviews + +Please wait for multiple code owners to sign off on any notable change. + +## Releasing + +Releasing is a two step process: + +1. Submit a release prep PR that updates `lib/vmfloaty/version.rb` to the desired new version and get that merged +2. Navigate to --> Run workflow --> select "main" branch --> Run workflow. This will publish a GitHub release, build, and push the gem to RubyGems. + ## Special thanks Special thanks to [Brian Cain](https://github.com/briancain) as he is the original author of vmfloaty! Vast amounts of this code exist thanks to his efforts. From 667dacbcea90d956e73ad2181b271ab5761db34c Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 4 Apr 2022 08:57:23 -0400 Subject: [PATCH 038/115] Add ondemand flag and api v2 support to `floaty ssh` --- lib/vmfloaty.rb | 2 +- lib/vmfloaty/service.rb | 4 +- lib/vmfloaty/ssh.rb | 36 +++++++++---- spec/vmfloaty/ssh_spec.rb | 107 ++++++++++++++++++++++++++++++-------- 4 files changed, 115 insertions(+), 34 deletions(-) diff --git a/lib/vmfloaty.rb b/lib/vmfloaty.rb index 237632b..3c6bbec 100644 --- a/lib/vmfloaty.rb +++ b/lib/vmfloaty.rb @@ -484,7 +484,7 @@ class Vmfloaty FloatyLogger.info "Can't ssh to multiple hosts; Using #{host_os} only..." if args.length > 1 - service.ssh(verbose, host_os, use_token) + service.ssh(verbose, host_os, use_token, options.ondemand) exit 0 end end diff --git a/lib/vmfloaty/service.rb b/lib/vmfloaty/service.rb index 05904a1..a9e59ba 100644 --- a/lib/vmfloaty/service.rb +++ b/lib/vmfloaty/service.rb @@ -87,7 +87,7 @@ class Service @service_object.wait_for_request verbose, requestid, url end - def ssh(verbose, host_os, use_token = true) + def ssh(verbose, host_os, use_token = true, ondemand = nil) token_value = nil if use_token begin @@ -97,7 +97,7 @@ class Service FloatyLogger.info 'Could not get token... requesting vm without a token anyway...' end end - Ssh.ssh(verbose, self, host_os, token_value) + Ssh.ssh(verbose, self, host_os, token_value, ondemand) end def query(verbose, hostname) diff --git a/lib/vmfloaty/ssh.rb b/lib/vmfloaty/ssh.rb index f100b8b..582adea 100644 --- a/lib/vmfloaty/ssh.rb +++ b/lib/vmfloaty/ssh.rb @@ -14,27 +14,45 @@ class Ssh nil end - def self.command_string(verbose, service, host_os, use_token) + def self.command_string(verbose, service, host_os, use_token, ondemand = nil) ssh_path = which('ssh') raise 'Could not determine path to ssh' unless ssh_path - - os_types = {} + os_types = Utils.generate_os_hash([host_os]) os_types[host_os] = 1 - response = service.retrieve(verbose, os_types, use_token) + response = service.retrieve(verbose, os_types, use_token, ondemand) raise "Could not get vm from #{service.type}:\n #{response}" unless response['ok'] user = /win/.match?(host_os) ? 'Administrator' : 'root' - hostname = response[host_os]['hostname'] - hostname = response[host_os]['hostname'][0] if response[host_os]['hostname'].is_a?(Array) - hostname = "#{hostname}.#{response['domain']}" unless hostname.end_with?('puppetlabs.net') + if ondemand + requestid = response['request_id'] + service.wait_for_request(verbose, requestid) + hosts = service.check_ondemandvm(verbose, requestid, service.url) + if hosts['domain'].nil? + hostname = hosts[host_os]['hostname'] + hostname = hosts[host_os]['hostname'][0] if hosts[host_os]['hostname'].is_a?(Array) + else + # Provides backwards compatibility with VMPooler API v1 + hostname = "#{hosts[host_os]['hostname']}.#{hosts['domain']}" + hostname = "#{hosts[host_os]['hostname'][0]}.#{hosts['domain']}" if hosts[host_os]['hostname'].is_a?(Array) + end + else + if response['domain'].nil? + hostname = response[host_os]['hostname'] + hostname = response[host_os]['hostname'][0] if response[host_os]['hostname'].is_a?(Array) + else + # Provides backwards compatibility with VMPooler API v1 + hostname = "#{response[host_os]['hostname']}.#{response['domain']}" + hostname = "#{response[host_os]['hostname'][0]}.#{response['domain']}" if response[host_os]['hostname'].is_a?(Array) + end + end "#{ssh_path} #{user}@#{hostname}" end - def self.ssh(verbose, service, host_os, use_token) - cmd = command_string(verbose, service, host_os, use_token) + def self.ssh(verbose, service, host_os, use_token, ondemand) + cmd = command_string(verbose, service, host_os, use_token, ondemand) # TODO: Should this respect more ssh settings? Can it be configured # by users ssh config and does this respect those settings? Kernel.exec(cmd) diff --git a/spec/vmfloaty/ssh_spec.rb b/spec/vmfloaty/ssh_spec.rb index c16bb30..ec5fd4e 100644 --- a/spec/vmfloaty/ssh_spec.rb +++ b/spec/vmfloaty/ssh_spec.rb @@ -4,24 +4,35 @@ require 'spec_helper' require 'vmfloaty/ssh' class ServiceStub - def retrieve(_verbose, os_types, _use_token) + def retrieve(_verbose, os_types, _use_token, ondemand) if os_types.keys[0] == 'abs_host_string' return { os_types.keys[0] => { 'hostname' => ['abs-hostname.delivery.puppetlabs.net'] }, 'ok' => true } - end - { - os_types.keys[0] => { 'hostname' => 'vmpooler-hostname' }, - 'domain' => 'delivery.puppetlabs.net', - 'ok' => true - } + elsif os_types.keys[0] == 'vmpooler_api_v2_host_string' + return { + os_types.keys[0] => { 'hostname' => ['vmpooler-v2-hostname.delivery.puppetlabs.net'] }, + 'ok' => true + } + + else + return { + os_types.keys[0] => { 'hostname' => 'vmpooler-v1-hostname' }, + 'domain' => 'delivery.puppetlabs.net', + 'ok' => true + } + end end def type return 'abs' if os_types == 'abs_host_string' - return 'vmpooler' if os_types == 'vmpooler_host_string' + return 'vmpooler' if os_types == 'vmpooler_api_v1_host_string' || os_types == 'vmpooler_api_v2_host_string' + end + + def wait_for_request(verbose, requestid) + return true end end @@ -29,21 +40,73 @@ describe Ssh do before :each do end - it 'gets a hostname string for abs' do - verbose = false - service = ServiceStub.new - host_os = 'abs_host_string' - use_token = false - cmd = Ssh.command_string(verbose, service, host_os, use_token) - expect(cmd).to match(/ssh root@abs-hostname.delivery.puppetlabs.net/) + context "for pooled requests" do + it 'gets a hostname string for abs' do + verbose = false + service = ServiceStub.new + host_os = 'abs_host_string' + use_token = false + cmd = Ssh.command_string(verbose, service, host_os, use_token) + expect(cmd).to match(/ssh root@abs-hostname.delivery.puppetlabs.net/) + end + + it 'gets a hostname string for vmpooler api v1' do + verbose = true + service = ServiceStub.new + host_os = 'vmpooler_api_v1_host_string' + use_token = false + cmd = Ssh.command_string(verbose, service, host_os, use_token) + expect(cmd).to match(/ssh root@vmpooler-v1-hostname.delivery.puppetlabs.net/) + end + + it 'gets a hostname string for vmpooler api v2' do + verbose = false + service = ServiceStub.new + host_os = 'vmpooler_api_v2_host_string' + use_token = false + cmd = Ssh.command_string(verbose, service, host_os, use_token) + expect(cmd).to match(/ssh root@vmpooler-v2-hostname.delivery.puppetlabs.net/) + end end - it 'gets a hostname string for vmpooler' do - verbose = false - service = ServiceStub.new - host_os = 'vmpooler_host_string' - use_token = false - cmd = Ssh.command_string(verbose, service, host_os, use_token) - expect(cmd).to match(/ssh root@vmpooler-hostname.delivery.puppetlabs.net/) + context "for ondemand requests" do + let(:service) { ServiceStub.new } + let(:url) { 'http://pooler.example.com' } + + it 'gets a hostname string for abs' do + verbose = false + host_os = 'abs_host_string' + use_token = false + ondemand = true + response = {'abs_host_string' => { 'hostname' => ['abs-hostname.delivery.puppetlabs.net']}} + allow(service).to receive(:url) + allow(service).to receive(:check_ondemandvm).and_return(response) + cmd = Ssh.command_string(verbose, service, host_os, use_token, ondemand) + expect(cmd).to match(/ssh root@abs-hostname.delivery.puppetlabs.net/) + end + + it 'gets a hostname string for abs' do + verbose = false + host_os = 'vmpooler_api_v1_host_string' + use_token = false + ondemand = true + response = {'vmpooler_api_v1_host_string' => { 'hostname' => ['vmpooler_api_v1_host_string.delivery.puppetlabs.net']}} + allow(service).to receive(:url) + allow(service).to receive(:check_ondemandvm).and_return(response) + cmd = Ssh.command_string(verbose, service, host_os, use_token, ondemand) + expect(cmd).to match(/ssh root@vmpooler_api_v1_host_string.delivery.puppetlabs.net/) + end + + it 'gets a hostname string for abs' do + verbose = false + host_os = 'vmpooler_api_v2_host_string' + use_token = false + ondemand = true + response = {'vmpooler_api_v2_host_string' => { 'hostname' => ['vmpooler_api_v2_host_string.delivery.puppetlabs.net']}} + allow(service).to receive(:url) + allow(service).to receive(:check_ondemandvm).and_return(response) + cmd = Ssh.command_string(verbose, service, host_os, use_token, ondemand) + expect(cmd).to match(/ssh root@vmpooler_api_v2_host_string.delivery.puppetlabs.net/) + end end end From f74fe222451709735b161ecd02c37cfe5fd06b23 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Tue, 5 Apr 2022 11:51:23 -0400 Subject: [PATCH 039/115] v1.7.0 release prep Includes the following PRs since the last release: - https://github.com/puppetlabs/vmfloaty/pull/157 - https://github.com/puppetlabs/vmfloaty/pull/160 - https://github.com/puppetlabs/vmfloaty/pull/159 - https://github.com/puppetlabs/vmfloaty/pull/155 - https://github.com/puppetlabs/vmfloaty/pull/152 - https://github.com/puppetlabs/vmfloaty/pull/158 --- lib/vmfloaty/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/vmfloaty/version.rb b/lib/vmfloaty/version.rb index 119c4c5..28c2a9f 100644 --- a/lib/vmfloaty/version.rb +++ b/lib/vmfloaty/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true class Vmfloaty - VERSION = '1.6.0' + VERSION = '1.7.0' end From 14c160c2bce24783a3d2b3826d19f2deb2524f3a Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 8 Aug 2022 14:36:32 -0400 Subject: [PATCH 040/115] Add release-engineering to codeowners --- CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index a478baf..1fd1dac 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,3 +1,3 @@ # Set the default code owners -* @puppetlabs/dio +* @puppetlabs/dio @puppetlabs/release-engineering From a93bc246492d34bdd2af8a5d5384bd2ddee3b7b4 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 15 Aug 2022 17:04:57 -0400 Subject: [PATCH 041/115] Add Snyk action --- .github/workflows/snyk.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 .github/workflows/snyk.yml diff --git a/.github/workflows/snyk.yml b/.github/workflows/snyk.yml new file mode 100644 index 0000000..b9158e1 --- /dev/null +++ b/.github/workflows/snyk.yml @@ -0,0 +1,25 @@ +name: Snyk Scan + +on: + workflow_dispatch: + push: + branches: + - main + +jobs: + security: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: 2.7 + - name: Bundle Install + run: bundle install + - name: Run Snyk to check for vulnerabilities + uses: snyk/actions/ruby@master + env: + SNYK_TOKEN: ${{ secrets.SNYK_RE_KEY }} + with: + command: monitor From 594544ea67ff8ff9c92ef6f0f74b0124aaed1ff3 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Fri, 26 Aug 2022 09:30:51 -0400 Subject: [PATCH 042/115] Move codeowners from DIO to RE --- CODEOWNERS | 2 +- vmfloaty.gemspec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index 1fd1dac..e8dffe5 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,3 +1,3 @@ # Set the default code owners -* @puppetlabs/dio @puppetlabs/release-engineering +* @puppetlabs/release-engineering diff --git a/vmfloaty.gemspec b/vmfloaty.gemspec index b8abec1..184247b 100644 --- a/vmfloaty.gemspec +++ b/vmfloaty.gemspec @@ -10,7 +10,7 @@ Gem::Specification.new do |s| 'Brian Cain', 'Puppet' ] - s.email = 'dio-gems@puppet.com' + s.email = 'info@puppet.com' s.license = 'Apache-2.0' s.homepage = 'https://github.com/puppetlabs/vmfloaty' s.description = 'A helper tool for vmpooler to help you stay afloat' From cda848d2147248ddffb8eaffd84f12c1976d7f40 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Thu, 19 Jan 2023 19:23:14 -0500 Subject: [PATCH 043/115] Change dependabot to weekly --- .github/dependabot.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index c8f8016..81e0069 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -3,6 +3,5 @@ updates: - package-ecosystem: bundler directory: "/" schedule: - interval: daily - time: "13:00" + interval: weekly open-pull-requests-limit: 10 From 6f35d0b16b1983d38326e3d2794a8593cf368900 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Thu, 19 Jan 2023 19:26:29 -0500 Subject: [PATCH 044/115] Migrate Snyk to Mend Scanning --- .github/workflows/security.yml | 39 ++++++++++++++++++++++++++++++++++ .github/workflows/snyk.yml | 25 ---------------------- 2 files changed, 39 insertions(+), 25 deletions(-) create mode 100644 .github/workflows/security.yml delete mode 100644 .github/workflows/snyk.yml diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml new file mode 100644 index 0000000..666c602 --- /dev/null +++ b/.github/workflows/security.yml @@ -0,0 +1,39 @@ +name: Security +on: + workflow_dispatch: + push: + branches: + - main + +jobs: + scan: + name: Mend Scanning + runs-on: ubuntu-latest + steps: + - name: checkout repo content + uses: actions/checkout@v3 + with: + fetch-depth: 1 + - name: setup ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: 2.7 + # setup a package lock if one doesn't exist, otherwise do nothing + - name: check lock + run: '[ -f "Gemfile.lock" ] && echo "package lock file exists, skipping" || bundle lock' + # install java + - uses: actions/setup-java@v3 + with: + distribution: 'temurin' # See 'Supported distributions' for available options + java-version: '17' + # download mend + - name: download_mend + run: curl -o wss-unified-agent.jar https://unified-agent.s3.amazonaws.com/wss-unified-agent.jar + - name: run mend + run: java -jar wss-unified-agent.jar + env: + WS_APIKEY: ${{ secrets.MEND_API_KEY }} + WS_WSS_URL: https://saas-eu.whitesourcesoftware.com/agent + WS_USERKEY: ${{ secrets.MEND_TOKEN }} + WS_PRODUCTNAME: RE + WS_PROJECTNAME: ${{ github.event.repository.name }} diff --git a/.github/workflows/snyk.yml b/.github/workflows/snyk.yml deleted file mode 100644 index b9158e1..0000000 --- a/.github/workflows/snyk.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Snyk Scan - -on: - workflow_dispatch: - push: - branches: - - main - -jobs: - security: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Setup Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: 2.7 - - name: Bundle Install - run: bundle install - - name: Run Snyk to check for vulnerabilities - uses: snyk/actions/ruby@master - env: - SNYK_TOKEN: ${{ secrets.SNYK_RE_KEY }} - with: - command: monitor From d5d87ed54ae59d75415c693bcdbd6a737eebc3ce Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 20 Mar 2023 14:00:17 -0400 Subject: [PATCH 045/115] Fix `floaty list --active` for vmpooler api v2 --- lib/vmfloaty/utils.rb | 9 ++++- spec/vmfloaty/utils_spec.rb | 68 ++++++++++++++++++++++++++++++++++++- 2 files changed, 75 insertions(+), 2 deletions(-) diff --git a/lib/vmfloaty/utils.rb b/lib/vmfloaty/utils.rb index 39c97a3..b393acf 100644 --- a/lib/vmfloaty/utils.rb +++ b/lib/vmfloaty/utils.rb @@ -150,7 +150,14 @@ class Utils tag_pairs = host_data['tags'].map { |key, value| "#{key}: #{value}" } unless host_data['tags'].nil? duration = "#{host_data['running']}/#{host_data['lifetime']} hours" metadata = [host_data['state'], host_data['template'], duration, *tag_pairs] - message = "- #{hostname}.#{host_data['domain']} (#{metadata.join(', ')})".gsub(/^/, ' ' * indent) + # For backwards compatibility with vmpooler api v1 + message = + if host_data['domain'] + "- #{hostname}.#{host_data['domain']} (#{metadata.join(', ')})".gsub(/^/, ' ' * indent) + else + "- #{host_data['fqdn']} (#{metadata.join(', ')})".gsub(/^/, ' ' * indent) + end + if host_data['state'] && host_data['state'] == 'destroyed' output_target.puts "- DESTROYED #{hostname}.#{host_data['domain']}".gsub(/^/, ' ' * indent) else diff --git a/spec/vmfloaty/utils_spec.rb b/spec/vmfloaty/utils_spec.rb index 0994107..37d2537 100644 --- a/spec/vmfloaty/utils_spec.rb +++ b/spec/vmfloaty/utils_spec.rb @@ -280,7 +280,73 @@ describe Utils do subject { Utils.pretty_print_hosts(verbose, service, hostname, print_to_stderr) } - describe 'with vmpooler service' do + describe 'with vmpooler api v2 service' do + let(:service) { Service.new(MockOptions.new, 'url' => url) } + + let(:hostname) { 'mcpy42eqjxli9g2' } + let(:fqdn) { [hostname, 'delivery.puppetlabs.net'].join('.') } + + let(:response_body) do + { + hostname => { + 'template' => 'ubuntu-1604-x86_64', + 'lifetime' => 12, + 'running' => 9.66, + 'state' => 'running', + 'ip' => '127.0.0.1', + 'fqdn' => fqdn + } + } + end + + let(:default_output) { "- #{fqdn} (running, ubuntu-1604-x86_64, 9.66/12 hours)" } + + it 'prints output with host fqdn, template and duration info' do + expect($stdout).to receive(:puts).with(default_output) + + subject + end + + context 'when tags are supplied' do + let(:hostname) { 'aiydvzpg23r415q' } + let(:response_body) do + { + hostname => { + 'template' => 'redhat-7-x86_64', + 'lifetime' => 48, + 'running' => 7.67, + 'state' => 'running', + 'tags' => { + 'user' => 'bob', + 'role' => 'agent' + }, + 'ip' => '127.0.0.1', + 'fqdn' => fqdn + } + } + end + + it 'prints output with host fqdn, template, duration info, and tags' do + output = "- #{fqdn} (running, redhat-7-x86_64, 7.67/48 hours, user: bob, role: agent)" + + expect($stdout).to receive(:puts).with(output) + + subject + end + end + + context 'when print_to_stderr option is true' do + let(:print_to_stderr) { true } + + it 'outputs to stderr instead of stdout' do + expect($stderr).to receive(:puts).with(default_output) + + subject + end + end + end + + describe 'with vmpooler api v1 service' do let(:service) { Service.new(MockOptions.new, 'url' => url) } let(:hostname) { 'mcpy42eqjxli9g2' } From e65a1dad3b08e34d22f1219998a1b11f172994aa Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 20 Mar 2023 14:11:04 -0400 Subject: [PATCH 046/115] Update test workflow names, action tags, and add ruby 3.2 --- .github/workflows/{ci.yml => test.yml} | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) rename .github/workflows/{ci.yml => test.yml} (85%) diff --git a/.github/workflows/ci.yml b/.github/workflows/test.yml similarity index 85% rename from .github/workflows/ci.yml rename to .github/workflows/test.yml index eadf380..4b9576f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/test.yml @@ -5,7 +5,7 @@ # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby -name: CI +name: Test on: pull_request: @@ -13,8 +13,7 @@ on: - main jobs: - test: - + spec: runs-on: ubuntu-latest strategy: matrix: @@ -22,9 +21,10 @@ jobs: - '2.7' - '3.0' - '3.1' + - '3.2' steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up Ruby # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby, # change this to (see https://github.com/ruby/setup-ruby#versioning): @@ -36,18 +36,19 @@ jobs: - name: Run tests run: bundle exec rake spec - name: Coveralls - uses: coverallsapp/github-action@master + uses: coverallsapp/github-action@v2 with: github-token: ${{ secrets.GITHUB_TOKEN }} flag-name: run-${{ matrix.ruby-version }} parallel: true finish: - needs: test + needs: spec + if: ${{ always() }} runs-on: ubuntu-latest steps: - name: Coveralls Finished - uses: coverallsapp/github-action@master + uses: coverallsapp/github-action@v2 with: github-token: ${{ secrets.github_token }} - parallel-finished: true \ No newline at end of file + parallel-finished: true From d50e903167d94178824e798321d7d7c058c137de Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 20 Mar 2023 14:15:39 -0400 Subject: [PATCH 047/115] Dependabot scan for actions updates --- .github/dependabot.yml | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 81e0069..1afdd73 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,7 +1,13 @@ version: 2 updates: -- package-ecosystem: bundler - directory: "/" - schedule: - interval: weekly - open-pull-requests-limit: 10 + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + open-pull-requests-limit: 10 + + - package-ecosystem: bundler + directory: "/" + schedule: + interval: weekly + open-pull-requests-limit: 10 From dba1215db4cb8267607acd9a7b4da0ffcb6c48a6 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 20 Mar 2023 14:33:15 -0400 Subject: [PATCH 048/115] Use Dockerfile for publishing an image --- .dockerignore | 3 --- Dockerfile | 25 +++++++++++++++++++++---- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/.dockerignore b/.dockerignore index 6174523..eaf3712 100644 --- a/.dockerignore +++ b/.dockerignore @@ -3,10 +3,7 @@ **/*.md **/*example **/Dockerfile* -Gemfile.lock -Rakefile coverage -spec examples scripts vendor diff --git a/Dockerfile b/Dockerfile index a38235d..700e7bf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,23 @@ -FROM ruby:3.1.1-slim-buster +FROM ruby:3.1.3-slim-bullseye -COPY ./ ./ +LABEL org.opencontainers.image.authors="@puppetlabs/release-engineering" +LABEL org.opencontainers.image.title="vmfloaty" +LABEL org.opencontainers.image.source=https://github.com/puppetlabs/vmfloaty +LABEL org.opencontainers.image.description="A CLI helper tool for VMPooler" -RUN apt-get update && apt-get install -y less -RUN gem install bundler && bundle install && gem build vmfloaty.gemspec && gem install vmfloaty*.gem +RUN apt-get update -qq && apt-get install -y build-essential less make openssh-client + +RUN groupadd --gid 1000 floatygroup \ + && useradd --uid 1000 --gid 1000 -m floatyuser + +USER floatyuser + +WORKDIR /home/floatyuser/app +COPY --chown=floatyuser:floatygroup . . + +RUN gem install bundler \ + && bundle install \ + && gem build vmfloaty.gemspec \ + && gem install vmfloaty*.gem + +ENTRYPOINT [ "floaty" ] From 9fdbb4acb9a8b94b1590f6db5d6d92c0488464e4 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 20 Mar 2023 14:35:42 -0400 Subject: [PATCH 049/115] Update workflow to check changelog, add release notes and docker push --- .github/workflows/release.yml | 98 +++++++++++++++++++++++++++++++---- 1 file changed, 87 insertions(+), 11 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 273a263..39b43e3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,32 +1,108 @@ -name: Release +name: Tag Release & Push Gem & Docker on: workflow_dispatch +permissions: + contents: write + issues: read + pull-requests: read + packages: write + jobs: release: - name: Build + Publish + name: Validate Docs, Tag, and Docker Push runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - name: Get Version - id: gv - run: | - echo "::set-output name=ver::$(grep VERSION lib/vmfloaty/version.rb |rev |cut -d "'" -f2 |rev)" + - name: Checkout code + uses: actions/checkout@v3 + with: + ref: ${{ github.ref }} + clean: true + fetch-depth: 0 + + - name: Get New Version + id: nv + run: | + version=$(grep VERSION lib/vmfloaty/version.rb |rev |cut -d "'" -f2 |rev) + echo "version=$version" >> $GITHUB_OUTPUT + echo "Found version $version from lib/vmfloaty/version.rb" + + - name: Get Current Version + uses: actions/github-script@v6 + id: cv + with: + script: | + const { data: response } = await github.rest.repos.getLatestRelease({ + owner: context.repo.owner, + repo: context.repo.repo, + }) + console.log(`The latest release is ${response.tag_name}`) + return response.tag_name + result-encoding: string + + - 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 output=$(git status --porcelain) && [ ! -z "$output" ]; 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 './release-prep ${{ steps.nv.outputs.version }}'" + exit 1 + fi + + - name: Generate Release Notes + uses: docker://githubchangeloggenerator/github-changelog-generator:1.16.2 + with: + args: >- + --since-tag ${{ steps.cv.outputs.result }} + --future-release ${{ steps.nv.outputs.version }} + --output release-notes.md + env: + CHANGELOG_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Tag Release uses: ncipollo/release-action@v1 with: - tag: ${{ steps.gv.outputs.ver }} + tag: ${{ steps.nv.outputs.version }} token: ${{ secrets.GITHUB_TOKEN }} + bodyfile: release-notes.md draft: false prerelease: false - generateReleaseNotes: true - - name: Set up Ruby 2.7 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v4 + with: + push: true + tags: | + ghcr.io/${{ github.repository }}:${{ steps.nv.outputs.version }} + ghcr.io/${{ github.repository }}:latest + + - name: Set up Ruby 3.2 uses: actions/setup-ruby@v1 with: - version: 2.7.x + version: 3.2.x - name: Build gem run: gem build *.gemspec From 68843c1ecf0acfa29a64e99ba187df96e36504fe Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 20 Mar 2023 14:35:54 -0400 Subject: [PATCH 050/115] Add changelog --- .github_changelog_generator | 3 + CHANGELOG.md | 312 ++++++++++++++++++++++++++++++++++++ 2 files changed, 315 insertions(+) create mode 100644 .github_changelog_generator create mode 100644 CHANGELOG.md diff --git a/.github_changelog_generator b/.github_changelog_generator new file mode 100644 index 0000000..02a0c7c --- /dev/null +++ b/.github_changelog_generator @@ -0,0 +1,3 @@ +project=vmfloaty +user=puppetlabs +exclude_labels=maintenance diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..fa063ee --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,312 @@ +# Changelog + +## [Unreleased](https://github.com/puppetlabs/vmfloaty/tree/HEAD) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/1.7.0...HEAD) + +**Merged pull requests:** + +- \(RE-15111\) Migrate Synk to Mend [\#168](https://github.com/puppetlabs/vmfloaty/pull/168) ([yachub](https://github.com/yachub)) +- \(RE-14811\) Move codeowners from DIO to RE [\#165](https://github.com/puppetlabs/vmfloaty/pull/165) ([yachub](https://github.com/yachub)) +- Add Snyk action and Move to RE org [\#164](https://github.com/puppetlabs/vmfloaty/pull/164) ([yachub](https://github.com/yachub)) +- Add release-engineering to codeowners [\#163](https://github.com/puppetlabs/vmfloaty/pull/163) ([yachub](https://github.com/yachub)) + +## [1.7.0](https://github.com/puppetlabs/vmfloaty/tree/1.7.0) (2022-04-05) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/v1.6.0...1.7.0) + +**Implemented enhancements:** + +- \(maint\) Add Ruby 3.1 to test matrix + dockerfile and drop EOL Ruby 2.6 [\#159](https://github.com/puppetlabs/vmfloaty/pull/159) ([yachub](https://github.com/yachub)) +- \(DIO-3101\) Add VMPooler API v2 Support [\#158](https://github.com/puppetlabs/vmfloaty/pull/158) ([yachub](https://github.com/yachub)) + +**Fixed bugs:** + +- \(maint\) Remove colorize usage from `floaty status` [\#160](https://github.com/puppetlabs/vmfloaty/pull/160) ([yachub](https://github.com/yachub)) + +**Merged pull requests:** + +- v1.7.0 release prep [\#162](https://github.com/puppetlabs/vmfloaty/pull/162) ([yachub](https://github.com/yachub)) +- \(maint\) removing previous maintainers [\#157](https://github.com/puppetlabs/vmfloaty/pull/157) ([binford2k](https://github.com/binford2k)) +- Update rspec requirement from ~\> 3.10.0 to ~\> 3.11.0 [\#155](https://github.com/puppetlabs/vmfloaty/pull/155) ([dependabot[bot]](https://github.com/apps/dependabot)) +- Docs on contributing and releasing [\#152](https://github.com/puppetlabs/vmfloaty/pull/152) ([genebean](https://github.com/genebean)) + +## [v1.6.0](https://github.com/puppetlabs/vmfloaty/tree/v1.6.0) (2022-02-16) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/v1.5.0...v1.6.0) + +**Merged pull requests:** + +- \(DIO-2700\) Vmfloaty should not use the Colorize gem [\#156](https://github.com/puppetlabs/vmfloaty/pull/156) ([sbeaulie](https://github.com/sbeaulie)) +- \(maint\) Fix up nspooler list active bug [\#154](https://github.com/puppetlabs/vmfloaty/pull/154) ([cthorn42](https://github.com/cthorn42)) +- Minor cleanup to the readme [\#151](https://github.com/puppetlabs/vmfloaty/pull/151) ([genebean](https://github.com/genebean)) +- Release prep for 1.5.0 [\#150](https://github.com/puppetlabs/vmfloaty/pull/150) ([genebean](https://github.com/genebean)) + +## [v1.5.0](https://github.com/puppetlabs/vmfloaty/tree/v1.5.0) (2021-10-12) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/v1.4.0...v1.5.0) + +**Merged pull requests:** + +- DIO 2412- Ondemand and Priority flag added to SSH command [\#149](https://github.com/puppetlabs/vmfloaty/pull/149) ([tanisha-payne](https://github.com/tanisha-payne)) +- \(DIO-2135\) Update docker FROM image to ruby 3.0.2 [\#148](https://github.com/puppetlabs/vmfloaty/pull/148) ([sbeaulie](https://github.com/sbeaulie)) +- Migrate CI to GitHub Actions [\#147](https://github.com/puppetlabs/vmfloaty/pull/147) ([genebean](https://github.com/genebean)) +- v1.4.0 release prep [\#146](https://github.com/puppetlabs/vmfloaty/pull/146) ([genebean](https://github.com/genebean)) + +## [v1.4.0](https://github.com/puppetlabs/vmfloaty/tree/v1.4.0) (2021-07-16) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/v1.3.0...v1.4.0) + +**Merged pull requests:** + +- \(maint\) Use latest Faraday/webmock, update specs [\#145](https://github.com/puppetlabs/vmfloaty/pull/145) ([nmburgan](https://github.com/nmburgan)) +- Update commander requirement from \>= 4.4.3, \< 4.6.0 to \>= 4.4.3, \< 4.7.0 [\#140](https://github.com/puppetlabs/vmfloaty/pull/140) ([dependabot[bot]](https://github.com/apps/dependabot)) +- Release prep for v1.3.0 [\#137](https://github.com/puppetlabs/vmfloaty/pull/137) ([sbeaulie](https://github.com/sbeaulie)) +- Run the rubocop auto\_correct [\#135](https://github.com/puppetlabs/vmfloaty/pull/135) ([sbeaulie](https://github.com/sbeaulie)) + +## [v1.3.0](https://github.com/puppetlabs/vmfloaty/tree/v1.3.0) (2021-03-03) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/v1.2.0...v1.3.0) + +**Merged pull requests:** + +- \(DIO-1522\) Show the VM state \(running, destroyed\) and colorize in red… [\#134](https://github.com/puppetlabs/vmfloaty/pull/134) ([sbeaulie](https://github.com/sbeaulie)) +- Release prep for 1.2.0 [\#132](https://github.com/puppetlabs/vmfloaty/pull/132) ([genebean](https://github.com/genebean)) +- Update rubocop requirement from ~\> 0.52 to ~\> 1.6 [\#124](https://github.com/puppetlabs/vmfloaty/pull/124) ([dependabot[bot]](https://github.com/apps/dependabot)) + +## [v1.2.0](https://github.com/puppetlabs/vmfloaty/tree/v1.2.0) (2021-02-11) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/v1.1.1...v1.2.0) + +**Merged pull requests:** + +- \(DIO-908\) Floaty can now report the status of ABS requests [\#131](https://github.com/puppetlabs/vmfloaty/pull/131) ([sbeaulie](https://github.com/sbeaulie)) +- Update rspec requirement from ~\> 3.9.0 to ~\> 3.10.0 [\#116](https://github.com/puppetlabs/vmfloaty/pull/116) ([dependabot[bot]](https://github.com/apps/dependabot)) + +## [v1.1.1](https://github.com/puppetlabs/vmfloaty/tree/v1.1.1) (2020-10-16) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/v1.1.0...v1.1.1) + +**Merged pull requests:** + +- V1.1.1 [\#112](https://github.com/puppetlabs/vmfloaty/pull/112) ([sbeaulie](https://github.com/sbeaulie)) + +## [v1.1.0](https://github.com/puppetlabs/vmfloaty/tree/v1.1.0) (2020-10-09) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/v1.0.0...v1.1.0) + +**Merged pull requests:** + +- \(maint\) Add more uniqueness to jobid and useful termination message [\#107](https://github.com/puppetlabs/vmfloaty/pull/107) ([sbeaulie](https://github.com/sbeaulie)) +- \(maint\) Fix bug with detecting ABS service [\#106](https://github.com/puppetlabs/vmfloaty/pull/106) ([sbeaulie](https://github.com/sbeaulie)) +- \(maint\) Don't require config file for list --active [\#105](https://github.com/puppetlabs/vmfloaty/pull/105) ([sbeaulie](https://github.com/sbeaulie)) +- \(maint\) Don't require configuration file for get [\#104](https://github.com/puppetlabs/vmfloaty/pull/104) ([nwolfe](https://github.com/nwolfe)) +- \(maint\) Add vmpooler\_fallback to the get service check [\#103](https://github.com/puppetlabs/vmfloaty/pull/103) ([cthorn42](https://github.com/cthorn42)) +- Update completion scripts for `service` subcommands [\#102](https://github.com/puppetlabs/vmfloaty/pull/102) ([scotje](https://github.com/scotje)) +- Bump to version 1.0.0 [\#100](https://github.com/puppetlabs/vmfloaty/pull/100) ([genebean](https://github.com/genebean)) + +## [v1.0.0](https://github.com/puppetlabs/vmfloaty/tree/v1.0.0) (2020-09-22) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/0.11.1...v1.0.0) + +**Merged pull requests:** + +- \(maint\) Fix for ABS PR\#306 that includes json responses [\#99](https://github.com/puppetlabs/vmfloaty/pull/99) ([sbeaulie](https://github.com/sbeaulie)) +- \(maint\) Support any vmpooler for ABS via vmpooler\_fallback [\#98](https://github.com/puppetlabs/vmfloaty/pull/98) ([sbeaulie](https://github.com/sbeaulie)) +- \(DIO-991\) Add service command [\#97](https://github.com/puppetlabs/vmfloaty/pull/97) ([genebean](https://github.com/genebean)) +- \( DIO-911\) Include job\_id in ABS --json output [\#96](https://github.com/puppetlabs/vmfloaty/pull/96) ([sbeaulie](https://github.com/sbeaulie)) +- ABS enables fallback to vmpooler for some scenarios [\#94](https://github.com/puppetlabs/vmfloaty/pull/94) ([sbeaulie](https://github.com/sbeaulie)) +- WIP \(DIO-911\) Include job\_id in ABS --json output [\#92](https://github.com/puppetlabs/vmfloaty/pull/92) ([nwolfe](https://github.com/nwolfe)) +- \(maint\) Remove warning about missing configuration file [\#91](https://github.com/puppetlabs/vmfloaty/pull/91) ([nwolfe](https://github.com/nwolfe)) +- Add tab completion script for zsh and fix bash completion for ABS services [\#90](https://github.com/puppetlabs/vmfloaty/pull/90) ([scotje](https://github.com/scotje)) + +## [0.11.1](https://github.com/puppetlabs/vmfloaty/tree/0.11.1) (2020-08-20) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/0.10.0...0.11.1) + +**Merged pull requests:** + +- Update version for 0.11.1 release [\#89](https://github.com/puppetlabs/vmfloaty/pull/89) ([mattkirby](https://github.com/mattkirby)) +- \(maint\) Fix using ABS service without a .vmfloaty.yml file [\#88](https://github.com/puppetlabs/vmfloaty/pull/88) ([cthorn42](https://github.com/cthorn42)) +- Fix the argument list for nonstandardpooler [\#87](https://github.com/puppetlabs/vmfloaty/pull/87) ([jarretlavallee](https://github.com/jarretlavallee)) +- Json output for delete/list + better ABS error handling [\#86](https://github.com/puppetlabs/vmfloaty/pull/86) ([mcdonaldseanp](https://github.com/mcdonaldseanp)) +- Bump version for 0.11.0 release [\#85](https://github.com/puppetlabs/vmfloaty/pull/85) ([mattkirby](https://github.com/mattkirby)) +- Print all non-success output to STDERR [\#84](https://github.com/puppetlabs/vmfloaty/pull/84) ([austb](https://github.com/austb)) +- Update travis.yml [\#83](https://github.com/puppetlabs/vmfloaty/pull/83) ([rooneyshuman](https://github.com/rooneyshuman)) +- Bump version to 0.10.0 for release [\#82](https://github.com/puppetlabs/vmfloaty/pull/82) ([mattkirby](https://github.com/mattkirby)) + +## [0.10.0](https://github.com/puppetlabs/vmfloaty/tree/0.10.0) (2020-08-04) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/v0.9.2-retag-for-gh-actions-for-real...0.10.0) + +**Merged pull requests:** + +- Update Dependabot config file [\#78](https://github.com/puppetlabs/vmfloaty/pull/78) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Update rspec requirement from ~\> 3.5.0 to ~\> 3.9.0 [\#75](https://github.com/puppetlabs/vmfloaty/pull/75) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Update commander requirement from ~\> 4.4.3 to \>= 4.4.3, \< 4.6.0 [\#73](https://github.com/puppetlabs/vmfloaty/pull/73) ([dependabot-preview[bot]](https://github.com/apps/dependabot-preview)) +- Fix formatting of CODEOWNERS [\#71](https://github.com/puppetlabs/vmfloaty/pull/71) ([genebean](https://github.com/genebean)) +- Add Dependabot and Coveralls [\#70](https://github.com/puppetlabs/vmfloaty/pull/70) ([genebean](https://github.com/genebean)) +- Update docs [\#69](https://github.com/puppetlabs/vmfloaty/pull/69) ([genebean](https://github.com/genebean)) +- Remove old maintainer note [\#68](https://github.com/puppetlabs/vmfloaty/pull/68) ([briancain](https://github.com/briancain)) +- Add support for vmpooler on demand provisioning [\#67](https://github.com/puppetlabs/vmfloaty/pull/67) ([mattkirby](https://github.com/mattkirby)) + +## [v0.9.2-retag-for-gh-actions-for-real](https://github.com/puppetlabs/vmfloaty/tree/v0.9.2-retag-for-gh-actions-for-real) (2020-02-05) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/v0.9.2...v0.9.2-retag-for-gh-actions-for-real) + +**Merged pull requests:** + +- Update gempush action to remove GPR publish [\#66](https://github.com/puppetlabs/vmfloaty/pull/66) ([highb](https://github.com/highb)) + +## [v0.9.2](https://github.com/puppetlabs/vmfloaty/tree/v0.9.2) (2020-02-05) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/v0.9.2-retag-for-gh-actions...v0.9.2) + +## [v0.9.2-retag-for-gh-actions](https://github.com/puppetlabs/vmfloaty/tree/v0.9.2-retag-for-gh-actions) (2020-02-05) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/v0.9.0...v0.9.2-retag-for-gh-actions) + +**Merged pull requests:** + +- Bump version.rb to 0.9.2 for release [\#65](https://github.com/puppetlabs/vmfloaty/pull/65) ([highb](https://github.com/highb)) +- Create gempush.yml Github Action [\#64](https://github.com/puppetlabs/vmfloaty/pull/64) ([highb](https://github.com/highb)) +- Bump faraday dependency for Ruby 2.7 compatibility [\#62](https://github.com/puppetlabs/vmfloaty/pull/62) ([nicklewis](https://github.com/nicklewis)) +- SSH Command respects ABS now and tests should fail if the API changes… [\#61](https://github.com/puppetlabs/vmfloaty/pull/61) ([mikkergimenez](https://github.com/mikkergimenez)) +- \(QENG-7604\) Add support for Job IDs to ABS delete [\#60](https://github.com/puppetlabs/vmfloaty/pull/60) ([highb](https://github.com/highb)) +- Bump version.rb to 0.9.1 [\#59](https://github.com/puppetlabs/vmfloaty/pull/59) ([highb](https://github.com/highb)) +- Fix error with delete command for vmpooler and nspooler [\#58](https://github.com/puppetlabs/vmfloaty/pull/58) ([mikkergimenez](https://github.com/mikkergimenez)) + +## [v0.9.0](https://github.com/puppetlabs/vmfloaty/tree/v0.9.0) (2019-12-17) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/v0.8.2...v0.9.0) + +**Implemented enhancements:** + +- Add abs vm get [\#53](https://github.com/puppetlabs/vmfloaty/pull/53) ([mikkergimenez](https://github.com/mikkergimenez)) + +**Fixed bugs:** + +- vmfloaty reports an error on latest API version output [\#48](https://github.com/puppetlabs/vmfloaty/issues/48) + +**Merged pull requests:** + +- ABS will sometimes return null values in the /status/queue endpoint [\#57](https://github.com/puppetlabs/vmfloaty/pull/57) ([mikkergimenez](https://github.com/mikkergimenez)) +- Minor version bump to 0.9.0 [\#56](https://github.com/puppetlabs/vmfloaty/pull/56) ([highb](https://github.com/highb)) +- Update pooler provider to throw an exception if the API returns non-OK [\#55](https://github.com/puppetlabs/vmfloaty/pull/55) ([highb](https://github.com/highb)) +- Update Faraday to 0.15, remove unnecessary headers [\#54](https://github.com/puppetlabs/vmfloaty/pull/54) ([highb](https://github.com/highb)) +- change urls in docs to use example.net/.com [\#50](https://github.com/puppetlabs/vmfloaty/pull/50) ([steveax](https://github.com/steveax)) +- Rubocop cleanup [\#49](https://github.com/puppetlabs/vmfloaty/pull/49) ([rodjek](https://github.com/rodjek)) + +## [v0.8.2](https://github.com/puppetlabs/vmfloaty/tree/v0.8.2) (2018-01-05) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/v0.8.1...v0.8.2) + +**Merged pull requests:** + +- 🎂🎂🎂 Add --json option for `floaty get` [\#47](https://github.com/puppetlabs/vmfloaty/pull/47) ([nicklewis](https://github.com/nicklewis)) + +## [v0.8.1](https://github.com/puppetlabs/vmfloaty/tree/v0.8.1) (2017-10-24) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/v0.8.0...v0.8.1) + +**Merged pull requests:** + +- Bump commander version to clear up deprecation warnings [\#46](https://github.com/puppetlabs/vmfloaty/pull/46) ([highb](https://github.com/highb)) + +## [v0.8.0](https://github.com/puppetlabs/vmfloaty/tree/v0.8.0) (2017-10-13) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/v0.7.9...v0.8.0) + +**Closed issues:** + +- don't automatically call system pager for help screens [\#20](https://github.com/puppetlabs/vmfloaty/issues/20) + +**Merged pull requests:** + +- Add configuration for multiple pooler services and integration with nspooler [\#45](https://github.com/puppetlabs/vmfloaty/pull/45) ([caseywilliams](https://github.com/caseywilliams)) + +## [v0.7.9](https://github.com/puppetlabs/vmfloaty/tree/v0.7.9) (2017-07-31) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/v0.7.8...v0.7.9) + +**Closed issues:** + +- Handle when vmfloaty cannot reach vmpooler [\#39](https://github.com/puppetlabs/vmfloaty/issues/39) + +**Merged pull requests:** + +- Add basic bash completion script and framework for others [\#44](https://github.com/puppetlabs/vmfloaty/pull/44) ([scotje](https://github.com/scotje)) +- Developersdevelopersdevelopers [\#43](https://github.com/puppetlabs/vmfloaty/pull/43) ([mckern](https://github.com/mckern)) + +## [v0.7.8](https://github.com/puppetlabs/vmfloaty/tree/v0.7.8) (2016-12-20) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/v0.7.7...v0.7.8) + +## [v0.7.7](https://github.com/puppetlabs/vmfloaty/tree/v0.7.7) (2016-12-14) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/v0.7.6...v0.7.7) + +## [v0.7.6](https://github.com/puppetlabs/vmfloaty/tree/v0.7.6) (2016-12-09) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/v0.7.5...v0.7.6) + +**Closed issues:** + +- Improve the help text for floaty commands [\#41](https://github.com/puppetlabs/vmfloaty/issues/41) +- Require force flag for pool requests larger than 5? [\#40](https://github.com/puppetlabs/vmfloaty/issues/40) + +## [v0.7.5](https://github.com/puppetlabs/vmfloaty/tree/v0.7.5) (2016-12-06) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/1f86113243eb2e898b21c29892c05477e3487d2d...v0.7.5) + +**Implemented enhancements:** + +- Improve how to specify number of vms in get request [\#8](https://github.com/puppetlabs/vmfloaty/issues/8) +- Improve output from commands [\#3](https://github.com/puppetlabs/vmfloaty/issues/3) + +**Fixed bugs:** + +- floaty snapshot fails to authenticate [\#4](https://github.com/puppetlabs/vmfloaty/issues/4) + +**Closed issues:** + +- floaty snapshot should warn users about how long it takes to get snapshot [\#37](https://github.com/puppetlabs/vmfloaty/issues/37) +- floaty modify should allow to make changes on more than one machine [\#36](https://github.com/puppetlabs/vmfloaty/issues/36) +- Pooler.modify raises exception if Token is nil [\#34](https://github.com/puppetlabs/vmfloaty/issues/34) +- Improve error handling in Pooler and Auth classes [\#33](https://github.com/puppetlabs/vmfloaty/issues/33) +- Handle vmpooler responses when token is invalid in Pooler class [\#32](https://github.com/puppetlabs/vmfloaty/issues/32) +- Misuse of 'floaty revert ...' seems to create a new snapshot [\#31](https://github.com/puppetlabs/vmfloaty/issues/31) +- Test [\#30](https://github.com/puppetlabs/vmfloaty/issues/30) +- Don't system exit in Auth class [\#29](https://github.com/puppetlabs/vmfloaty/issues/29) +- Add flag to auto-ssh into a newly created \(single\) VM [\#28](https://github.com/puppetlabs/vmfloaty/issues/28) +- Handle vmpooler URL key that doesn't have 'https' [\#27](https://github.com/puppetlabs/vmfloaty/issues/27) +- Abstract vmfloaty cli related errors to command class rather than pooler class [\#26](https://github.com/puppetlabs/vmfloaty/issues/26) +- Don't puts results in `delete` method in Pooler library [\#25](https://github.com/puppetlabs/vmfloaty/issues/25) +- Improve `get` output [\#24](https://github.com/puppetlabs/vmfloaty/issues/24) +- specs don't work [\#22](https://github.com/puppetlabs/vmfloaty/issues/22) +- Add ability to get additional disk space for a running vm [\#19](https://github.com/puppetlabs/vmfloaty/issues/19) +- Have a force option for `delete --all` [\#17](https://github.com/puppetlabs/vmfloaty/issues/17) +- Stop printing json response in library methods [\#14](https://github.com/puppetlabs/vmfloaty/issues/14) +- Stop system exiting in library methods [\#13](https://github.com/puppetlabs/vmfloaty/issues/13) +- List active vms for a given token [\#12](https://github.com/puppetlabs/vmfloaty/issues/12) +- Provide a way to clean up vms obtained by a token [\#11](https://github.com/puppetlabs/vmfloaty/issues/11) +- Allow spaces when passing in vms for commands [\#10](https://github.com/puppetlabs/vmfloaty/issues/10) +- Write Tests for Pooler class [\#9](https://github.com/puppetlabs/vmfloaty/issues/9) +- Document all valid config file keys [\#7](https://github.com/puppetlabs/vmfloaty/issues/7) +- Write up simple "introduction" to using the tool [\#6](https://github.com/puppetlabs/vmfloaty/issues/6) +- Document how to use Pooler class for ruby scripts [\#5](https://github.com/puppetlabs/vmfloaty/issues/5) +- Convert vmfloaty to use latest pooler API [\#1](https://github.com/puppetlabs/vmfloaty/issues/1) + +**Merged pull requests:** + +- Show the status of pools with `floaty status` [\#38](https://github.com/puppetlabs/vmfloaty/pull/38) ([nicklewis](https://github.com/nicklewis)) +- Show tag values in `list --active` [\#23](https://github.com/puppetlabs/vmfloaty/pull/23) ([justinstoller](https://github.com/justinstoller)) +- \(\#19\) Update vmfloaty to expect /api/v1 in URL for disk endpoint [\#21](https://github.com/puppetlabs/vmfloaty/pull/21) ([briancain](https://github.com/briancain)) +- \(\#17\) Add a force option for delete --all [\#18](https://github.com/puppetlabs/vmfloaty/pull/18) ([briancain](https://github.com/briancain)) +- \(\#12\) List active vms for a given token [\#16](https://github.com/puppetlabs/vmfloaty/pull/16) ([briancain](https://github.com/briancain)) +- Cleanup vmfloaty library and command processor [\#15](https://github.com/puppetlabs/vmfloaty/pull/15) ([briancain](https://github.com/briancain)) +- \(\#1\) Update with commander [\#2](https://github.com/puppetlabs/vmfloaty/pull/2) ([briancain](https://github.com/briancain)) + + + +\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* From 4ab4d511f70b38bb3bb6180855e1d00e99f3aaf9 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 20 Mar 2023 14:58:31 -0400 Subject: [PATCH 051/115] Add release instructions and reference docker image --- README.md | 53 ++++++++++++++++++++++++++++++++-------------------- release-prep | 12 ++++++++++++ 2 files changed, 45 insertions(+), 20 deletions(-) create mode 100755 release-prep diff --git a/README.md b/README.md index 15ec356..2aa2d31 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,48 @@ # vmfloaty [![Gem Version](https://badge.fury.io/rb/vmfloaty.svg)](https://badge.fury.io/rb/vmfloaty) -[![CI](https://github.com/puppetlabs/vmfloaty/actions/workflows/ci.yml/badge.svg)](https://github.com/puppetlabs/vmfloaty/actions/workflows/ci.yml) +[![Test](https://github.com/puppetlabs/vmfloaty/actions/workflows/test.yml/badge.svg)](https://github.com/puppetlabs/vmfloaty/actions/workflows/test.yml) A CLI helper tool for [Puppet's VMPooler](https://github.com/puppetlabs/vmpooler) to help you stay afloat. ![float image](float.jpg) -- [Install](#install) -- [Usage](#usage) - - [Example workflow](#example-workflow) - - [vmfloaty dotfile](#vmfloaty-dotfile) - - [Basic configuration](#basic-configuration) - - [Using multiple services](#using-multiple-services) - - [Using backends besides VMPooler](#using-backends-besides-vmpooler) - - [Valid config keys](#valid-config-keys) - - [Tab Completion](#tab-completion) -- [VMPooler API](#vmpooler-api) -- [Using the Pooler class](#using-the-pooler-class) - - [Example Projects](#example-projects) -- [Contributing](#contributing) - - [Code Reviews](#code-reviews) -- [Releasing](#releasing) -- [Special thanks](#special-thanks) +- [vmfloaty](#vmfloaty) + - [Install](#install) + - [Ruby](#ruby) + - [Docker](#docker) + - [Usage](#usage) + - [Example workflow](#example-workflow) + - [vmfloaty dotfile](#vmfloaty-dotfile) + - [Basic configuration](#basic-configuration) + - [Using multiple services](#using-multiple-services) + - [Using backends besides VMPooler](#using-backends-besides-vmpooler) + - [Valid config keys](#valid-config-keys) + - [Tab Completion](#tab-completion) + - [VMPooler API](#vmpooler-api) + - [Using the Pooler class](#using-the-pooler-class) + - [Example Projects](#example-projects) + - [Contributing](#contributing) + - [Code Reviews](#code-reviews) + - [Releasing](#releasing) + - [Special thanks](#special-thanks) ## Install +### Ruby + Grab the latest from ruby gems... ```bash gem install vmfloaty ``` +### Docker + +Run the docker image: + +`docker run -it --rm -v ~/.vmfloaty.yml:/home/floatyuser/.vmfloaty.yml ghcr.io/puppetlabs/vmfloaty --help` + ## Usage ```plain @@ -177,10 +188,12 @@ Please wait for multiple code owners to sign off on any notable change. ## Releasing -Releasing is a two step process: +Follow these steps to publish a new GitHub release, build and push the gem to , and build and push a Docker Image to GitHub Container Registry: -1. Submit a release prep PR that updates `lib/vmfloaty/version.rb` to the desired new version and get that merged -2. Navigate to --> Run workflow --> select "main" branch --> Run workflow. This will publish a GitHub release, build, and push the gem to RubyGems. +1. Bump the "VERSION" in `lib/vmpooler/version.rb` appropriately based on changes in `CHANGELOG.md` since the last release. +2. Run `./release-prep` to update `Gemfile.lock` if necessary and `CHANGELOG.md`. +3. Commit and push changes to a new branch, then open a pull request against `main` and be sure to add the "maintenance" label. +4. After the pull request is approved and merged, then navigate to --> Run workflow --> select "main" branch --> Run workflow. This will publish a GitHub release, build and push the gem to RubyGems, and build and push a Docker Image to GitHub Container Registry. ## Special thanks diff --git a/release-prep b/release-prep new file mode 100755 index 0000000..d5bbb83 --- /dev/null +++ b/release-prep @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +# bundle install +docker run -it --rm \ + -v $(pwd):/app \ + $(grep ^FROM ./Dockerfile |cut -d ' ' -f2) \ + /bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends build-essential make openssh-client && cd /app && gem install bundler && bundle install --jobs 3; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"' + +# Update Changelog +docker run -it --rm -e CHANGELOG_GITHUB_TOKEN -v $(pwd):/usr/local/src/your-app \ + githubchangeloggenerator/github-changelog-generator:1.16.2 \ + github_changelog_generator --future-release $(grep VERSION lib/vmfloaty/version.rb |rev |cut -d "'" -f2 |rev) From 9b669f6acaf720b7c067a7f77a714b3b629d7ea0 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 20 Mar 2023 15:20:21 -0400 Subject: [PATCH 052/115] Add Gemfile.lock --- .gitignore | 1 - Gemfile.lock | 118 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 Gemfile.lock diff --git a/.gitignore b/.gitignore index 1351382..76a21bc 100644 --- a/.gitignore +++ b/.gitignore @@ -29,7 +29,6 @@ build/ # for a library or gem, you might want to ignore these files since the code is # intended to run in multiple environments; otherwise, check them in: -Gemfile.lock .ruby-version .ruby-gemset diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..45dfa5b --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,118 @@ +PATH + remote: . + specs: + vmfloaty (1.7.0) + commander (>= 4.4.3, < 4.7.0) + faraday (~> 1.5, >= 1.5.1) + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.1) + public_suffix (>= 2.0.2, < 6.0) + ast (2.4.2) + coderay (1.1.3) + commander (4.6.0) + highline (~> 2.0.0) + crack (0.4.5) + rexml + diff-lcs (1.5.0) + docile (1.4.0) + faraday (1.10.3) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-httpclient (~> 1.0) + faraday-multipart (~> 1.0) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.0) + faraday-patron (~> 1.0) + faraday-rack (~> 1.0) + faraday-retry (~> 1.0) + ruby2_keywords (>= 0.0.4) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-httpclient (1.0.1) + faraday-multipart (1.0.4) + multipart-post (~> 2) + faraday-net_http (1.0.1) + faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) + faraday-rack (1.0.0) + faraday-retry (1.0.3) + hashdiff (1.0.1) + highline (2.0.3) + json (2.6.3) + method_source (1.0.0) + multipart-post (2.3.0) + parallel (1.22.1) + parser (3.2.1.1) + ast (~> 2.4.1) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + public_suffix (5.0.1) + rainbow (3.1.1) + rake (13.0.6) + rb-readline (0.5.5) + regexp_parser (2.7.0) + rexml (3.2.5) + rspec (3.11.0) + rspec-core (~> 3.11.0) + rspec-expectations (~> 3.11.0) + rspec-mocks (~> 3.11.0) + rspec-core (3.11.0) + rspec-support (~> 3.11.0) + rspec-expectations (3.11.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.11.0) + rspec-mocks (3.11.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.11.0) + rspec-support (3.11.1) + rubocop (1.48.1) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.26.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.27.0) + parser (>= 3.2.1.0) + ruby-progressbar (1.13.0) + ruby2_keywords (0.0.5) + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + simplecov-html (0.12.3) + simplecov-lcov (0.8.0) + simplecov_json_formatter (0.1.4) + unicode-display_width (2.4.2) + webmock (3.18.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + pry + rake + rb-readline + rspec (~> 3.11.0) + rubocop (~> 1.6) + simplecov (~> 0.21.2) + simplecov-html (~> 0.12.3) + simplecov-lcov (~> 0.8.0) + vmfloaty! + webmock (~> 3.13) + +BUNDLED WITH + 2.4.8 From f327e5d5eefd24b2127c0c812c60c2b0a6b7d791 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Tue, 21 Mar 2023 08:27:51 -0400 Subject: [PATCH 053/115] 1.8.0 release prep --- CHANGELOG.md | 12 ++++++++++-- Gemfile.lock | 2 +- README.md | 4 ++-- lib/vmfloaty/version.rb | 2 +- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fa063ee..51d6c56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,16 @@ # Changelog -## [Unreleased](https://github.com/puppetlabs/vmfloaty/tree/HEAD) +## [1.8.0](https://github.com/puppetlabs/vmfloaty/tree/1.8.0) (2023-03-21) -[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/1.7.0...HEAD) +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/1.7.0...1.8.0) + +**Implemented enhancements:** + +- Docker, Actions, and Docs Updates [\#170](https://github.com/puppetlabs/vmfloaty/pull/170) ([yachub](https://github.com/yachub)) + +**Fixed bugs:** + +- Fix `floaty list --active` for vmpooler api v2 [\#169](https://github.com/puppetlabs/vmfloaty/pull/169) ([yachub](https://github.com/yachub)) **Merged pull requests:** diff --git a/Gemfile.lock b/Gemfile.lock index 45dfa5b..b68d4e0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - vmfloaty (1.7.0) + vmfloaty (1.8.0) commander (>= 4.4.3, < 4.7.0) faraday (~> 1.5, >= 1.5.1) diff --git a/README.md b/README.md index 2aa2d31..dfc22f9 100644 --- a/README.md +++ b/README.md @@ -190,8 +190,8 @@ Please wait for multiple code owners to sign off on any notable change. Follow these steps to publish a new GitHub release, build and push the gem to , and build and push a Docker Image to GitHub Container Registry: -1. Bump the "VERSION" in `lib/vmpooler/version.rb` appropriately based on changes in `CHANGELOG.md` since the last release. -2. Run `./release-prep` to update `Gemfile.lock` if necessary and `CHANGELOG.md`. +1. Bump the "VERSION" in `lib/vmfloaty/version.rb` appropriately based on changes in `CHANGELOG.md` since the last release. +2. Run `./release-prep` to update `Gemfile.lock` and `CHANGELOG.md`. 3. Commit and push changes to a new branch, then open a pull request against `main` and be sure to add the "maintenance" label. 4. After the pull request is approved and merged, then navigate to --> Run workflow --> select "main" branch --> Run workflow. This will publish a GitHub release, build and push the gem to RubyGems, and build and push a Docker Image to GitHub Container Registry. diff --git a/lib/vmfloaty/version.rb b/lib/vmfloaty/version.rb index 28c2a9f..941f623 100644 --- a/lib/vmfloaty/version.rb +++ b/lib/vmfloaty/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true class Vmfloaty - VERSION = '1.7.0' + VERSION = '1.8.0' end From 56757d6cb4c634ed898e682da7efc372923694e8 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Tue, 21 Mar 2023 14:17:16 -0400 Subject: [PATCH 054/115] Fix release workflow indentation --- .github/workflows/release.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 39b43e3..5c10569 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,18 +15,18 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v3 - with: - ref: ${{ github.ref }} - clean: true - fetch-depth: 0 + uses: actions/checkout@v3 + with: + ref: ${{ github.ref }} + clean: true + fetch-depth: 0 - name: Get New Version - id: nv - run: | - version=$(grep VERSION lib/vmfloaty/version.rb |rev |cut -d "'" -f2 |rev) - echo "version=$version" >> $GITHUB_OUTPUT - echo "Found version $version from lib/vmfloaty/version.rb" + id: nv + run: | + version=$(grep VERSION lib/vmfloaty/version.rb |rev |cut -d "'" -f2 |rev) + echo "version=$version" >> $GITHUB_OUTPUT + echo "Found version $version from lib/vmfloaty/version.rb" - name: Get Current Version uses: actions/github-script@v6 From 2adf27a7e0c35923d74334770eea73caf6baba79 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Apr 2023 09:56:45 +0000 Subject: [PATCH 055/115] Bump rubocop from 1.48.1 to 1.49.0 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.48.1 to 1.49.0. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.48.1...v1.49.0) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Gemfile b/Gemfile index acc82eb..90161b9 100644 --- a/Gemfile +++ b/Gemfile @@ -13,6 +13,6 @@ group :test do gem 'pry' gem 'rb-readline' gem 'rspec', '~> 3.11.0' - gem 'rubocop', '~> 1.6' + gem 'rubocop', '~> 1.49' gem 'webmock', '~> 3.13' end diff --git a/Gemfile.lock b/Gemfile.lock index b68d4e0..3edc041 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -47,7 +47,7 @@ GEM method_source (1.0.0) multipart-post (2.3.0) parallel (1.22.1) - parser (3.2.1.1) + parser (3.2.2.0) ast (~> 2.4.1) pry (0.14.2) coderay (~> 1.1) @@ -71,17 +71,17 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.11.0) rspec-support (3.11.1) - rubocop (1.48.1) + rubocop (1.49.0) json (~> 2.3) parallel (~> 1.10) parser (>= 3.2.0.0) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml (>= 3.2.5, < 4.0) - rubocop-ast (>= 1.26.0, < 2.0) + rubocop-ast (>= 1.28.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.27.0) + rubocop-ast (1.28.0) parser (>= 3.2.1.0) ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) @@ -107,7 +107,7 @@ DEPENDENCIES rake rb-readline rspec (~> 3.11.0) - rubocop (~> 1.6) + rubocop (~> 1.49) simplecov (~> 0.21.2) simplecov-html (~> 0.12.3) simplecov-lcov (~> 0.8.0) From 9de7ef163581f7b721d03714650fb2d4e12ac0c3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Apr 2023 12:38:12 +0000 Subject: [PATCH 056/115] Update simplecov requirement from ~> 0.21.2 to ~> 0.22.0 Updates the requirements on [simplecov](https://github.com/simplecov-ruby/simplecov) to permit the latest version. - [Release notes](https://github.com/simplecov-ruby/simplecov/releases) - [Changelog](https://github.com/simplecov-ruby/simplecov/blob/main/CHANGELOG.md) - [Commits](https://github.com/simplecov-ruby/simplecov/compare/v0.21.2...v0.22.0) --- updated-dependencies: - dependency-name: simplecov dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 90161b9..3a6dae6 100644 --- a/Gemfile +++ b/Gemfile @@ -7,7 +7,7 @@ gemspec gem 'rake', require: false group :test do - gem 'simplecov', '~> 0.21.2' + gem 'simplecov', '~> 0.22.0' gem 'simplecov-html', '~> 0.12.3' gem 'simplecov-lcov', '~> 0.8.0' gem 'pry' diff --git a/Gemfile.lock b/Gemfile.lock index 3edc041..ac84115 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -85,7 +85,7 @@ GEM parser (>= 3.2.1.0) ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) - simplecov (0.21.2) + simplecov (0.22.0) docile (~> 1.1) simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) @@ -108,7 +108,7 @@ DEPENDENCIES rb-readline rspec (~> 3.11.0) rubocop (~> 1.49) - simplecov (~> 0.21.2) + simplecov (~> 0.22.0) simplecov-html (~> 0.12.3) simplecov-lcov (~> 0.8.0) vmfloaty! From 5b7b3e69f3e7e6cb80a9c3294d7a9d522d58ceaa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Apr 2023 13:08:53 +0000 Subject: [PATCH 057/115] Update rspec requirement from ~> 3.11.0 to ~> 3.12.0 Updates the requirements on [rspec](https://github.com/rspec/rspec-metagem) to permit the latest version. - [Release notes](https://github.com/rspec/rspec-metagem/releases) - [Commits](https://github.com/rspec/rspec-metagem/compare/v3.11.0...v3.12.0) --- updated-dependencies: - dependency-name: rspec dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Gemfile b/Gemfile index 3a6dae6..6c042d1 100644 --- a/Gemfile +++ b/Gemfile @@ -12,7 +12,7 @@ group :test do gem 'simplecov-lcov', '~> 0.8.0' gem 'pry' gem 'rb-readline' - gem 'rspec', '~> 3.11.0' + gem 'rspec', '~> 3.12.0' gem 'rubocop', '~> 1.49' gem 'webmock', '~> 3.13' end diff --git a/Gemfile.lock b/Gemfile.lock index ac84115..71f8f50 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -58,19 +58,19 @@ GEM rb-readline (0.5.5) regexp_parser (2.7.0) rexml (3.2.5) - rspec (3.11.0) - rspec-core (~> 3.11.0) - rspec-expectations (~> 3.11.0) - rspec-mocks (~> 3.11.0) - rspec-core (3.11.0) - rspec-support (~> 3.11.0) - rspec-expectations (3.11.1) + rspec (3.12.0) + rspec-core (~> 3.12.0) + rspec-expectations (~> 3.12.0) + rspec-mocks (~> 3.12.0) + rspec-core (3.12.1) + rspec-support (~> 3.12.0) + rspec-expectations (3.12.2) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.11.0) - rspec-mocks (3.11.2) + rspec-support (~> 3.12.0) + rspec-mocks (3.12.5) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.11.0) - rspec-support (3.11.1) + rspec-support (~> 3.12.0) + rspec-support (3.12.0) rubocop (1.49.0) json (~> 2.3) parallel (~> 1.10) @@ -106,7 +106,7 @@ DEPENDENCIES pry rake rb-readline - rspec (~> 3.11.0) + rspec (~> 3.12.0) rubocop (~> 1.49) simplecov (~> 0.22.0) simplecov-html (~> 0.12.3) From 6b6bf539ccf5f25458ccbed61c274312d4d0e1d1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Apr 2023 09:56:44 +0000 Subject: [PATCH 058/115] Bump rubocop from 1.49.0 to 1.50.2 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.49.0 to 1.50.2. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.49.0...v1.50.2) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 6c042d1..c473eb6 100644 --- a/Gemfile +++ b/Gemfile @@ -13,6 +13,6 @@ group :test do gem 'pry' gem 'rb-readline' gem 'rspec', '~> 3.12.0' - gem 'rubocop', '~> 1.49' + gem 'rubocop', '~> 1.50' gem 'webmock', '~> 3.13' end diff --git a/Gemfile.lock b/Gemfile.lock index 71f8f50..f5c23ce 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -71,7 +71,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) rspec-support (3.12.0) - rubocop (1.49.0) + rubocop (1.50.2) json (~> 2.3) parallel (~> 1.10) parser (>= 3.2.0.0) @@ -107,7 +107,7 @@ DEPENDENCIES rake rb-readline rspec (~> 3.12.0) - rubocop (~> 1.49) + rubocop (~> 1.50) simplecov (~> 0.22.0) simplecov-html (~> 0.12.3) simplecov-lcov (~> 0.8.0) From 6fa018d0b1470636b575f084b6db4d514960b181 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Thu, 20 Apr 2023 08:52:58 -0400 Subject: [PATCH 059/115] Migrate issue management to Jira --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index dfc22f9..92ff0b9 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,7 @@ A CLI helper tool for [Puppet's VMPooler](https://github.com/puppetlabs/vmpooler - [Example Projects](#example-projects) - [Contributing](#contributing) - [Code Reviews](#code-reviews) + - [Submitting Issues](#submitting-issues) - [Releasing](#releasing) - [Special thanks](#special-thanks) @@ -186,6 +187,10 @@ PR's are welcome! We always love to see how others think this tool can be made b Please wait for multiple code owners to sign off on any notable change. +## 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, build and push the gem to , and build and push a Docker Image to GitHub Container Registry: From ff6ee2ddd8646646aaaa10fb3365126aed574dd1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 May 2023 09:56:34 +0000 Subject: [PATCH 060/115] Bump rubocop from 1.50.2 to 1.51.0 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.50.2 to 1.51.0. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.50.2...v1.51.0) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Gemfile b/Gemfile index c473eb6..062a05f 100644 --- a/Gemfile +++ b/Gemfile @@ -13,6 +13,6 @@ group :test do gem 'pry' gem 'rb-readline' gem 'rspec', '~> 3.12.0' - gem 'rubocop', '~> 1.50' + gem 'rubocop', '~> 1.51' gem 'webmock', '~> 3.13' end diff --git a/Gemfile.lock b/Gemfile.lock index f5c23ce..c5d7065 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -46,8 +46,8 @@ GEM json (2.6.3) method_source (1.0.0) multipart-post (2.3.0) - parallel (1.22.1) - parser (3.2.2.0) + parallel (1.23.0) + parser (3.2.2.1) ast (~> 2.4.1) pry (0.14.2) coderay (~> 1.1) @@ -56,7 +56,7 @@ GEM rainbow (3.1.1) rake (13.0.6) rb-readline (0.5.5) - regexp_parser (2.7.0) + regexp_parser (2.8.0) rexml (3.2.5) rspec (3.12.0) rspec-core (~> 3.12.0) @@ -71,7 +71,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) rspec-support (3.12.0) - rubocop (1.50.2) + rubocop (1.51.0) json (~> 2.3) parallel (~> 1.10) parser (>= 3.2.0.0) @@ -81,7 +81,7 @@ GEM rubocop-ast (>= 1.28.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.28.0) + rubocop-ast (1.28.1) parser (>= 3.2.1.0) ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) @@ -107,7 +107,7 @@ DEPENDENCIES rake rb-readline rspec (~> 3.12.0) - rubocop (~> 1.50) + rubocop (~> 1.51) simplecov (~> 0.22.0) simplecov-html (~> 0.12.3) simplecov-lcov (~> 0.8.0) From 0d7119bb8a0d5648ef35779a581e2d9534c5bed2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Jun 2023 09:56:37 +0000 Subject: [PATCH 061/115] Bump rubocop from 1.51.0 to 1.52.0 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.51.0 to 1.52.0. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.51.0...v1.52.0) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index 062a05f..0c2b45f 100644 --- a/Gemfile +++ b/Gemfile @@ -13,6 +13,6 @@ group :test do gem 'pry' gem 'rb-readline' gem 'rspec', '~> 3.12.0' - gem 'rubocop', '~> 1.51' + gem 'rubocop', '~> 1.52' gem 'webmock', '~> 3.13' end diff --git a/Gemfile.lock b/Gemfile.lock index c5d7065..a466597 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -71,7 +71,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) rspec-support (3.12.0) - rubocop (1.51.0) + rubocop (1.52.0) json (~> 2.3) parallel (~> 1.10) parser (>= 3.2.0.0) @@ -81,7 +81,7 @@ GEM rubocop-ast (>= 1.28.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.28.1) + rubocop-ast (1.29.0) parser (>= 3.2.1.0) ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) @@ -107,7 +107,7 @@ DEPENDENCIES rake rb-readline rspec (~> 3.12.0) - rubocop (~> 1.51) + rubocop (~> 1.52) simplecov (~> 0.22.0) simplecov-html (~> 0.12.3) simplecov-lcov (~> 0.8.0) From 3702cc8c98af9a745be8082d423aa8b7771975de Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jul 2023 09:56:10 +0000 Subject: [PATCH 062/115] Bump rubocop from 1.52.0 to 1.54.2 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.52.0 to 1.54.2. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.52.0...v1.54.2) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Gemfile b/Gemfile index 0c2b45f..2d288e2 100644 --- a/Gemfile +++ b/Gemfile @@ -13,6 +13,6 @@ group :test do gem 'pry' gem 'rb-readline' gem 'rspec', '~> 3.12.0' - gem 'rubocop', '~> 1.52' + gem 'rubocop', '~> 1.54' gem 'webmock', '~> 3.13' end diff --git a/Gemfile.lock b/Gemfile.lock index a466597..4704632 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -44,19 +44,22 @@ GEM hashdiff (1.0.1) highline (2.0.3) json (2.6.3) + language_server-protocol (3.17.0.3) method_source (1.0.0) multipart-post (2.3.0) parallel (1.23.0) - parser (3.2.2.1) + parser (3.2.2.3) ast (~> 2.4.1) + racc pry (0.14.2) coderay (~> 1.1) method_source (~> 1.0) public_suffix (5.0.1) + racc (1.7.1) rainbow (3.1.1) rake (13.0.6) rb-readline (0.5.5) - regexp_parser (2.8.0) + regexp_parser (2.8.1) rexml (3.2.5) rspec (3.12.0) rspec-core (~> 3.12.0) @@ -71,10 +74,11 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) rspec-support (3.12.0) - rubocop (1.52.0) + rubocop (1.54.2) json (~> 2.3) + language_server-protocol (>= 3.17.0) parallel (~> 1.10) - parser (>= 3.2.0.0) + parser (>= 3.2.2.3) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml (>= 3.2.5, < 4.0) @@ -107,7 +111,7 @@ DEPENDENCIES rake rb-readline rspec (~> 3.12.0) - rubocop (~> 1.52) + rubocop (~> 1.54) simplecov (~> 0.22.0) simplecov-html (~> 0.12.3) simplecov-lcov (~> 0.8.0) From a4e006615ee09c877201ed5ac155177fa37ce4d3 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Thu, 20 Apr 2023 08:52:58 -0400 Subject: [PATCH 063/115] Revert "Migrate issue management to Jira" This reverts commit 6fa018d0b1470636b575f084b6db4d514960b181. --- README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/README.md b/README.md index 92ff0b9..dfc22f9 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,6 @@ A CLI helper tool for [Puppet's VMPooler](https://github.com/puppetlabs/vmpooler - [Example Projects](#example-projects) - [Contributing](#contributing) - [Code Reviews](#code-reviews) - - [Submitting Issues](#submitting-issues) - [Releasing](#releasing) - [Special thanks](#special-thanks) @@ -187,10 +186,6 @@ PR's are welcome! We always love to see how others think this tool can be made b Please wait for multiple code owners to sign off on any notable change. -## 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, build and push the gem to , and build and push a Docker Image to GitHub Container Registry: From 6b041f5c48d1f8809e68d763749b3fee421417fc Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 7 Aug 2023 11:31:37 -0400 Subject: [PATCH 064/115] Use relative path for pooler status and summary --- lib/vmfloaty/pooler.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/vmfloaty/pooler.rb b/lib/vmfloaty/pooler.rb index 855e604..9d47407 100644 --- a/lib/vmfloaty/pooler.rb +++ b/lib/vmfloaty/pooler.rb @@ -146,14 +146,14 @@ class Pooler def self.status(verbose, url) conn = Http.get_conn(verbose, url) - response = conn.get '/status' + response = conn.get 'status' JSON.parse(response.body) end def self.summary(verbose, url) conn = Http.get_conn(verbose, url) - response = conn.get '/summary' + response = conn.get 'summary' JSON.parse(response.body) end From 7b24c8136003d1792d647842db719c4f87560f26 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Aug 2023 17:59:07 +0000 Subject: [PATCH 065/115] Bump rubocop from 1.54.2 to 1.55.1 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.54.2 to 1.55.1. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.54.2...v1.55.1) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index 2d288e2..856b39c 100644 --- a/Gemfile +++ b/Gemfile @@ -13,6 +13,6 @@ group :test do gem 'pry' gem 'rb-readline' gem 'rspec', '~> 3.12.0' - gem 'rubocop', '~> 1.54' + gem 'rubocop', '~> 1.55' gem 'webmock', '~> 3.13' end diff --git a/Gemfile.lock b/Gemfile.lock index 4704632..31cedf0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -60,7 +60,7 @@ GEM rake (13.0.6) rb-readline (0.5.5) regexp_parser (2.8.1) - rexml (3.2.5) + rexml (3.2.6) rspec (3.12.0) rspec-core (~> 3.12.0) rspec-expectations (~> 3.12.0) @@ -74,7 +74,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) rspec-support (3.12.0) - rubocop (1.54.2) + rubocop (1.55.1) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) @@ -82,7 +82,7 @@ GEM rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml (>= 3.2.5, < 4.0) - rubocop-ast (>= 1.28.0, < 2.0) + rubocop-ast (>= 1.28.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) rubocop-ast (1.29.0) @@ -111,7 +111,7 @@ DEPENDENCIES rake rb-readline rspec (~> 3.12.0) - rubocop (~> 1.54) + rubocop (~> 1.55) simplecov (~> 0.22.0) simplecov-html (~> 0.12.3) simplecov-lcov (~> 0.8.0) From 8daf63665dc3bf730d56be5c790ca48139509b85 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 7 Aug 2023 16:11:06 -0400 Subject: [PATCH 066/115] Bump docker tag to latest used in test matrix --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 700e7bf..5c3a5e1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ruby:3.1.3-slim-bullseye +FROM ruby:3.2.2-slim-bullseye LABEL org.opencontainers.image.authors="@puppetlabs/release-engineering" LABEL org.opencontainers.image.title="vmfloaty" From 06127d7e67da78f17852b81c5edbde2d2923b4db Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 7 Aug 2023 16:13:19 -0400 Subject: [PATCH 067/115] 1.8.1 release prep --- CHANGELOG.md | 20 ++++++++++++++++++++ Gemfile.lock | 2 +- lib/vmfloaty/version.rb | 2 +- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 51d6c56..ff7c73f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,25 @@ # Changelog +## [1.8.1](https://github.com/puppetlabs/vmfloaty/tree/1.8.1) (2023-08-07) + +[Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/1.8.0...1.8.1) + +**Fixed bugs:** + +- status and summary broken for pooler service after v3 [\#185](https://github.com/puppetlabs/vmfloaty/issues/185) +- \(RE-15687\) Use relative path for pooler status and summary [\#186](https://github.com/puppetlabs/vmfloaty/pull/186) ([yachub](https://github.com/yachub)) + +**Merged pull requests:** + +- Bump rubocop from 1.54.2 to 1.55.1 [\#183](https://github.com/puppetlabs/vmfloaty/pull/183) ([dependabot[bot]](https://github.com/apps/dependabot)) +- Bump rubocop from 1.52.0 to 1.54.2 [\#182](https://github.com/puppetlabs/vmfloaty/pull/182) ([dependabot[bot]](https://github.com/apps/dependabot)) +- Bump rubocop from 1.51.0 to 1.52.0 [\#177](https://github.com/puppetlabs/vmfloaty/pull/177) ([dependabot[bot]](https://github.com/apps/dependabot)) +- Bump rubocop from 1.50.2 to 1.51.0 [\#176](https://github.com/puppetlabs/vmfloaty/pull/176) ([dependabot[bot]](https://github.com/apps/dependabot)) +- Bump rubocop from 1.49.0 to 1.50.2 [\#174](https://github.com/puppetlabs/vmfloaty/pull/174) ([dependabot[bot]](https://github.com/apps/dependabot)) +- Bump rubocop from 1.48.1 to 1.49.0 [\#173](https://github.com/puppetlabs/vmfloaty/pull/173) ([dependabot[bot]](https://github.com/apps/dependabot)) +- Update simplecov requirement from ~\> 0.21.2 to ~\> 0.22.0 [\#167](https://github.com/puppetlabs/vmfloaty/pull/167) ([dependabot[bot]](https://github.com/apps/dependabot)) +- Update rspec requirement from ~\> 3.11.0 to ~\> 3.12.0 [\#166](https://github.com/puppetlabs/vmfloaty/pull/166) ([dependabot[bot]](https://github.com/apps/dependabot)) + ## [1.8.0](https://github.com/puppetlabs/vmfloaty/tree/1.8.0) (2023-03-21) [Full Changelog](https://github.com/puppetlabs/vmfloaty/compare/1.7.0...1.8.0) diff --git a/Gemfile.lock b/Gemfile.lock index 31cedf0..11f156f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - vmfloaty (1.8.0) + vmfloaty (1.8.1) commander (>= 4.4.3, < 4.7.0) faraday (~> 1.5, >= 1.5.1) diff --git a/lib/vmfloaty/version.rb b/lib/vmfloaty/version.rb index 941f623..aab63a3 100644 --- a/lib/vmfloaty/version.rb +++ b/lib/vmfloaty/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true class Vmfloaty - VERSION = '1.8.0' + VERSION = '1.8.1' end From ebede7799d8227d400b68b1501e021ebdd05756d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Aug 2023 09:43:18 +0000 Subject: [PATCH 068/115] Bump rubocop from 1.55.1 to 1.56.0 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.55.1 to 1.56.0. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.55.1...v1.56.0) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 856b39c..f2b60cd 100644 --- a/Gemfile +++ b/Gemfile @@ -13,6 +13,6 @@ group :test do gem 'pry' gem 'rb-readline' gem 'rspec', '~> 3.12.0' - gem 'rubocop', '~> 1.55' + gem 'rubocop', '~> 1.56' gem 'webmock', '~> 3.13' end diff --git a/Gemfile.lock b/Gemfile.lock index 11f156f..ad6b40a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -11,6 +11,7 @@ GEM addressable (2.8.1) public_suffix (>= 2.0.2, < 6.0) ast (2.4.2) + base64 (0.1.1) coderay (1.1.3) commander (4.6.0) highline (~> 2.0.0) @@ -74,7 +75,8 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) rspec-support (3.12.0) - rubocop (1.55.1) + rubocop (1.56.0) + base64 (~> 0.1.1) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) @@ -111,7 +113,7 @@ DEPENDENCIES rake rb-readline rspec (~> 3.12.0) - rubocop (~> 1.55) + rubocop (~> 1.56) simplecov (~> 0.22.0) simplecov-html (~> 0.12.3) simplecov-lcov (~> 0.8.0) From 7f06fbd0bc31a6d9d4a88a207cba806475a6596f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Aug 2023 09:31:07 +0000 Subject: [PATCH 069/115] Bump rubocop from 1.56.0 to 1.56.1 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.56.0 to 1.56.1. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.56.0...v1.56.1) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index ad6b40a..2ed9f1c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -75,7 +75,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) rspec-support (3.12.0) - rubocop (1.56.0) + rubocop (1.56.1) base64 (~> 0.1.1) json (~> 2.3) language_server-protocol (>= 3.17.0) From 6afb47c6094c551bd3f29c87823eb585383795ad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Aug 2023 09:41:09 +0000 Subject: [PATCH 070/115] Bump webmock from 3.18.1 to 3.19.0 Bumps [webmock](https://github.com/bblimke/webmock) from 3.18.1 to 3.19.0. - [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md) - [Commits](https://github.com/bblimke/webmock/compare/v3.18.1...v3.19.0) --- updated-dependencies: - dependency-name: webmock dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index f2b60cd..1193321 100644 --- a/Gemfile +++ b/Gemfile @@ -14,5 +14,5 @@ group :test do gem 'rb-readline' gem 'rspec', '~> 3.12.0' gem 'rubocop', '~> 1.56' - gem 'webmock', '~> 3.13' + gem 'webmock', '~> 3.19' end diff --git a/Gemfile.lock b/Gemfile.lock index 2ed9f1c..baf4d2e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -8,7 +8,7 @@ PATH GEM remote: https://rubygems.org/ specs: - addressable (2.8.1) + addressable (2.8.5) public_suffix (>= 2.0.2, < 6.0) ast (2.4.2) base64 (0.1.1) @@ -55,7 +55,7 @@ GEM pry (0.14.2) coderay (~> 1.1) method_source (~> 1.0) - public_suffix (5.0.1) + public_suffix (5.0.3) racc (1.7.1) rainbow (3.1.1) rake (13.0.6) @@ -99,7 +99,7 @@ GEM simplecov-lcov (0.8.0) simplecov_json_formatter (0.1.4) unicode-display_width (2.4.2) - webmock (3.18.1) + webmock (3.19.0) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) @@ -118,7 +118,7 @@ DEPENDENCIES simplecov-html (~> 0.12.3) simplecov-lcov (~> 0.8.0) vmfloaty! - webmock (~> 3.13) + webmock (~> 3.19) BUNDLED WITH 2.4.8 From ae42ba08ae6da815a2ab202960981669c90dd623 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Sep 2023 09:18:54 +0000 Subject: [PATCH 071/115] Bump webmock from 3.19.0 to 3.19.1 Bumps [webmock](https://github.com/bblimke/webmock) from 3.19.0 to 3.19.1. - [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md) - [Commits](https://github.com/bblimke/webmock/compare/v3.19.0...v3.19.1) --- updated-dependencies: - dependency-name: webmock dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index baf4d2e..c3f748d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -99,7 +99,7 @@ GEM simplecov-lcov (0.8.0) simplecov_json_formatter (0.1.4) unicode-display_width (2.4.2) - webmock (3.19.0) + webmock (3.19.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) From 75cd758aad35ba9021bacbf845581084efa8bb20 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Sep 2023 09:19:02 +0000 Subject: [PATCH 072/115] Bump rubocop from 1.56.1 to 1.56.2 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.56.1 to 1.56.2. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.56.1...v1.56.2) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index baf4d2e..89c6de0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -75,7 +75,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) rspec-support (3.12.0) - rubocop (1.56.1) + rubocop (1.56.2) base64 (~> 0.1.1) json (~> 2.3) language_server-protocol (>= 3.17.0) From a2bf9ead58a00abf43d17630e48e59be2161fdb2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Sep 2023 09:11:43 +0000 Subject: [PATCH 073/115] Bump rubocop from 1.56.2 to 1.56.3 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.56.2 to 1.56.3. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.56.2...v1.56.3) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index b30e646..5a2491d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -75,7 +75,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) rspec-support (3.12.0) - rubocop (1.56.2) + rubocop (1.56.3) base64 (~> 0.1.1) json (~> 2.3) language_server-protocol (>= 3.17.0) From 9f72be51269f00d07478a95b6dfa78a01f190f67 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Sep 2023 09:36:32 +0000 Subject: [PATCH 074/115] Bump actions/checkout from 3 to 4 Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/release.yml | 2 +- .github/workflows/security.yml | 2 +- .github/workflows/test.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5c10569..d2c6575 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,7 +15,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: ${{ github.ref }} clean: true diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml index 666c602..30e3388 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@v3 + uses: actions/checkout@v4 with: fetch-depth: 1 - name: setup ruby diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4b9576f..8562713 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -24,7 +24,7 @@ jobs: - '3.2' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Ruby # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby, # change this to (see https://github.com/ruby/setup-ruby#versioning): From ded2cd69dd61d4888416da25b5048b22680f6185 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Sep 2023 09:50:18 +0000 Subject: [PATCH 075/115] Bump docker/build-push-action from 4 to 5 Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4 to 5. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/v4...v5) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d2c6575..1b6c55d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -92,7 +92,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v5 with: push: true tags: | From f77bb2b29a88d29975df3db5d900d629f2fc68e0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Sep 2023 09:50:21 +0000 Subject: [PATCH 076/115] Bump docker/setup-buildx-action from 2 to 3 Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2 to 3. - [Release notes](https://github.com/docker/setup-buildx-action/releases) - [Commits](https://github.com/docker/setup-buildx-action/compare/v2...v3) --- updated-dependencies: - dependency-name: docker/setup-buildx-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d2c6575..bedcb6d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -82,7 +82,7 @@ jobs: prerelease: false - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to GitHub Container Registry uses: docker/login-action@v2 From df45ec0180fb71f7a0defae4cd3ad03e2f379c25 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Sep 2023 09:50:25 +0000 Subject: [PATCH 077/115] Bump docker/login-action from 2 to 3 Bumps [docker/login-action](https://github.com/docker/login-action) from 2 to 3. - [Release notes](https://github.com/docker/login-action/releases) - [Commits](https://github.com/docker/login-action/compare/v2...v3) --- updated-dependencies: - dependency-name: docker/login-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d2c6575..ec0d252 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -85,7 +85,7 @@ jobs: uses: docker/setup-buildx-action@v2 - name: Login to GitHub Container Registry - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} From c5ea73a3ad06d042eec6db2934dee7f9eb465f15 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Oct 2023 09:05:59 +0000 Subject: [PATCH 078/115] Bump rubocop from 1.56.3 to 1.56.4 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.56.3 to 1.56.4. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.56.3...v1.56.4) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 5a2491d..1927fcd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -75,7 +75,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) rspec-support (3.12.0) - rubocop (1.56.3) + rubocop (1.56.4) base64 (~> 0.1.1) json (~> 2.3) language_server-protocol (>= 3.17.0) @@ -98,7 +98,7 @@ GEM simplecov-html (0.12.3) simplecov-lcov (0.8.0) simplecov_json_formatter (0.1.4) - unicode-display_width (2.4.2) + unicode-display_width (2.5.0) webmock (3.19.1) addressable (>= 2.8.0) crack (>= 0.3.2) From 5953ad89a4dad817616003bace2e2e45611f7548 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Tue, 5 Dec 2023 17:16:18 -0500 Subject: [PATCH 079/115] syncing files from release-engineering-repo-standards --- .github/dependabot.yml | 26 +++++++++++++++---------- .github/workflows/auto_release_prep.yml | 11 +++++++++++ .github/workflows/dependabot_merge.yml | 8 ++++++++ .github/workflows/ensure_label.yml | 8 ++++++++ 4 files changed, 43 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/auto_release_prep.yml create mode 100644 .github/workflows/dependabot_merge.yml create mode 100644 .github/workflows/ensure_label.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 1afdd73..90d6dfd 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,13 +1,19 @@ version: 2 updates: - - package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: "weekly" - open-pull-requests-limit: 10 +- package-ecosystem: bundler + directory: "/" + schedule: + interval: weekly + open-pull-requests-limit: 10 - - package-ecosystem: bundler - directory: "/" - schedule: - interval: weekly - open-pull-requests-limit: 10 +- package-ecosystem: docker + directory: "/" + 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 new file mode 100644 index 0000000..00f6964 --- /dev/null +++ b/.github/workflows/auto_release_prep.yml @@ -0,0 +1,11 @@ +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: + version-file-path: lib/vmfloaty/version.rb diff --git a/.github/workflows/dependabot_merge.yml b/.github/workflows/dependabot_merge.yml new file mode 100644 index 0000000..75b9cea --- /dev/null +++ b/.github/workflows/dependabot_merge.yml @@ -0,0 +1,8 @@ +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 new file mode 100644 index 0000000..50a5fa8 --- /dev/null +++ b/.github/workflows/ensure_label.yml @@ -0,0 +1,8 @@ +name: Ensure label + +on: pull_request + +jobs: + ensure_label: + uses: puppetlabs/release-engineering-repo-standards/.github/workflows/ensure_label.yml@v1 + secrets: inherit From 03ebf1d79a3d460611c49415a1bab0ca94439df6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 7 Dec 2023 13:45:52 +0000 Subject: [PATCH 080/115] Bump rake from 13.0.6 to 13.1.0 Bumps [rake](https://github.com/ruby/rake) from 13.0.6 to 13.1.0. - [Release notes](https://github.com/ruby/rake/releases) - [Changelog](https://github.com/ruby/rake/blob/master/History.rdoc) - [Commits](https://github.com/ruby/rake/compare/v13.0.6...v13.1.0) --- updated-dependencies: - dependency-name: rake dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 1927fcd..6dbe520 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -58,7 +58,7 @@ GEM public_suffix (5.0.3) racc (1.7.1) rainbow (3.1.1) - rake (13.0.6) + rake (13.1.0) rb-readline (0.5.5) regexp_parser (2.8.1) rexml (3.2.6) From 494bd3412cccba537ff17b7914d53ea62d3201b9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 7 Dec 2023 13:50:01 +0000 Subject: [PATCH 081/115] Bump actions/github-script from 6 to 7 Bumps [actions/github-script](https://github.com/actions/github-script) from 6 to 7. - [Release notes](https://github.com/actions/github-script/releases) - [Commits](https://github.com/actions/github-script/compare/v6...v7) --- updated-dependencies: - dependency-name: actions/github-script dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b75f39b..d79ed5f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -29,7 +29,7 @@ jobs: echo "Found version $version from lib/vmfloaty/version.rb" - name: Get Current Version - uses: actions/github-script@v6 + uses: actions/github-script@v7 id: cv with: script: | From 05ae2e55daec2936dfef930b29df7c9c4821eef4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 7 Dec 2023 14:14:46 +0000 Subject: [PATCH 082/115] Bump rubocop from 1.56.4 to 1.58.0 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.56.4 to 1.58.0. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.56.4...v1.58.0) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 20 +++++++++----------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/Gemfile b/Gemfile index 1193321..932cd12 100644 --- a/Gemfile +++ b/Gemfile @@ -13,6 +13,6 @@ group :test do gem 'pry' gem 'rb-readline' gem 'rspec', '~> 3.12.0' - gem 'rubocop', '~> 1.56' + gem 'rubocop', '~> 1.58' gem 'webmock', '~> 3.19' end diff --git a/Gemfile.lock b/Gemfile.lock index 6dbe520..31f19ec 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -11,7 +11,6 @@ GEM addressable (2.8.5) public_suffix (>= 2.0.2, < 6.0) ast (2.4.2) - base64 (0.1.1) coderay (1.1.3) commander (4.6.0) highline (~> 2.0.0) @@ -44,23 +43,23 @@ GEM faraday-retry (1.0.3) hashdiff (1.0.1) highline (2.0.3) - json (2.6.3) + json (2.7.1) language_server-protocol (3.17.0.3) method_source (1.0.0) multipart-post (2.3.0) parallel (1.23.0) - parser (3.2.2.3) + parser (3.2.2.4) ast (~> 2.4.1) racc pry (0.14.2) coderay (~> 1.1) method_source (~> 1.0) public_suffix (5.0.3) - racc (1.7.1) + racc (1.7.3) rainbow (3.1.1) rake (13.1.0) rb-readline (0.5.5) - regexp_parser (2.8.1) + regexp_parser (2.8.3) rexml (3.2.6) rspec (3.12.0) rspec-core (~> 3.12.0) @@ -75,19 +74,18 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) rspec-support (3.12.0) - rubocop (1.56.4) - base64 (~> 0.1.1) + rubocop (1.58.0) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) - parser (>= 3.2.2.3) + parser (>= 3.2.2.4) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml (>= 3.2.5, < 4.0) - rubocop-ast (>= 1.28.1, < 2.0) + rubocop-ast (>= 1.30.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.29.0) + rubocop-ast (1.30.0) parser (>= 3.2.1.0) ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) @@ -113,7 +111,7 @@ DEPENDENCIES rake rb-readline rspec (~> 3.12.0) - rubocop (~> 1.56) + rubocop (~> 1.58) simplecov (~> 0.22.0) simplecov-html (~> 0.12.3) simplecov-lcov (~> 0.8.0) From 93ecadf49ac4513110bcc527385264c8b603814d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 7 Dec 2023 14:14:53 +0000 Subject: [PATCH 083/115] Bump actions/setup-java from 3 to 4 Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3 to 4. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/security.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml index 30e3388..ba273f5 100644 --- a/.github/workflows/security.yml +++ b/.github/workflows/security.yml @@ -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@v3 + - uses: actions/setup-java@v4 with: distribution: 'temurin' # See 'Supported distributions' for available options java-version: '17' From 85ae0c9914ae8539364c8d04bf06d15a4986a35b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 09:05:38 +0000 Subject: [PATCH 084/115] Bump rubocop from 1.58.0 to 1.59.0 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.58.0 to 1.59.0. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.58.0...v1.59.0) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index 932cd12..700a03f 100644 --- a/Gemfile +++ b/Gemfile @@ -13,6 +13,6 @@ group :test do gem 'pry' gem 'rb-readline' gem 'rspec', '~> 3.12.0' - gem 'rubocop', '~> 1.58' + gem 'rubocop', '~> 1.59' gem 'webmock', '~> 3.19' end diff --git a/Gemfile.lock b/Gemfile.lock index 31f19ec..a556047 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -47,7 +47,7 @@ GEM language_server-protocol (3.17.0.3) method_source (1.0.0) multipart-post (2.3.0) - parallel (1.23.0) + parallel (1.24.0) parser (3.2.2.4) ast (~> 2.4.1) racc @@ -74,7 +74,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) rspec-support (3.12.0) - rubocop (1.58.0) + rubocop (1.59.0) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) @@ -111,7 +111,7 @@ DEPENDENCIES rake rb-readline rspec (~> 3.12.0) - rubocop (~> 1.58) + rubocop (~> 1.59) simplecov (~> 0.22.0) simplecov-html (~> 0.12.3) simplecov-lcov (~> 0.8.0) From 375eb6b9fded28d3c61eb74a5ab210da0fc77a8d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Jan 2024 09:15:12 +0000 Subject: [PATCH 085/115] Bump ruby from 3.2.2-slim-bullseye to 3.3.0-slim-bullseye Bumps ruby from 3.2.2-slim-bullseye to 3.3.0-slim-bullseye. --- updated-dependencies: - dependency-name: ruby dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 5c3a5e1..87f4db5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ruby:3.2.2-slim-bullseye +FROM ruby:3.3.0-slim-bullseye LABEL org.opencontainers.image.authors="@puppetlabs/release-engineering" LABEL org.opencontainers.image.title="vmfloaty" From 50d3088ad8c0577b99c7349995514052c3706c79 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 15 Jan 2024 09:24:30 -0500 Subject: [PATCH 086/115] Fix missing param in auto_release_prep --- .github/workflows/auto_release_prep.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/auto_release_prep.yml b/.github/workflows/auto_release_prep.yml index 00f6964..19380e9 100644 --- a/.github/workflows/auto_release_prep.yml +++ b/.github/workflows/auto_release_prep.yml @@ -8,4 +8,5 @@ jobs: uses: puppetlabs/release-engineering-repo-standards/.github/workflows/auto_release_prep.yml@v1 secrets: inherit with: + project-type: ruby version-file-path: lib/vmfloaty/version.rb From 4c9c82a7c235164e9d1ff64c89e6948f3a1dd2db Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Fri, 19 Jan 2024 14:28:21 -0500 Subject: [PATCH 087/115] Remove interactive option from release prep script --- release-prep | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release-prep b/release-prep index d5bbb83..82ee104 100755 --- a/release-prep +++ b/release-prep @@ -1,12 +1,12 @@ #!/usr/bin/env bash # bundle install -docker run -it --rm \ +docker run -t --rm \ -v $(pwd):/app \ $(grep ^FROM ./Dockerfile |cut -d ' ' -f2) \ /bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends build-essential make openssh-client && cd /app && gem install bundler && bundle install --jobs 3; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"' # Update Changelog -docker run -it --rm -e CHANGELOG_GITHUB_TOKEN -v $(pwd):/usr/local/src/your-app \ +docker run -t --rm -e CHANGELOG_GITHUB_TOKEN -v $(pwd):/usr/local/src/your-app \ githubchangeloggenerator/github-changelog-generator:1.16.2 \ github_changelog_generator --future-release $(grep VERSION lib/vmfloaty/version.rb |rev |cut -d "'" -f2 |rev) From 0352a687c6c9ec3a5d0e86bf08e852fda9312818 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Jan 2024 09:22:11 +0000 Subject: [PATCH 088/115] Bump rubocop from 1.59.0 to 1.60.1 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.59.0 to 1.60.1. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.59.0...v1.60.1) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Gemfile b/Gemfile index 700a03f..eb22dd9 100644 --- a/Gemfile +++ b/Gemfile @@ -13,6 +13,6 @@ group :test do gem 'pry' gem 'rb-readline' gem 'rspec', '~> 3.12.0' - gem 'rubocop', '~> 1.59' + gem 'rubocop', '~> 1.60' gem 'webmock', '~> 3.19' end diff --git a/Gemfile.lock b/Gemfile.lock index a556047..b315196 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -48,7 +48,7 @@ GEM method_source (1.0.0) multipart-post (2.3.0) parallel (1.24.0) - parser (3.2.2.4) + parser (3.3.0.5) ast (~> 2.4.1) racc pry (0.14.2) @@ -59,7 +59,7 @@ GEM rainbow (3.1.1) rake (13.1.0) rb-readline (0.5.5) - regexp_parser (2.8.3) + regexp_parser (2.9.0) rexml (3.2.6) rspec (3.12.0) rspec-core (~> 3.12.0) @@ -74,11 +74,11 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) rspec-support (3.12.0) - rubocop (1.59.0) + rubocop (1.60.1) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) - parser (>= 3.2.2.4) + parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml (>= 3.2.5, < 4.0) @@ -111,7 +111,7 @@ DEPENDENCIES rake rb-readline rspec (~> 3.12.0) - rubocop (~> 1.59) + rubocop (~> 1.60) simplecov (~> 0.22.0) simplecov-html (~> 0.12.3) simplecov-lcov (~> 0.8.0) From cd412f8a078b4dd44e4f7f3cac47bc2d8142c2a6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 09:02:48 +0000 Subject: [PATCH 089/115] Bump rubocop from 1.60.1 to 1.60.2 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.60.1 to 1.60.2. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.60.1...v1.60.2) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index b315196..43ccd3d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -74,7 +74,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) rspec-support (3.12.0) - rubocop (1.60.1) + rubocop (1.60.2) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) From cc018b0599f487da5714adeef788f109166a099a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 09:32:57 +0000 Subject: [PATCH 090/115] Bump rspec from 3.12.0 to 3.13.0 Bumps [rspec](https://github.com/rspec/rspec-metagem) from 3.12.0 to 3.13.0. - [Commits](https://github.com/rspec/rspec-metagem/compare/v3.12.0...v3.13.0) --- updated-dependencies: - dependency-name: rspec dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Gemfile b/Gemfile index eb22dd9..5bed03d 100644 --- a/Gemfile +++ b/Gemfile @@ -12,7 +12,7 @@ group :test do gem 'simplecov-lcov', '~> 0.8.0' gem 'pry' gem 'rb-readline' - gem 'rspec', '~> 3.12.0' + gem 'rspec', '~> 3.13.0' gem 'rubocop', '~> 1.60' gem 'webmock', '~> 3.19' end diff --git a/Gemfile.lock b/Gemfile.lock index 43ccd3d..46ebed2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -16,7 +16,7 @@ GEM highline (~> 2.0.0) crack (0.4.5) rexml - diff-lcs (1.5.0) + diff-lcs (1.5.1) docile (1.4.0) faraday (1.10.3) faraday-em_http (~> 1.0) @@ -61,19 +61,19 @@ GEM rb-readline (0.5.5) regexp_parser (2.9.0) rexml (3.2.6) - rspec (3.12.0) - rspec-core (~> 3.12.0) - rspec-expectations (~> 3.12.0) - rspec-mocks (~> 3.12.0) - rspec-core (3.12.1) - rspec-support (~> 3.12.0) - rspec-expectations (3.12.2) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.12.0) - rspec-mocks (3.12.5) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.12.0) - rspec-support (3.12.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.0) rubocop (1.60.2) json (~> 2.3) language_server-protocol (>= 3.17.0) @@ -110,7 +110,7 @@ DEPENDENCIES pry rake rb-readline - rspec (~> 3.12.0) + rspec (~> 3.13.0) rubocop (~> 1.60) simplecov (~> 0.22.0) simplecov-html (~> 0.12.3) From a5d5cdc53f45ec5d2c8613f2825f5d823807659b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Feb 2024 09:50:28 +0000 Subject: [PATCH 091/115] Bump webmock from 3.19.1 to 3.20.0 Bumps [webmock](https://github.com/bblimke/webmock) from 3.19.1 to 3.20.0. - [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md) - [Commits](https://github.com/bblimke/webmock/compare/v3.19.1...v3.20.0) --- updated-dependencies: - dependency-name: webmock dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Gemfile b/Gemfile index 5bed03d..c9ae6ed 100644 --- a/Gemfile +++ b/Gemfile @@ -14,5 +14,5 @@ group :test do gem 'rb-readline' gem 'rspec', '~> 3.13.0' gem 'rubocop', '~> 1.60' - gem 'webmock', '~> 3.19' + gem 'webmock', '~> 3.20' end diff --git a/Gemfile.lock b/Gemfile.lock index 46ebed2..520908c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -8,13 +8,15 @@ PATH GEM remote: https://rubygems.org/ specs: - addressable (2.8.5) + addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) ast (2.4.2) + bigdecimal (3.1.6) coderay (1.1.3) commander (4.6.0) highline (~> 2.0.0) - crack (0.4.5) + crack (1.0.0) + bigdecimal rexml diff-lcs (1.5.1) docile (1.4.0) @@ -41,7 +43,7 @@ GEM faraday-patron (1.0.0) faraday-rack (1.0.0) faraday-retry (1.0.3) - hashdiff (1.0.1) + hashdiff (1.1.0) highline (2.0.3) json (2.7.1) language_server-protocol (3.17.0.3) @@ -54,7 +56,7 @@ GEM pry (0.14.2) coderay (~> 1.1) method_source (~> 1.0) - public_suffix (5.0.3) + public_suffix (5.0.4) racc (1.7.3) rainbow (3.1.1) rake (13.1.0) @@ -97,7 +99,7 @@ GEM simplecov-lcov (0.8.0) simplecov_json_formatter (0.1.4) unicode-display_width (2.5.0) - webmock (3.19.1) + webmock (3.20.0) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) @@ -116,7 +118,7 @@ DEPENDENCIES simplecov-html (~> 0.12.3) simplecov-lcov (~> 0.8.0) vmfloaty! - webmock (~> 3.19) + webmock (~> 3.20) BUNDLED WITH 2.4.8 From df08f383fe5a0d6d261b48653175724eeb2fa838 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Feb 2024 09:37:08 +0000 Subject: [PATCH 092/115] Bump webmock from 3.20.0 to 3.23.0 Bumps [webmock](https://github.com/bblimke/webmock) from 3.20.0 to 3.23.0. - [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md) - [Commits](https://github.com/bblimke/webmock/compare/v3.20.0...v3.23.0) --- updated-dependencies: - dependency-name: webmock dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index c9ae6ed..a6308e5 100644 --- a/Gemfile +++ b/Gemfile @@ -14,5 +14,5 @@ group :test do gem 'rb-readline' gem 'rspec', '~> 3.13.0' gem 'rubocop', '~> 1.60' - gem 'webmock', '~> 3.20' + gem 'webmock', '~> 3.23' end diff --git a/Gemfile.lock b/Gemfile.lock index 520908c..1ed5116 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -99,7 +99,7 @@ GEM simplecov-lcov (0.8.0) simplecov_json_formatter (0.1.4) unicode-display_width (2.5.0) - webmock (3.20.0) + webmock (3.23.0) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) @@ -118,7 +118,7 @@ DEPENDENCIES simplecov-html (~> 0.12.3) simplecov-lcov (~> 0.8.0) vmfloaty! - webmock (~> 3.20) + webmock (~> 3.23) BUNDLED WITH 2.4.8 From 961e3d9b3d33ca7bc53a96f3a9feba15586eaf59 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Mar 2024 09:54:41 +0000 Subject: [PATCH 093/115] Bump rubocop from 1.60.2 to 1.61.0 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.60.2 to 1.61.0. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.60.2...v1.61.0) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index a6308e5..d8b7277 100644 --- a/Gemfile +++ b/Gemfile @@ -13,6 +13,6 @@ group :test do gem 'pry' gem 'rb-readline' gem 'rspec', '~> 3.13.0' - gem 'rubocop', '~> 1.60' + gem 'rubocop', '~> 1.61' gem 'webmock', '~> 3.23' end diff --git a/Gemfile.lock b/Gemfile.lock index 1ed5116..cfe20d8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -76,7 +76,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-support (3.13.0) - rubocop (1.60.2) + rubocop (1.61.0) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) @@ -87,8 +87,8 @@ GEM rubocop-ast (>= 1.30.0, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.30.0) - parser (>= 3.2.1.0) + rubocop-ast (1.31.1) + parser (>= 3.3.0.4) ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) simplecov (0.22.0) @@ -113,7 +113,7 @@ DEPENDENCIES rake rb-readline rspec (~> 3.13.0) - rubocop (~> 1.60) + rubocop (~> 1.61) simplecov (~> 0.22.0) simplecov-html (~> 0.12.3) simplecov-lcov (~> 0.8.0) From c0609d87b7c3a7a5149a2b1723bc679e1ca39113 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Mar 2024 09:05:24 +0000 Subject: [PATCH 094/115] Bump rubocop from 1.61.0 to 1.62.0 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.61.0 to 1.62.0. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.61.0...v1.62.0) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index d8b7277..fbffd69 100644 --- a/Gemfile +++ b/Gemfile @@ -13,6 +13,6 @@ group :test do gem 'pry' gem 'rb-readline' gem 'rspec', '~> 3.13.0' - gem 'rubocop', '~> 1.61' + gem 'rubocop', '~> 1.62' gem 'webmock', '~> 3.23' end diff --git a/Gemfile.lock b/Gemfile.lock index cfe20d8..a1e2417 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -76,7 +76,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-support (3.13.0) - rubocop (1.61.0) + rubocop (1.62.0) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) @@ -84,10 +84,10 @@ GEM rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) rexml (>= 3.2.5, < 4.0) - rubocop-ast (>= 1.30.0, < 2.0) + rubocop-ast (>= 1.31.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.31.1) + rubocop-ast (1.31.2) parser (>= 3.3.0.4) ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) @@ -113,7 +113,7 @@ DEPENDENCIES rake rb-readline rspec (~> 3.13.0) - rubocop (~> 1.61) + rubocop (~> 1.62) simplecov (~> 0.22.0) simplecov-html (~> 0.12.3) simplecov-lcov (~> 0.8.0) From e58a1eb68e3fb8bcb5042fddfdba6eacf5c25ac6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Mar 2024 09:15:14 +0000 Subject: [PATCH 095/115] Bump rubocop from 1.62.0 to 1.62.1 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.62.0 to 1.62.1. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.62.0...v1.62.1) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index a1e2417..a061878 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -76,7 +76,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-support (3.13.0) - rubocop (1.62.0) + rubocop (1.62.1) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) From c1f93e40f7bca69d4295540d6bc43f0d8d83be55 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Apr 2024 09:13:47 +0000 Subject: [PATCH 096/115] Bump rake from 13.1.0 to 13.2.1 Bumps [rake](https://github.com/ruby/rake) from 13.1.0 to 13.2.1. - [Release notes](https://github.com/ruby/rake/releases) - [Changelog](https://github.com/ruby/rake/blob/master/History.rdoc) - [Commits](https://github.com/ruby/rake/compare/v13.1.0...v13.2.1) --- updated-dependencies: - dependency-name: rake dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index a061878..08e4efa 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -59,7 +59,7 @@ GEM public_suffix (5.0.4) racc (1.7.3) rainbow (3.1.1) - rake (13.1.0) + rake (13.2.1) rb-readline (0.5.5) regexp_parser (2.9.0) rexml (3.2.6) From 03d7bb7963c1201139e51b74c981ed2cd6783bd4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Apr 2024 09:13:58 +0000 Subject: [PATCH 097/115] Bump rubocop from 1.62.1 to 1.63.0 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.62.1 to 1.63.0. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.62.1...v1.63.0) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index fbffd69..c363bce 100644 --- a/Gemfile +++ b/Gemfile @@ -13,6 +13,6 @@ group :test do gem 'pry' gem 'rb-readline' gem 'rspec', '~> 3.13.0' - gem 'rubocop', '~> 1.62' + gem 'rubocop', '~> 1.63' gem 'webmock', '~> 3.23' end diff --git a/Gemfile.lock b/Gemfile.lock index a061878..1f53f6c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -45,7 +45,7 @@ GEM faraday-retry (1.0.3) hashdiff (1.1.0) highline (2.0.3) - json (2.7.1) + json (2.7.2) language_server-protocol (3.17.0.3) method_source (1.0.0) multipart-post (2.3.0) @@ -76,7 +76,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-support (3.13.0) - rubocop (1.62.1) + rubocop (1.63.0) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) @@ -113,7 +113,7 @@ DEPENDENCIES rake rb-readline rspec (~> 3.13.0) - rubocop (~> 1.62) + rubocop (~> 1.63) simplecov (~> 0.22.0) simplecov-html (~> 0.12.3) simplecov-lcov (~> 0.8.0) From 30938db02e8b36883bafa5e052180b0ffa2b3cf2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 09:46:40 +0000 Subject: [PATCH 098/115] Bump rubocop from 1.63.0 to 1.63.1 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.63.0 to 1.63.1. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.63.0...v1.63.1) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 2a76b96..a95b551 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -76,7 +76,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-support (3.13.0) - rubocop (1.63.0) + rubocop (1.63.1) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) From 00484568c0337d8a2b6c090910528cbe9de556fc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 09:58:43 +0000 Subject: [PATCH 099/115] Bump rubocop from 1.63.1 to 1.63.2 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.63.1 to 1.63.2. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.63.1...v1.63.2) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index a95b551..f1dcb6b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -76,7 +76,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-support (3.13.0) - rubocop (1.63.1) + rubocop (1.63.2) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) From 7f32c1aeb2b243674e5b62702fdbbd856a608f31 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 09:40:13 +0000 Subject: [PATCH 100/115] Bump rubocop from 1.63.2 to 1.63.4 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.63.2 to 1.63.4. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.63.2...v1.63.4) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index f1dcb6b..60a3ddb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -50,7 +50,7 @@ GEM method_source (1.0.0) multipart-post (2.3.0) parallel (1.24.0) - parser (3.3.0.5) + parser (3.3.1.0) ast (~> 2.4.1) racc pry (0.14.2) @@ -76,7 +76,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-support (3.13.0) - rubocop (1.63.2) + rubocop (1.63.4) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) From 473f584a90f93d45da2d6548489f9dfcf6adf417 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 09:47:27 +0000 Subject: [PATCH 101/115] Bump ruby from 3.3.0-slim-bullseye to 3.3.1-slim-bullseye Bumps ruby from 3.3.0-slim-bullseye to 3.3.1-slim-bullseye. --- updated-dependencies: - dependency-name: ruby dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 87f4db5..fa652b7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ruby:3.3.0-slim-bullseye +FROM ruby:3.3.1-slim-bullseye LABEL org.opencontainers.image.authors="@puppetlabs/release-engineering" LABEL org.opencontainers.image.title="vmfloaty" From 3213b33b984aa51e0470905127c2cabde20fddb3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 May 2024 09:08:29 +0000 Subject: [PATCH 102/115] Bump rubocop from 1.63.4 to 1.63.5 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.63.4 to 1.63.5. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.63.4...v1.63.5) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 60a3ddb..d6fb930 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -61,7 +61,7 @@ GEM rainbow (3.1.1) rake (13.2.1) rb-readline (0.5.5) - regexp_parser (2.9.0) + regexp_parser (2.9.1) rexml (3.2.6) rspec (3.13.0) rspec-core (~> 3.13.0) @@ -76,7 +76,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-support (3.13.0) - rubocop (1.63.4) + rubocop (1.63.5) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) @@ -87,8 +87,8 @@ GEM rubocop-ast (>= 1.31.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.31.2) - parser (>= 3.3.0.4) + rubocop-ast (1.31.3) + parser (>= 3.3.1.0) ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) simplecov (0.22.0) From ddc35eb1184803d03969150e7ff18991ccaa514c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 May 2024 21:28:17 +0000 Subject: [PATCH 103/115] Bump rexml from 3.2.6 to 3.2.8 Bumps [rexml](https://github.com/ruby/rexml) from 3.2.6 to 3.2.8. - [Release notes](https://github.com/ruby/rexml/releases) - [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md) - [Commits](https://github.com/ruby/rexml/compare/v3.2.6...v3.2.8) --- updated-dependencies: - dependency-name: rexml dependency-type: indirect ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index d6fb930..6944083 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -62,7 +62,8 @@ GEM rake (13.2.1) rb-readline (0.5.5) regexp_parser (2.9.1) - rexml (3.2.6) + rexml (3.2.8) + strscan (>= 3.0.9) rspec (3.13.0) rspec-core (~> 3.13.0) rspec-expectations (~> 3.13.0) @@ -98,6 +99,7 @@ GEM simplecov-html (0.12.3) simplecov-lcov (0.8.0) simplecov_json_formatter (0.1.4) + strscan (3.1.0) unicode-display_width (2.5.0) webmock (3.23.0) addressable (>= 2.8.0) From 5b09d149263b980967f77e37b8fbd59c8f52a688 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 May 2024 09:44:03 +0000 Subject: [PATCH 104/115] Bump rubocop from 1.63.5 to 1.64.0 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.63.5 to 1.64.0. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.63.5...v1.64.0) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index c363bce..244ab06 100644 --- a/Gemfile +++ b/Gemfile @@ -13,6 +13,6 @@ group :test do gem 'pry' gem 'rb-readline' gem 'rspec', '~> 3.13.0' - gem 'rubocop', '~> 1.63' + gem 'rubocop', '~> 1.64' gem 'webmock', '~> 3.23' end diff --git a/Gemfile.lock b/Gemfile.lock index 6944083..54aeb99 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -57,11 +57,11 @@ GEM coderay (~> 1.1) method_source (~> 1.0) public_suffix (5.0.4) - racc (1.7.3) + racc (1.8.0) rainbow (3.1.1) rake (13.2.1) rb-readline (0.5.5) - regexp_parser (2.9.1) + regexp_parser (2.9.2) rexml (3.2.8) strscan (>= 3.0.9) rspec (3.13.0) @@ -77,7 +77,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-support (3.13.0) - rubocop (1.63.5) + rubocop (1.64.0) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) @@ -115,7 +115,7 @@ DEPENDENCIES rake rb-readline rspec (~> 3.13.0) - rubocop (~> 1.63) + rubocop (~> 1.64) simplecov (~> 0.22.0) simplecov-html (~> 0.12.3) simplecov-lcov (~> 0.8.0) From 06a9b95edff8beacd2ec655af493fa1e55e4a15a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 May 2024 09:45:18 +0000 Subject: [PATCH 105/115] Bump webmock from 3.23.0 to 3.23.1 Bumps [webmock](https://github.com/bblimke/webmock) from 3.23.0 to 3.23.1. - [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md) - [Commits](https://github.com/bblimke/webmock/compare/v3.23.0...v3.23.1) --- updated-dependencies: - dependency-name: webmock dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 54aeb99..7e8b021 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -11,7 +11,7 @@ GEM addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) ast (2.4.2) - bigdecimal (3.1.6) + bigdecimal (3.1.8) coderay (1.1.3) commander (4.6.0) highline (~> 2.0.0) @@ -56,7 +56,7 @@ GEM pry (0.14.2) coderay (~> 1.1) method_source (~> 1.0) - public_suffix (5.0.4) + public_suffix (5.0.5) racc (1.8.0) rainbow (3.1.1) rake (13.2.1) @@ -101,7 +101,7 @@ GEM simplecov_json_formatter (0.1.4) strscan (3.1.0) unicode-display_width (2.5.0) - webmock (3.23.0) + webmock (3.23.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) From dc0e440c868fb2b65597411890cbf79ed2c2247e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 09:24:25 +0000 Subject: [PATCH 106/115] Bump ruby from 3.3.1-slim-bullseye to 3.3.2-slim-bullseye Bumps ruby from 3.3.1-slim-bullseye to 3.3.2-slim-bullseye. --- updated-dependencies: - dependency-name: ruby dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index fa652b7..a419cc8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ruby:3.3.1-slim-bullseye +FROM ruby:3.3.2-slim-bullseye LABEL org.opencontainers.image.authors="@puppetlabs/release-engineering" LABEL org.opencontainers.image.title="vmfloaty" From d1806b23eb4272e9c245003945ddba091aa6bb1b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 09:28:26 +0000 Subject: [PATCH 107/115] Bump rubocop from 1.64.0 to 1.64.1 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.64.0 to 1.64.1. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.64.0...v1.64.1) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 7e8b021..f6232ca 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -50,7 +50,7 @@ GEM method_source (1.0.0) multipart-post (2.3.0) parallel (1.24.0) - parser (3.3.1.0) + parser (3.3.2.0) ast (~> 2.4.1) racc pry (0.14.2) @@ -77,7 +77,7 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-support (3.13.0) - rubocop (1.64.0) + rubocop (1.64.1) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) From 58ddd50618e295ec71203c502f25454caa401137 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 09:58:43 +0000 Subject: [PATCH 108/115] Bump ruby from 3.3.2-slim-bullseye to 3.3.3-slim-bullseye Bumps ruby from 3.3.2-slim-bullseye to 3.3.3-slim-bullseye. --- updated-dependencies: - dependency-name: ruby dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index a419cc8..878e012 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ruby:3.3.2-slim-bullseye +FROM ruby:3.3.3-slim-bullseye LABEL org.opencontainers.image.authors="@puppetlabs/release-engineering" LABEL org.opencontainers.image.title="vmfloaty" From e4151a00cebe1f130b6c1b56d21fba68c8fef6a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 09:39:58 +0000 Subject: [PATCH 109/115] Bump ruby from 3.3.3-slim-bullseye to 3.3.4-slim-bullseye Bumps ruby from 3.3.3-slim-bullseye to 3.3.4-slim-bullseye. --- updated-dependencies: - dependency-name: ruby dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 878e012..edc0711 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ruby:3.3.3-slim-bullseye +FROM ruby:3.3.4-slim-bullseye LABEL org.opencontainers.image.authors="@puppetlabs/release-engineering" LABEL org.opencontainers.image.title="vmfloaty" From 82f522e9110e5d7ef53250ece05992fb68e40278 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 2 Aug 2024 01:57:30 +0000 Subject: [PATCH 110/115] Bump rexml from 3.2.8 to 3.3.3 Bumps [rexml](https://github.com/ruby/rexml) from 3.2.8 to 3.3.3. - [Release notes](https://github.com/ruby/rexml/releases) - [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md) - [Commits](https://github.com/ruby/rexml/compare/v3.2.8...v3.3.3) --- updated-dependencies: - dependency-name: rexml dependency-type: indirect ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index f6232ca..4301eee 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -62,8 +62,8 @@ GEM rake (13.2.1) rb-readline (0.5.5) regexp_parser (2.9.2) - rexml (3.2.8) - strscan (>= 3.0.9) + rexml (3.3.3) + strscan rspec (3.13.0) rspec-core (~> 3.13.0) rspec-expectations (~> 3.13.0) From d26bac7409f6aafe13b4170c522a41d9488dc322 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 2 Aug 2024 01:59:32 +0000 Subject: [PATCH 111/115] Bump rubocop from 1.64.1 to 1.65.1 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.64.1 to 1.65.1. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.64.1...v1.65.1) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Gemfile b/Gemfile index 244ab06..89c6b5c 100644 --- a/Gemfile +++ b/Gemfile @@ -13,6 +13,6 @@ group :test do gem 'pry' gem 'rb-readline' gem 'rspec', '~> 3.13.0' - gem 'rubocop', '~> 1.64' + gem 'rubocop', '~> 1.65' gem 'webmock', '~> 3.23' end diff --git a/Gemfile.lock b/Gemfile.lock index 4301eee..458fcae 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -49,20 +49,20 @@ GEM language_server-protocol (3.17.0.3) method_source (1.0.0) multipart-post (2.3.0) - parallel (1.24.0) - parser (3.3.2.0) + parallel (1.25.1) + parser (3.3.4.0) ast (~> 2.4.1) racc pry (0.14.2) coderay (~> 1.1) method_source (~> 1.0) public_suffix (5.0.5) - racc (1.8.0) + racc (1.8.1) rainbow (3.1.1) rake (13.2.1) rb-readline (0.5.5) regexp_parser (2.9.2) - rexml (3.3.3) + rexml (3.3.4) strscan rspec (3.13.0) rspec-core (~> 3.13.0) @@ -77,13 +77,13 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-support (3.13.0) - rubocop (1.64.1) + rubocop (1.65.1) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) - regexp_parser (>= 1.8, < 3.0) + regexp_parser (>= 2.4, < 3.0) rexml (>= 3.2.5, < 4.0) rubocop-ast (>= 1.31.1, < 2.0) ruby-progressbar (~> 1.7) @@ -115,7 +115,7 @@ DEPENDENCIES rake rb-readline rspec (~> 3.13.0) - rubocop (~> 1.64) + rubocop (~> 1.65) simplecov (~> 0.22.0) simplecov-html (~> 0.12.3) simplecov-lcov (~> 0.8.0) From 721881395c86822b065502a88d7ac681e59551aa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Sep 2024 09:24:28 +0000 Subject: [PATCH 112/115] Bump rubocop from 1.65.1 to 1.66.0 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.65.1 to 1.66.0. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.65.1...v1.66.0) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 15 +++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/Gemfile b/Gemfile index 89c6b5c..16af5ec 100644 --- a/Gemfile +++ b/Gemfile @@ -13,6 +13,6 @@ group :test do gem 'pry' gem 'rb-readline' gem 'rspec', '~> 3.13.0' - gem 'rubocop', '~> 1.65' + gem 'rubocop', '~> 1.66' gem 'webmock', '~> 3.23' end diff --git a/Gemfile.lock b/Gemfile.lock index 458fcae..3ab29f8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -49,8 +49,8 @@ GEM language_server-protocol (3.17.0.3) method_source (1.0.0) multipart-post (2.3.0) - parallel (1.25.1) - parser (3.3.4.0) + parallel (1.26.3) + parser (3.3.4.2) ast (~> 2.4.1) racc pry (0.14.2) @@ -62,7 +62,7 @@ GEM rake (13.2.1) rb-readline (0.5.5) regexp_parser (2.9.2) - rexml (3.3.4) + rexml (3.3.6) strscan rspec (3.13.0) rspec-core (~> 3.13.0) @@ -77,18 +77,17 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-support (3.13.0) - rubocop (1.65.1) + rubocop (1.66.0) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 2.4, < 3.0) - rexml (>= 3.2.5, < 4.0) - rubocop-ast (>= 1.31.1, < 2.0) + rubocop-ast (>= 1.32.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.31.3) + rubocop-ast (1.32.1) parser (>= 3.3.1.0) ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) @@ -115,7 +114,7 @@ DEPENDENCIES rake rb-readline rspec (~> 3.13.0) - rubocop (~> 1.65) + rubocop (~> 1.66) simplecov (~> 0.22.0) simplecov-html (~> 0.12.3) simplecov-lcov (~> 0.8.0) From 197c6e2e609b790d4ba00ff18bcd1d30562e56bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 09:52:46 +0000 Subject: [PATCH 113/115] Bump rubocop from 1.66.0 to 1.66.1 Bumps [rubocop](https://github.com/rubocop/rubocop) from 1.66.0 to 1.66.1. - [Release notes](https://github.com/rubocop/rubocop/releases) - [Changelog](https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md) - [Commits](https://github.com/rubocop/rubocop/compare/v1.66.0...v1.66.1) --- updated-dependencies: - dependency-name: rubocop dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 3ab29f8..9de558c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -50,7 +50,7 @@ GEM method_source (1.0.0) multipart-post (2.3.0) parallel (1.26.3) - parser (3.3.4.2) + parser (3.3.5.0) ast (~> 2.4.1) racc pry (0.14.2) @@ -77,17 +77,17 @@ GEM diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-support (3.13.0) - rubocop (1.66.0) + rubocop (1.66.1) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 2.4, < 3.0) - rubocop-ast (>= 1.32.1, < 2.0) + rubocop-ast (>= 1.32.2, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.32.1) + rubocop-ast (1.32.3) parser (>= 3.3.1.0) ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) From 8df6ceb6768d3bab2d58d7bc2e121d7d09fa6d44 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 09:52:53 +0000 Subject: [PATCH 114/115] Bump simplecov-html from 0.12.3 to 0.13.1 Bumps [simplecov-html](https://github.com/simplecov-ruby/simplecov-html) from 0.12.3 to 0.13.1. - [Release notes](https://github.com/simplecov-ruby/simplecov-html/releases) - [Changelog](https://github.com/simplecov-ruby/simplecov-html/blob/main/CHANGELOG.md) - [Commits](https://github.com/simplecov-ruby/simplecov-html/compare/v0.12.3...v0.13.1) --- updated-dependencies: - dependency-name: simplecov-html dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 16af5ec..7f70b2e 100644 --- a/Gemfile +++ b/Gemfile @@ -8,7 +8,7 @@ gem 'rake', require: false group :test do gem 'simplecov', '~> 0.22.0' - gem 'simplecov-html', '~> 0.12.3' + gem 'simplecov-html', '~> 0.13.1' gem 'simplecov-lcov', '~> 0.8.0' gem 'pry' gem 'rb-readline' diff --git a/Gemfile.lock b/Gemfile.lock index 3ab29f8..3c48e71 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -95,7 +95,7 @@ GEM docile (~> 1.1) simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) - simplecov-html (0.12.3) + simplecov-html (0.13.1) simplecov-lcov (0.8.0) simplecov_json_formatter (0.1.4) strscan (3.1.0) @@ -116,7 +116,7 @@ DEPENDENCIES rspec (~> 3.13.0) rubocop (~> 1.66) simplecov (~> 0.22.0) - simplecov-html (~> 0.12.3) + simplecov-html (~> 0.13.1) simplecov-lcov (~> 0.8.0) vmfloaty! webmock (~> 3.23) From b2fd9313f886848373b0551869cf24a38e8f7825 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 09:56:48 +0000 Subject: [PATCH 115/115] Bump ruby from 3.3.4-slim-bullseye to 3.3.5-slim-bullseye Bumps ruby from 3.3.4-slim-bullseye to 3.3.5-slim-bullseye. --- updated-dependencies: - dependency-name: ruby dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index edc0711..5c8fd0e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ruby:3.3.4-slim-bullseye +FROM ruby:3.3.5-slim-bullseye LABEL org.opencontainers.image.authors="@puppetlabs/release-engineering" LABEL org.opencontainers.image.title="vmfloaty"