From c6ca569fceaa698cae094d0903fd8a31a282cc7d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Mar 2022 11:40:59 -0400 Subject: [PATCH 01/55] Update googleauth requirement from ~> 0.16.2 to >= 0.16.2, < 1.2.0 Updates the requirements on [googleauth](https://github.com/googleapis/google-auth-library-ruby) to permit the latest version. - [Release notes](https://github.com/googleapis/google-auth-library-ruby/releases) - [Changelog](https://github.com/googleapis/google-auth-library-ruby/blob/main/CHANGELOG.md) - [Commits](https://github.com/googleapis/google-auth-library-ruby/compare/google-auth-library-ruby/v0.16.2...googleauth/v1.1.2) --- updated-dependencies: - dependency-name: googleauth dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- vmpooler-provider-gce.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vmpooler-provider-gce.gemspec b/vmpooler-provider-gce.gemspec index 3127a46..609a450 100644 --- a/vmpooler-provider-gce.gemspec +++ b/vmpooler-provider-gce.gemspec @@ -16,7 +16,7 @@ Gem::Specification.new do |s| s.files = Dir[ "lib/**/*" ] s.require_paths = ["lib"] s.add_dependency "google-apis-compute_v1", "~> 0.14" - s.add_dependency "googleauth", "~> 0.16.2" + s.add_dependency "googleauth", ">= 0.16.2", "< 1.2.0" s.add_dependency "google-cloud-dns", "~> 0.35.1" s.add_development_dependency 'vmpooler', '~> 1.3', '>= 1.3.0' From 336f417b4f1a223a43464fc703ffef91a9389695 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 8 Apr 2022 13:24:05 +0000 Subject: [PATCH 02/55] Update vmpooler requirement from ~> 1.3, >= 1.3.0 to >= 1.3.0, ~> 2.3 Updates the requirements on [vmpooler](https://github.com/puppetlabs/vmpooler) to permit the latest version. - [Release notes](https://github.com/puppetlabs/vmpooler/releases) - [Changelog](https://github.com/puppetlabs/vmpooler/blob/main/CHANGELOG.md) - [Commits](https://github.com/puppetlabs/vmpooler/compare/1.3.0...2.3.0) --- updated-dependencies: - dependency-name: vmpooler dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- vmpooler-provider-gce.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vmpooler-provider-gce.gemspec b/vmpooler-provider-gce.gemspec index 3127a46..aad74e9 100644 --- a/vmpooler-provider-gce.gemspec +++ b/vmpooler-provider-gce.gemspec @@ -19,7 +19,7 @@ Gem::Specification.new do |s| s.add_dependency "googleauth", "~> 0.16.2" s.add_dependency "google-cloud-dns", "~> 0.35.1" - s.add_development_dependency 'vmpooler', '~> 1.3', '>= 1.3.0' + s.add_development_dependency 'vmpooler', '>= 1.3.0', '~> 2.3' # Testing dependencies s.add_development_dependency 'climate_control', '>= 0.2.0' From b62580df0a90c3131abb30f631b6aca8f987f2de Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Fri, 15 Apr 2022 08:25:31 -0400 Subject: [PATCH 03/55] Set hostname for instance during create_vm This sets the instance hostname to the configured domain according to https://cloud.google.com/compute/docs/instances/custom-hostname-vm#api and https://googleapis.dev/ruby/google-api-client/latest/Google/Apis/ComputeV1/Instance.html#hostname-instance_method --- lib/vmpooler/providers/gce.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/vmpooler/providers/gce.rb b/lib/vmpooler/providers/gce.rb index 3aa965e..7df7426 100644 --- a/lib/vmpooler/providers/gce.rb +++ b/lib/vmpooler/providers/gce.rb @@ -191,9 +191,13 @@ module Vmpooler boot: true, initialize_params: Google::Apis::ComputeV1::AttachedDiskInitializeParams.new(init_params) ) + append_domain = domain || global_config[:config]['domain'] + fqdn = "#{new_vmname}.#{append_domain}" if append_domain + # Assume all pool config is valid i.e. not missing client = ::Google::Apis::ComputeV1::Instance.new( name: new_vmname, + hostname: fqdn, machine_type: pool['machine_type'], disks: [disk], network_interfaces: [network_interfaces], From f297108aa2781dadf128caa7099d9130593a7964 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Fri, 15 Apr 2022 09:17:42 -0400 Subject: [PATCH 04/55] 0.2.0 release prep Includes: - https://github.com/puppetlabs/vmpooler-provider-gce/pull/8 - https://github.com/puppetlabs/vmpooler-provider-gce/pull/7 - https://github.com/puppetlabs/vmpooler-provider-gce/pull/6 --- lib/vmpooler-provider-gce/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/vmpooler-provider-gce/version.rb b/lib/vmpooler-provider-gce/version.rb index ea0fdc1..2fe0e31 100644 --- a/lib/vmpooler-provider-gce/version.rb +++ b/lib/vmpooler-provider-gce/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module VmpoolerProviderGce - VERSION = '0.1.2' + VERSION = '0.2.0' end From e06917dd92749f8ddec591277811b15179dafa49 Mon Sep 17 00:00:00 2001 From: Samuel Beaulieu Date: Thu, 16 Jun 2022 09:35:05 -0500 Subject: [PATCH 05/55] (DIO-3162) vmpooler gce provider to support disk type (to use ssd) Added a new pool config named disk_type, which can be set to pd-ssd to use a SSD disk attahed to the instance. When not set, or set to empty, the google default of pd-standard is used --- lib/vmpooler/providers/gce.rb | 9 ++++++--- spec/unit/providers/gce_spec.rb | 3 ++- vmpooler.yaml.example | 4 ++++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/vmpooler/providers/gce.rb b/lib/vmpooler/providers/gce.rb index 7df7426..03dc04f 100644 --- a/lib/vmpooler/providers/gce.rb +++ b/lib/vmpooler/providers/gce.rb @@ -181,15 +181,18 @@ module Vmpooler network: network_name ) network_interfaces.subnetwork = subnetwork_name(pool_name) if subnetwork_name(pool_name) - init_params = { + init_params = Google::Apis::ComputeV1::AttachedDiskInitializeParams.new( source_image: pool['template'], # The source image to create this disk. labels: { 'vm' => new_vmname, 'pool' => pool_name }, disk_name: "#{new_vmname}-disk0" - } + ) + if pool['disk_type'] && !pool['disk_type'].empty? + init_params.disk_type = "https://www.googleapis.com/compute/v1/projects/#{project}/zones/#{zone(pool_name)}/diskTypes/#{pool['disk_type']}" + end disk = Google::Apis::ComputeV1::AttachedDisk.new( auto_delete: true, boot: true, - initialize_params: Google::Apis::ComputeV1::AttachedDiskInitializeParams.new(init_params) + initialize_params: init_params ) append_domain = domain || global_config[:config]['domain'] fqdn = "#{new_vmname}.#{append_domain}" if append_domain diff --git a/spec/unit/providers/gce_spec.rb b/spec/unit/providers/gce_spec.rb index cc43c0c..a66a8c0 100644 --- a/spec/unit/providers/gce_spec.rb +++ b/spec/unit/providers/gce_spec.rb @@ -62,7 +62,7 @@ EOT describe '#manual tests live' do context 'in itsysops' do before(:each) { allow(subject).to receive(:dns).and_call_original } - let(:vmname) { "instance-24" } + let(:vmname) { "instance-27" } let(:project) { 'vmpooler-test' } let(:config) { YAML.load(<<~EOT --- @@ -87,6 +87,7 @@ EOT provider: 'gce' subnetwork_name: 'projects/itsysopsnetworking/regions/us-west1/subnetworks/vmpooler-test' machine_type: 'zones/#{zone}/machineTypes/e2-micro' + disk_type: 'pd-ssd' EOT ) } skip 'gets a vm' do diff --git a/vmpooler.yaml.example b/vmpooler.yaml.example index c51265d..d46632b 100644 --- a/vmpooler.yaml.example +++ b/vmpooler.yaml.example @@ -146,6 +146,10 @@ # (optional: default is global provider zone value) # - machine_type # Full or partial URL of the machine type resource to use for this instance, in the format: zones/zone/machineTypes/machine-type +# - disk_type +# the disk type to use, see https://cloud.google.com/compute/docs/disks one of +# pd-standard, pd-balanced, pd-ssd or pd-extreme +# (optional, when nil or empty defaults to pd-standard) # Example: :pools: From 39d6d0d8493c0bb8efc5f51bb099c73071d05d67 Mon Sep 17 00:00:00 2001 From: Samuel Beaulieu Date: Fri, 17 Jun 2022 09:04:37 -0500 Subject: [PATCH 06/55] temp disable a rubocop check --- lib/vmpooler/providers/gce.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/vmpooler/providers/gce.rb b/lib/vmpooler/providers/gce.rb index 03dc04f..e94c9a3 100644 --- a/lib/vmpooler/providers/gce.rb +++ b/lib/vmpooler/providers/gce.rb @@ -186,9 +186,11 @@ module Vmpooler labels: { 'vm' => new_vmname, 'pool' => pool_name }, disk_name: "#{new_vmname}-disk0" ) + # rubocop:disable Style/IfUnlessModifier if pool['disk_type'] && !pool['disk_type'].empty? init_params.disk_type = "https://www.googleapis.com/compute/v1/projects/#{project}/zones/#{zone(pool_name)}/diskTypes/#{pool['disk_type']}" end + # rubocop:enable Style/IfUnlessModifier disk = Google::Apis::ComputeV1::AttachedDisk.new( auto_delete: true, boot: true, From 3d21d543b59e729021f2a3abadda3411f01acc18 Mon Sep 17 00:00:00 2001 From: Samuel Date: Tue, 21 Jun 2022 09:22:52 -0500 Subject: [PATCH 07/55] release prep 0.3.0 --- lib/vmpooler-provider-gce/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/vmpooler-provider-gce/version.rb b/lib/vmpooler-provider-gce/version.rb index 2fe0e31..cd39329 100644 --- a/lib/vmpooler-provider-gce/version.rb +++ b/lib/vmpooler-provider-gce/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module VmpoolerProviderGce - VERSION = '0.2.0' + VERSION = '0.3.0' end From 7d399da0165e3d68165339c8e97e0d3cef70a333 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Jun 2022 13:25:45 +0000 Subject: [PATCH 08/55] Update googleauth requirement from >= 0.16.2, < 1.2.0 to >= 0.16.2, < 1.3.0 Updates the requirements on [googleauth](https://github.com/googleapis/google-auth-library-ruby) to permit the latest version. - [Release notes](https://github.com/googleapis/google-auth-library-ruby/releases) - [Changelog](https://github.com/googleapis/google-auth-library-ruby/blob/main/CHANGELOG.md) - [Commits](https://github.com/googleapis/google-auth-library-ruby/compare/googleauth/v0.17.0...googleauth/v1.2.0) --- updated-dependencies: - dependency-name: googleauth dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- vmpooler-provider-gce.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vmpooler-provider-gce.gemspec b/vmpooler-provider-gce.gemspec index c1902ce..347bd6b 100644 --- a/vmpooler-provider-gce.gemspec +++ b/vmpooler-provider-gce.gemspec @@ -16,7 +16,7 @@ Gem::Specification.new do |s| s.files = Dir[ "lib/**/*" ] s.require_paths = ["lib"] s.add_dependency "google-apis-compute_v1", "~> 0.14" - s.add_dependency "googleauth", ">= 0.16.2", "< 1.2.0" + s.add_dependency "googleauth", ">= 0.16.2", "< 1.3.0" s.add_dependency "google-cloud-dns", "~> 0.35.1" s.add_development_dependency 'vmpooler', '>= 1.3.0', '~> 2.3' From 79516d8014e22aef9d4a53bfdfe1a1516ae9aab5 Mon Sep 17 00:00:00 2001 From: Samuel Beaulieu Date: Tue, 26 Jul 2022 16:20:45 -0500 Subject: [PATCH 09/55] (maint) Refactor cloud dns Moved the creation and deletion methods to a vmpooler class, to be used by the ec2 provisioner. Added a check for failed deletion attempts, they are now retried up to 30 times --- lib/vmpooler-provider-gce/version.rb | 2 +- lib/vmpooler/cloud_dns.rb | 55 ++++++++++++++++++++++++++++ lib/vmpooler/providers/gce.rb | 30 +++------------ spec/unit/providers/gce_spec.rb | 10 ++--- 4 files changed, 66 insertions(+), 31 deletions(-) create mode 100644 lib/vmpooler/cloud_dns.rb diff --git a/lib/vmpooler-provider-gce/version.rb b/lib/vmpooler-provider-gce/version.rb index cd39329..a332a30 100644 --- a/lib/vmpooler-provider-gce/version.rb +++ b/lib/vmpooler-provider-gce/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module VmpoolerProviderGce - VERSION = '0.3.0' + VERSION = '0.4.0' end diff --git a/lib/vmpooler/cloud_dns.rb b/lib/vmpooler/cloud_dns.rb new file mode 100644 index 0000000..ba56b2c --- /dev/null +++ b/lib/vmpooler/cloud_dns.rb @@ -0,0 +1,55 @@ +# frozen_string_literal: true + +require 'googleauth' +require 'google/cloud/dns' + +module Vmpooler + class PoolManager + class CloudDns + def initialize(project, dns_zone_resource_name) + @dns ||= Google::Cloud::Dns.new(project_id: project) + @dns_zone_resource_name = dns_zone_resource_name + end + + def dns_create_or_replace(created_instance) + dns_zone = @dns.zone(@dns_zone_resource_name) if @dns_zone_resource_name + return unless dns_zone && created_instance && created_instance['name'] && created_instance['ip'] + + name = created_instance['name'] + begin + change = dns_zone.add(name, 'A', 60, [created_instance['ip']]) + debug_logger("#{change.id} - #{change.started_at} - #{change.status} DNS address added") if change + rescue Google::Cloud::AlreadyExistsError => _e + # DNS setup is done only for new instances, so in the rare case where a DNS record already exists (it is stale) and we replace it. + # the error is Google::Cloud::AlreadyExistsError: alreadyExists: The resource 'entity.change.additions[0]' named 'instance-8.test.vmpooler.net. (A)' already exists + change = dns_zone.replace(name, 'A', 60, [created_instance['ip']]) + debug_logger("#{change.id} - #{change.started_at} - #{change.status} DNS address previously existed and was replaced") if change + end + end + + def dns_teardown(created_instance) + dns_zone = @dns.zone(@dns_zone_resource_name) if @dns_zone_resource_name + return unless dns_zone && created_instance + + retries = 0 + name = created_instance['name'] + change = dns_zone.remove(name, 'A') + debug_logger("#{change.id} - #{change.started_at} - #{change.status} DNS address removed") if change + rescue Google::Cloud::FailedPreconditionError => e + # this error was experienced intermittently, will retry to see if it can complete successfully + # the error is Google::Cloud::FailedPreconditionError: conditionNotMet: Precondition not met for 'entity.change.deletions[1]' + debug_logger("DNS teardown failed, retrying error: #{e}") + sleep 5 + retry if (retries += 1) < 30 + end + + # used in local dev environment, set DEBUG_FLAG=true + # this way the upstream vmpooler manager does not get polluted with logs + def debug_logger(message, send_to_upstream: false) + # the default logger is simple and does not enforce debug levels (the first argument) + puts message if ENV['DEBUG_FLAG'] + logger.log('[g]', message) if send_to_upstream + end + end + end +end diff --git a/lib/vmpooler/providers/gce.rb b/lib/vmpooler/providers/gce.rb index e94c9a3..d656156 100644 --- a/lib/vmpooler/providers/gce.rb +++ b/lib/vmpooler/providers/gce.rb @@ -2,7 +2,7 @@ require 'googleauth' require 'google/apis/compute_v1' -require 'google/cloud/dns' +require 'vmpooler/cloud_dns' require 'bigdecimal' require 'bigdecimal/util' require 'vmpooler/providers/base' @@ -58,11 +58,6 @@ module Vmpooler end end - def dns - @dns ||= Google::Cloud::Dns.new(project_id: project) - @dns - end - # main configuration options def project provider_config['project'] @@ -566,28 +561,13 @@ module Vmpooler # END BASE METHODS def dns_setup(created_instance) - dns_zone = dns.zone(dns_zone_resource_name) if dns_zone_resource_name - return unless dns_zone && created_instance && created_instance['name'] && created_instance['ip'] - - name = created_instance['name'] - begin - change = dns_zone.add(name, 'A', 60, [created_instance['ip']]) - debug_logger("#{change.id} - #{change.started_at} - #{change.status} DNS address added") if change - rescue Google::Cloud::AlreadyExistsError => _e - # DNS setup is done only for new instances, so in the rare case where a DNS record already exists (it is stale) and we replace it. - # the error is Google::Cloud::AlreadyExistsError: alreadyExists: The resource 'entity.change.additions[0]' named 'instance-8.test.vmpooler.net. (A)' already exists - change = dns_zone.replace(name, 'A', 60, [created_instance['ip']]) - debug_logger("#{change.id} - #{change.started_at} - #{change.status} DNS address previously existed and was replaced") if change - end + dns = Vmpooler::PoolManager::CloudDns.new(project, dns_zone_resource_name) + dns.dns_create_or_replace(created_instance) end def dns_teardown(created_instance) - dns_zone = dns.zone(dns_zone_resource_name) if dns_zone_resource_name - return unless dns_zone && created_instance - - name = created_instance['name'] - change = dns_zone.remove(name, 'A') - debug_logger("#{change.id} - #{change.started_at} - #{change.status} DNS address removed") if change + dns = Vmpooler::PoolManager::CloudDns.new(project, dns_zone_resource_name) + dns.dns_teardown(created_instance) end def should_be_ignored(item, allowlist) diff --git a/spec/unit/providers/gce_spec.rb b/spec/unit/providers/gce_spec.rb index a66a8c0..c893397 100644 --- a/spec/unit/providers/gce_spec.rb +++ b/spec/unit/providers/gce_spec.rb @@ -62,7 +62,7 @@ EOT describe '#manual tests live' do context 'in itsysops' do before(:each) { allow(subject).to receive(:dns).and_call_original } - let(:vmname) { "instance-27" } + let(:vmname) { "instance-31" } let(:project) { 'vmpooler-test' } let(:config) { YAML.load(<<~EOT --- @@ -75,8 +75,8 @@ EOT project: '#{project}' zone: '#{zone}' network_name: 'projects/itsysopsnetworking/global/networks/shared1' - dns_zone_resource_name: 'test-vmpooler-puppet-net' - domain: 'test.vmpooler.puppet.net' + dns_zone_resource_name: 'vmpooler-test-puppet-net' + domain: 'vmpooler-test.puppet.net' :pools: - name: '#{poolname}' alias: [ 'mockpool' ] @@ -93,8 +93,8 @@ EOT skip 'gets a vm' do result = subject.create_vm(poolname, vmname) #result = subject.destroy_vm(poolname, vmname) - subject.get_vm(poolname, vmname) - #subject.dns_teardown({'name' => vmname}) + # subject.get_vm(poolname, vmname) + subject.dns_teardown({'name' => vmname}) # subject.dns_setup({'name' => vmname, 'ip' => '1.2.3.5'}) end end From 2a39a8cf062a6b9083288e2c539b9683454c6bba Mon Sep 17 00:00:00 2001 From: Samuel Beaulieu Date: Wed, 27 Jul 2022 09:31:24 -0500 Subject: [PATCH 10/55] fix rubocop offences and spec tests --- lib/vmpooler/cloud_dns.rb | 3 ++- spec/unit/providers/gce_spec.rb | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/vmpooler/cloud_dns.rb b/lib/vmpooler/cloud_dns.rb index ba56b2c..aececce 100644 --- a/lib/vmpooler/cloud_dns.rb +++ b/lib/vmpooler/cloud_dns.rb @@ -5,9 +5,10 @@ require 'google/cloud/dns' module Vmpooler class PoolManager + # This class interacts with GCP Cloud DNS to create or delete records. class CloudDns def initialize(project, dns_zone_resource_name) - @dns ||= Google::Cloud::Dns.new(project_id: project) + @dns = Google::Cloud::Dns.new(project_id: project) @dns_zone_resource_name = dns_zone_resource_name end diff --git a/spec/unit/providers/gce_spec.rb b/spec/unit/providers/gce_spec.rb index c893397..c4b8f25 100644 --- a/spec/unit/providers/gce_spec.rb +++ b/spec/unit/providers/gce_spec.rb @@ -267,6 +267,7 @@ EOT result = MockResult.new result.status = 'DONE' allow(connection).to receive(:insert_instance).and_return(result) + allow(subject).to receive(:dns_setup).and_return(true) end it 'should return a hash' do @@ -313,6 +314,7 @@ EOT result.status = 'DONE' allow(subject).to receive(:wait_for_operation).and_return(result) allow(connection).to receive(:delete_instance).and_return(result) + allow(subject).to receive(:dns_teardown).and_return(true) end it 'should return true' do @@ -584,6 +586,7 @@ EOT before(:each) do allow(subject).to receive(:connect_to_gce).and_return(connection) + allow(subject).to receive(:dns_teardown).and_return(true) end context 'with empty allowlist' do From b94d54f129c156358986ac35fe56d8af54f8ea04 Mon Sep 17 00:00:00 2001 From: Samuel Beaulieu Date: Wed, 27 Jul 2022 09:35:18 -0500 Subject: [PATCH 11/55] bump testing with jruby-9.3.6.0 --- .github/workflows/release.yml | 4 ++-- .github/workflows/testing.yml | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e71ec28..0097c39 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,10 +20,10 @@ jobs: draft: false prerelease: false generateReleaseNotes: true - - name: Install Ruby 2.5.8 + - name: Install Ruby jruby-9.3.6.0 uses: ruby/setup-ruby@v1 with: - ruby-version: '2.5.8' + ruby-version: 'jruby-9.3.6.0' - name: Build gem run: gem build *.gemspec - name: Publish gem diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 501403f..068495e 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -18,7 +18,7 @@ jobs: strategy: matrix: ruby-version: - - '2.5.8' + - 'jruby-9.3.6.0' steps: - uses: actions/checkout@v2 - name: Set up Ruby @@ -34,8 +34,7 @@ jobs: strategy: matrix: ruby-version: - - '2.5.8' - - 'jruby-9.2.12.0' + - 'jruby-9.3.6.0' steps: - uses: actions/checkout@v2 - name: Set up Ruby From 26327210a4e86043475b687678d33105c3709659 Mon Sep 17 00:00:00 2001 From: Samuel Beaulieu Date: Wed, 27 Jul 2022 12:24:45 -0500 Subject: [PATCH 12/55] Added a check for failed create attempts, they are now retried up to 30 times --- lib/vmpooler/cloud_dns.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/vmpooler/cloud_dns.rb b/lib/vmpooler/cloud_dns.rb index aececce..a98d9ef 100644 --- a/lib/vmpooler/cloud_dns.rb +++ b/lib/vmpooler/cloud_dns.rb @@ -16,6 +16,7 @@ module Vmpooler dns_zone = @dns.zone(@dns_zone_resource_name) if @dns_zone_resource_name return unless dns_zone && created_instance && created_instance['name'] && created_instance['ip'] + retries = 0 name = created_instance['name'] begin change = dns_zone.add(name, 'A', 60, [created_instance['ip']]) @@ -25,6 +26,12 @@ module Vmpooler # the error is Google::Cloud::AlreadyExistsError: alreadyExists: The resource 'entity.change.additions[0]' named 'instance-8.test.vmpooler.net. (A)' already exists change = dns_zone.replace(name, 'A', 60, [created_instance['ip']]) debug_logger("#{change.id} - #{change.started_at} - #{change.status} DNS address previously existed and was replaced") if change + rescue Google::Cloud::FailedPreconditionError => e + # this error was experienced intermittently, will retry to see if it can complete successfully + # the error is Google::Cloud::FailedPreconditionError: conditionNotMet: Precondition not met for 'entity.change.deletions[0]' + debug_logger("DNS create failed, retrying error: #{e}") + sleep 5 + retry if (retries += 1) < 30 end end From 84a026e8ad022ff26a84605b81023ce12be6831e Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 8 Aug 2022 14:35:32 -0400 Subject: [PATCH 13/55] Add release-engineering to codeowners --- CODEOWNERS | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index 9c4ecfc..282a30d 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,10 +1,10 @@ -# This will cause DIO to be assigned review of any opened PRs against +# This will cause DIO and RE to be assigned review of any opened PRs against # the branches containing this file. # See https://help.github.com/en/articles/about-code-owners for info on how to # take ownership of parts of the code base that should be reviewed by another # team. -# DIO will be the default owners for everything in the repo. -* @puppetlabs/dio +# DIO and RE will be the default owners for everything in the repo. +* @puppetlabs/dio @puppetlabs/release-engineering From 8451e2834df8c382e8802fe62f71449a1f00bbd7 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Tue, 16 Aug 2022 17:21:31 -0400 Subject: [PATCH 14/55] 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..cc243a0 --- /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: jruby-9.3.6.0 + - 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 f93610a3ff50ff47b445561563afa4e87387ca29 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Fri, 26 Aug 2022 09:44:43 -0400 Subject: [PATCH 15/55] Remove DIO as codeowners --- CODEOWNERS | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index 282a30d..b47017c 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,10 +1,10 @@ -# This will cause DIO and RE to be assigned review of any opened PRs against +# This will cause RE to be assigned review of any opened PRs against # the branches containing this file. # See https://help.github.com/en/articles/about-code-owners for info on how to # take ownership of parts of the code base that should be reviewed by another # team. -# DIO and RE will be the default owners for everything in the repo. -* @puppetlabs/dio @puppetlabs/release-engineering +# RE will be the default owners for everything in the repo. +* @puppetlabs/release-engineering From 97eb08011cc8ea4d4600d570045fca6ca3a53861 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Thu, 19 Jan 2023 21:17:35 -0500 Subject: [PATCH 16/55] 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 4afe1db81bb767998ce4dd14c7f71a6a31855fa4 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Thu, 19 Jan 2023 21:17:50 -0500 Subject: [PATCH 17/55] 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 cc243a0..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: jruby-9.3.6.0 - - 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 733856809c1af79fa45975e09512fd2a74dad78b Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 30 Jan 2023 09:08:42 -0500 Subject: [PATCH 18/55] Add jruby-9.4 to testing --- .github/workflows/testing.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 068495e..86955f6 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -19,8 +19,9 @@ jobs: matrix: ruby-version: - 'jruby-9.3.6.0' + - 'jruby-9.4.0.0' steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: @@ -35,8 +36,9 @@ jobs: matrix: ruby-version: - 'jruby-9.3.6.0' + - 'jruby-9.4.0.0' steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: From 91cf44d54a24391ff2ffa4add28aadc257be42e4 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 30 Jan 2023 09:08:53 -0500 Subject: [PATCH 19/55] Update release workflow --- .github/workflows/release.yml | 66 +++++++++++++++++++++++++++++++---- 1 file changed, 59 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0097c39..5f55be8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,4 +1,4 @@ -name: Release +name: Release Gem on: workflow_dispatch @@ -7,25 +7,77 @@ jobs: runs-on: ubuntu-latest if: github.repository == 'puppetlabs/vmpooler-provider-gce' steps: - - uses: actions/checkout@v2 - - name: Get Version - id: gv + - uses: actions/checkout@v3 + + - 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: Get Next Version + id: nv run: | - echo "::set-output name=ver::$(grep VERSION lib/vmpooler-provider-gce/version.rb |rev |cut -d "'" -f2 |rev)" + version=$(grep VERSION lib/vmpooler-provider-gce/version.rb |rev |cut -d "'" -f2 |rev) + echo "version=$version" >> $GITHUB_OUTPUT + echo "Found version $version from lib/vmpooler-provider-gce/version.rb" + + - name: Generate Changelog + uses: docker://githubchangeloggenerator/github-changelog-generator:1.16.2 + with: + args: >- + --future-release ${{ steps.nv.outputs.version }} + env: + CHANGELOG_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Validate Changelog + run : | + set -e + if [[ -n $(git status --porcelain) ]]; then + echo "Here is the current git status:" + git status + echo + echo "The following changes were detected:" + git --no-pager diff + echo "Uncommitted PRs found in the changelog. Please submit a release prep PR of changes after running `./update-changelog`" + exit 1 + fi + + - name: Generate Release Notes + uses: docker://githubchangeloggenerator/github-changelog-generator:1.16.2 + 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 + + # This step should closely match what is used in `docker/Dockerfile` in vmpooler-deployment - name: Install Ruby jruby-9.3.6.0 uses: ruby/setup-ruby@v1 with: ruby-version: 'jruby-9.3.6.0' + - name: Build gem run: gem build *.gemspec + - name: Publish gem run: | mkdir -p $HOME/.gem From 1d8b9c5ab96223d58428ca4b632bbde00eda7eab Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 30 Jan 2023 09:25:59 -0500 Subject: [PATCH 20/55] Add changelog and release instructions --- .github_changelog_generator | 3 ++ CHANGELOG.md | 66 +++++++++++++++++++++++++++++++++++++ README.md | 24 ++++++++++++++ update-changelog | 5 +++ update-gemfile-lock | 7 ++++ 5 files changed, 105 insertions(+) create mode 100644 .github_changelog_generator create mode 100644 CHANGELOG.md create mode 100755 update-changelog create mode 100755 update-gemfile-lock diff --git a/.github_changelog_generator b/.github_changelog_generator new file mode 100644 index 0000000..fa45c80 --- /dev/null +++ b/.github_changelog_generator @@ -0,0 +1,3 @@ +project=vmpooler-provider-gce +user=puppetlabs +exclude_labels=maintenance \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..7290f2a --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,66 @@ +# Changelog + +## [Unreleased](https://github.com/puppetlabs/vmpooler-provider-gce/tree/HEAD) + +[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-gce/compare/0.4.0...HEAD) + +**Merged pull requests:** + +- \(RE-15111\) Migrate Snyk to Mend Scanning [\#19](https://github.com/puppetlabs/vmpooler-provider-gce/pull/19) ([yachub](https://github.com/yachub)) +- \(RE-14811\) Remove DIO as codeowners [\#17](https://github.com/puppetlabs/vmpooler-provider-gce/pull/17) ([yachub](https://github.com/yachub)) +- Add Snyk action [\#16](https://github.com/puppetlabs/vmpooler-provider-gce/pull/16) ([yachub](https://github.com/yachub)) +- Add release-engineering to codeowners [\#15](https://github.com/puppetlabs/vmpooler-provider-gce/pull/15) ([yachub](https://github.com/yachub)) + +## [0.4.0](https://github.com/puppetlabs/vmpooler-provider-gce/tree/0.4.0) (2022-07-27) + +[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-gce/compare/0.3.0...0.4.0) + +**Merged pull requests:** + +- \(maint\) Refactor cloud dns [\#13](https://github.com/puppetlabs/vmpooler-provider-gce/pull/13) ([sbeaulie](https://github.com/sbeaulie)) +- Update googleauth requirement from \>= 0.16.2, \< 1.2.0 to \>= 0.16.2, \< 1.3.0 [\#12](https://github.com/puppetlabs/vmpooler-provider-gce/pull/12) ([dependabot[bot]](https://github.com/apps/dependabot)) + +## [0.3.0](https://github.com/puppetlabs/vmpooler-provider-gce/tree/0.3.0) (2022-06-21) + +[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-gce/compare/0.2.0...0.3.0) + +**Merged pull requests:** + +- release prep 0.3.0 [\#11](https://github.com/puppetlabs/vmpooler-provider-gce/pull/11) ([sbeaulie](https://github.com/sbeaulie)) +- \(DIO-3162\) vmpooler gce provider to support disk type \(to use ssd\) [\#10](https://github.com/puppetlabs/vmpooler-provider-gce/pull/10) ([sbeaulie](https://github.com/sbeaulie)) + +## [0.2.0](https://github.com/puppetlabs/vmpooler-provider-gce/tree/0.2.0) (2022-04-19) + +[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-gce/compare/0.1.2...0.2.0) + +**Implemented enhancements:** + +- Set hostname for instance during create\_vm [\#8](https://github.com/puppetlabs/vmpooler-provider-gce/pull/8) ([yachub](https://github.com/yachub)) + +**Merged pull requests:** + +- 0.2.0 release prep [\#9](https://github.com/puppetlabs/vmpooler-provider-gce/pull/9) ([yachub](https://github.com/yachub)) +- Update vmpooler requirement from ~\> 1.3, \>= 1.3.0 to \>= 1.3.0, ~\> 2.3 [\#7](https://github.com/puppetlabs/vmpooler-provider-gce/pull/7) ([dependabot[bot]](https://github.com/apps/dependabot)) +- Update googleauth requirement from ~\> 0.16.2 to \>= 0.16.2, \< 1.2.0 [\#6](https://github.com/puppetlabs/vmpooler-provider-gce/pull/6) ([dependabot[bot]](https://github.com/apps/dependabot)) + +## [0.1.2](https://github.com/puppetlabs/vmpooler-provider-gce/tree/0.1.2) (2022-01-10) + +[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-gce/compare/0.1.1...0.1.2) + +## [0.1.1](https://github.com/puppetlabs/vmpooler-provider-gce/tree/0.1.1) (2022-01-10) + +[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-gce/compare/0.1.0...0.1.1) + +## [0.1.0](https://github.com/puppetlabs/vmpooler-provider-gce/tree/0.1.0) (2022-01-10) + +[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-gce/compare/588e29b6e100327336bf0910ae16b6a85ffe279a...0.1.0) + +**Merged pull requests:** + +- Adding the cloud DNS API library and related methods [\#4](https://github.com/puppetlabs/vmpooler-provider-gce/pull/4) ([sbeaulie](https://github.com/sbeaulie)) +- fix simplecov with jruby, add a .rubocop.yml config file [\#3](https://github.com/puppetlabs/vmpooler-provider-gce/pull/3) ([sbeaulie](https://github.com/sbeaulie)) +- Add a release workflow for pushing to Rubygems [\#1](https://github.com/puppetlabs/vmpooler-provider-gce/pull/1) ([genebean](https://github.com/genebean)) + + + +\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* diff --git a/README.md b/README.md index 8260302..f65a5ba 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,14 @@ # vmpooler-provider-gce +- [vmpooler-provider-gce](#vmpooler-provider-gce) + - [Usage](#usage) + - [DNS](#dns) + - [Labels](#labels) + - [Pre-requisite](#pre-requisite) + - [Update the Gemfile Lock](#update-the-gemfile-lock) + - [Releasing](#releasing) + - [License](#license) + This is a provider for [VMPooler](https://github.com/puppetlabs/vmpooler) allows using GCE to create instances, disks, snapshots, or destroy instances for specific pools. @@ -37,6 +46,21 @@ do not have the pool label, and can be configured to allow a specific list of un - The service account needs to be given permissions to the project (broad permissions would be compute v1 admin and dns admin). A yaml file is provided that lists the least-privilege permissions needed - if using DNS, a DNS zone needs to be created in CloudDNS, and configured in the provider's config section with the name of that zone (dns_zone_resource_name). When not specified, the DNS setup and teardown is skipped. +## Update the Gemfile Lock + +To update the `Gemfile.lock` run `./update-gemfile-lock`. + +Verify, and update if needed, that the docker tag in the script and GitHub action workflows matches what is used in the [vmpooler-deployment Dockerfile](https://github.com/puppetlabs/vmpooler-deployment/blob/main/docker/Dockerfile). + +## Releasing + +Follow these steps to publish a new GitHub release, and build and push the gem to . + +1. Bump the "VERSION" in `lib/vmpooler-provider-gce/version.rb` appropriately based on changes in `CHANGELOG.md` since the last release. +2. Run `./update-gemfile-lock` to update `Gemfile.lock`. +3. Run `./update-changelog` to update `CHANGELOG.md`. +4. Commit and push changes to a new branch, then open a pull request against `main` and be sure to add the "maintenance" label. +5. After the pull request is approved and merged, then navigate to Actions --> Release Gem --> run workflow --> Branch: main --> Run workflow. ## License diff --git a/update-changelog b/update-changelog new file mode 100755 index 0000000..46b5874 --- /dev/null +++ b/update-changelog @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +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/vmpooler-provider-gce/version.rb |rev |cut -d "'" -f2 |rev) diff --git a/update-gemfile-lock b/update-gemfile-lock new file mode 100755 index 0000000..74e9c78 --- /dev/null +++ b/update-gemfile-lock @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +# The container tag should closely match what is used in `docker/Dockerfile` in vmpooler-deployment +docker run -it --rm \ + -v $(pwd):/app \ + jruby:9.3.6-jdk \ + /bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends make git && cd /app && gem install bundler && bundle install --jobs 3 && bundle update; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"' From dd1829abf8b8dcc8c6835b5eee198499eab5b26b Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 30 Jan 2023 09:27:05 -0500 Subject: [PATCH 21/55] vmpooler should be a dependency --- Gemfile.lock | 235 ++++++++++++++++++++++++++++++++++ vmpooler-provider-gce.gemspec | 3 +- 2 files changed, 236 insertions(+), 2 deletions(-) create mode 100644 Gemfile.lock diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..da1adce --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,235 @@ +PATH + remote: . + specs: + vmpooler-provider-gce (0.4.0) + google-apis-compute_v1 (~> 0.14) + google-cloud-dns (~> 0.35.1) + googleauth (>= 0.16.2, < 1.3.0) + vmpooler (~> 2.3, >= 1.3.0) + +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.1) + public_suffix (>= 2.0.2, < 6.0) + ast (2.4.2) + bindata (2.4.14) + builder (3.2.4) + climate_control (1.2.0) + coderay (1.1.3) + concurrent-ruby (1.2.0) + connection_pool (2.3.0) + declarative (0.0.20) + deep_merge (1.2.2) + diff-lcs (1.5.0) + docile (1.4.0) + faraday (2.7.4) + faraday-net_http (>= 2.0, < 3.1) + ruby2_keywords (>= 0.0.4) + faraday-net_http (3.0.2) + ffi (1.15.5-java) + google-apis-compute_v1 (0.60.0) + google-apis-core (>= 0.9.1, < 2.a) + google-apis-core (0.10.0) + addressable (~> 2.5, >= 2.5.1) + googleauth (>= 0.16.2, < 2.a) + httpclient (>= 2.8.1, < 3.a) + mini_mime (~> 1.0) + representable (~> 3.0) + retriable (>= 2.0, < 4.a) + rexml + webrick + google-apis-dns_v1 (0.29.0) + google-apis-core (>= 0.9.1, < 2.a) + google-cloud-core (1.6.0) + google-cloud-env (~> 1.0) + google-cloud-errors (~> 1.0) + google-cloud-dns (0.35.1) + google-apis-dns_v1 (~> 0.1) + google-cloud-core (~> 1.6) + googleauth (>= 0.16.2, < 2.a) + zonefile (~> 1.04) + google-cloud-env (1.6.0) + faraday (>= 0.17.3, < 3.0) + google-cloud-errors (1.3.0) + googleauth (1.2.0) + faraday (>= 0.17.3, < 3.a) + jwt (>= 1.4, < 3.0) + memoist (~> 0.16) + multi_json (~> 1.11) + os (>= 0.9, < 2.0) + signet (>= 0.16, < 2.a) + httpclient (2.8.3) + jwt (2.6.0) + memoist (0.16.2) + method_source (1.0.0) + mini_mime (1.1.2) + mock_redis (0.36.0) + ruby2_keywords + multi_json (1.15.0) + mustermann (2.0.2) + ruby2_keywords (~> 0.0.1) + net-ldap (0.17.1) + nio4r (2.5.8-java) + opentelemetry-api (1.1.0) + opentelemetry-common (0.19.6) + opentelemetry-api (~> 1.0) + opentelemetry-exporter-jaeger (0.20.1) + opentelemetry-api (~> 1.0) + opentelemetry-common (~> 0.19.2) + opentelemetry-sdk (~> 1.0) + thrift + opentelemetry-instrumentation-base (0.19.0) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-concurrent_ruby (0.19.2) + opentelemetry-api (~> 1.0) + opentelemetry-instrumentation-base (~> 0.19.0) + opentelemetry-instrumentation-http_client (0.19.4) + opentelemetry-api (~> 1.0) + opentelemetry-common (~> 0.19.3) + opentelemetry-instrumentation-base (~> 0.19.0) + opentelemetry-instrumentation-redis (0.21.3) + opentelemetry-api (~> 1.0) + opentelemetry-common (~> 0.19.3) + opentelemetry-instrumentation-base (~> 0.19.0) + opentelemetry-instrumentation-sinatra (0.19.3) + opentelemetry-api (~> 1.0) + opentelemetry-common (~> 0.19.3) + opentelemetry-instrumentation-base (~> 0.19.0) + opentelemetry-registry (0.2.0) + opentelemetry-api (~> 1.1) + opentelemetry-resource_detectors (0.19.1) + google-cloud-env + opentelemetry-sdk + opentelemetry-sdk (1.2.0) + opentelemetry-api (~> 1.1) + opentelemetry-common (~> 0.19.3) + opentelemetry-registry (~> 0.2) + opentelemetry-semantic_conventions + opentelemetry-semantic_conventions (1.8.0) + opentelemetry-api (~> 1.0) + os (1.1.4) + parallel (1.22.1) + parser (3.2.0.0) + ast (~> 2.4.1) + pickup (0.0.11) + prometheus-client (2.1.0) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + public_suffix (5.0.1) + puma (5.6.5-java) + nio4r (~> 2.0) + rack (2.2.6.2) + rack-protection (2.2.4) + rack + rack-test (2.0.2) + rack (>= 1.3) + rainbow (3.1.1) + rake (13.0.6) + redis (4.8.0) + regexp_parser (2.6.2) + representable (3.2.0) + declarative (< 0.1.0) + trailblazer-option (>= 0.1.1, < 0.2.0) + uber (< 0.2.0) + retriable (3.1.2) + rexml (3.2.5) + rspec (3.12.0) + rspec-core (~> 3.12.0) + rspec-expectations (~> 3.12.0) + rspec-mocks (~> 3.12.0) + rspec-core (3.12.0) + rspec-support (~> 3.12.0) + rspec-expectations (3.12.2) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.12.0) + rspec-mocks (3.12.3) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.12.0) + rspec-support (3.12.0) + rubocop (1.1.0) + parallel (~> 1.10) + parser (>= 2.7.1.5) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8) + rexml + rubocop-ast (>= 1.0.1) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 1.4.0, < 2.0) + rubocop-ast (1.24.1) + parser (>= 3.1.1.0) + ruby-progressbar (1.11.0) + ruby2_keywords (0.0.5) + signet (0.17.0) + addressable (~> 2.8) + faraday (>= 0.17.5, < 3.a) + jwt (>= 1.5, < 3.0) + multi_json (~> 1.10) + simplecov (0.22.0) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + sinatra (2.2.4) + mustermann (~> 2.0) + rack (~> 2.2) + rack-protection (= 2.2.4) + tilt (~> 2.0) + spicy-proton (2.1.15) + bindata (~> 2.3) + spoon (0.0.6) + ffi + statsd-ruby (1.5.0) + thor (1.2.1) + thrift (0.17.0) + tilt (2.0.11) + trailblazer-option (0.1.2) + uber (0.1.0) + unicode-display_width (1.8.0) + vmpooler (2.4.0) + concurrent-ruby (~> 1.1) + connection_pool (~> 2.2) + deep_merge (~> 1.2) + net-ldap (~> 0.16) + opentelemetry-exporter-jaeger (= 0.20.1) + opentelemetry-instrumentation-concurrent_ruby (= 0.19.2) + opentelemetry-instrumentation-http_client (= 0.19.4) + opentelemetry-instrumentation-redis (= 0.21.3) + opentelemetry-instrumentation-sinatra (= 0.19.3) + opentelemetry-resource_detectors (= 0.19.1) + opentelemetry-sdk (~> 1.0, >= 1.0.2) + pickup (~> 0.0.11) + prometheus-client (~> 2.0) + puma (~> 5.0, >= 5.0.4) + rack (~> 2.2) + rake (~> 13.0) + redis (~> 4.1) + sinatra (~> 2.0) + spicy-proton (~> 2.1) + statsd-ruby (~> 1.4) + webrick (1.8.1) + yarjuf (2.0.0) + builder + rspec (~> 3) + zonefile (1.06) + +PLATFORMS + universal-java-1.8 + +DEPENDENCIES + climate_control (>= 0.2.0) + mock_redis (>= 0.17.0) + pry + rack-test (>= 0.6) + rspec (>= 3.2) + rubocop (~> 1.1.0) + simplecov (>= 0.11.2) + thor (~> 1.0, >= 1.0.1) + vmpooler-provider-gce! + yarjuf (>= 2.0) + +BUNDLED WITH + 2.4.5 diff --git a/vmpooler-provider-gce.gemspec b/vmpooler-provider-gce.gemspec index 347bd6b..3be4d75 100644 --- a/vmpooler-provider-gce.gemspec +++ b/vmpooler-provider-gce.gemspec @@ -18,8 +18,7 @@ Gem::Specification.new do |s| s.add_dependency "google-apis-compute_v1", "~> 0.14" s.add_dependency "googleauth", ">= 0.16.2", "< 1.3.0" s.add_dependency "google-cloud-dns", "~> 0.35.1" - - s.add_development_dependency 'vmpooler', '>= 1.3.0', '~> 2.3' + s.add_dependency 'vmpooler', '>= 1.3.0', '~> 2.3' # Testing dependencies s.add_development_dependency 'climate_control', '>= 0.2.0' From 30c524922c4d2948a6f02bfade1ccd8babe700a8 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 30 Jan 2023 14:58:54 -0500 Subject: [PATCH 22/55] Add platform universal-java-11 to lockfile --- Gemfile.lock | 1 + 1 file changed, 1 insertion(+) diff --git a/Gemfile.lock b/Gemfile.lock index da1adce..fb4920f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -218,6 +218,7 @@ GEM PLATFORMS universal-java-1.8 + universal-java-11 DEPENDENCIES climate_control (>= 0.2.0) From cbec1d9d3aa0ff591b69f834453533945aa96fdf Mon Sep 17 00:00:00 2001 From: isaac-hammes Date: Thu, 2 Mar 2023 12:02:42 -0800 Subject: [PATCH 23/55] (maint) Update to jruby-9.4.1.0 and move socket timeout to new method. --- .github/workflows/release.yml | 4 ++-- .github/workflows/testing.yml | 6 ++---- Gemfile.lock | 36 +++++++++++++++++------------------ lib/vmpooler/providers/gce.rb | 16 +++++++--------- update-gemfile-lock | 4 ++-- 5 files changed, 31 insertions(+), 35 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5f55be8..0e30eae 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -70,10 +70,10 @@ jobs: prerelease: false # This step should closely match what is used in `docker/Dockerfile` in vmpooler-deployment - - name: Install Ruby jruby-9.3.6.0 + - name: Install Ruby jruby-9.4.1.0 uses: ruby/setup-ruby@v1 with: - ruby-version: 'jruby-9.3.6.0' + ruby-version: 'jruby-9.4.1.0' - name: Build gem run: gem build *.gemspec diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 86955f6..eac55b3 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -18,8 +18,7 @@ jobs: strategy: matrix: ruby-version: - - 'jruby-9.3.6.0' - - 'jruby-9.4.0.0' + - 'jruby-9.4.1.0' steps: - uses: actions/checkout@v3 - name: Set up Ruby @@ -35,8 +34,7 @@ jobs: strategy: matrix: ruby-version: - - 'jruby-9.3.6.0' - - 'jruby-9.4.0.0' + - 'jruby-9.4.1.0' steps: - uses: actions/checkout@v3 - name: Set up Ruby diff --git a/Gemfile.lock b/Gemfile.lock index fb4920f..25eb646 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -13,11 +13,11 @@ GEM addressable (2.8.1) public_suffix (>= 2.0.2, < 6.0) ast (2.4.2) - bindata (2.4.14) + bindata (2.4.15) builder (3.2.4) climate_control (1.2.0) coderay (1.1.3) - concurrent-ruby (1.2.0) + concurrent-ruby (1.2.2) connection_pool (2.3.0) declarative (0.0.20) deep_merge (1.2.2) @@ -28,9 +28,9 @@ GEM ruby2_keywords (>= 0.0.4) faraday-net_http (3.0.2) ffi (1.15.5-java) - google-apis-compute_v1 (0.60.0) - google-apis-core (>= 0.9.1, < 2.a) - google-apis-core (0.10.0) + google-apis-compute_v1 (0.62.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-core (0.11.0) addressable (~> 2.5, >= 2.5.1) googleauth (>= 0.16.2, < 2.a) httpclient (>= 2.8.1, < 3.a) @@ -39,8 +39,8 @@ GEM retriable (>= 2.0, < 4.a) rexml webrick - google-apis-dns_v1 (0.29.0) - google-apis-core (>= 0.9.1, < 2.a) + google-apis-dns_v1 (0.31.0) + google-apis-core (>= 0.11.0, < 2.a) google-cloud-core (1.6.0) google-cloud-env (~> 1.0) google-cloud-errors (~> 1.0) @@ -51,7 +51,7 @@ GEM zonefile (~> 1.04) google-cloud-env (1.6.0) faraday (>= 0.17.3, < 3.0) - google-cloud-errors (1.3.0) + google-cloud-errors (1.3.1) googleauth (1.2.0) faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) @@ -60,7 +60,7 @@ GEM os (>= 0.9, < 2.0) signet (>= 0.16, < 2.a) httpclient (2.8.3) - jwt (2.6.0) + jwt (2.7.0) memoist (0.16.2) method_source (1.0.0) mini_mime (1.1.2) @@ -110,7 +110,7 @@ GEM opentelemetry-api (~> 1.0) os (1.1.4) parallel (1.22.1) - parser (3.2.0.0) + parser (3.2.1.0) ast (~> 2.4.1) pickup (0.0.11) prometheus-client (2.1.0) @@ -128,8 +128,8 @@ GEM rack (>= 1.3) rainbow (3.1.1) rake (13.0.6) - redis (4.8.0) - regexp_parser (2.6.2) + redis (4.8.1) + regexp_parser (2.7.0) representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) @@ -140,7 +140,7 @@ GEM rspec-core (~> 3.12.0) rspec-expectations (~> 3.12.0) rspec-mocks (~> 3.12.0) - rspec-core (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) @@ -158,9 +158,9 @@ GEM rubocop-ast (>= 1.0.1) ruby-progressbar (~> 1.7) unicode-display_width (>= 1.4.0, < 2.0) - rubocop-ast (1.24.1) - parser (>= 3.1.1.0) - ruby-progressbar (1.11.0) + rubocop-ast (1.27.0) + parser (>= 3.2.1.0) + ruby-progressbar (1.12.0) ruby2_keywords (0.0.5) signet (0.17.0) addressable (~> 2.8) @@ -184,8 +184,8 @@ GEM ffi statsd-ruby (1.5.0) thor (1.2.1) - thrift (0.17.0) - tilt (2.0.11) + thrift (0.18.1) + tilt (2.1.0) trailblazer-option (0.1.2) uber (0.1.0) unicode-display_width (1.8.0) diff --git a/lib/vmpooler/providers/gce.rb b/lib/vmpooler/providers/gce.rb index d656156..7c95859 100644 --- a/lib/vmpooler/providers/gce.rb +++ b/lib/vmpooler/providers/gce.rb @@ -683,15 +683,13 @@ module Vmpooler # This should supercede the open_socket method in the Pool Manager def open_socket(host, domain = nil, timeout = 5, port = 22, &_block) - Timeout.timeout(timeout) do - target_host = host - target_host = "#{host}.#{domain}" if domain - sock = TCPSocket.new target_host, port - begin - yield sock if block_given? - ensure - sock.close - end + target_host = host + target_host = "#{host}.#{domain}" if domain + sock = TCPSocket.new(target_host, port, connect_timeout: timeout) + begin + yield sock if block_given? + ensure + sock.close end end diff --git a/update-gemfile-lock b/update-gemfile-lock index 74e9c78..c1f2491 100755 --- a/update-gemfile-lock +++ b/update-gemfile-lock @@ -3,5 +3,5 @@ # The container tag should closely match what is used in `docker/Dockerfile` in vmpooler-deployment docker run -it --rm \ -v $(pwd):/app \ - jruby:9.3.6-jdk \ - /bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends make git && cd /app && gem install bundler && bundle install --jobs 3 && bundle update; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"' + jruby:9.4.1.0-jdk8 \ + /bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends git make netbase && cd /app && gem install bundler && bundle install --jobs 3 && bundle update; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"' From b8e630ed17c4576f5691e23031dd6c089f91de59 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Fri, 3 Mar 2023 22:01:50 -0500 Subject: [PATCH 24/55] Bump to java 11 --- update-gemfile-lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/update-gemfile-lock b/update-gemfile-lock index c1f2491..46c4873 100755 --- a/update-gemfile-lock +++ b/update-gemfile-lock @@ -3,5 +3,5 @@ # The container tag should closely match what is used in `docker/Dockerfile` in vmpooler-deployment docker run -it --rm \ -v $(pwd):/app \ - jruby:9.4.1.0-jdk8 \ + jruby:9.4.1.0-jdk11 \ /bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends git make netbase && cd /app && gem install bundler && bundle install --jobs 3 && bundle update; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"' From aaf21121667ee142a88898a0fce90408c6bcae2e Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 6 Mar 2023 14:45:41 -0500 Subject: [PATCH 25/55] Update and consolidate release prep step --- README.md | 9 ++++----- release-prep | 15 +++++++++++++++ update-changelog | 5 ----- 3 files changed, 19 insertions(+), 10 deletions(-) create mode 100755 release-prep delete mode 100755 update-changelog diff --git a/README.md b/README.md index f65a5ba..29cb7a6 100644 --- a/README.md +++ b/README.md @@ -57,11 +57,10 @@ Verify, and update if needed, that the docker tag in the script and GitHub actio Follow these steps to publish a new GitHub release, and build and push the gem to . 1. Bump the "VERSION" in `lib/vmpooler-provider-gce/version.rb` appropriately based on changes in `CHANGELOG.md` since the last release. -2. Run `./update-gemfile-lock` to update `Gemfile.lock`. -3. Run `./update-changelog` to update `CHANGELOG.md`. -4. Commit and push changes to a new branch, then open a pull request against `main` and be sure to add the "maintenance" label. -5. After the pull request is approved and merged, then navigate to Actions --> Release Gem --> run workflow --> Branch: main --> Run workflow. +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 Actions --> Release Gem --> run workflow --> Branch: main --> Run workflow. ## License -vmpooler-provider-gce is distributed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html). See the [LICENSE](LICENSE) file for more details. \ No newline at end of file +vmpooler-provider-gce is distributed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html). See the [LICENSE](LICENSE) file for more details. diff --git a/release-prep b/release-prep new file mode 100755 index 0000000..59c10f7 --- /dev/null +++ b/release-prep @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +# The container tag should closely match what is used in `docker/Dockerfile` in vmpooler-deployment +# +# Update Gemfile.lock +docker run -it --rm \ + -v $(pwd):/app \ + jruby:9.4.1.0-jdk11 \ + /bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends git make netbase && cd /app && gem install bundler && bundle install --jobs 3; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"' + +# Update Changelog +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/vmpooler-provider-gce/version.rb |rev |cut -d "'" -f2 |rev) + diff --git a/update-changelog b/update-changelog deleted file mode 100755 index 46b5874..0000000 --- a/update-changelog +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - -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/vmpooler-provider-gce/version.rb |rev |cut -d "'" -f2 |rev) From 407b3f09ddeafa4adc07f6505dba42bbd9b5a391 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 6 Mar 2023 14:49:19 -0500 Subject: [PATCH 26/55] 0.5.0 release prep --- CHANGELOG.md | 9 +++++++-- Gemfile.lock | 2 +- lib/vmpooler-provider-gce/version.rb | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7290f2a..3bc3ea5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,16 @@ # Changelog -## [Unreleased](https://github.com/puppetlabs/vmpooler-provider-gce/tree/HEAD) +## [0.5.0](https://github.com/puppetlabs/vmpooler-provider-gce/tree/0.5.0) (2023-03-06) -[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-gce/compare/0.4.0...HEAD) +[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-gce/compare/0.4.0...0.5.0) + +**Implemented enhancements:** + +- \(RE-15161\) Update to jruby-9.4.1.0 and move socket timeout to new method. [\#22](https://github.com/puppetlabs/vmpooler-provider-gce/pull/22) ([isaac-hammes](https://github.com/isaac-hammes)) **Merged pull requests:** +- Add docs and update actions [\#20](https://github.com/puppetlabs/vmpooler-provider-gce/pull/20) ([yachub](https://github.com/yachub)) - \(RE-15111\) Migrate Snyk to Mend Scanning [\#19](https://github.com/puppetlabs/vmpooler-provider-gce/pull/19) ([yachub](https://github.com/yachub)) - \(RE-14811\) Remove DIO as codeowners [\#17](https://github.com/puppetlabs/vmpooler-provider-gce/pull/17) ([yachub](https://github.com/yachub)) - Add Snyk action [\#16](https://github.com/puppetlabs/vmpooler-provider-gce/pull/16) ([yachub](https://github.com/yachub)) diff --git a/Gemfile.lock b/Gemfile.lock index 25eb646..2258b05 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - vmpooler-provider-gce (0.4.0) + vmpooler-provider-gce (0.5.0) google-apis-compute_v1 (~> 0.14) google-cloud-dns (~> 0.35.1) googleauth (>= 0.16.2, < 1.3.0) diff --git a/lib/vmpooler-provider-gce/version.rb b/lib/vmpooler-provider-gce/version.rb index a332a30..effca7b 100644 --- a/lib/vmpooler-provider-gce/version.rb +++ b/lib/vmpooler-provider-gce/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module VmpoolerProviderGce - VERSION = '0.4.0' + VERSION = '0.5.0' end From d8c47134ef72dd52651202ae22cecdc2adeab090 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Fri, 3 Feb 2023 17:03:12 -0500 Subject: [PATCH 27/55] Start extracting dns setup and teardown --- lib/vmpooler/cloud_dns.rb | 63 ----------------------------------- lib/vmpooler/providers/gce.rb | 24 +++++-------- 2 files changed, 8 insertions(+), 79 deletions(-) delete mode 100644 lib/vmpooler/cloud_dns.rb diff --git a/lib/vmpooler/cloud_dns.rb b/lib/vmpooler/cloud_dns.rb deleted file mode 100644 index a98d9ef..0000000 --- a/lib/vmpooler/cloud_dns.rb +++ /dev/null @@ -1,63 +0,0 @@ -# frozen_string_literal: true - -require 'googleauth' -require 'google/cloud/dns' - -module Vmpooler - class PoolManager - # This class interacts with GCP Cloud DNS to create or delete records. - class CloudDns - def initialize(project, dns_zone_resource_name) - @dns = Google::Cloud::Dns.new(project_id: project) - @dns_zone_resource_name = dns_zone_resource_name - end - - def dns_create_or_replace(created_instance) - dns_zone = @dns.zone(@dns_zone_resource_name) if @dns_zone_resource_name - return unless dns_zone && created_instance && created_instance['name'] && created_instance['ip'] - - retries = 0 - name = created_instance['name'] - begin - change = dns_zone.add(name, 'A', 60, [created_instance['ip']]) - debug_logger("#{change.id} - #{change.started_at} - #{change.status} DNS address added") if change - rescue Google::Cloud::AlreadyExistsError => _e - # DNS setup is done only for new instances, so in the rare case where a DNS record already exists (it is stale) and we replace it. - # the error is Google::Cloud::AlreadyExistsError: alreadyExists: The resource 'entity.change.additions[0]' named 'instance-8.test.vmpooler.net. (A)' already exists - change = dns_zone.replace(name, 'A', 60, [created_instance['ip']]) - debug_logger("#{change.id} - #{change.started_at} - #{change.status} DNS address previously existed and was replaced") if change - rescue Google::Cloud::FailedPreconditionError => e - # this error was experienced intermittently, will retry to see if it can complete successfully - # the error is Google::Cloud::FailedPreconditionError: conditionNotMet: Precondition not met for 'entity.change.deletions[0]' - debug_logger("DNS create failed, retrying error: #{e}") - sleep 5 - retry if (retries += 1) < 30 - end - end - - def dns_teardown(created_instance) - dns_zone = @dns.zone(@dns_zone_resource_name) if @dns_zone_resource_name - return unless dns_zone && created_instance - - retries = 0 - name = created_instance['name'] - change = dns_zone.remove(name, 'A') - debug_logger("#{change.id} - #{change.started_at} - #{change.status} DNS address removed") if change - rescue Google::Cloud::FailedPreconditionError => e - # this error was experienced intermittently, will retry to see if it can complete successfully - # the error is Google::Cloud::FailedPreconditionError: conditionNotMet: Precondition not met for 'entity.change.deletions[1]' - debug_logger("DNS teardown failed, retrying error: #{e}") - sleep 5 - retry if (retries += 1) < 30 - end - - # used in local dev environment, set DEBUG_FLAG=true - # this way the upstream vmpooler manager does not get polluted with logs - def debug_logger(message, send_to_upstream: false) - # the default logger is simple and does not enforce debug levels (the first argument) - puts message if ENV['DEBUG_FLAG'] - logger.log('[g]', message) if send_to_upstream - end - end - end -end diff --git a/lib/vmpooler/providers/gce.rb b/lib/vmpooler/providers/gce.rb index 7c95859..ecbddaf 100644 --- a/lib/vmpooler/providers/gce.rb +++ b/lib/vmpooler/providers/gce.rb @@ -1,10 +1,10 @@ # frozen_string_literal: true -require 'googleauth' -require 'google/apis/compute_v1' -require 'vmpooler/cloud_dns' require 'bigdecimal' require 'bigdecimal/util' +require 'google/apis/compute_v1' +require 'googleauth' +require 'vmpooler/dns/base' require 'vmpooler/providers/base' module Vmpooler @@ -209,7 +209,11 @@ module Vmpooler result = connection.insert_instance(project, zone(pool_name), client) wait_for_operation(project, pool_name, result) created_instance = get_vm(pool_name, new_vmname) - dns_setup(created_instance) + # Exceptions thrown if ip does not exist in preexisting vm? Redis::CommandError: ERR wrong number of arguments for 'hset' command + @redis.with_metrics do |redis| + ip = created_instance['ip'] + redis.hset("vmpooler__vm__#{new_vmname}", 'ip', ip) + end created_instance end @@ -427,7 +431,6 @@ module Vmpooler vm_hash = get_vm(pool_name, vm_name) result = connection.delete_instance(project, zone(pool_name), vm_name) wait_for_operation(project, pool_name, result, 10) - dns_teardown(vm_hash) end # list and delete any leftover disk, for instance if they were detached from the instance @@ -499,7 +502,6 @@ module Vmpooler result = connection.delete_instance(project, zone, vm.name) vm_pool = vm.labels&.key?('pool') ? vm.labels['pool'] : nil existing_vm = generate_vm_hash(vm, vm_pool) - dns_teardown(existing_vm) result_list << result end # now check they are done @@ -560,16 +562,6 @@ module Vmpooler # END BASE METHODS - def dns_setup(created_instance) - dns = Vmpooler::PoolManager::CloudDns.new(project, dns_zone_resource_name) - dns.dns_create_or_replace(created_instance) - end - - def dns_teardown(created_instance) - dns = Vmpooler::PoolManager::CloudDns.new(project, dns_zone_resource_name) - dns.dns_teardown(created_instance) - end - def should_be_ignored(item, allowlist) return false if allowlist.nil? From 911c15dc4eaaa7cb66971b0657025718ce4f2e80 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Tue, 7 Feb 2023 08:08:29 -0500 Subject: [PATCH 28/55] Add migration to readme --- README.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/README.md b/README.md index 29cb7a6..d7e4e98 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ - [vmpooler-provider-gce](#vmpooler-provider-gce) - [Usage](#usage) + - [Migrating to v1](#migrating-to-v1) - [DNS](#dns) - [Labels](#labels) - [Pre-requisite](#pre-requisite) @@ -23,6 +24,42 @@ GCE authorization is handled via a service account (or personal account) private 1. GOOGLE_APPLICATION_CREDENTIALS environment variable eg GOOGLE_APPLICATION_CREDENTIALS=/my/home/directory/my_account_key.json +### Migrating to v1 + +Starting with the v1.x release, management of DNS records has been extracted from this compute provider and implemented as DNS plugins, similar to compute providers. This means each pool configuration should be pointing to a configuration object in `:dns_config` to determine it's method of record management. + +For those using DNS management via this provider, the DNS related options should be moved under `:dns_configs:` with the value for `dns_class`. + +For example, the following keys in a v0.x GCE provider config: + +```yaml +:providers: + :gce: + domain: vmpooler.example.com + dns_zone_resource_name: vmpooler-example-com +``` + +Would be moved to: + +```yaml +:dns_configs: + :example: + dns_class: gcp-clouddns + project: jake-vmpooler-dev + domain: vmpooler.example.com + zone_name: vmpooler-example-com +``` + +Then any pools that should have records created via the dns config above should now reference the named dns config in the `dns_plugin` key: + +```yaml +:pools: + - name: 'debian-11-x86_64' + dns_plugin: 'example' +``` + +For complete examples on how to use the GCP DNS plugin see [vmpooler-dns-gcp](https://github.com/puppetlabs/vmpooler-dns-gcp). + ### DNS DNS is integrated via Google's CloudDNS service. To enable, a CloudDNS zone name must be provided in the config (see the example yaml file dns_zone_resource_name) From 1375093b43c751af3d4fccd3688cff534719cd69 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Wed, 15 Feb 2023 15:45:12 -0500 Subject: [PATCH 29/55] Use domain provided by pool's dns_config debug open socket --- lib/vmpooler/providers/gce.rb | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/lib/vmpooler/providers/gce.rb b/lib/vmpooler/providers/gce.rb index ecbddaf..fd68287 100644 --- a/lib/vmpooler/providers/gce.rb +++ b/lib/vmpooler/providers/gce.rb @@ -82,12 +82,9 @@ module Vmpooler return provider_config['machine_type'] if provider_config['machine_type'] end - def domain - provider_config['domain'] - end - - def dns_zone_resource_name - provider_config['dns_zone_resource_name'] + def domain(pool_name) + dns_plugin_name = pool_config(pool_name)['dns_plugin'] + return dns_config(dns_plugin_name) end # Base methods that are implemented: @@ -191,7 +188,7 @@ module Vmpooler boot: true, initialize_params: init_params ) - append_domain = domain || global_config[:config]['domain'] + append_domain = domain(pool_name) fqdn = "#{new_vmname}.#{append_domain}" if append_domain # Assume all pool config is valid i.e. not missing @@ -468,7 +465,8 @@ module Vmpooler def vm_ready?(_pool_name, vm_name) begin # TODO: we could use a healthcheck resource attached to instance - open_socket(vm_name, domain || global_config[:config]['domain']) + domain = domain(_pool_name) + open_socket(vm_name, domain) rescue StandardError => _e return false end From 36e9044087108cec87aabb5903a6f183d081a9d4 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Fri, 17 Feb 2023 09:01:53 -0500 Subject: [PATCH 30/55] Refactor obtaining and saving ip address --- lib/vmpooler/providers/gce.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/vmpooler/providers/gce.rb b/lib/vmpooler/providers/gce.rb index fd68287..6134be8 100644 --- a/lib/vmpooler/providers/gce.rb +++ b/lib/vmpooler/providers/gce.rb @@ -206,14 +206,14 @@ module Vmpooler result = connection.insert_instance(project, zone(pool_name), client) wait_for_operation(project, pool_name, result) created_instance = get_vm(pool_name, new_vmname) - # Exceptions thrown if ip does not exist in preexisting vm? Redis::CommandError: ERR wrong number of arguments for 'hset' command - @redis.with_metrics do |redis| - ip = created_instance['ip'] - redis.hset("vmpooler__vm__#{new_vmname}", 'ip', ip) - end created_instance end + def get_vm_ip_address(vm_name, pool_name) + vm_object = get_vm(pool_name, vm_name) + return vm_object['ip'] + end + # create_disk creates an additional disk for an existing VM. It will name the new # disk #{vm_name}-disk#{number_disk} where number_disk is the next logical disk number # starting with 1 when adding an additional disk to a VM with only the boot disk: From fcf79c94215f71666789c4ea78f6c2a11481a8e5 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Wed, 22 Feb 2023 07:25:17 -0500 Subject: [PATCH 31/55] Remove google-cloud-dns gem dependency --- Gemfile.lock | 21 ++++----------------- vmpooler-provider-gce.gemspec | 1 - 2 files changed, 4 insertions(+), 18 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 2258b05..f9933cf 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -3,7 +3,6 @@ PATH specs: vmpooler-provider-gce (0.5.0) google-apis-compute_v1 (~> 0.14) - google-cloud-dns (~> 0.35.1) googleauth (>= 0.16.2, < 1.3.0) vmpooler (~> 2.3, >= 1.3.0) @@ -39,19 +38,8 @@ GEM retriable (>= 2.0, < 4.a) rexml webrick - google-apis-dns_v1 (0.31.0) - google-apis-core (>= 0.11.0, < 2.a) - google-cloud-core (1.6.0) - google-cloud-env (~> 1.0) - google-cloud-errors (~> 1.0) - google-cloud-dns (0.35.1) - google-apis-dns_v1 (~> 0.1) - google-cloud-core (~> 1.6) - googleauth (>= 0.16.2, < 2.a) - zonefile (~> 1.04) google-cloud-env (1.6.0) faraday (>= 0.17.3, < 3.0) - google-cloud-errors (1.3.1) googleauth (1.2.0) faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) @@ -158,9 +146,9 @@ GEM rubocop-ast (>= 1.0.1) ruby-progressbar (~> 1.7) unicode-display_width (>= 1.4.0, < 2.0) - rubocop-ast (1.27.0) + rubocop-ast (1.26.0) parser (>= 3.2.1.0) - ruby-progressbar (1.12.0) + ruby-progressbar (1.11.0) ruby2_keywords (0.0.5) signet (0.17.0) addressable (~> 2.8) @@ -184,7 +172,7 @@ GEM ffi statsd-ruby (1.5.0) thor (1.2.1) - thrift (0.18.1) + thrift (0.18.0) tilt (2.1.0) trailblazer-option (0.1.2) uber (0.1.0) @@ -214,7 +202,6 @@ GEM yarjuf (2.0.0) builder rspec (~> 3) - zonefile (1.06) PLATFORMS universal-java-1.8 @@ -233,4 +220,4 @@ DEPENDENCIES yarjuf (>= 2.0) BUNDLED WITH - 2.4.5 + 2.4.7 diff --git a/vmpooler-provider-gce.gemspec b/vmpooler-provider-gce.gemspec index 3be4d75..8c5a091 100644 --- a/vmpooler-provider-gce.gemspec +++ b/vmpooler-provider-gce.gemspec @@ -17,7 +17,6 @@ Gem::Specification.new do |s| s.require_paths = ["lib"] s.add_dependency "google-apis-compute_v1", "~> 0.14" s.add_dependency "googleauth", ">= 0.16.2", "< 1.3.0" - s.add_dependency "google-cloud-dns", "~> 0.35.1" s.add_dependency 'vmpooler', '>= 1.3.0', '~> 2.3' # Testing dependencies From 38064771aa308bca38c0e7a470ac53852d9d71fd Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Wed, 22 Feb 2023 08:19:13 -0500 Subject: [PATCH 32/55] Fix rubocops --- lib/vmpooler/providers/gce.rb | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/lib/vmpooler/providers/gce.rb b/lib/vmpooler/providers/gce.rb index 6134be8..8c4da79 100644 --- a/lib/vmpooler/providers/gce.rb +++ b/lib/vmpooler/providers/gce.rb @@ -84,7 +84,7 @@ module Vmpooler def domain(pool_name) dns_plugin_name = pool_config(pool_name)['dns_plugin'] - return dns_config(dns_plugin_name) + dns_config(dns_plugin_name) end # Base methods that are implemented: @@ -205,13 +205,12 @@ module Vmpooler debug_logger('trigger insert_instance') result = connection.insert_instance(project, zone(pool_name), client) wait_for_operation(project, pool_name, result) - created_instance = get_vm(pool_name, new_vmname) - created_instance + get_vm(pool_name, new_vmname) end def get_vm_ip_address(vm_name, pool_name) vm_object = get_vm(pool_name, vm_name) - return vm_object['ip'] + vm_object['ip'] end # create_disk creates an additional disk for an existing VM. It will name the new @@ -425,7 +424,6 @@ module Vmpooler unless deleted debug_logger("trigger delete_instance #{vm_name}") - vm_hash = get_vm(pool_name, vm_name) result = connection.delete_instance(project, zone(pool_name), vm_name) wait_for_operation(project, pool_name, result, 10) end @@ -462,10 +460,10 @@ module Vmpooler true end - def vm_ready?(_pool_name, vm_name) + def vm_ready?(pool_name, vm_name) begin # TODO: we could use a healthcheck resource attached to instance - domain = domain(_pool_name) + domain = domain(pool_name) open_socket(vm_name, domain) rescue StandardError => _e return false @@ -498,8 +496,6 @@ module Vmpooler debug_logger("trigger async delete_instance #{vm.name}") result = connection.delete_instance(project, zone, vm.name) - vm_pool = vm.labels&.key?('pool') ? vm.labels['pool'] : nil - existing_vm = generate_vm_hash(vm, vm_pool) result_list << result end # now check they are done From 1aaa6711b57d1bf35e7b9327849ea63f0e162410 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Wed, 22 Feb 2023 08:53:20 -0500 Subject: [PATCH 33/55] Update spec tests for new dns settings --- spec/dnsservice_helper.rb | 9 --------- spec/spec_helper.rb | 1 - spec/unit/providers/gce_spec.rb | 30 +++++++++++++++++------------- 3 files changed, 17 insertions(+), 23 deletions(-) delete mode 100644 spec/dnsservice_helper.rb diff --git a/spec/dnsservice_helper.rb b/spec/dnsservice_helper.rb deleted file mode 100644 index c2752c0..0000000 --- a/spec/dnsservice_helper.rb +++ /dev/null @@ -1,9 +0,0 @@ -MockDNS = Struct.new( - # https://rubydoc.info/gems/google-cloud-dns/0.35.1/Google/Cloud/Dns - :change, :credentials, :project, :record, :zone, - keyword_init: true -) do - def zone(zone) - self.zone = zone - end -end \ No newline at end of file diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 6cd4447..603f438 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -10,7 +10,6 @@ require 'vmpooler' require 'redis' require 'vmpooler/metrics' require 'computeservice_helper' -require 'dnsservice_helper' def project_root_dir File.dirname(File.dirname(__FILE__)) diff --git a/spec/unit/providers/gce_spec.rb b/spec/unit/providers/gce_spec.rb index c4b8f25..614a23b 100644 --- a/spec/unit/providers/gce_spec.rb +++ b/spec/unit/providers/gce_spec.rb @@ -18,6 +18,11 @@ describe 'Vmpooler::PoolManager::Provider::Gce' do :config: max_tries: 3 retry_factor: 10 + :dns_configs: + :gcp-clouddns: + project: vmpooler-test + domain: vmpooler.example.com + dns_zone_resource_name: vmpooler-example-com :providers: :gce: connection_pool_timeout: 1 @@ -32,6 +37,7 @@ describe 'Vmpooler::PoolManager::Provider::Gce' do timeout: 10 ready_ttl: 1440 provider: 'gce' + dns_config: 'gcp-clouddns' machine_type: 'zones/#{zone}/machineTypes/e2-micro' EOT ) @@ -51,8 +57,6 @@ EOT subject { Vmpooler::PoolManager::Provider::Gce.new(config, logger, metrics, redis_connection_pool, 'gce', provider_options) } - before(:each) { allow(subject).to receive(:dns).and_return(MockDNS.new()) } - describe '#name' do it 'should be gce' do expect(subject.name).to eq('gce') @@ -61,7 +65,6 @@ EOT describe '#manual tests live' do context 'in itsysops' do - before(:each) { allow(subject).to receive(:dns).and_call_original } let(:vmname) { "instance-31" } let(:project) { 'vmpooler-test' } let(:config) { YAML.load(<<~EOT @@ -69,14 +72,17 @@ EOT :config: max_tries: 3 retry_factor: 10 + :dns_configs: + :gcp-clouddns: + project: vmpooler-test + domain: vmpooler.example.com + dns_zone_resource_name: vmpooler-example-com :providers: :gce: connection_pool_timeout: 1 project: '#{project}' zone: '#{zone}' network_name: 'projects/itsysopsnetworking/global/networks/shared1' - dns_zone_resource_name: 'vmpooler-test-puppet-net' - domain: 'vmpooler-test.puppet.net' :pools: - name: '#{poolname}' alias: [ 'mockpool' ] @@ -85,6 +91,7 @@ EOT timeout: 10 ready_ttl: 1440 provider: 'gce' + dns_config: 'gcp-clouddns' subnetwork_name: 'projects/itsysopsnetworking/regions/us-west1/subnetworks/vmpooler-test' machine_type: 'zones/#{zone}/machineTypes/e2-micro' disk_type: 'pd-ssd' @@ -92,10 +99,6 @@ EOT ) } skip 'gets a vm' do result = subject.create_vm(poolname, vmname) - #result = subject.destroy_vm(poolname, vmname) - # subject.get_vm(poolname, vmname) - subject.dns_teardown({'name' => vmname}) - # subject.dns_setup({'name' => vmname, 'ip' => '1.2.3.5'}) end end end @@ -267,7 +270,6 @@ EOT result = MockResult.new result.status = 'DONE' allow(connection).to receive(:insert_instance).and_return(result) - allow(subject).to receive(:dns_setup).and_return(true) end it 'should return a hash' do @@ -314,7 +316,6 @@ EOT result.status = 'DONE' allow(subject).to receive(:wait_for_operation).and_return(result) allow(connection).to receive(:delete_instance).and_return(result) - allow(subject).to receive(:dns_teardown).and_return(true) end it 'should return true' do @@ -349,7 +350,11 @@ EOT end describe '#vm_ready?' do - let(:domain) { nil } + let(:domain) { 'vmpooler.example.com' } + before(:each) do + allow(subject).to receive(:domain).and_return('vmpooler.example.com') + end + context 'When a VM is ready' do before(:each) do expect(subject).to receive(:open_socket).with(vmname, domain) @@ -586,7 +591,6 @@ EOT before(:each) do allow(subject).to receive(:connect_to_gce).and_return(connection) - allow(subject).to receive(:dns_teardown).and_return(true) end context 'with empty allowlist' do From 06d940a9647b3522b540279353983d6e4552bf99 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Tue, 28 Mar 2023 17:44:12 -0400 Subject: [PATCH 34/55] Bump vmpooler requirement and add install gemfile script --- Gemfile.lock | 4 ++-- install-gemfile-lock | 7 +++++++ vmpooler-provider-gce.gemspec | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) create mode 100755 install-gemfile-lock diff --git a/Gemfile.lock b/Gemfile.lock index f9933cf..7ff812a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -4,7 +4,7 @@ PATH vmpooler-provider-gce (0.5.0) google-apis-compute_v1 (~> 0.14) googleauth (>= 0.16.2, < 1.3.0) - vmpooler (~> 2.3, >= 1.3.0) + vmpooler (~> 3.0) GEM remote: https://rubygems.org/ @@ -177,7 +177,7 @@ GEM trailblazer-option (0.1.2) uber (0.1.0) unicode-display_width (1.8.0) - vmpooler (2.4.0) + vmpooler (3.0.0) concurrent-ruby (~> 1.1) connection_pool (~> 2.2) deep_merge (~> 1.2) diff --git a/install-gemfile-lock b/install-gemfile-lock new file mode 100755 index 0000000..07cbd49 --- /dev/null +++ b/install-gemfile-lock @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +# The container tag should closely match what is used in `docker/Dockerfile` in vmpooler-deployment +docker run -it --rm \ + -v $(pwd):/app \ + jruby:9.4.1.0-jdk11 \ + /bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends make git netbase && cd /app && gem install bundler && bundle install --jobs 3; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"' diff --git a/vmpooler-provider-gce.gemspec b/vmpooler-provider-gce.gemspec index 8c5a091..304c16e 100644 --- a/vmpooler-provider-gce.gemspec +++ b/vmpooler-provider-gce.gemspec @@ -17,7 +17,7 @@ Gem::Specification.new do |s| s.require_paths = ["lib"] s.add_dependency "google-apis-compute_v1", "~> 0.14" s.add_dependency "googleauth", ">= 0.16.2", "< 1.3.0" - s.add_dependency 'vmpooler', '>= 1.3.0', '~> 2.3' + s.add_dependency 'vmpooler', '~> 3.0' # Testing dependencies s.add_development_dependency 'climate_control', '>= 0.2.0' From 355d3a60ce42b2377b15d93014f649830e321444 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 17 Apr 2023 10:12:19 -0400 Subject: [PATCH 35/55] Add debug logger line --- lib/vmpooler/providers/gce.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/vmpooler/providers/gce.rb b/lib/vmpooler/providers/gce.rb index 8c4da79..e7d838d 100644 --- a/lib/vmpooler/providers/gce.rb +++ b/lib/vmpooler/providers/gce.rb @@ -461,6 +461,7 @@ module Vmpooler end def vm_ready?(pool_name, vm_name) + debug_logger('vm_ready?') begin # TODO: we could use a healthcheck resource attached to instance domain = domain(pool_name) From bf2e20dcfee2547e1f064c079482bca81f66d376 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Tue, 18 Apr 2023 19:43:40 -0400 Subject: [PATCH 36/55] 1.0.0 release prep --- CHANGELOG.md | 8 ++++++++ Gemfile.lock | 2 +- lib/vmpooler-provider-gce/version.rb | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3bc3ea5..fedf2fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [1.0.0](https://github.com/puppetlabs/vmpooler-provider-gce/tree/1.0.0) (2023-04-19) + +[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-gce/compare/0.5.0...1.0.0) + +**Breaking changes:** + +- \(RE-15124\) Decouple DNS Record Management into DNS Plugins [\#21](https://github.com/puppetlabs/vmpooler-provider-gce/pull/21) ([yachub](https://github.com/yachub)) + ## [0.5.0](https://github.com/puppetlabs/vmpooler-provider-gce/tree/0.5.0) (2023-03-06) [Full Changelog](https://github.com/puppetlabs/vmpooler-provider-gce/compare/0.4.0...0.5.0) diff --git a/Gemfile.lock b/Gemfile.lock index 7ff812a..c4256f7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - vmpooler-provider-gce (0.5.0) + vmpooler-provider-gce (1.0.0) google-apis-compute_v1 (~> 0.14) googleauth (>= 0.16.2, < 1.3.0) vmpooler (~> 3.0) diff --git a/lib/vmpooler-provider-gce/version.rb b/lib/vmpooler-provider-gce/version.rb index effca7b..1965223 100644 --- a/lib/vmpooler-provider-gce/version.rb +++ b/lib/vmpooler-provider-gce/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module VmpoolerProviderGce - VERSION = '0.5.0' + VERSION = '1.0.0' end From 515ba9f0a509933499a086ed9b48983223631c1a Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Wed, 19 Apr 2023 16:57:32 -0400 Subject: [PATCH 37/55] Bump jruby to 9.4.2.0 --- .github/workflows/release.yml | 4 ++-- .github/workflows/testing.yml | 4 ++-- install-gemfile-lock | 2 +- release-prep | 2 +- update-gemfile-lock | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0e30eae..9bbc39d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -70,10 +70,10 @@ jobs: prerelease: false # This step should closely match what is used in `docker/Dockerfile` in vmpooler-deployment - - name: Install Ruby jruby-9.4.1.0 + - name: Install Ruby jruby-9.4.2.0 uses: ruby/setup-ruby@v1 with: - ruby-version: 'jruby-9.4.1.0' + ruby-version: 'jruby-9.4.2.0' - name: Build gem run: gem build *.gemspec diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index eac55b3..54dab4b 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -18,7 +18,7 @@ jobs: strategy: matrix: ruby-version: - - 'jruby-9.4.1.0' + - 'jruby-9.4.2.0' steps: - uses: actions/checkout@v3 - name: Set up Ruby @@ -34,7 +34,7 @@ jobs: strategy: matrix: ruby-version: - - 'jruby-9.4.1.0' + - 'jruby-9.4.2.0' steps: - uses: actions/checkout@v3 - name: Set up Ruby diff --git a/install-gemfile-lock b/install-gemfile-lock index 07cbd49..94a5e5e 100755 --- a/install-gemfile-lock +++ b/install-gemfile-lock @@ -3,5 +3,5 @@ # The container tag should closely match what is used in `docker/Dockerfile` in vmpooler-deployment docker run -it --rm \ -v $(pwd):/app \ - jruby:9.4.1.0-jdk11 \ + jruby:9.4.2.0-jdk11 \ /bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends make git netbase && cd /app && gem install bundler && bundle install --jobs 3; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"' diff --git a/release-prep b/release-prep index 59c10f7..0b69a8c 100755 --- a/release-prep +++ b/release-prep @@ -5,7 +5,7 @@ # Update Gemfile.lock docker run -it --rm \ -v $(pwd):/app \ - jruby:9.4.1.0-jdk11 \ + jruby:9.4.2.0-jdk11 \ /bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends git make netbase && cd /app && gem install bundler && bundle install --jobs 3; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"' # Update Changelog diff --git a/update-gemfile-lock b/update-gemfile-lock index 46c4873..68ea73f 100755 --- a/update-gemfile-lock +++ b/update-gemfile-lock @@ -3,5 +3,5 @@ # The container tag should closely match what is used in `docker/Dockerfile` in vmpooler-deployment docker run -it --rm \ -v $(pwd):/app \ - jruby:9.4.1.0-jdk11 \ + jruby:9.4.2.0-jdk11 \ /bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends git make netbase && cd /app && gem install bundler && bundle install --jobs 3 && bundle update; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"' From 80234b4337b37aee16c7a11bd522ed702a84c875 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Thu, 20 Apr 2023 08:50:57 -0400 Subject: [PATCH 38/55] Migrate issue management to Jira --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index d7e4e98..368c96e 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ - [Labels](#labels) - [Pre-requisite](#pre-requisite) - [Update the Gemfile Lock](#update-the-gemfile-lock) + - [Submitting Issues](#submitting-issues) - [Releasing](#releasing) - [License](#license) @@ -89,6 +90,10 @@ To update the `Gemfile.lock` run `./update-gemfile-lock`. Verify, and update if needed, that the docker tag in the script and GitHub action workflows matches what is used in the [vmpooler-deployment Dockerfile](https://github.com/puppetlabs/vmpooler-deployment/blob/main/docker/Dockerfile). +## Submitting Issues + +Please file any issues or requests in Jira at where project development is tracked across all VMPooler related components. + ## Releasing Follow these steps to publish a new GitHub release, and build and push the gem to . From 2d4ff564298ec9ffe4897a2b738653e53160494e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Oct 2022 13:33:11 +0000 Subject: [PATCH 39/55] Update googleauth requirement from >= 0.16.2, < 1.3.0 to >= 0.16.2, < 1.4.0 Updates the requirements on [googleauth](https://github.com/googleapis/google-auth-library-ruby) to permit the latest version. - [Release notes](https://github.com/googleapis/google-auth-library-ruby/releases) - [Changelog](https://github.com/googleapis/google-auth-library-ruby/blob/main/CHANGELOG.md) - [Commits](https://github.com/googleapis/google-auth-library-ruby/compare/googleauth/v0.17.0...googleauth/v1.3.0) --- updated-dependencies: - dependency-name: googleauth dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- vmpooler-provider-gce.gemspec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index c4256f7..58375e0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -3,7 +3,7 @@ PATH specs: vmpooler-provider-gce (1.0.0) google-apis-compute_v1 (~> 0.14) - googleauth (>= 0.16.2, < 1.3.0) + googleauth (>= 0.16.2, < 1.4.0) vmpooler (~> 3.0) GEM diff --git a/vmpooler-provider-gce.gemspec b/vmpooler-provider-gce.gemspec index 304c16e..ac5f4b8 100644 --- a/vmpooler-provider-gce.gemspec +++ b/vmpooler-provider-gce.gemspec @@ -16,7 +16,7 @@ Gem::Specification.new do |s| s.files = Dir[ "lib/**/*" ] s.require_paths = ["lib"] s.add_dependency "google-apis-compute_v1", "~> 0.14" - s.add_dependency "googleauth", ">= 0.16.2", "< 1.3.0" + s.add_dependency "googleauth", ">= 0.16.2", "< 1.4.0" s.add_dependency 'vmpooler', '~> 3.0' # Testing dependencies From ce61a7a6c2f459f86204f785969c49e03b2882ed Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Apr 2023 15:28:13 +0000 Subject: [PATCH 40/55] Bump rack-test from 2.0.2 to 2.1.0 Bumps [rack-test](https://github.com/rack/rack-test) from 2.0.2 to 2.1.0. - [Release notes](https://github.com/rack/rack-test/releases) - [Changelog](https://github.com/rack/rack-test/blob/main/History.md) - [Commits](https://github.com/rack/rack-test/compare/v2.0.2...v2.1.0) --- updated-dependencies: - dependency-name: rack-test dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 58375e0..288eeea 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -58,7 +58,8 @@ GEM mustermann (2.0.2) ruby2_keywords (~> 0.0.1) net-ldap (0.17.1) - nio4r (2.5.8-java) + nio4r (2.5.2) + nio4r (2.5.2-java) opentelemetry-api (1.1.0) opentelemetry-common (0.19.6) opentelemetry-api (~> 1.0) @@ -102,17 +103,22 @@ GEM ast (~> 2.4.1) pickup (0.0.11) prometheus-client (2.1.0) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) pry (0.14.2-java) coderay (~> 1.1) method_source (~> 1.0) spoon (~> 0.0) public_suffix (5.0.1) + puma (5.6.5) + nio4r (~> 2.0) puma (5.6.5-java) nio4r (~> 2.0) - rack (2.2.6.2) + rack (2.2.6.4) rack-protection (2.2.4) rack - rack-test (2.0.2) + rack-test (2.1.0) rack (>= 1.3) rainbow (3.1.1) rake (13.0.6) @@ -206,6 +212,7 @@ GEM PLATFORMS universal-java-1.8 universal-java-11 + x86_64-linux DEPENDENCIES climate_control (>= 0.2.0) From ea9896104a23bdaa974bb6fe8c86eb07cb338402 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 1 May 2023 08:29:28 -0400 Subject: [PATCH 41/55] 1.1.0 release prep --- CHANGELOG.md | 11 +++++++++++ Gemfile.lock | 2 +- lib/vmpooler-provider-gce/version.rb | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fedf2fd..0eaac92 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## [1.1.0](https://github.com/puppetlabs/vmpooler-provider-gce/tree/1.1.0) (2023-05-01) + +[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-gce/compare/1.0.0...1.1.0) + +**Merged pull requests:** + +- Migrate issue management to Jira [\#27](https://github.com/puppetlabs/vmpooler-provider-gce/pull/27) ([yachub](https://github.com/yachub)) +- Bump jruby to 9.4.2.0 [\#26](https://github.com/puppetlabs/vmpooler-provider-gce/pull/26) ([yachub](https://github.com/yachub)) +- Bump rack-test from 2.0.2 to 2.1.0 [\#24](https://github.com/puppetlabs/vmpooler-provider-gce/pull/24) ([dependabot[bot]](https://github.com/apps/dependabot)) +- Update googleauth requirement from \>= 0.16.2, \< 1.3.0 to \>= 0.16.2, \< 1.4.0 [\#18](https://github.com/puppetlabs/vmpooler-provider-gce/pull/18) ([dependabot[bot]](https://github.com/apps/dependabot)) + ## [1.0.0](https://github.com/puppetlabs/vmpooler-provider-gce/tree/1.0.0) (2023-04-19) [Full Changelog](https://github.com/puppetlabs/vmpooler-provider-gce/compare/0.5.0...1.0.0) diff --git a/Gemfile.lock b/Gemfile.lock index 288eeea..c4db5c6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - vmpooler-provider-gce (1.0.0) + vmpooler-provider-gce (1.1.0) google-apis-compute_v1 (~> 0.14) googleauth (>= 0.16.2, < 1.4.0) vmpooler (~> 3.0) diff --git a/lib/vmpooler-provider-gce/version.rb b/lib/vmpooler-provider-gce/version.rb index 1965223..239f836 100644 --- a/lib/vmpooler-provider-gce/version.rb +++ b/lib/vmpooler-provider-gce/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module VmpoolerProviderGce - VERSION = '1.0.0' + VERSION = '1.1.0' end From e0cc9712ed817b399ee593565083ddb73beaf77a Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 1 May 2023 08:29:35 -0400 Subject: [PATCH 42/55] Comment changelog validation until jira support is added --- .github/workflows/release.yml | 38 +++++++++++++++++------------------ 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9bbc39d..aa796df 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -29,26 +29,26 @@ jobs: echo "version=$version" >> $GITHUB_OUTPUT echo "Found version $version from lib/vmpooler-provider-gce/version.rb" - - name: Generate Changelog - uses: docker://githubchangeloggenerator/github-changelog-generator:1.16.2 - with: - args: >- - --future-release ${{ steps.nv.outputs.version }} - env: - CHANGELOG_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # - name: Generate Changelog + # uses: docker://githubchangeloggenerator/github-changelog-generator:1.16.2 + # with: + # args: >- + # --future-release ${{ steps.nv.outputs.version }} + # env: + # CHANGELOG_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Validate Changelog - run : | - set -e - if [[ -n $(git status --porcelain) ]]; then - echo "Here is the current git status:" - git status - echo - echo "The following changes were detected:" - git --no-pager diff - echo "Uncommitted PRs found in the changelog. Please submit a release prep PR of changes after running `./update-changelog`" - exit 1 - fi + # - name: Validate Changelog + # run : | + # set -e + # if [[ -n $(git status --porcelain) ]]; then + # echo "Here is the current git status:" + # git status + # echo + # echo "The following changes were detected:" + # git --no-pager diff + # echo "Uncommitted PRs found in the changelog. Please submit a release prep PR of changes after running `./update-changelog`" + # exit 1 + # fi - name: Generate Release Notes uses: docker://githubchangeloggenerator/github-changelog-generator:1.16.2 From 521a0f11f1cbe72f86d7fb761c8a137ab6e341d9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 May 2023 02:57:58 +0000 Subject: [PATCH 43/55] Bump thor from 1.2.1 to 1.2.2 Bumps [thor](https://github.com/rails/thor) from 1.2.1 to 1.2.2. - [Release notes](https://github.com/rails/thor/releases) - [Commits](https://github.com/rails/thor/compare/v1.2.1...v1.2.2) --- updated-dependencies: - dependency-name: thor 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 c4db5c6..409cbee 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -177,7 +177,7 @@ GEM spoon (0.0.6) ffi statsd-ruby (1.5.0) - thor (1.2.1) + thor (1.2.2) thrift (0.18.0) tilt (2.1.0) trailblazer-option (0.1.2) From d3713133c846e0324ecf81a8570ac9df51efebf0 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Thu, 20 Apr 2023 08:50:57 -0400 Subject: [PATCH 44/55] Revert "Migrate issue management to Jira" This reverts commit 80234b4337b37aee16c7a11bd522ed702a84c875. --- README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/README.md b/README.md index 368c96e..d7e4e98 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,6 @@ - [Labels](#labels) - [Pre-requisite](#pre-requisite) - [Update the Gemfile Lock](#update-the-gemfile-lock) - - [Submitting Issues](#submitting-issues) - [Releasing](#releasing) - [License](#license) @@ -90,10 +89,6 @@ To update the `Gemfile.lock` run `./update-gemfile-lock`. Verify, and update if needed, that the docker tag in the script and GitHub action workflows matches what is used in the [vmpooler-deployment Dockerfile](https://github.com/puppetlabs/vmpooler-deployment/blob/main/docker/Dockerfile). -## Submitting Issues - -Please file any issues or requests in Jira at where project development is tracked across all VMPooler related components. - ## Releasing Follow these steps to publish a new GitHub release, and build and push the gem to . From 0347c4273558b49181beafafc72465d6cc44783c Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 1 May 2023 08:29:35 -0400 Subject: [PATCH 45/55] Revert "Comment changelog validation until jira support is added" This reverts commit e0cc9712ed817b399ee593565083ddb73beaf77a. --- .github/workflows/release.yml | 38 +++++++++++++++++------------------ 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index aa796df..9bbc39d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -29,26 +29,26 @@ jobs: echo "version=$version" >> $GITHUB_OUTPUT echo "Found version $version from lib/vmpooler-provider-gce/version.rb" - # - name: Generate Changelog - # uses: docker://githubchangeloggenerator/github-changelog-generator:1.16.2 - # with: - # args: >- - # --future-release ${{ steps.nv.outputs.version }} - # env: - # CHANGELOG_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Generate Changelog + uses: docker://githubchangeloggenerator/github-changelog-generator:1.16.2 + with: + args: >- + --future-release ${{ steps.nv.outputs.version }} + env: + CHANGELOG_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # - name: Validate Changelog - # run : | - # set -e - # if [[ -n $(git status --porcelain) ]]; then - # echo "Here is the current git status:" - # git status - # echo - # echo "The following changes were detected:" - # git --no-pager diff - # echo "Uncommitted PRs found in the changelog. Please submit a release prep PR of changes after running `./update-changelog`" - # exit 1 - # fi + - name: Validate Changelog + run : | + set -e + if [[ -n $(git status --porcelain) ]]; then + echo "Here is the current git status:" + git status + echo + echo "The following changes were detected:" + git --no-pager diff + echo "Uncommitted PRs found in the changelog. Please submit a release prep PR of changes after running `./update-changelog`" + exit 1 + fi - name: Generate Release Notes uses: docker://githubchangeloggenerator/github-changelog-generator:1.16.2 From cec4ea64d6b495aafbd6f54ea69c2083e8e9d40a Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Thu, 10 Aug 2023 07:17:30 -0400 Subject: [PATCH 46/55] Bump jruby to 9.4.3.0 and update lockfile --- .github/workflows/release.yml | 4 +- .github/workflows/testing.yml | 4 +- Gemfile.lock | 155 ++++++++++++++++++---------------- install-gemfile-lock | 2 +- release-prep | 2 +- update-gemfile-lock | 2 +- 6 files changed, 89 insertions(+), 80 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9bbc39d..4db3728 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -70,10 +70,10 @@ jobs: prerelease: false # This step should closely match what is used in `docker/Dockerfile` in vmpooler-deployment - - name: Install Ruby jruby-9.4.2.0 + - name: Install Ruby jruby-9.4.3.0 uses: ruby/setup-ruby@v1 with: - ruby-version: 'jruby-9.4.2.0' + ruby-version: 'jruby-9.4.3.0' - name: Build gem run: gem build *.gemspec diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 54dab4b..105fc8e 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -18,7 +18,7 @@ jobs: strategy: matrix: ruby-version: - - 'jruby-9.4.2.0' + - 'jruby-9.4.3.0' steps: - uses: actions/checkout@v3 - name: Set up Ruby @@ -34,7 +34,7 @@ jobs: strategy: matrix: ruby-version: - - 'jruby-9.4.2.0' + - 'jruby-9.4.3.0' steps: - uses: actions/checkout@v3 - name: Set up Ruby diff --git a/Gemfile.lock b/Gemfile.lock index 409cbee..ee5b3e9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -9,7 +9,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) bindata (2.4.15) @@ -17,19 +17,19 @@ GEM climate_control (1.2.0) coderay (1.1.3) concurrent-ruby (1.2.2) - connection_pool (2.3.0) + connection_pool (2.4.1) declarative (0.0.20) deep_merge (1.2.2) diff-lcs (1.5.0) docile (1.4.0) - faraday (2.7.4) + faraday (2.7.10) faraday-net_http (>= 2.0, < 3.1) ruby2_keywords (>= 0.0.4) faraday-net_http (3.0.2) ffi (1.15.5-java) - google-apis-compute_v1 (0.62.0) + google-apis-compute_v1 (0.75.0) google-apis-core (>= 0.11.0, < 2.a) - google-apis-core (0.11.0) + google-apis-core (0.11.1) addressable (~> 2.5, >= 2.5.1) googleauth (>= 0.16.2, < 2.a) httpclient (>= 2.8.1, < 3.a) @@ -40,7 +40,7 @@ GEM webrick google-cloud-env (1.6.0) faraday (>= 0.17.3, < 3.0) - googleauth (1.2.0) + googleauth (1.3.0) faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) memoist (~> 0.16) @@ -48,61 +48,68 @@ GEM os (>= 0.9, < 2.0) signet (>= 0.16, < 2.a) httpclient (2.8.3) - jwt (2.7.0) + jwt (2.7.1) memoist (0.16.2) method_source (1.0.0) - mini_mime (1.1.2) - mock_redis (0.36.0) - ruby2_keywords + mini_mime (1.1.5) + mock_redis (0.37.0) multi_json (1.15.0) - mustermann (2.0.2) + mustermann (3.0.0) ruby2_keywords (~> 0.0.1) - net-ldap (0.17.1) - nio4r (2.5.2) - nio4r (2.5.2-java) - opentelemetry-api (1.1.0) - opentelemetry-common (0.19.6) + net-ldap (0.18.0) + nio4r (2.5.9) + nio4r (2.5.9-java) + opentelemetry-api (1.2.1) + opentelemetry-common (0.20.0) opentelemetry-api (~> 1.0) - opentelemetry-exporter-jaeger (0.20.1) - opentelemetry-api (~> 1.0) - opentelemetry-common (~> 0.19.2) - opentelemetry-sdk (~> 1.0) + opentelemetry-exporter-jaeger (0.23.0) + opentelemetry-api (~> 1.1) + opentelemetry-common (~> 0.20) + opentelemetry-sdk (~> 1.2) + opentelemetry-semantic_conventions thrift - opentelemetry-instrumentation-base (0.19.0) + opentelemetry-instrumentation-base (0.22.2) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-concurrent_ruby (0.19.2) + opentelemetry-registry (~> 0.1) + opentelemetry-instrumentation-concurrent_ruby (0.21.1) opentelemetry-api (~> 1.0) - opentelemetry-instrumentation-base (~> 0.19.0) - opentelemetry-instrumentation-http_client (0.19.4) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-http_client (0.22.2) opentelemetry-api (~> 1.0) - opentelemetry-common (~> 0.19.3) - opentelemetry-instrumentation-base (~> 0.19.0) - opentelemetry-instrumentation-redis (0.21.3) + opentelemetry-common (~> 0.20.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-rack (0.23.4) opentelemetry-api (~> 1.0) - opentelemetry-common (~> 0.19.3) - opentelemetry-instrumentation-base (~> 0.19.0) - opentelemetry-instrumentation-sinatra (0.19.3) + opentelemetry-common (~> 0.20.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-redis (0.25.3) opentelemetry-api (~> 1.0) - opentelemetry-common (~> 0.19.3) - opentelemetry-instrumentation-base (~> 0.19.0) - opentelemetry-registry (0.2.0) + opentelemetry-common (~> 0.20.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-sinatra (0.23.2) + opentelemetry-api (~> 1.0) + opentelemetry-common (~> 0.20.0) + opentelemetry-instrumentation-base (~> 0.22.1) + opentelemetry-instrumentation-rack (~> 0.21) + opentelemetry-registry (0.3.0) opentelemetry-api (~> 1.1) - opentelemetry-resource_detectors (0.19.1) + opentelemetry-resource_detectors (0.24.1) google-cloud-env - opentelemetry-sdk - opentelemetry-sdk (1.2.0) + opentelemetry-sdk (~> 1.0) + opentelemetry-sdk (1.3.0) opentelemetry-api (~> 1.1) - opentelemetry-common (~> 0.19.3) + opentelemetry-common (~> 0.20) opentelemetry-registry (~> 0.2) opentelemetry-semantic_conventions - opentelemetry-semantic_conventions (1.8.0) + opentelemetry-semantic_conventions (1.10.0) opentelemetry-api (~> 1.0) os (1.1.4) - parallel (1.22.1) - parser (3.2.1.0) + parallel (1.23.0) + parser (3.2.2.3) ast (~> 2.4.1) + racc pickup (0.0.11) - prometheus-client (2.1.0) + prometheus-client (4.2.1) pry (0.14.2) coderay (~> 1.1) method_source (~> 1.0) @@ -110,39 +117,41 @@ GEM coderay (~> 1.1) method_source (~> 1.0) spoon (~> 0.0) - public_suffix (5.0.1) - puma (5.6.5) + public_suffix (5.0.3) + puma (6.3.0) nio4r (~> 2.0) - puma (5.6.5-java) + puma (6.3.0-java) nio4r (~> 2.0) - rack (2.2.6.4) - rack-protection (2.2.4) - rack + racc (1.7.1) + racc (1.7.1-java) + rack (2.2.8) + rack-protection (3.1.0) + rack (~> 2.2, >= 2.2.4) rack-test (2.1.0) rack (>= 1.3) rainbow (3.1.1) rake (13.0.6) redis (4.8.1) - regexp_parser (2.7.0) + regexp_parser (2.8.1) representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.2.5) + 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-core (3.12.2) rspec-support (~> 3.12.0) - rspec-expectations (3.12.2) + rspec-expectations (3.12.3) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) - rspec-mocks (3.12.3) + rspec-mocks (3.12.6) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) - rspec-support (3.12.0) + rspec-support (3.12.1) rubocop (1.1.0) parallel (~> 1.10) parser (>= 2.7.1.5) @@ -152,9 +161,9 @@ GEM rubocop-ast (>= 1.0.1) ruby-progressbar (~> 1.7) unicode-display_width (>= 1.4.0, < 2.0) - rubocop-ast (1.26.0) + rubocop-ast (1.29.0) parser (>= 3.2.1.0) - ruby-progressbar (1.11.0) + ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) signet (0.17.0) addressable (~> 2.8) @@ -167,10 +176,10 @@ GEM simplecov_json_formatter (~> 0.1) simplecov-html (0.12.3) simplecov_json_formatter (0.1.4) - sinatra (2.2.4) - mustermann (~> 2.0) - rack (~> 2.2) - rack-protection (= 2.2.4) + sinatra (3.1.0) + mustermann (~> 3.0) + rack (~> 2.2, >= 2.2.4) + rack-protection (= 3.1.0) tilt (~> 2.0) spicy-proton (2.1.15) bindata (~> 2.3) @@ -178,30 +187,30 @@ GEM ffi statsd-ruby (1.5.0) thor (1.2.2) - thrift (0.18.0) - tilt (2.1.0) + thrift (0.18.1) + tilt (2.2.0) trailblazer-option (0.1.2) uber (0.1.0) unicode-display_width (1.8.0) - vmpooler (3.0.0) + vmpooler (3.2.0) concurrent-ruby (~> 1.1) connection_pool (~> 2.2) deep_merge (~> 1.2) net-ldap (~> 0.16) - opentelemetry-exporter-jaeger (= 0.20.1) - opentelemetry-instrumentation-concurrent_ruby (= 0.19.2) - opentelemetry-instrumentation-http_client (= 0.19.4) - opentelemetry-instrumentation-redis (= 0.21.3) - opentelemetry-instrumentation-sinatra (= 0.19.3) - opentelemetry-resource_detectors (= 0.19.1) - opentelemetry-sdk (~> 1.0, >= 1.0.2) + opentelemetry-exporter-jaeger (= 0.23.0) + opentelemetry-instrumentation-concurrent_ruby (= 0.21.1) + opentelemetry-instrumentation-http_client (= 0.22.2) + opentelemetry-instrumentation-redis (= 0.25.3) + opentelemetry-instrumentation-sinatra (= 0.23.2) + opentelemetry-resource_detectors (= 0.24.1) + opentelemetry-sdk (~> 1.3, >= 1.3.0) pickup (~> 0.0.11) - prometheus-client (~> 2.0) - puma (~> 5.0, >= 5.0.4) - rack (~> 2.2) + prometheus-client (>= 2, < 5) + puma (>= 5.0.4, < 7) + rack (>= 2.2, < 4.0) rake (~> 13.0) redis (~> 4.1) - sinatra (~> 2.0) + sinatra (>= 2, < 4) spicy-proton (~> 2.1) statsd-ruby (~> 1.4) webrick (1.8.1) diff --git a/install-gemfile-lock b/install-gemfile-lock index 94a5e5e..a479b0d 100755 --- a/install-gemfile-lock +++ b/install-gemfile-lock @@ -3,5 +3,5 @@ # The container tag should closely match what is used in `docker/Dockerfile` in vmpooler-deployment docker run -it --rm \ -v $(pwd):/app \ - jruby:9.4.2.0-jdk11 \ + jruby:9.4.3.0-jdk11 \ /bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends make git netbase && cd /app && gem install bundler && bundle install --jobs 3; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"' diff --git a/release-prep b/release-prep index 0b69a8c..ca8f2f7 100755 --- a/release-prep +++ b/release-prep @@ -5,7 +5,7 @@ # Update Gemfile.lock docker run -it --rm \ -v $(pwd):/app \ - jruby:9.4.2.0-jdk11 \ + jruby:9.4.3.0-jdk11 \ /bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends git make netbase && cd /app && gem install bundler && bundle install --jobs 3; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"' # Update Changelog diff --git a/update-gemfile-lock b/update-gemfile-lock index 68ea73f..31986cc 100755 --- a/update-gemfile-lock +++ b/update-gemfile-lock @@ -3,5 +3,5 @@ # The container tag should closely match what is used in `docker/Dockerfile` in vmpooler-deployment docker run -it --rm \ -v $(pwd):/app \ - jruby:9.4.2.0-jdk11 \ + jruby:9.4.3.0-jdk11 \ /bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends git make netbase && cd /app && gem install bundler && bundle install --jobs 3 && bundle update; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"' From fbd6c7e50593a398c7e5294be2165fafeb7f9a09 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Thu, 10 Aug 2023 12:21:34 -0400 Subject: [PATCH 47/55] 1.2.0 release prep --- CHANGELOG.md | 12 ++++++++++++ Gemfile.lock | 2 +- lib/vmpooler-provider-gce/version.rb | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0eaac92..8ecfd70 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [1.2.0](https://github.com/puppetlabs/vmpooler-provider-gce/tree/1.2.0) (2023-08-10) + +[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-gce/compare/1.1.0...1.2.0) + +**Implemented enhancements:** + +- Bump jruby to 9.4.3.0 and update lockfile [\#31](https://github.com/puppetlabs/vmpooler-provider-gce/pull/31) ([yachub](https://github.com/yachub)) + +**Merged pull requests:** + +- Bump thor from 1.2.1 to 1.2.2 [\#29](https://github.com/puppetlabs/vmpooler-provider-gce/pull/29) ([dependabot[bot]](https://github.com/apps/dependabot)) + ## [1.1.0](https://github.com/puppetlabs/vmpooler-provider-gce/tree/1.1.0) (2023-05-01) [Full Changelog](https://github.com/puppetlabs/vmpooler-provider-gce/compare/1.0.0...1.1.0) diff --git a/Gemfile.lock b/Gemfile.lock index ee5b3e9..fb4fc56 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - vmpooler-provider-gce (1.1.0) + vmpooler-provider-gce (1.2.0) google-apis-compute_v1 (~> 0.14) googleauth (>= 0.16.2, < 1.4.0) vmpooler (~> 3.0) diff --git a/lib/vmpooler-provider-gce/version.rb b/lib/vmpooler-provider-gce/version.rb index 239f836..e9c952d 100644 --- a/lib/vmpooler-provider-gce/version.rb +++ b/lib/vmpooler-provider-gce/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module VmpoolerProviderGce - VERSION = '1.1.0' + VERSION = '1.2.0' end From 493e358ba1f94e246280bd1912e3e440b192867a Mon Sep 17 00:00:00 2001 From: isaac-hammes Date: Thu, 17 Aug 2023 13:08:08 -0700 Subject: [PATCH 48/55] (POD-10) Log reason for failed VM checks. --- lib/vmpooler/providers/gce.rb | 6 ++++-- spec/unit/providers/gce_spec.rb | 8 ++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/vmpooler/providers/gce.rb b/lib/vmpooler/providers/gce.rb index e7d838d..747872e 100644 --- a/lib/vmpooler/providers/gce.rb +++ b/lib/vmpooler/providers/gce.rb @@ -460,15 +460,17 @@ module Vmpooler true end - def vm_ready?(pool_name, vm_name) + def vm_ready?(pool_name, vm_name, redis) debug_logger('vm_ready?') begin # TODO: we could use a healthcheck resource attached to instance domain = domain(pool_name) open_socket(vm_name, domain) - rescue StandardError => _e + rescue StandardError => e + redis.hset("vmpooler__vm__#{vm_name}", 'open_socket_error', e.to_s) return false end + redis.hdel("vmpooler__vm__#{vm_name}", 'open_socket_error') true end diff --git a/spec/unit/providers/gce_spec.rb b/spec/unit/providers/gce_spec.rb index 614a23b..1e219b9 100644 --- a/spec/unit/providers/gce_spec.rb +++ b/spec/unit/providers/gce_spec.rb @@ -361,7 +361,9 @@ EOT end it 'should return true' do - expect(subject.vm_ready?(poolname, vmname)).to be true + redis_connection_pool.with_metrics do |redis| + expect(subject.vm_ready?(poolname, vmname, redis)).to be true + end end end @@ -371,7 +373,9 @@ EOT end it 'should return false' do - expect(subject.vm_ready?(poolname, vmname)).to be false + redis_connection_pool.with_metrics do |redis| + expect(subject.vm_ready?(poolname, vmname, redis)).to be false + end end end end From e58c1a8bb3c2c88c78eb60640b4bfa5b8df10618 Mon Sep 17 00:00:00 2001 From: isaac-hammes Date: Fri, 18 Aug 2023 08:45:44 -0700 Subject: [PATCH 49/55] (maint) Release prep for version 1.3.0 --- CHANGELOG.md | 8 ++++++++ Gemfile.lock | 2 +- lib/vmpooler-provider-gce/version.rb | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ecfd70..ed1eead 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [1.3.0](https://github.com/puppetlabs/vmpooler-provider-gce/tree/1.3.0) (2023-08-18) + +[Full Changelog](https://github.com/puppetlabs/vmpooler-provider-gce/compare/1.2.0...1.3.0) + +**Implemented enhancements:** + +- \(POD-10\) Log reason for failed VM checks. [\#33](https://github.com/puppetlabs/vmpooler-provider-gce/pull/33) ([isaac-hammes](https://github.com/isaac-hammes)) + ## [1.2.0](https://github.com/puppetlabs/vmpooler-provider-gce/tree/1.2.0) (2023-08-10) [Full Changelog](https://github.com/puppetlabs/vmpooler-provider-gce/compare/1.1.0...1.2.0) diff --git a/Gemfile.lock b/Gemfile.lock index fb4fc56..749532c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - vmpooler-provider-gce (1.2.0) + vmpooler-provider-gce (1.3.0) google-apis-compute_v1 (~> 0.14) googleauth (>= 0.16.2, < 1.4.0) vmpooler (~> 3.0) diff --git a/lib/vmpooler-provider-gce/version.rb b/lib/vmpooler-provider-gce/version.rb index e9c952d..b97bce2 100644 --- a/lib/vmpooler-provider-gce/version.rb +++ b/lib/vmpooler-provider-gce/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module VmpoolerProviderGce - VERSION = '1.2.0' + VERSION = '1.3.0' end From 01a0446e036d243530d5cb1776d0b15ce4b9686f Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Tue, 5 Dec 2023 17:16:56 -0500 Subject: [PATCH 50/55] syncing files from release-engineering-repo-standards --- .github/dependabot.yml | 6 ++++++ .github/workflows/auto_release_prep.yml | 11 +++++++++++ .github/workflows/dependabot_merge.yml | 8 ++++++++ .github/workflows/ensure_label.yml | 8 ++++++++ 4 files changed, 33 insertions(+) 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 81e0069..4ae585a 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -5,3 +5,9 @@ updates: schedule: interval: weekly open-pull-requests-limit: 10 + +- package-ecosystem: github-actions + directory: "/" + schedule: + interval: weekly + open-pull-requests-limit: 10 diff --git a/.github/workflows/auto_release_prep.yml b/.github/workflows/auto_release_prep.yml new file mode 100644 index 0000000..1223c43 --- /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/vmpooler-provider-gce/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 428f7a041d3557977fa011a7ac788ce3d342bce6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 7 Dec 2023 13:48:34 +0000 Subject: [PATCH 51/55] 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/testing.yml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4db3728..6d59f04 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest if: github.repository == 'puppetlabs/vmpooler-provider-gce' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Get Current Version uses: actions/github-script@v6 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/testing.yml b/.github/workflows/testing.yml index 105fc8e..1f2f421 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -20,7 +20,7 @@ jobs: ruby-version: - 'jruby-9.4.3.0' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: @@ -36,7 +36,7 @@ jobs: ruby-version: - 'jruby-9.4.3.0' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: From bbce7bd019fdd19c78e19f0fdbaca6f33f157c62 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 7 Dec 2023 13:48:38 +0000 Subject: [PATCH 52/55] 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 666c602..0a6c0dd 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 8eec9a765fc43cadf8f58cbf88090dbb227fd2db Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 7 Dec 2023 13:51:54 +0000 Subject: [PATCH 53/55] 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 6d59f04..add1656 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -10,7 +10,7 @@ jobs: - uses: actions/checkout@v4 - name: Get Current Version - uses: actions/github-script@v6 + uses: actions/github-script@v7 id: cv with: script: | From ec6383fac86bcc5beff23e05244961df620daf63 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Mon, 15 Jan 2024 09:24:55 -0500 Subject: [PATCH 54/55] 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 1223c43..ad905fa 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/vmpooler-provider-gce/version.rb From 651e4ba892b36fc619b1cf4ae839ea9d71cf6842 Mon Sep 17 00:00:00 2001 From: Jake Spain Date: Fri, 19 Jan 2024 15:34:12 -0500 Subject: [PATCH 55/55] 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 ca8f2f7..502ad2b 100755 --- a/release-prep +++ b/release-prep @@ -3,13 +3,13 @@ # The container tag should closely match what is used in `docker/Dockerfile` in vmpooler-deployment # # Update Gemfile.lock -docker run -it --rm \ +docker run -t --rm \ -v $(pwd):/app \ jruby:9.4.3.0-jdk11 \ /bin/bash -c 'apt-get update -qq && apt-get install -y --no-install-recommends git make netbase && cd /app && gem install bundler && bundle install --jobs 3; echo "LOCK_FILE_UPDATE_EXIT_CODE=$?"' # Update Changelog -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/vmpooler-provider-gce/version.rb |rev |cut -d "'" -f2 |rev)