Module: PuppetDebugger::Support::Facts

Included in:
PuppetDebugger::Support
Defined in:
lib/puppet-debugger/support/facts.rb

Instance Method Summary collapse

Instance Method Details

#default_facter_versionObject

return the correct supported version of facter facts



23
24
25
26
27
28
29
# File 'lib/puppet-debugger/support/facts.rb', line 23

def default_facter_version
  if Gem::Version.new(Puppet.version) >= Gem::Version.new(4.4)
    '/^3\.1/'
  else
    '/^2\.4/'
  end
end

#default_facterdb_filterObject



14
15
16
# File 'lib/puppet-debugger/support/facts.rb', line 14

def default_facterdb_filter
  "operatingsystem=#{facter_os_name} and operatingsystemrelease=#{facter_os_version} and architecture=x86_64 and facterversion=#{facter_version}"
end

#default_factsObject



61
62
63
64
65
66
67
68
# File 'lib/puppet-debugger/support/facts.rb', line 61

def default_facts
  unless @facts
    values = Hash[node_facts.map { |k, v| [k.to_s, v] }]
    name = values['fqdn']
    @facts ||= Puppet::Node::Facts.new(name, values)
  end
  @facts
end

#dynamic_facterdb_filterObject

allow the user to specify the facterdb filter



10
11
12
# File 'lib/puppet-debugger/support/facts.rb', line 10

def dynamic_facterdb_filter
  ENV['DEBUGGER_FACTERDB_FILTER'] || default_facterdb_filter
end

#facter_os_nameObject



31
32
33
# File 'lib/puppet-debugger/support/facts.rb', line 31

def facter_os_name
  ENV['DEBUGGER_FACTER_OS_NAME'] || 'Fedora'
end

#facter_os_versionObject



35
36
37
# File 'lib/puppet-debugger/support/facts.rb', line 35

def facter_os_version
  ENV['DEBUGGER_FACTER_OS_VERSION'] || '23'
end

#facter_versionObject



18
19
20
# File 'lib/puppet-debugger/support/facts.rb', line 18

def facter_version
  ENV['DEBUGGER_FACTER_VERSION'] || default_facter_version
end

#node_factsObject

uses facterdb (cached facts) and retrives the facts given a filter creates a new facts object we could also use fact_merge to get real facts from the real system or puppetdb



46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/puppet-debugger/support/facts.rb', line 46

def node_facts
  node_facts = FacterDB.get_facts(dynamic_facterdb_filter).first
  if node_facts.nil?
    message = <<-EOS
Using filter: #{dynamic_facterdb_filter}
Bad FacterDB filter, please change the filter so it returns a result set.
See https://github.com/camptocamp/facterdb/#with-a-string-filter
    EOS
    raise PuppetDebugger::Exception::BadFilter, message: message
  end
  # fix for when --show-legacy facts are not part of the facter 3 fact set
  node_facts[:fqdn] = node_facts[:networking].fetch('fqdn', nil) unless node_facts[:fqdn]
  node_facts
end

#server_factsObject



70
71
72
73
74
75
76
# File 'lib/puppet-debugger/support/facts.rb', line 70

def server_facts
  data = {}
  data['servername'] = Facter.value('fqdn') || Facter.value('networking')['fqdn']
  data['serverip'] = Facter.value('ipaddress')
  data['serverversion'] = Puppet.version.to_s
  data
end

#set_facts(value) ⇒ Object



39
40
41
# File 'lib/puppet-debugger/support/facts.rb', line 39

def set_facts(value)
  @facts = value
end