Skip to content

Commit 022971e

Browse files
committed
Refactor server fact loading into a separate class
puppet 7.x still uses legacy facts with symbolic fact names, e.g. value(:hostname) (cherry picked from commit 8068bce)
1 parent 072da6f commit 022971e

File tree

2 files changed

+45
-36
lines changed

2 files changed

+45
-36
lines changed

lib/puppet/indirector/catalog/compiler.rb

Lines changed: 2 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
require_relative '../../../puppet/environments'
22
require_relative '../../../puppet/node'
3+
require_relative '../../../puppet/node/server_facts'
34
require_relative '../../../puppet/resource/catalog'
45
require_relative '../../../puppet/indirector/code'
56
require_relative '../../../puppet/util/profiler'
@@ -425,41 +426,6 @@ def node_from_request(facts, request)
425426
#
426427
# See also set_server_facts in Puppet::Server::Compiler in puppetserver.
427428
def set_server_facts
428-
@server_facts = {}
429-
430-
# Add our server Puppet Enterprise version, if available.
431-
pe_version_file = '/opt/puppetlabs/server/pe_version'
432-
if File.readable?(pe_version_file) and !File.zero?(pe_version_file)
433-
@server_facts['pe_serverversion'] = File.read(pe_version_file).chomp
434-
end
435-
436-
# Add our server version to the fact list
437-
@server_facts["serverversion"] = Puppet.version.to_s
438-
439-
# And then add the server name and IP
440-
{"servername" => "fqdn",
441-
"serverip" => "ipaddress",
442-
"serverip6" => "ipaddress6"
443-
}.each do |var, fact|
444-
value = Puppet.runtime[:facter].value(fact)
445-
if !value.nil?
446-
@server_facts[var] = value
447-
end
448-
end
449-
450-
if @server_facts["servername"].nil?
451-
host = Puppet.runtime[:facter].value(:hostname)
452-
if host.nil?
453-
Puppet.warning _("Could not retrieve fact servername")
454-
elsif domain = Puppet.runtime[:facter].value(:domain) #rubocop:disable Lint/AssignmentInCondition
455-
@server_facts["servername"] = [host, domain].join(".")
456-
else
457-
@server_facts["servername"] = host
458-
end
459-
end
460-
461-
if @server_facts["serverip"].nil? && @server_facts["serverip6"].nil?
462-
Puppet.warning _("Could not retrieve either serverip or serverip6 fact")
463-
end
429+
@server_facts = Puppet::Node::ServerFacts.load
464430
end
465431
end

lib/puppet/node/server_facts.rb

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# frozen_string_literal: true
2+
3+
class Puppet::Node::ServerFacts
4+
def self.load
5+
server_facts = {}
6+
7+
# Add our server Puppet Enterprise version, if available.
8+
pe_version_file = '/opt/puppetlabs/server/pe_version'
9+
if File.readable?(pe_version_file) and !File.zero?(pe_version_file)
10+
server_facts['pe_serverversion'] = File.read(pe_version_file).chomp
11+
end
12+
13+
# Add our server version to the fact list
14+
server_facts["serverversion"] = Puppet.version.to_s
15+
16+
# And then add the server name and IP
17+
{"servername" => "fqdn",
18+
"serverip" => "ipaddress",
19+
"serverip6" => "ipaddress6"}.each do |var, fact|
20+
value = Puppet.runtime[:facter].value(fact)
21+
if !value.nil?
22+
server_facts[var] = value
23+
end
24+
end
25+
26+
if server_facts["servername"].nil?
27+
host = Puppet.runtime[:facter].value(:hostname)
28+
if host.nil?
29+
Puppet.warning _("Could not retrieve fact servername")
30+
elsif domain = Puppet.runtime[:facter].value(:domain) #rubocop:disable Lint/AssignmentInCondition
31+
server_facts["servername"] = [host, domain].join(".")
32+
else
33+
server_facts["servername"] = host
34+
end
35+
end
36+
37+
if server_facts["serverip"].nil? && server_facts["serverip6"].nil?
38+
Puppet.warning _("Could not retrieve either serverip or serverip6 fact")
39+
end
40+
41+
server_facts
42+
end
43+
end

0 commit comments

Comments
 (0)