facter 4.0.33 → 4.0.34

Sign up to get free protection for your applications and to get access to all the features.
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