facter 4.3.1 → 4.4.1
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 +4 -4
- data/lib/docs/generate_cli.rb +1 -1
- data/lib/facter/custom_facts/core/execution/base.rb +5 -4
- data/lib/facter/custom_facts/core/execution/posix.rb +1 -1
- data/lib/facter/custom_facts/core/execution/windows.rb +2 -2
- data/lib/facter/custom_facts/core/execution.rb +1 -1
- data/lib/facter/custom_facts/core/file_loader.rb +23 -24
- data/lib/facter/custom_facts/core/legacy_facter.rb +1 -1
- data/lib/facter/custom_facts/util/normalization.rb +8 -23
- data/lib/facter/custom_facts/util/windows_root.rb +1 -1
- data/lib/facter/facts/debian/architecture.rb +1 -1
- data/lib/facter/facts/linux/hypervisors/kvm.rb +2 -2
- data/lib/facter/facts/linux/os/architecture.rb +1 -1
- data/lib/facter/facts/linux/partitions.rb +4 -0
- data/lib/facter/facts/linux/processors/isa.rb +1 -10
- data/lib/facter/facts/ol/lsbdistdescription.rb +16 -0
- data/lib/facter/facts/ol/lsbdistid.rb +16 -0
- data/lib/facter/facts/ol/os/distro/description.rb +19 -0
- data/lib/facter/facts/ol/os/distro/id.rb +19 -0
- data/lib/facter/facts/windows/hypervisors/kvm.rb +2 -2
- data/lib/facter/framework/cli/cli_launcher.rb +3 -3
- data/lib/facter/framework/config/config_reader.rb +4 -0
- data/lib/facter/framework/config/fact_groups.rb +2 -2
- data/lib/facter/framework/core/fact_loaders/fact_loader.rb +14 -2
- data/lib/facter/framework/core/file_loader.rb +896 -38
- data/lib/facter/framework/core/options/config_file_options.rb +4 -0
- data/lib/facter/framework/core/options/options_validator.rb +9 -2
- data/lib/facter/framework/detector/os_hierarchy.rb +1 -1
- data/lib/facter/framework/formatters/legacy_fact_formatter.rb +1 -1
- data/lib/facter/framework/formatters/yaml_fact_formatter.rb +2 -2
- data/lib/facter/framework/parsers/query_parser.rb +2 -1
- data/lib/facter/patches/sysfilesystem/sys/statvfs.rb +4 -4
- data/lib/facter/resolvers/aix/architecture.rb +1 -1
- data/lib/facter/resolvers/aix/filesystem.rb +1 -1
- data/lib/facter/resolvers/aix/hardware.rb +1 -1
- data/lib/facter/resolvers/aix/memory.rb +1 -1
- data/lib/facter/resolvers/aix/mountpoints.rb +2 -2
- data/lib/facter/resolvers/aix/networking.rb +5 -3
- data/lib/facter/resolvers/aix/partitions.rb +2 -2
- data/lib/facter/resolvers/bsd/processors.rb +1 -1
- data/lib/facter/resolvers/freebsd/processors.rb +2 -2
- data/lib/facter/resolvers/freebsd/swap_memory.rb +1 -1
- data/lib/facter/resolvers/gce.rb +9 -0
- data/lib/facter/resolvers/linux/hostname.rb +2 -2
- data/lib/facter/resolvers/load_averages.rb +1 -1
- data/lib/facter/resolvers/lspci.rb +1 -1
- data/lib/facter/resolvers/macosx/swap_memory.rb +1 -1
- data/lib/facter/resolvers/networking.rb +1 -1
- data/lib/facter/resolvers/open_vz.rb +1 -1
- data/lib/facter/resolvers/os_release.rb +3 -3
- data/lib/facter/resolvers/selinux.rb +3 -3
- data/lib/facter/resolvers/solaris/ffi/functions.rb +5 -3
- data/lib/facter/resolvers/solaris/filesystems.rb +1 -1
- data/lib/facter/resolvers/solaris/mountpoints.rb +1 -1
- data/lib/facter/resolvers/virt_what.rb +6 -6
- data/lib/facter/resolvers/windows/ffi/hardware_ffi.rb +2 -2
- data/lib/facter/resolvers/windows/ffi/identity_ffi.rb +1 -1
- data/lib/facter/resolvers/windows/ffi/kernel_ffi.rb +2 -2
- data/lib/facter/resolvers/windows/ffi/memory_ffi.rb +2 -2
- data/lib/facter/resolvers/windows/ffi/networking_ffi.rb +3 -3
- data/lib/facter/resolvers/windows/ffi/system32_ffi.rb +1 -1
- data/lib/facter/resolvers/windows/ffi/winnls_ffi.rb +1 -1
- data/lib/facter/resolvers/windows/hardware_architecture.rb +1 -1
- data/lib/facter/resolvers/windows/identity.rb +1 -1
- data/lib/facter/resolvers/windows/kernel.rb +1 -1
- data/lib/facter/resolvers/windows/memory.rb +1 -1
- data/lib/facter/resolvers/windows/networking.rb +1 -1
- data/lib/facter/resolvers/windows/system32.rb +1 -1
- data/lib/facter/resolvers/windows/timezone.rb +1 -1
- data/lib/facter/resolvers/windows/virtualization.rb +2 -2
- data/lib/facter/resolvers/xen.rb +1 -1
- data/lib/facter/util/api_debugger.rb +1 -1
- data/lib/facter/util/facts/windows_release_finder.rb +2 -2
- data/lib/facter/util/linux/dhcp.rb +1 -1
- data/lib/facter/util/resolvers/ffi/hostname.rb +1 -1
- data/lib/facter/util/utils.rb +1 -1
- data/lib/facter/version.rb +1 -1
- data/lib/facter.rb +15 -6
- metadata +11 -8
- data/lib/facter/facts/windows/augeas/version.rb +0 -19
|
@@ -55,8 +55,15 @@ module Facter
|
|
|
55
55
|
no_custom_facts = !options[:custom_facts]
|
|
56
56
|
puppet = options[:puppet]
|
|
57
57
|
custom_dir = options[:custom_dir].nil? ? false : options[:custom_dir].any?
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
default_external_dir = Facter::OptionStore.default_external_dir
|
|
59
|
+
# --puppet/-p option adds an external directory and is not an explicitly
|
|
60
|
+
# set external_dir from cli or config file
|
|
61
|
+
default_external_dir += [Puppet[:pluginfactdest]] if puppet && const_defined?('Puppet')
|
|
62
|
+
external_dir = if options[:external_dir].nil? || options[:external_dir].none?
|
|
63
|
+
false
|
|
64
|
+
else
|
|
65
|
+
options[:external_dir] != default_external_dir
|
|
66
|
+
end
|
|
60
67
|
[
|
|
61
68
|
{ 'no-ruby' => no_ruby, 'custom-dir' => custom_dir },
|
|
62
69
|
{ 'no-external-facts' => !options[:external_facts], 'external-dir' => external_dir },
|
|
@@ -95,7 +95,7 @@ module Facter
|
|
|
95
95
|
# quotation marks that come after \ are not removed
|
|
96
96
|
@log.debug('Remove unnecessary comma and quotation marks on root facts')
|
|
97
97
|
output.split("\n")
|
|
98
|
-
.map! { |line|
|
|
98
|
+
.map! { |line| /^[\s]+/.match?(line) ? line : line.gsub(/,$|(?<!\\)\"/, '').gsub('\\"', '"') }.join("\n")
|
|
99
99
|
end
|
|
100
100
|
end
|
|
101
101
|
end
|
|
@@ -52,9 +52,9 @@ module Facter
|
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
def needs_quote?(value)
|
|
55
|
-
return false if
|
|
55
|
+
return false if /true|false/.match?(value)
|
|
56
56
|
return false if value[/^[0-9]+$/]
|
|
57
|
-
return true if
|
|
57
|
+
return true if /y|Y|yes|Yes|YES|n|N|no|No|NO|True|TRUE|False|FALSE|on|On|ON|off|Off|OFF|:/.match?(value)
|
|
58
58
|
return false if value[/[a-zA-Z]/]
|
|
59
59
|
return false if value[/[0-9]+\.[0-9]+/]
|
|
60
60
|
|
|
@@ -85,7 +85,8 @@ module Facter
|
|
|
85
85
|
|
|
86
86
|
return false if fact_with_wildcard && !query_fact.match("^#{fact_name}$")
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
# Must escape metacharacters (like dots) to ensure the correct fact is found
|
|
89
|
+
return false unless fact_with_wildcard || fact_name.match("^#{Regexp.escape(processed_equery_fact)}($|\\.)")
|
|
89
90
|
|
|
90
91
|
true
|
|
91
92
|
end
|
|
@@ -10,7 +10,7 @@ module Sys
|
|
|
10
10
|
# it the second time will make FFI log a warning message.
|
|
11
11
|
remove_instance_variable(:@layout) if @layout
|
|
12
12
|
|
|
13
|
-
if RbConfig::CONFIG['host_os']
|
|
13
|
+
if /darwin|osx|mach/i.match?(RbConfig::CONFIG['host_os'])
|
|
14
14
|
layout(
|
|
15
15
|
:f_bsize, :ulong,
|
|
16
16
|
:f_frsize, :ulong,
|
|
@@ -24,7 +24,7 @@ module Sys
|
|
|
24
24
|
:f_flag, :ulong,
|
|
25
25
|
:f_namemax, :ulong
|
|
26
26
|
)
|
|
27
|
-
elsif RbConfig::CONFIG['host']
|
|
27
|
+
elsif /bsd/i.match?(RbConfig::CONFIG['host'])
|
|
28
28
|
layout(
|
|
29
29
|
:f_bavail, :uint64,
|
|
30
30
|
:f_bfree, :uint64,
|
|
@@ -38,7 +38,7 @@ module Sys
|
|
|
38
38
|
:f_fsid, :ulong,
|
|
39
39
|
:f_namemax, :ulong
|
|
40
40
|
)
|
|
41
|
-
elsif RbConfig::CONFIG['host']
|
|
41
|
+
elsif /sunos|solaris/i.match?(RbConfig::CONFIG['host'])
|
|
42
42
|
layout(
|
|
43
43
|
:f_bsize, :ulong,
|
|
44
44
|
:f_frsize, :ulong,
|
|
@@ -55,7 +55,7 @@ module Sys
|
|
|
55
55
|
:f_fstr, [:char, 32],
|
|
56
56
|
:f_filler, [:ulong, 16]
|
|
57
57
|
)
|
|
58
|
-
elsif RbConfig::CONFIG['host']
|
|
58
|
+
elsif /i686/i.match?(RbConfig::CONFIG['host'])
|
|
59
59
|
layout(
|
|
60
60
|
:f_bsize, :ulong,
|
|
61
61
|
:f_frsize, :ulong,
|
|
@@ -18,7 +18,7 @@ module Facter
|
|
|
18
18
|
return if file_content.empty?
|
|
19
19
|
|
|
20
20
|
file_content = file_content.map do |line|
|
|
21
|
-
next if line
|
|
21
|
+
next if /#|%/.match?(line) # skip lines that are comments or defaultvfs line
|
|
22
22
|
|
|
23
23
|
line.split(' ').first
|
|
24
24
|
end
|
|
@@ -25,7 +25,7 @@ module Facter
|
|
|
25
25
|
|
|
26
26
|
result.each_line do |line|
|
|
27
27
|
@fact_list[:system] = populate_system(line, pagesize) if line.include?('memory')
|
|
28
|
-
@fact_list[:swap] = populate_swap(line, pagesize) if
|
|
28
|
+
@fact_list[:swap] = populate_swap(line, pagesize) if /pg\sspace/.match?(line)
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
@fact_list[fact_name]
|
|
@@ -19,7 +19,7 @@ module Facter
|
|
|
19
19
|
@fact_list[:mountpoints] = {}
|
|
20
20
|
output = Facter::Core::Execution.execute('mount', logger: log)
|
|
21
21
|
output.split("\n").drop(2).map do |line|
|
|
22
|
-
next if
|
|
22
|
+
next if /procfs|ahafs/.match?(line)
|
|
23
23
|
|
|
24
24
|
add_mount_points_fact(line)
|
|
25
25
|
end
|
|
@@ -40,7 +40,7 @@ module Facter
|
|
|
40
40
|
def retrieve_sizes_for_mounts
|
|
41
41
|
output = Facter::Core::Execution.execute('df -P', logger: log)
|
|
42
42
|
output.split("\n").drop(1).map do |line|
|
|
43
|
-
next if
|
|
43
|
+
next if /-\s+-\s+-/.match?(line)
|
|
44
44
|
|
|
45
45
|
mount_info = line.split("\s")
|
|
46
46
|
mount_info[3] = translate_to_bytes(mount_info[3])
|
|
@@ -43,13 +43,15 @@ module Facter
|
|
|
43
43
|
def populate_with_mtu_and_mac!(interfaces)
|
|
44
44
|
output = Facter::Core::Execution.execute('netstat -in', logger: log)
|
|
45
45
|
output.each_line do |line|
|
|
46
|
-
next if
|
|
46
|
+
next if /Name\s/.match?(line)
|
|
47
47
|
|
|
48
48
|
info = line.split("\s")
|
|
49
49
|
interface_name = info[0]
|
|
50
50
|
mac = info[3][/^([0-9a-f]{1,2}[\.:-]){5}([0-9a-f]{1,2})$/]
|
|
51
|
-
interfaces[interface_name]
|
|
52
|
-
|
|
51
|
+
if interfaces[interface_name]
|
|
52
|
+
interfaces[interface_name][:mtu] = info[1].to_i
|
|
53
|
+
interfaces[interface_name][:mac] = format_mac_address(mac) if mac
|
|
54
|
+
end
|
|
53
55
|
end
|
|
54
56
|
end
|
|
55
57
|
|
|
@@ -50,8 +50,8 @@ module Facter
|
|
|
50
50
|
}
|
|
51
51
|
mount = info_hash['MOUNT POINT']
|
|
52
52
|
label = info_hash['LABEL']
|
|
53
|
-
part_info[:mount] = mount unless %r{N/A}
|
|
54
|
-
part_info[:label] = label.strip unless /None
|
|
53
|
+
part_info[:mount] = mount unless %r{N/A}.match?(mount)
|
|
54
|
+
part_info[:label] = label.strip unless /None/.match?(label)
|
|
55
55
|
part_info
|
|
56
56
|
end
|
|
57
57
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
require_relative '../../../facter/resolvers/bsd/processors'
|
|
4
4
|
|
|
5
5
|
module Facter
|
|
6
6
|
module Resolvers
|
|
@@ -17,7 +17,7 @@ module Facter
|
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
def collect_processors_info(fact_name)
|
|
20
|
-
|
|
20
|
+
require_relative '../../../facter/resolvers/freebsd/ffi/ffi_helper'
|
|
21
21
|
|
|
22
22
|
count = logical_count
|
|
23
23
|
model = processors_model
|
|
@@ -13,7 +13,7 @@ module Facter
|
|
|
13
13
|
@fact_list.fetch(fact_name) { read_swap_memory(fact_name) }
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
def read_swap_memory(fact_name)
|
|
16
|
+
def read_swap_memory(fact_name)
|
|
17
17
|
output = Facter::Core::Execution.execute('swapinfo -k', logger: log)
|
|
18
18
|
data = output.split("\n")[1..-1].map { |line| line.split(/\s+/) }
|
|
19
19
|
|
data/lib/facter/resolvers/gce.rb
CHANGED
|
@@ -39,6 +39,15 @@ module Facter
|
|
|
39
39
|
instance_data = gce_data['instance']
|
|
40
40
|
return if instance_data.nil? || instance_data.empty?
|
|
41
41
|
|
|
42
|
+
# See https://cloud.google.com/compute/docs/metadata for information about these values
|
|
43
|
+
%w[sshKeys ssh-keys].each do |name|
|
|
44
|
+
keys = gce_data.dig('project', 'attributes', name)
|
|
45
|
+
gce_data['project']['attributes'][name] = keys.strip.split("\n") if keys
|
|
46
|
+
|
|
47
|
+
keys = instance_data.dig('attributes', name)
|
|
48
|
+
instance_data['attributes'][name] = keys.strip.split("\n") if keys
|
|
49
|
+
end
|
|
50
|
+
|
|
42
51
|
%w[image machineType zone].each do |key|
|
|
43
52
|
instance_data[key] = instance_data[key].split('/').last if instance_data[key]
|
|
44
53
|
end
|
|
@@ -40,7 +40,7 @@ module Facter
|
|
|
40
40
|
output = Socket.gethostname || ''
|
|
41
41
|
if output.empty? || output['0.0.0.0']
|
|
42
42
|
begin
|
|
43
|
-
|
|
43
|
+
require_relative '../../../facter/util/resolvers/ffi/hostname'
|
|
44
44
|
|
|
45
45
|
output = Facter::Util::Resolvers::Ffi::Hostname.getffihostname
|
|
46
46
|
rescue LoadError => e
|
|
@@ -76,7 +76,7 @@ module Facter
|
|
|
76
76
|
end
|
|
77
77
|
|
|
78
78
|
def retrieve_fqdn_for_host_with_ffi(host)
|
|
79
|
-
|
|
79
|
+
require_relative '../../../facter/util/resolvers/ffi/hostname'
|
|
80
80
|
|
|
81
81
|
fqdn = Facter::Util::Resolvers::Ffi::Hostname.getffiaddrinfo(host)
|
|
82
82
|
log.debug("FFI getaddrinfo was called and it retrieved: #{fqdn}")
|
|
@@ -13,7 +13,7 @@ module Facter
|
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
def read_load_averages(fact_name)
|
|
16
|
-
|
|
16
|
+
require_relative '../../facter/util/resolvers/ffi/load_averages'
|
|
17
17
|
|
|
18
18
|
log.debug('loading cpu load averages')
|
|
19
19
|
@fact_list[:load_averages] = %w[1m 5m 15m].zip(Facter::Util::Resolvers::Ffi::LoadAverages
|
|
@@ -26,7 +26,7 @@ module Facter
|
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
def retrieve_vm(output)
|
|
29
|
-
output.each_line { |line| REGEX_VALUES.each { |key, value| return value if
|
|
29
|
+
output.each_line { |line| REGEX_VALUES.each { |key, value| return value if /#{key}/.match?(line) } }
|
|
30
30
|
|
|
31
31
|
nil
|
|
32
32
|
end
|
|
@@ -13,7 +13,7 @@ module Facter
|
|
|
13
13
|
@fact_list.fetch(fact_name) { read_swap_memory(fact_name) }
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
def read_swap_memory(fact_name)
|
|
16
|
+
def read_swap_memory(fact_name)
|
|
17
17
|
output = Facter::Core::Execution.execute('sysctl -n vm.swapusage', logger: log)
|
|
18
18
|
data = output.match(/^total = ([\d.]+)M used = ([\d.]+)M free = ([\d.]+)M (\(encrypted\))$/)
|
|
19
19
|
|
|
@@ -71,7 +71,7 @@ module Facter
|
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
def extract_dhcp(interface_name, raw_data, parsed_interface_data)
|
|
74
|
-
return unless
|
|
74
|
+
return unless /status:\s+active/.match?(raw_data)
|
|
75
75
|
|
|
76
76
|
result = Facter::Core::Execution.execute("ipconfig getoption #{interface_name} " \
|
|
77
77
|
'server_identifier', logger: log)
|
|
@@ -49,7 +49,7 @@ module Facter
|
|
|
49
49
|
|
|
50
50
|
pairs = []
|
|
51
51
|
content.each do |line|
|
|
52
|
-
pairs << line.strip.delete('"').split('=', 2)
|
|
52
|
+
pairs << line.strip.delete('"').split('=', 2) unless line.start_with?('#')
|
|
53
53
|
end
|
|
54
54
|
|
|
55
55
|
pairs
|
|
@@ -63,13 +63,13 @@ module Facter
|
|
|
63
63
|
def process_version_id
|
|
64
64
|
return unless @fact_list[:version_id]
|
|
65
65
|
|
|
66
|
-
@fact_list[:version_id] = "#{@fact_list[:version_id]}.0" unless @fact_list[:version_id]
|
|
66
|
+
@fact_list[:version_id] = "#{@fact_list[:version_id]}.0" unless /\./.match?(@fact_list[:version_id])
|
|
67
67
|
end
|
|
68
68
|
|
|
69
69
|
def process_id
|
|
70
70
|
return unless @fact_list[:id]
|
|
71
71
|
|
|
72
|
-
@fact_list[:id] = 'opensuse' if @fact_list[:id]
|
|
72
|
+
@fact_list[:id] = 'opensuse' if /opensuse/i.match?(@fact_list[:id])
|
|
73
73
|
end
|
|
74
74
|
|
|
75
75
|
def process_name
|
|
@@ -26,7 +26,7 @@ module Facter
|
|
|
26
26
|
mountpoint = ''
|
|
27
27
|
|
|
28
28
|
output.each_line do |line|
|
|
29
|
-
next unless
|
|
29
|
+
next unless /selinuxfs/.match?(line)
|
|
30
30
|
|
|
31
31
|
mountpoint = line.split("\s")[1]
|
|
32
32
|
break
|
|
@@ -54,8 +54,8 @@ module Facter
|
|
|
54
54
|
file_lines = Facter::Util::FileHelper.safe_readlines('/etc/selinux/config')
|
|
55
55
|
|
|
56
56
|
file_lines.map do |line|
|
|
57
|
-
@fact_list[:config_mode] = line.split('=').last.strip if
|
|
58
|
-
@fact_list[:config_policy] = line.split('=').last.strip if
|
|
57
|
+
@fact_list[:config_mode] = line.split('=').last.strip if /^SELINUX=/.match?(line)
|
|
58
|
+
@fact_list[:config_policy] = line.split('=').last.strip if /^SELINUXTYPE=/.match?(line)
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
!file_lines.empty? ? true : false
|
|
@@ -15,9 +15,11 @@ module Facter
|
|
|
15
15
|
|
|
16
16
|
def self.ioctl(call_const, pointer, address_family = AF_INET)
|
|
17
17
|
fd = Ioctl.open_socket(address_family, SOCK_DGRAM, 0)
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
begin
|
|
19
|
+
ioctl_base(fd, call_const, pointer)
|
|
20
|
+
ensure
|
|
21
|
+
Ioctl.close_socket(fd, 2)
|
|
22
|
+
end
|
|
21
23
|
end
|
|
22
24
|
end
|
|
23
25
|
end
|
|
@@ -18,7 +18,7 @@ module Facter
|
|
|
18
18
|
|
|
19
19
|
file_content = Facter::Core::Execution.execute('/usr/sbin/sysdef', logger: log)
|
|
20
20
|
files = file_content.split("\n").map do |line|
|
|
21
|
-
line.split('/').last if
|
|
21
|
+
line.split('/').last if /^fs\.*/.match?(line)
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
@fact_list[:file_systems] = files.compact.sort.join(',')
|
|
@@ -28,9 +28,9 @@ module Facter
|
|
|
28
28
|
return unless xen_info
|
|
29
29
|
|
|
30
30
|
xen_info = xen_info.to_s
|
|
31
|
-
return 'xenu' if
|
|
32
|
-
return 'xenhvm' if
|
|
33
|
-
return 'xen0' if
|
|
31
|
+
return 'xenu' if /xen-domu/.match?(xen_info)
|
|
32
|
+
return 'xenhvm' if /xen-hvm/.match?(xen_info)
|
|
33
|
+
return 'xen0' if /xen-dom0/.match?(xen_info)
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def determine_other(output)
|
|
@@ -38,8 +38,8 @@ module Facter
|
|
|
38
38
|
other_vm = values.first
|
|
39
39
|
return unless other_vm
|
|
40
40
|
|
|
41
|
-
return 'zlinux' if
|
|
42
|
-
return retrieve_vserver if
|
|
41
|
+
return 'zlinux' if /ibm_systemz/.match?(other_vm)
|
|
42
|
+
return retrieve_vserver if /linux_vserver/.match?(other_vm)
|
|
43
43
|
return (values - ['redhat']).first if values.include?('redhat')
|
|
44
44
|
|
|
45
45
|
other_vm
|
|
@@ -53,7 +53,7 @@ module Facter
|
|
|
53
53
|
parts = line.split("\s")
|
|
54
54
|
next unless parts.size.equal?(2)
|
|
55
55
|
|
|
56
|
-
next unless parts[0]
|
|
56
|
+
next unless /^s_context:|^VxID:/.match?(parts[0])
|
|
57
57
|
return @fact_list[:vserver] = 'vserver_host' if parts[1] == '0'
|
|
58
58
|
|
|
59
59
|
return @fact_list[:vserver] = 'vserver'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
require_relative '../../../../facter/resolvers/windows/ffi/ffi'
|
|
4
|
+
require_relative '../../../../facter/resolvers/windows/ffi/system_info'
|
|
5
5
|
|
|
6
6
|
module HardwareFFI
|
|
7
7
|
extend FFI::Library
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
require_relative '../../../../facter/resolvers/windows/ffi/ffi'
|
|
4
|
+
require_relative '../../../../facter/resolvers/windows/ffi/os_version_info_ex'
|
|
5
5
|
|
|
6
6
|
module KernelFFI
|
|
7
7
|
extend FFI::Library
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
require_relative '../../../../facter/resolvers/windows/ffi/ffi'
|
|
4
|
+
require_relative '../../../../facter/resolvers/windows/ffi/performance_information'
|
|
5
5
|
|
|
6
6
|
module MemoryFFI
|
|
7
7
|
extend FFI::Library
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
require_relative '../../../../facter/resolvers/windows/ffi/ffi'
|
|
4
|
+
require_relative '../../../../facter/resolvers/windows/ffi/network_utils'
|
|
5
|
+
require_relative '../../../../facter/resolvers/windows/ffi/ip_adapter_addresses_lh'
|
|
6
6
|
|
|
7
7
|
module NetworkingFFI
|
|
8
8
|
extend FFI::Library
|
|
@@ -13,7 +13,7 @@ module Facter
|
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
def read_hardware_information(fact_name)
|
|
16
|
-
|
|
16
|
+
require_relative '../../../facter/resolvers/windows/ffi/hardware_ffi'
|
|
17
17
|
|
|
18
18
|
sys_info_ptr = FFI::MemoryPointer.new(SystemInfo.size)
|
|
19
19
|
HardwareFFI::GetNativeSystemInfo(sys_info_ptr)
|
|
@@ -16,7 +16,7 @@ module Facter
|
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
def find_username
|
|
19
|
-
|
|
19
|
+
require_relative '../../../facter/resolvers/windows/ffi/identity_ffi'
|
|
20
20
|
|
|
21
21
|
size_ptr = FFI::MemoryPointer.new(:win32_ulong, 1)
|
|
22
22
|
IdentityFFI::GetUserNameExW(NAME_SAM_COMPATIBLE, FFI::Pointer::NULL, size_ptr)
|
|
@@ -15,7 +15,7 @@ module Facter
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
def read_os_version_information(fact_name)
|
|
18
|
-
|
|
18
|
+
require_relative '../../../facter/resolvers/windows/ffi/kernel_ffi'
|
|
19
19
|
|
|
20
20
|
ver_ptr = FFI::MemoryPointer.new(OsVersionInfoEx.size)
|
|
21
21
|
ver = OsVersionInfoEx.new(ver_ptr)
|
|
@@ -15,7 +15,7 @@ module Facter
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
def read_performance_information
|
|
18
|
-
|
|
18
|
+
require_relative '../../../facter/resolvers/windows/ffi/memory_ffi'
|
|
19
19
|
|
|
20
20
|
state_ptr = FFI::MemoryPointer.new(PerformanceInformation.size)
|
|
21
21
|
if MemoryFFI::GetPerformanceInfo(state_ptr, state_ptr.size) == FFI::WIN32FALSE
|
|
@@ -15,7 +15,7 @@ module Facter
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
def read_network_information(fact_name)
|
|
18
|
-
|
|
18
|
+
require_relative '../../../facter/resolvers/windows/ffi/networking_ffi'
|
|
19
19
|
|
|
20
20
|
size_ptr = FFI::MemoryPointer.new(NetworkingFFI::BUFFER_LENGTH)
|
|
21
21
|
adapter_addresses = FFI::MemoryPointer.new(IpAdapterAddressesLh.size, NetworkingFFI::BUFFER_LENGTH)
|
|
@@ -42,9 +42,9 @@ module Facter
|
|
|
42
42
|
manufacturer = comp.Manufacturer
|
|
43
43
|
if comp.Model =~ /^Virtual Machine/ && manufacturer =~ /^Microsoft/
|
|
44
44
|
'hyperv'
|
|
45
|
-
elsif
|
|
45
|
+
elsif /^Xen/.match?(manufacturer)
|
|
46
46
|
'xen'
|
|
47
|
-
elsif
|
|
47
|
+
elsif /^Amazon EC2/.match?(manufacturer)
|
|
48
48
|
'kvm'
|
|
49
49
|
else
|
|
50
50
|
'physical'
|
data/lib/facter/resolvers/xen.rb
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
module Facter
|
|
4
4
|
module Util
|
|
5
5
|
module ApiDebugger
|
|
6
|
-
def self.prepended(receiver)
|
|
6
|
+
def self.prepended(receiver)
|
|
7
7
|
exclude, print_caller = parse_options(ENV['API_DEBUG'])
|
|
8
8
|
|
|
9
9
|
receiver_methods = receiver.instance_methods - Object.methods
|