beaker-pe 3.6.6 → 3.6.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: aa8b72f2297a472ddc6291dd99dba0607bee54af45ebf9599675aac36823ecc7
4
- data.tar.gz: 8186462c53f80d68b4d0c19c46d1fafdb24bd4af604b18d2b40a3ca0820dbf23
3
+ metadata.gz: 8c64a23179a869b41ceb2ea32740a983e8a27172939f4347b6401d94265c1f26
4
+ data.tar.gz: 1f961918eda0b697d7246d4abef2cf451f742a5f816a9667e3d2259ca415d7b9
5
5
  SHA512:
6
- metadata.gz: 723ce4a758aaa6cfd40b907ae7a6877349d6402393e445b9a9f147437d60db22d64d9ef29f795884f0f16a9b07c8cb566e9a9bcf50383cfd1819266a59ef0d6d
7
- data.tar.gz: b862c17a232e7c30b7d5d623a0d947a0cf95c58554722f76cba6f5f23e5b60a224e30ba0ca04fa2f8058192b0ab46b831d101831fb894ea9270d745fe839d16e
6
+ metadata.gz: '07931522f4f5f30eb04235539a1b9d3d30b3cc16eb551bb7d78b5eed7f010b62b9bcd07de1b15b66be5419bdf273b44c097710484b8976597b8b1ce67efab31c'
7
+ data.tar.gz: 27cd5ed3c62caa3899b980fd3f63c0c3c5c0c5f5f52e1dca4601d50ba70a7c1132b2dc07a56a019caff526e83cb9c74523dd25c6321cc26fb0463c95344acc7a
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [3.6.7](https://github.com/puppetlabs/beaker-pe/tree/3.6.7) (2026-08-14)
4
+
5
+ [Full Changelog](https://github.com/puppetlabs/beaker-pe/compare/3.6.6...3.6.7)
6
+
7
+ **Fixed bugs:**
8
+
9
+ - \(PE-45827\) Query PuppetDB's unauthenticated status endpoint in check\_puppetdb\_status\_endpoint [\#313](https://github.com/puppetlabs/beaker-pe/pull/313) ([steveax](https://github.com/steveax))
10
+
3
11
  ## [3.6.6](https://github.com/puppetlabs/beaker-pe/tree/3.6.6) (2026-08-12)
4
12
 
5
13
  [Full Changelog](https://github.com/puppetlabs/beaker-pe/compare/3.6.5...3.6.6)
@@ -1850,21 +1850,31 @@ EOM
1850
1850
  # Prefer the ssl status endpoint. PuppetDB's jetty listener is
1851
1851
  # explicitly configured with `client-auth = want`, not `need`
1852
1852
  # (see puppet_enterprise::puppetdb::jetty_ini.pp), and
1853
- # /pdb/meta/v1/version -- like the rest of /status/v1/* -- is
1854
- # allow-unauthenticated in PuppetDB's auth.conf. So `curl -k`
1855
- # gets a real, validated response with no client cert needed,
1856
- # and it's the only path that still works once the cleartext
1857
- # listener is disabled by default (PE-45384/PE-44906,
1858
- # SECVULN-1792; PE-45827).
1859
- output = on(host, "curl -s -k https://localhost:#{ssl_port}/pdb/meta/v1/version", :accept_all_exit_codes => true)
1860
- match = output.stdout =~ /version.*\d+\.\d+\.\d+/
1853
+ # /status/v1/* is allow-unauthenticated in PuppetDB's auth.conf,
1854
+ # so `curl -k` gets a real, content-validated response with no
1855
+ # client cert needed. This is the only path that still works
1856
+ # once the cleartext listener is disabled by default
1857
+ # (PE-45384/PE-44906, SECVULN-1792).
1858
+ #
1859
+ # NB: /pdb/meta/v1/version is NOT allow-unauthenticated -- it
1860
+ # requires a cert or token, so a bare `curl -k` against it is
1861
+ # rejected with "Must supply a certificate or token". PE-45827
1862
+ # switched this check to ssl but kept /pdb/meta/v1/version, so it
1863
+ # still hard-failed ("PuppetDB took too long to start") on
1864
+ # cleartext-disabled upgrade hosts. Query the status endpoint and
1865
+ # validate the running state instead, matching the working
1866
+ # sleep_until_puppetdb_started (beaker-puppet, PE-45697). PE-45827.
1867
+ status_endpoint = "status/v1/services/puppetdb-status"
1868
+ running = /"state"\s*:\s*"running"/
1869
+ output = on(host, "curl -s -k https://localhost:#{ssl_port}/#{status_endpoint}", :accept_all_exit_codes => true)
1870
+ match = output.stdout =~ running
1861
1871
 
1862
1872
  # Fall back to the cleartext port for older or nonstandard
1863
1873
  # configurations where the ssl endpoint doesn't behave as
1864
1874
  # above.
1865
1875
  if !match
1866
- output = on(host, "curl -s http://localhost:#{nonssl_port}/pdb/meta/v1/version", :accept_all_exit_codes => true)
1867
- match = output.stdout =~ /version.*\d+\.\d+\.\d+/
1876
+ output = on(host, "curl -s http://localhost:#{nonssl_port}/#{status_endpoint}", :accept_all_exit_codes => true)
1877
+ match = output.stdout =~ running
1868
1878
  end
1869
1879
 
1870
1880
  sleep 1
@@ -3,7 +3,7 @@ module Beaker
3
3
  module PE
4
4
 
5
5
  module Version
6
- STRING = '3.6.6'
6
+ STRING = '3.6.7'
7
7
  end
8
8
 
9
9
  end
@@ -2671,24 +2671,25 @@ NOASK
2671
2671
  subject.check_puppetdb_status_endpoint(unixhost)
2672
2672
  end
2673
2673
 
2674
- it 'succeeds via the ssl endpoint alone, without ever falling back to cleartext (PE-45827)' do
2674
+ it 'queries the allow-unauthenticated ssl status endpoint, not /pdb/meta (PE-45827)' do
2675
2675
  allow(subject).to receive(:version_is_less).and_return(false)
2676
2676
  allow(subject).to receive(:sleep)
2677
- ssl_result = double(Beaker::Result, :stdout => '{"version":"7.12.1"}', :exit_code => 0)
2678
- expect(subject).to receive(:on).with(anything, %r{-k https://localhost:8081/}, anything).once.and_return(ssl_result)
2677
+ ssl_result = double(Beaker::Result, :stdout => '{"puppetdb-status":{"state":"running"}}', :exit_code => 0)
2678
+ expect(subject).to receive(:on).with(anything, %r{-k https://localhost:8081/status/v1/services/puppetdb-status}, anything).once.and_return(ssl_result)
2679
+ expect(subject).not_to receive(:on).with(anything, %r{/pdb/meta/}, anything)
2679
2680
  expect(subject).not_to receive(:on).with(anything, %r{http://localhost:8080/}, anything)
2680
2681
 
2681
2682
  expect { subject.check_puppetdb_status_endpoint(unixhost) }.not_to raise_error
2682
2683
  end
2683
2684
 
2684
- context 'when the ssl endpoint never returns valid content (older or nonstandard config)' do
2685
- it 'falls back to the cleartext endpoint' do
2685
+ context 'when the ssl endpoint never returns a running state (older or nonstandard config)' do
2686
+ it 'falls back to the cleartext status endpoint' do
2686
2687
  allow(subject).to receive(:version_is_less).and_return(false)
2687
2688
  allow(subject).to receive(:sleep)
2688
2689
  ssl_result = double(Beaker::Result, :stdout => '', :exit_code => 0)
2689
- nonssl_result = double(Beaker::Result, :stdout => '{"version":"7.12.1"}', :exit_code => 0)
2690
- expect(subject).to receive(:on).with(anything, %r{-k https://localhost:8081/}, anything).once.ordered.and_return(ssl_result)
2691
- expect(subject).to receive(:on).with(anything, %r{http://localhost:8080/}, anything).once.ordered.and_return(nonssl_result)
2690
+ nonssl_result = double(Beaker::Result, :stdout => '{"puppetdb-status":{"state":"running"}}', :exit_code => 0)
2691
+ expect(subject).to receive(:on).with(anything, %r{-k https://localhost:8081/status/v1/services/puppetdb-status}, anything).once.ordered.and_return(ssl_result)
2692
+ expect(subject).to receive(:on).with(anything, %r{http://localhost:8080/status/v1/services/puppetdb-status}, anything).once.ordered.and_return(nonssl_result)
2692
2693
 
2693
2694
  expect { subject.check_puppetdb_status_endpoint(unixhost) }.not_to raise_error
2694
2695
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beaker-pe
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.6.6
4
+ version: 3.6.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppetlabs