@@ -5,26 +5,33 @@ def initialize(client, server_list: Puppet[:server_list], default_port: Puppet[:
5
5
@default_port = default_port
6
6
end
7
7
8
- def resolve ( session , name , &block )
8
+ def resolve ( session , name , ssl_context : nil , &block )
9
9
success = false
10
10
@server_list . each do |server |
11
11
host = server [ 0 ]
12
12
port = server [ 1 ] || @default_port
13
- begin
14
- response = @client . get ( URI ( "https://#{ host } :#{ port } /status/v1/simple/master" ) )
15
- if response . success?
16
- success = true
17
- yield session . create_service ( name , host , port )
18
- end
19
-
20
- Puppet . debug ( _ ( "Puppet server %{host}:%{port} is unavailable: %{code} %{reason}" ) %
21
- { host : host , port : port , code : response . code , reason : response . message } )
22
- rescue => detail
23
- #TRANSLATORS 'server_list' is the name of a setting and should not be translated
24
- Puppet . debug _ ( "Unable to connect to server from server_list setting: %{detail}" ) % { detail : detail }
13
+ uri = URI ( "https://#{ host } :#{ port } /status/v1/simple/master" )
14
+ service = Puppet ::HTTP ::Service . create_service ( @client , name , host , port )
15
+ if check_connection? ( uri , session , service , ssl_context : ssl_context )
16
+ success = true
17
+ return service
25
18
end
26
19
end
27
20
28
21
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
29
22
end
23
+
24
+ def check_connection? ( uri , session , service , ssl_context : nil )
25
+ response = @client . get ( uri , ssl_context : ssl_context )
26
+ return true if response . success?
27
+
28
+ Puppet . debug ( _ ( "Puppet server %{host}:%{port} is unavailable: %{code} %{reason}" ) %
29
+ { host : host , port : port , code : response . code , reason : response . message } )
30
+ return false
31
+ rescue => detail
32
+ session . add_exception ( detail )
33
+ #TRANSLATORS 'server_list' is the name of a setting and should not be translated
34
+ Puppet . debug _ ( "Unable to connect to server from server_list setting: %{detail}" ) % { detail : detail }
35
+ return false
36
+ end
30
37
end
0 commit comments