facter 4.0.33 → 4.0.34

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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/lib/facter/facts/bsd/load_averages.rb +1 -1
  3. data/lib/facter/facts/freebsd/dmi/bios/release_date.rb +19 -0
  4. data/lib/facter/facts/freebsd/dmi/bios/vendor.rb +19 -0
  5. data/lib/facter/facts/freebsd/dmi/bios/version.rb +19 -0
  6. data/lib/facter/facts/freebsd/dmi/manufacturer.rb +17 -0
  7. data/lib/facter/facts/freebsd/dmi/product/name.rb +19 -0
  8. data/lib/facter/facts/freebsd/dmi/product/serial_number.rb +19 -0
  9. data/lib/facter/facts/freebsd/dmi/product/uuid.rb +19 -0
  10. data/lib/facter/facts/freebsd/memory/swap/available.rb +21 -0
  11. data/lib/facter/facts/freebsd/memory/swap/available_bytes.rb +20 -0
  12. data/lib/facter/facts/freebsd/memory/swap/capacity.rb +18 -0
  13. data/lib/facter/facts/freebsd/memory/swap/encrypted.rb +19 -0
  14. data/lib/facter/facts/freebsd/memory/swap/total.rb +21 -0
  15. data/lib/facter/facts/freebsd/memory/swap/total_bytes.rb +20 -0
  16. data/lib/facter/facts/freebsd/memory/swap/used.rb +20 -0
  17. data/lib/facter/facts/freebsd/memory/swap/used_bytes.rb +18 -0
  18. data/lib/facter/facts/freebsd/memory/system/available.rb +21 -0
  19. data/lib/facter/facts/freebsd/memory/system/available_bytes.rb +20 -0
  20. data/lib/facter/facts/freebsd/memory/system/capacity.rb +18 -0
  21. data/lib/facter/facts/freebsd/memory/system/total.rb +21 -0
  22. data/lib/facter/facts/freebsd/memory/system/total_bytes.rb +20 -0
  23. data/lib/facter/facts/freebsd/memory/system/used.rb +20 -0
  24. data/lib/facter/facts/freebsd/memory/system/used_bytes.rb +18 -0
  25. data/lib/facter/facts/solaris/load_averages.rb +14 -0
  26. data/lib/facter/framework/detector/os_detector.rb +5 -1
  27. data/lib/facter/os_hierarchy.json +3 -1
  28. data/lib/facter/resolvers/bsd/ffi/ffi_helper.rb +0 -10
  29. data/lib/facter/resolvers/freebsd/dmi_resolver.rb +38 -0
  30. data/lib/facter/resolvers/freebsd/ffi/ffi_helper.rb +19 -0
  31. data/lib/facter/resolvers/freebsd/swap_memory_resolver.rb +39 -0
  32. data/lib/facter/resolvers/freebsd/system_memory_resolver.rb +41 -0
  33. data/lib/facter/resolvers/{load_averages_resolver.rb → linux/load_averages.rb} +0 -0
  34. data/lib/facter/resolvers/load_averages.rb +24 -0
  35. data/lib/facter/resolvers/os_release_resolver.rb +1 -1
  36. data/lib/facter/resolvers/solaris/ffi/ffi.rb +5 -0
  37. data/lib/facter/resolvers/solaris/networking_resolver.rb +2 -6
  38. data/lib/facter/resolvers/utils/ffi/load_averages.rb +27 -0
  39. data/lib/facter/resolvers/windows/ffi/ffi.rb +1 -1
  40. data/lib/facter/version.rb +1 -1
  41. metadata +31 -4
  42. data/lib/facter/resolvers/bsd/load_averages_resolver.rb +0 -26
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 32bb403fb4187d3a595b0b8aa4ed12ba472b1efc6d785cf2d371fc1488afd2d7
4
- data.tar.gz: b8b159eedc00a4c17e2121e73f38bb76d383b298746731104511a36955ba382d
3
+ metadata.gz: f04518bbd83ad1cf3fb6d5d026e1258cf46a374d7535f28066bcab0939e18360
4
+ data.tar.gz: c7ee4b28049507ce0035377863eca35faf2c5aed82bda495fbc8b8174aa7a3db
5
5
  SHA512:
