Skip to content

Commit 2b32e56

Browse files
committed
(PUP-10039) Yield each successfull server connection to the session
1 parent 9cb338a commit 2b32e56

File tree

3 files changed

+9
-13
lines changed

3 files changed

+9
-13
lines changed

lib/puppet/http/client.rb

-1
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,6 @@ def build_resolvers
150150
resolvers << Puppet::HTTP::Resolver::SRV.new(domain: Puppet[:srv_domain])
151151
end
152152

153-
resolvers << Puppet::HTTP::Resolver::ServerList.new(self, server_list: Puppet[:server_list], default_port: Puppet[:masterport])
154153
resolvers << Puppet::HTTP::Resolver::Settings.new
155154
resolvers.freeze
156155
end

lib/puppet/http/resolver/serverlist.rb

+7-7
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,16 @@ def initialize(client, server_list: Puppet[:server_list], default_port: Puppet[:
66
end
77

88
def resolve(session, name, &block)
9-
server, port = yield_server
10-
yield session.create_service(name, server, port)
11-
end
12-
13-
def yield_server
9+
success = false
1410
@server_list.each do |server|
1511
host = server[0]
1612
port = server[1] || @default_port
1713
begin
1814
response = @client.get(URI("https://#{host}:#{port}/status/v1/simple/master"))
19-
return [host, port] if response.success?
15+
if response.success?
16+
success = true
17+
yield session.create_service(name, host, port)
18+
end
2019

2120
Puppet.debug(_("Puppet server %{host}:%{port} is unavailable: %{code} %{reason}") %
2221
{ host: host, port: port, code: response.code, reason: response.message })
@@ -25,6 +24,7 @@ def yield_server
2524
Puppet.debug _("Unable to connect to server from server_list setting: %{detail}") % {detail: detail}
2625
end
2726
end
28-
[nil, nil]
27+
28+
raise Puppet::Error, _("Could not select a functional puppet master from server_list: '%{server_list}'") % { server_list: Puppet.settings.value(:server_list, Puppet[:environment].to_sym, true) } unless success
2929
end
3030
end

spec/unit/http/resolver_spec.rb

+2-5
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,12 @@
4747
end
4848
end
4949

50-
it 'falls back to the puppet defaults if no servers in server_list are accessible' do
50+
it 'falls fails if no servers in server_list are accessible' do
5151
Puppet[:server_list] = 'ca.example.com:8141'
5252

5353
stub_request(:get, "https://ca.example.com:8141/status/v1/simple/master").to_return(status: 503)
5454

55-
subject.resolve(session, :ca) do |service|
56-
expect(service).to be_an_instance_of(Puppet::HTTP::Service::Ca)
57-
expect(service.url.to_s).to eq("https://#{Puppet[:ca_server]}:#{Puppet[:masterport]}/puppet-ca/v1")
58-
end
55+
expect { subject.resolve(session, :ca) }.to raise_error(Puppet::Error, /^Could not select a functional puppet master from server_list:/)
5956
end
6057

6158
it 'cycles through server_list until a valid server is found' do

0 commit comments

Comments
 (0)