6
- metadata.gz: 3a0f55015be59493c79b53f054e609a336d6e64385547534ffe62084b060d1b70da511f0a4d74179717bf8fe11287ed972586fb159c20a33d4832ba01f287ffc
7
- data.tar.gz: 1814bfa9210ec33c2ddeafad6d123a4f2c7377c792cd4a494de5d467f606b46943f2a294c6abc4f1e1700a87edaeeffe3e1de0712782a46ada76ae289367e17f
6
+ metadata.gz: a369de0d02f412b1d385d5f52a7e4d458e076dc765eab53e2bb4fc0866eb56e7e8f28f0664a55eb7f3abe0e6cb23cc830df38d8b3b0862f33ac90e9648386f17
7
+ data.tar.gz: 905d45c95b4e2802e3fd4e990d75b6afb8d7ce641783283543c11d624ce3764576c5d39ac1d5550e68dd6c43385eca996f0251b2826ef3153e65b937903c9683
@@ -6,7 +6,7 @@ module Facts
6
6
  FACT_NAME = 'load_averages'
7
7
 
8
8
  def call_the_resolver
9
- fact_value = Facter::Resolvers::Bsd::LoadAverages.resolve(:load_averages)
9
+ fact_value = Facter::Resolvers::LoadAverages.resolve(:load_averages)
10
10
  Facter::ResolvedFact.new(FACT_NAME, fact_value)
11
11
  end
12
12
  end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Freebsd
5
+ module Dmi
6
+ module Bios
7
+ class ReleaseDate
8
+ FACT_NAME = 'dmi.bios.release_date'
9
+ ALIASES = 'bios_release_date'
10
+
11
+ def call_the_resolver
12
+ fact_value = Facter::Resolvers::Freebsd::DmiBios.resolve(:bios_date)
13
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Freebsd
5
+ module Dmi
6
+ module Bios
7
+ class Vendor
8
+ FACT_NAME = 'dmi.bios.vendor'
9
+ ALIASES = 'bios_vendor'
10
+
11
+ def call_the_resolver
12
+ fact_value = Facter::Resolvers::Freebsd::DmiBios.resolve(:bios_vendor)
13
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Freebsd
5
+ module Dmi
6
+ module Bios
7
+ class Version
8
+ FACT_NAME = 'dmi.bios.version'
9
+ ALIASES = 'bios_version'
10
+
11
+ def call_the_resolver
12
+ fact_value = Facter::Resolvers::Freebsd::DmiBios.resolve(:bios_version)
13
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Freebsd
5
+ module Dmi
6
+ class Manufacturer
7
+ FACT_NAME = 'dmi.manufacturer'
8
+ ALIASES = 'manufacturer'
9
+
10
+ def call_the_resolver
11
+ fact_value = Facter::Resolvers::Freebsd::DmiBios.resolve(:sys_vendor)
12
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Freebsd
5
+ module Dmi
6
+ module Product
7
+ class Name
8
+ FACT_NAME = 'dmi.product.name'
9
+ ALIASES = 'productname'
10
+
11
+ def call_the_resolver
12
+ fact_value = Facter::Resolvers::Freebsd::DmiBios.resolve(:product_name)
13
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Freebsd
5
+ module Dmi
6
+ module Product
7
+ class SerialNumber
8
+ FACT_NAME = 'dmi.product.serial_number'
9
+ ALIASES = 'serialnumber'
10
+
11
+ def call_the_resolver
12
+ fact_value = Facter::Resolvers::Freebsd::DmiBios.resolve(:product_serial)
13
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Freebsd
5
+ module Dmi
6
+ module Product
7
+ class Uuid
8
+ FACT_NAME = 'dmi.product.uuid'
9
+ ALIASES = 'uuid'
10
+
11
+ def call_the_resolver
12
+ fact_value = Facter::Resolvers::Freebsd::DmiBios.resolve(:product_uuid)
13
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Freebsd
5
+ module Memory
6
+ module Swap
7
+ class Available
8
+ FACT_NAME = 'memory.swap.available'
9
+ ALIASES = 'swapfree'
10
+
11
+ def call_the_resolver
12
+ fact_value = Facter::Resolvers::Freebsd::SwapMemory.resolve(:available_bytes)
13
+ fact_value = Facter::FactsUtils::UnitConverter.bytes_to_human_readable(fact_value)
14
+
15
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Freebsd
5
+ module Memory
6
+ module Swap
7
+ class AvailableBytes
8
+ FACT_NAME = 'memory.swap.available_bytes'
9
+ ALIASES = 'swapfree_mb'
10
+
11
+ def call_the_resolver
12
+ fact_value = Facter::Resolvers::Freebsd::SwapMemory.resolve(:available_bytes)
13
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value),
14
+ Facter::ResolvedFact.new(ALIASES, Facter::FactsUtils::UnitConverter.bytes_to_mb(fact_value), :legacy)]
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Freebsd
5
+ module Memory
6
+ module Swap
7
+ class Capacity
8
+ FACT_NAME = 'memory.swap.capacity'
9
+
10
+ def call_the_resolver
11
+ fact_value = Facter::Resolvers::Freebsd::SwapMemory.resolve(:capacity)
12
+ Facter::ResolvedFact.new(FACT_NAME, fact_value)
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Freebsd
5
+ module Memory
6
+ module Swap
7
+ class Encrypted
8
+ FACT_NAME = 'memory.swap.encrypted'
9
+ ALIASES = 'swapencrypted'
10
+
11
+ def call_the_resolver
12
+ fact_value = Facter::Resolvers::Freebsd::SwapMemory.resolve(:encrypted)
13
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Freebsd
5
+ module Memory
6
+ module Swap
7
+ class Total
8
+ FACT_NAME = 'memory.swap.total'
9
+ ALIASES = 'swapsize'
10
+
11
+ def call_the_resolver
12
+ fact_value = Facter::Resolvers::Freebsd::SwapMemory.resolve(:total_bytes)
13
+ fact_value = Facter::FactsUtils::UnitConverter.bytes_to_human_readable(fact_value)
14
+
15
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Freebsd
5
+ module Memory
6
+ module Swap
7
+ class TotalBytes
8
+ FACT_NAME = 'memory.swap.total_bytes'
9
+ ALIASES = 'swapsize_mb'
10
+
11
+ def call_the_resolver
12
+ fact_value = Facter::Resolvers::Freebsd::SwapMemory.resolve(:total_bytes)
13
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value),
14
+ Facter::ResolvedFact.new(ALIASES, Facter::FactsUtils::UnitConverter.bytes_to_mb(fact_value), :legacy)]
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Freebsd
5
+ module Memory
6
+ module Swap
7
+ class Used
8
+ FACT_NAME = 'memory.swap.used'
9
+
10
+ def call_the_resolver
11
+ fact_value = Facter::Resolvers::Freebsd::SwapMemory.resolve(:used_bytes)
12
+ fact_value = Facter::FactsUtils::UnitConverter.bytes_to_human_readable(fact_value)
13
+
14
+ Facter::ResolvedFact.new(FACT_NAME, fact_value)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Freebsd
5
+ module Memory
6
+ module Swap
7
+ class UsedBytes
8
+ FACT_NAME = 'memory.swap.used_bytes'
9
+
10
+ def call_the_resolver
11
+ fact_value = Facter::Resolvers::Freebsd::SwapMemory.resolve(:used_bytes)
12
+ Facter::ResolvedFact.new(FACT_NAME, fact_value)
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Freebsd
5
+ module Memory
6
+ module System
7
+ class Available
8
+ FACT_NAME = 'memory.system.available'
9
+ ALIASES = 'memoryfree'
10
+
11
+ def call_the_resolver
12
+ fact_value = Facter::Resolvers::Freebsd::SystemMemory.resolve(:available_bytes)
13
+ fact_value = Facter::FactsUtils::UnitConverter.bytes_to_human_readable(fact_value)
14
+
15
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Freebsd
5
+ module Memory
6
+ module System
7
+ class AvailableBytes
8
+ FACT_NAME = 'memory.system.available_bytes'
9
+ ALIASES = 'memoryfree_mb'
10
+
11
+ def call_the_resolver
12
+ fact_value = Facter::Resolvers::Freebsd::SystemMemory.resolve(:available_bytes)
13
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value),
14
+ Facter::ResolvedFact.new(ALIASES, Facter::FactsUtils::UnitConverter.bytes_to_mb(fact_value), :legacy)]
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Freebsd
5
+ module Memory
6
+ module System
7
+ class Capacity
8
+ FACT_NAME = 'memory.system.capacity'
9
+
10
+ def call_the_resolver
11
+ fact_value = Facter::Resolvers::Freebsd::SystemMemory.resolve(:capacity)
12
+ Facter::ResolvedFact.new(FACT_NAME, fact_value)
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Freebsd
5
+ module Memory
6
+ module System
7
+ class Total
8
+ FACT_NAME = 'memory.system.total'
9
+ ALIASES = 'memorysize'
10
+
11
+ def call_the_resolver
12
+ fact_value = Facter::Resolvers::Freebsd::SystemMemory.resolve(:total_bytes)
13
+ fact_value = Facter::FactsUtils::UnitConverter.bytes_to_human_readable(fact_value)
14
+
15
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Freebsd
5
+ module Memory
6
+ module System
7
+ class TotalBytes
8
+ FACT_NAME = 'memory.system.total_bytes'
9
+ ALIASES = 'memorysize_mb'
10
+
11
+ def call_the_resolver
12
+ fact_value = Facter::Resolvers::Freebsd::SystemMemory.resolve(:total_bytes)
13
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value),
14
+ Facter::ResolvedFact.new(ALIASES, Facter::FactsUtils::UnitConverter.bytes_to_mb(fact_value), :legacy)]
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Freebsd
5
+ module Memory
6
+ module System
7
+ class Used
8
+ FACT_NAME = 'memory.system.used'
9
+
10
+ def call_the_resolver
11
+ fact_value = Facter::Resolvers::Freebsd::SystemMemory.resolve(:used_bytes)
12
+ fact_value = Facter::FactsUtils::UnitConverter.bytes_to_human_readable(fact_value)
13
+
14
+ Facter::ResolvedFact.new(FACT_NAME, fact_value)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Freebsd
5
+ module Memory
6
+ module System
7
+ class UsedBytes
8
+ FACT_NAME = 'memory.system.used_bytes'
9
+
10
+ def call_the_resolver
11
+ fact_value = Facter::Resolvers::Freebsd::SystemMemory.resolve(:used_bytes)
12
+ Facter::ResolvedFact.new(FACT_NAME, fact_value)
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Solaris
5
+ class LoadAverages
6
+ FACT_NAME = 'load_averages'
7
+
8
+ def call_the_resolver
9
+ fact_value = Facter::Resolvers::LoadAverages.resolve(:load_averages)
10
+ Facter::ResolvedFact.new(FACT_NAME, fact_value)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -44,7 +44,11 @@ class OsDetector
44
44
  hierarchy = @os_hierarchy.construct_hierarchy(identifier)
45
45
  if hierarchy.empty?
46
46
  @log.debug("Could not detect hierarchy using os identifier: #{identifier} , trying with family")
47
- hierarchy = @os_hierarchy.construct_hierarchy(detect_family)
47
+
48
+ detect_family.to_s.split.each do |family|
49
+ hierarchy = @os_hierarchy.construct_hierarchy(family)
50
+ return hierarchy unless hierarchy.empty?
51
+ end
48
52
  end
49
53
 
50
54
  if hierarchy.empty?
@@ -12,7 +12,9 @@
12
12
  "Rhel": [
13
13
  "Fedora",
14
14
  "Amzn",
15
- "Centos"
15
+ "Centos",
16
+ "Ol",
17
+ "Scientific"
16
18
  ]
17
19
  },
18
20
  {
@@ -9,19 +9,9 @@ module Facter
9
9
  extend FFI::Library
10
10
 
11
11
  ffi_lib 'c'
12
- attach_function :getloadavg, %i[pointer int], :int
13
12
  attach_function :sysctl, %i[pointer uint pointer pointer pointer size_t], :int
14
13
  end
15
14
 
16
- def self.read_load_averages
17
- raw_loadavg = FFI::MemoryPointer.new(:double, 3)
18
-
19
- res = Libc.getloadavg(raw_loadavg, 3)
20
- return unless res == 3
21
-
22
- raw_loadavg.read_array_of_double(res)
23
- end
24
-
25
15
  def self.sysctl(type, oids)
26
16
  name = FFI::MemoryPointer.new(:uint, oids.size)
27
17
  name.write_array_of_uint(oids)
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facter
4
+ module Resolvers
5
+ module Freebsd
6
+ class DmiBios < BaseResolver
7
+ @semaphore = Mutex.new
8
+ @fact_list ||= {}
9
+
10
+ class << self
11
+ #:model
12
+
13
+ private
14
+
15
+ def post_resolve(fact_name)
16
+ @fact_list.fetch(fact_name) { read_facts(fact_name) }
17
+ end
18
+
19
+ def read_facts(fact_name)
20
+ require_relative 'ffi/ffi_helper'
21
+
22
+ @fact_list[:bios_date] = Facter::Freebsd::FfiHelper.kenv(:get, 'smbios.bios.reldate')
23
+ @fact_list[:bios_vendor] = Facter::Freebsd::FfiHelper.kenv(:get, 'smbios.bios.vendor')
24
+ @fact_list[:bios_version] = Facter::Freebsd::FfiHelper.kenv(:get, 'smbios.bios.version')
25
+
26
+ @fact_list[:product_name] = Facter::Freebsd::FfiHelper.kenv(:get, 'smbios.system.product')
27
+ @fact_list[:product_serial] = Facter::Freebsd::FfiHelper.kenv(:get, 'smbios.system.serial')
28
+ @fact_list[:product_uuid] = Facter::Freebsd::FfiHelper.kenv(:get, 'smbios.system.uuid')
29
+
30
+ @fact_list[:sys_vendor] = Facter::Freebsd::FfiHelper.kenv(:get, 'smbios.system.maker')
31
+
32
+ @fact_list[fact_name]
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -8,10 +8,29 @@ module Facter
8
8
  module Libc
9
9
  extend FFI::Library
10
10
 
11
+ KENV_GET = 0
12
+
13
+ KENV_MVALLEN = 128
14
+
11
15
  ffi_lib 'c'
16
+ attach_function :kenv, %i[int string pointer int], :int
12
17
  attach_function :sysctlbyname, %i[string pointer pointer pointer size_t], :int
13
18
  end
14
19
 
20
+ def self.kenv(action, name, value = nil)
21
+ case action
22
+ when :get
23
+ len = Libc::KENV_MVALLEN + 1
24
+ value = FFI::MemoryPointer.new(:char, len)
25
+ res = Libc.kenv(Libc::KENV_GET, name, value, len)
26
+ return nil if res.negative?
27
+
28
+ value.read_string(res).chomp("\0")
29
+ else
30
+ raise "Action #{action} not supported"
31
+ end
32
+ end
33
+
15
34
  def self.sysctl_by_name(type, name)
16
35
  oldp = FFI::Pointer::NULL
17
36
  oldlenp = FFI::MemoryPointer.new(:size_t)
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facter
4
+ module Resolvers
5
+ module Freebsd
6
+ class SwapMemory < BaseResolver
7
+ @semaphore = Mutex.new
8
+ @fact_list ||= {}
9
+ class << self
10
+ private
11
+
12
+ def post_resolve(fact_name)
13
+ @fact_list.fetch(fact_name) { read_swap_memory(fact_name) }
14
+ end
15
+
16
+ def read_swap_memory(fact_name) # rubocop:disable Metrics/AbcSize
17
+ output = Facter::Core::Execution.execute('swapinfo -k', logger: log)
18
+ data = output.split("\n")[1..-1].map { |line| line.split(/\s+/) }
19
+
20
+ unless data.empty?
21
+ @fact_list[:total_bytes] = kilobytes_to_bytes(data.map { |line| line[1].to_i }.inject(:+))
22
+ @fact_list[:used_bytes] = kilobytes_to_bytes(data.map { |line| line[2].to_i }.inject(:+))
23
+ @fact_list[:available_bytes] = kilobytes_to_bytes(data.map { |line| line[3].to_i }.inject(:+))
24
+ @fact_list[:capacity] = FilesystemHelper.compute_capacity(@fact_list[:used_bytes],
25
+ @fact_list[:total_bytes])
26
+ @fact_list[:encrypted] = data.map { |line| line[0].end_with?('.eli') }.all?
27
+ end
28
+
29
+ @fact_list[fact_name]
30
+ end
31
+
32
+ def kilobytes_to_bytes(quantity)
33
+ (quantity.to_f * 1024).to_i
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facter
4
+ module Resolvers
5
+ module Freebsd
6
+ class SystemMemory < BaseResolver
7
+ @semaphore = Mutex.new
8
+ @fact_list ||= {}
9
+ class << self
10
+ private
11
+
12
+ def post_resolve(fact_name)
13
+ @fact_list.fetch(fact_name) { calculate_system_memory(fact_name) }
14
+ end
15
+
16
+ def calculate_system_memory(fact_name)
17
+ read_total_memory_in_bytes
18
+ read_available_memory_in_bytes
19
+
20
+ @fact_list[:used_bytes] = @fact_list[:total_bytes] - @fact_list[:available_bytes]
21
+ @fact_list[:capacity] = FilesystemHelper.compute_capacity(@fact_list[:used_bytes], @fact_list[:total_bytes])
22
+
23
+ @fact_list[fact_name]
24
+ end
25
+
26
+ def read_available_memory_in_bytes
27
+ output = Facter::Core::Execution.execute('vmstat -H --libxo json', logger: log)
28
+ data = JSON.parse(output)
29
+ @fact_list[:available_bytes] = data['memory']['free-memory'] * 1024
30
+ end
31
+
32
+ def read_total_memory_in_bytes
33
+ require_relative 'ffi/ffi_helper'
34
+
35
+ @fact_list[:total_bytes] = Facter::Freebsd::FfiHelper.sysctl_by_name(:long, 'hw.physmem')
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facter
4
+ module Resolvers
5
+ class LoadAverages < BaseResolver
6
+ @semaphore = Mutex.new
7
+ @fact_list ||= {}
8
+ class << self
9
+ private
10
+
11
+ def post_resolve(fact_name)
12
+ @fact_list.fetch(fact_name) { read_load_averages(fact_name) }
13
+ end
14
+
15
+ def read_load_averages(fact_name)
16
+ require_relative 'utils/ffi/load_averages'
17
+ @fact_list[:load_averages] = %w[1m 5m 15m].zip(Utils::Ffi::LoadAverages.read_load_averages).to_h
18
+
19
+ @fact_list[fact_name]
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -56,7 +56,7 @@ module Facter
56
56
  def process_name
57
57
  return unless @fact_list[:name]
58
58
 
59
- @fact_list[:name] = if @fact_list[:name].downcase.start_with?('red')
59
+ @fact_list[:name] = if @fact_list[:name].downcase.start_with?('red', 'oracle')
60
60
  @fact_list[:name].split(' ')[0..1].join
61
61
  else
62
62
  @fact_list[:name].split(' ')[0].strip
@@ -20,6 +20,11 @@ module Facter
20
20
  INET_ADDRSTRLEN = 16
21
21
  INET6_ADDRSTRLEN = 46
22
22
  end
23
+
24
+ BINDINGS_KEY = {
25
+ FFI::AF_INET => :bindings,
26
+ FFI::AF_INET6 => :bindings6
27
+ }.freeze
23
28
  end
24
29
  end
25
30
  end
@@ -12,11 +12,6 @@ module Facter
12
12
  @fact_list ||= {}
13
13
  @interfaces = {}
14
14
 
15
- BINDINGS_KEY = {
16
- FFI::AF_INET => :bindings,
17
- FFI::AF_INET6 => :bindings6
18
- }.freeze
19
-
20
15
  class << self
21
16
  private
22
17
 
@@ -141,7 +136,8 @@ module Facter
141
136
  end
142
137
 
143
138
  def add_dhcp(interface_name)
144
- result = Facter::Core::Execution.execute("dhcpinfo -i #{interface_name} ServerID", logger: log)
139
+ dhcpinfo_command = Facter::Core::Execution.which('dhcpinfo') || '/sbin/dhcpinfo'
140
+ result = Facter::Core::Execution.execute("#{dhcpinfo_command} -i #{interface_name} ServerID", logger: log)
145
141
 
146
142
  @interfaces[interface_name][:dhcp] = result.chomp
147
143
  end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ffi'
4
+
5
+ module Facter
6
+ module Resolvers
7
+ module Utils
8
+ module Ffi
9
+ module LoadAverages
10
+ extend ::FFI::Library
11
+ ffi_lib ::FFI::Library::LIBC
12
+
13
+ attach_function :getloadavg, %i[pointer int], :int
14
+
15
+ def self.read_load_averages
16
+ raw_loadavg = ::FFI::MemoryPointer.new(:double, 3)
17
+
18
+ res = LoadAverages.getloadavg(raw_loadavg, 3)
19
+ return unless res == 3
20
+
21
+ raw_loadavg.read_array_of_double(res)
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -30,7 +30,7 @@ module FFI
30
30
  def read_wide_string_with_length(char_length)
31
31
  # char_length is number of wide chars (typically excluding NULLs), *not* bytes
32
32
  str = get_bytes(0, char_length * 2).force_encoding('UTF-16LE')
33
- str.encode('UTF-8', str.encoding, {})
33
+ str.encode('UTF-8', str.encoding)
34
34
  end
35
35
 
36
36
  def read_wide_string_without_length
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Facter
4
- VERSION = '4.0.33' unless defined?(VERSION)
4
+ VERSION = '4.0.34' unless defined?(VERSION)
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: facter
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.33
4
+ version: 4.0.34
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-05 00:00:00.000000000 Z
11
+ date: 2020-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -303,6 +303,28 @@ files:
303
303
  - lib/facter/facts/debian/os/distro/release.rb
304
304
  - lib/facter/facts/debian/os/release.rb
305
305
  - lib/facter/facts/freebsd/disks.rb
306
+ - lib/facter/facts/freebsd/dmi/bios/release_date.rb
307
+ - lib/facter/facts/freebsd/dmi/bios/vendor.rb
308
+ - lib/facter/facts/freebsd/dmi/bios/version.rb
309
+ - lib/facter/facts/freebsd/dmi/manufacturer.rb
310
+ - lib/facter/facts/freebsd/dmi/product/name.rb
311
+ - lib/facter/facts/freebsd/dmi/product/serial_number.rb
312
+ - lib/facter/facts/freebsd/dmi/product/uuid.rb
313
+ - lib/facter/facts/freebsd/memory/swap/available.rb
314
+ - lib/facter/facts/freebsd/memory/swap/available_bytes.rb
315
+ - lib/facter/facts/freebsd/memory/swap/capacity.rb
316
+ - lib/facter/facts/freebsd/memory/swap/encrypted.rb
317
+ - lib/facter/facts/freebsd/memory/swap/total.rb
318
+ - lib/facter/facts/freebsd/memory/swap/total_bytes.rb
319
+ - lib/facter/facts/freebsd/memory/swap/used.rb
320
+ - lib/facter/facts/freebsd/memory/swap/used_bytes.rb
321
+ - lib/facter/facts/freebsd/memory/system/available.rb
322
+ - lib/facter/facts/freebsd/memory/system/available_bytes.rb
323
+ - lib/facter/facts/freebsd/memory/system/capacity.rb
324
+ - lib/facter/facts/freebsd/memory/system/total.rb
325
+ - lib/facter/facts/freebsd/memory/system/total_bytes.rb
326
+ - lib/facter/facts/freebsd/memory/system/used.rb
327
+ - lib/facter/facts/freebsd/memory/system/used_bytes.rb
306
328
  - lib/facter/facts/freebsd/os/release.rb
307
329
  - lib/facter/facts/freebsd/partitions.rb
308
330
  - lib/facter/facts/freebsd/processors/count.rb
@@ -564,6 +586,7 @@ files:
564
586
  - lib/facter/facts/solaris/kernelmajversion.rb
565
587
  - lib/facter/facts/solaris/kernelrelease.rb
566
588
  - lib/facter/facts/solaris/kernelversion.rb
589
+ - lib/facter/facts/solaris/load_averages.rb
567
590
  - lib/facter/facts/solaris/macaddress_interfaces.rb
568
591
  - lib/facter/facts/solaris/memory/swap/available.rb
569
592
  - lib/facter/facts/solaris/memory/swap/available_bytes.rb
@@ -772,7 +795,6 @@ files:
772
795
  - lib/facter/resolvers/augeas_resolver.rb
773
796
  - lib/facter/resolvers/base_resolver.rb
774
797
  - lib/facter/resolvers/bsd/ffi/ffi_helper.rb
775
- - lib/facter/resolvers/bsd/load_averages_resolver.rb
776
798
  - lib/facter/resolvers/bsd/processors.rb
777
799
  - lib/facter/resolvers/containers.rb
778
800
  - lib/facter/resolvers/debian_version.rb
@@ -784,13 +806,17 @@ files:
784
806
  - lib/facter/resolvers/facterversion_resolver.rb
785
807
  - lib/facter/resolvers/filesystems_resolver.rb
786
808
  - lib/facter/resolvers/fips_enabled_resolver.rb
809
+ - lib/facter/resolvers/freebsd/dmi_resolver.rb
787
810
  - lib/facter/resolvers/freebsd/ffi/ffi_helper.rb
788
811
  - lib/facter/resolvers/freebsd/freebsd_version_resolver.rb
789
812
  - lib/facter/resolvers/freebsd/geom_resolver.rb
790
813
  - lib/facter/resolvers/freebsd/processors.rb
814
+ - lib/facter/resolvers/freebsd/swap_memory_resolver.rb
815
+ - lib/facter/resolvers/freebsd/system_memory_resolver.rb
791
816
  - lib/facter/resolvers/hostname_resolver.rb
792
817
  - lib/facter/resolvers/identity_resolver.rb
793
- - lib/facter/resolvers/load_averages_resolver.rb
818
+ - lib/facter/resolvers/linux/load_averages.rb
819
+ - lib/facter/resolvers/load_averages.rb
794
820
  - lib/facter/resolvers/lpar_resolver.rb
795
821
  - lib/facter/resolvers/lsb_release_resolver.rb
796
822
  - lib/facter/resolvers/lspci.rb
@@ -836,6 +862,7 @@ files:
836
862
  - lib/facter/resolvers/timezone_resolver.rb
837
863
  - lib/facter/resolvers/uname_resolver.rb
838
864
  - lib/facter/resolvers/uptime_resolver.rb
865
+ - lib/facter/resolvers/utils/ffi/load_averages.rb
839
866
  - lib/facter/resolvers/utils/filesystem_helper.rb
840
867
  - lib/facter/resolvers/utils/fingerprint.rb
841
868
  - lib/facter/resolvers/utils/networking.rb
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Facter
4
- module Resolvers
5
- module Bsd
6
- class LoadAverages < BaseResolver
7
- @semaphore = Mutex.new
8
- @fact_list ||= {}
9
- class << self
10
- private
11
-
12
- def post_resolve(fact_name)
13
- @fact_list.fetch(fact_name) { read_load_averages(fact_name) }
14
- end
15
-
16
- def read_load_averages(fact_name)
17
- require_relative 'ffi/ffi_helper'
18
- @fact_list[:load_averages] = %w[1m 5m 15m].zip(Facter::Bsd::FfiHelper.read_load_averages).to_h
19
-
20
- @fact_list[fact_name]
21
- end
22
- end
23
- end
24
- end
25
- end
26
- end