facter 4.0.32 → 4.0.33

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 72f2204546c27a939b067c08cc85aaf8f38673a37db898cd9dda273e8047704c
4
- data.tar.gz: 1815adc1638070582de416e8f7976a6ace992bd6e133077ab387e792b3f26415
3
+ metadata.gz: 32bb403fb4187d3a595b0b8aa4ed12ba472b1efc6d785cf2d371fc1488afd2d7
4
+ data.tar.gz: b8b159eedc00a4c17e2121e73f38bb76d383b298746731104511a36955ba382d
5
5
  SHA512:
6
- metadata.gz: 6a7c95ea0a07b60e11aa33d1edf792c875139fa683ca2b30db252cad0b81e77a0ee2135f2237f0bb04e17b2df7f30705ace0c28a0e9f236459c717e6aa7f4010
7
- data.tar.gz: fb8f00bc8f4a117d7d904125f6864296389257d2be4935d6492030570cd4100a333b190394a782f52ff0156fb9441b0a3228fda201048ede7c6e4f13ad28dd14
6
+ metadata.gz: 3a0f55015be59493c79b53f054e609a336d6e64385547534ffe62084b060d1b70da511f0a4d74179717bf8fe11287ed972586fb159c20a33d4832ba01f287ffc
7
+ data.tar.gz: 1814bfa9210ec33c2ddeafad6d123a4f2c7377c792cd4a494de5d467f606b46943f2a294c6abc4f1e1700a87edaeeffe3e1de0712782a46ada76ae289367e17f
@@ -5,43 +5,59 @@ module Facts
5
5
  class Virtual
6
6
  FACT_NAME = 'virtual'
7
7
 
8
+ def initialize
9
+ @log = Facter::Log.new(self)
10
+ end
11
+
8
12
  def call_the_resolver # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
13
+ @log.debug('Linux Virtual Resolver')
14
+
9
15
  fact_value = check_docker_lxc || check_gce || retrieve_from_virt_what || check_vmware
10
16
  fact_value ||= check_open_vz || check_vserver || check_xen || check_other_facts || check_lspci || 'physical'
11
17
 
18
+ @log.debug("Fact value is: #{fact_value}")
19
+
12
20
  Facter::ResolvedFact.new(FACT_NAME, fact_value)
13
21
  end
14
22
 
15
23
  def check_gce
24
+ @log.debug('Checking GCE')
16
25
  bios_vendor = Facter::Resolvers::Linux::DmiBios.resolve(:bios_vendor)
17
26
  'gce' if bios_vendor&.include?('Google')
18
27
  end
19
28
 
20
29
  def check_docker_lxc
30
+ @log.debug('Checking Docker and LXC')
21
31
  Facter::Resolvers::Containers.resolve(:vm)
22
32
  end
23
33
 
24
34
  def check_vmware
35
+ @log.debug('Checking VMware')
25
36
  Facter::Resolvers::Vmware.resolve(:vm)
26
37
  end
27
38
 
28
39
  def retrieve_from_virt_what
40
+ @log.debug('Checking virtual_what')
29
41
  Facter::Resolvers::VirtWhat.resolve(:vm)
30
42
  end
31
43
 
32
44
  def check_open_vz
45
+ @log.debug('Checking OpenVZ')
33
46
  Facter::Resolvers::OpenVz.resolve(:vm)
34
47
  end
35
48
 
36
49
  def check_vserver
50
+ @log.debug('Checking VServer')
37
51
  Facter::Resolvers::VirtWhat.resolve(:vserver)
38
52
  end
39
53
 
40
54
  def check_xen
55
+ @log.debug('Checking XEN')
41
56
  Facter::Resolvers::Xen.resolve(:vm)
42
57
  end
43
58
 
44
59
  def check_other_facts
60
+ @log.debug('Checking others')
45
61
  product_name = Facter::Resolvers::Linux::DmiBios.resolve(:product_name)
46
62
  bios_vendor = Facter::Resolvers::Linux::DmiBios.resolve(:bios_vendor)
47
63
  return 'kvm' if bios_vendor&.include?('Amazon EC2')
@@ -53,6 +69,7 @@ module Facts
53
69
  end
54
70
 
55
71
  def check_lspci
72
+ @log.debug('Checking lspci')
56
73
  Facter::Resolvers::Lspci.resolve(:vm)
57
74
  end
58
75
  end
@@ -6,7 +6,7 @@ module Facts
6
6
  FACT_NAME = 'virtual'
7
7
 
8
8
  def call_the_resolver
9
- fact_value = check_vmware || check_virtualbox || check_parallels
9
+ fact_value = check_vmware || check_virtualbox || check_parallels || 'physical'
10
10
 
11
11
  Facter::ResolvedFact.new(FACT_NAME, fact_value)
12
12
  end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Solaris
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::Solaris::Memory.resolve(:swap)
13
+ if fact_value
14
+ fact_value = Facter::FactsUtils::UnitConverter.bytes_to_human_readable(fact_value[:available_bytes])
15
+ end
16
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Solaris
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::Solaris::Memory.resolve(:swap)
13
+ fact_value = fact_value[:available_bytes] if fact_value
14
+
15
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value),
16
+ Facter::ResolvedFact.new(ALIASES, Facter::FactsUtils::UnitConverter.bytes_to_mb(fact_value), :legacy)]
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Solaris
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::Solaris::Memory.resolve(:swap)
12
+ fact_value = fact_value[:capacity] if 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,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Solaris
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::Solaris::Memory.resolve(:swap)
13
+ if fact_value
14
+ fact_value = Facter::FactsUtils::UnitConverter.bytes_to_human_readable(fact_value[:total_bytes])
15
+ end
16
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Solaris
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::Solaris::Memory.resolve(:swap)
13
+ fact_value = fact_value[:total_bytes] if fact_value
14
+
15
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value),
16
+ Facter::ResolvedFact.new(ALIASES, Facter::FactsUtils::UnitConverter.bytes_to_mb(fact_value), :legacy)]
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Solaris
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::Solaris::Memory.resolve(:swap)
12
+ if fact_value
13
+ fact_value = Facter::FactsUtils::UnitConverter.bytes_to_human_readable(fact_value[:used_bytes])
14
+ end
15
+ Facter::ResolvedFact.new(FACT_NAME, fact_value)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Solaris
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::Solaris::Memory.resolve(:swap)
12
+ fact_value = fact_value[:used_bytes] if fact_value
13
+ Facter::ResolvedFact.new(FACT_NAME, fact_value)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Solaris
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::Solaris::Memory.resolve(:system)
13
+ if fact_value
14
+ fact_value = Facter::FactsUtils::UnitConverter.bytes_to_human_readable(fact_value[:available_bytes])
15
+ end
16
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Solaris
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::Solaris::Memory.resolve(:system)
13
+ fact_value = fact_value[:available_bytes] if fact_value
14
+
15
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value),
16
+ Facter::ResolvedFact.new(ALIASES, Facter::FactsUtils::UnitConverter.bytes_to_mb(fact_value), :legacy)]
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Solaris
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::Solaris::Memory.resolve(:system)
12
+ fact_value = fact_value[:capacity] if 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,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Solaris
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::Solaris::Memory.resolve(:system)
13
+ if fact_value
14
+ fact_value = Facter::FactsUtils::UnitConverter.bytes_to_human_readable(fact_value[:total_bytes])
15
+ end
16
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value), Facter::ResolvedFact.new(ALIASES, fact_value, :legacy)]
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Solaris
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::Solaris::Memory.resolve(:system)
13
+ fact_value = fact_value[:total_bytes] if fact_value
14
+
15
+ [Facter::ResolvedFact.new(FACT_NAME, fact_value),
16
+ Facter::ResolvedFact.new(ALIASES, Facter::FactsUtils::UnitConverter.bytes_to_mb(fact_value), :legacy)]
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Solaris
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::Solaris::Memory.resolve(:system)
12
+ if fact_value
13
+ fact_value = Facter::FactsUtils::UnitConverter.bytes_to_human_readable(fact_value[:used_bytes])
14
+ end
15
+ Facter::ResolvedFact.new(FACT_NAME, fact_value)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facts
4
+ module Solaris
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::Solaris::Memory.resolve(:system)
12
+ fact_value = fact_value[:used_bytes] if fact_value
13
+ Facter::ResolvedFact.new(FACT_NAME, fact_value)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -28,6 +28,8 @@ module Facter
28
28
 
29
29
  def retrieve_vm(output)
30
30
  output.each_line { |line| REGEX_VALUES.each { |key, value| return value if line =~ /#{key}/ } }
31
+
32
+ nil
31
33
  end
32
34
  end
33
35
  end
@@ -11,6 +11,7 @@ module Facter
11
11
  private
12
12
 
13
13
  def post_resolve(fact_name)
14
+ log.debug('in networking_linux_resolver')
14
15
  @fact_list.fetch(fact_name) { retrieve_network_info(fact_name) }
15
16
 
16
17
  @fact_list[fact_name]
@@ -36,12 +37,17 @@ module Facter
36
37
  end
37
38
 
38
39
  def retrieve_interface_info
40
+ log.debug('retrieve_interface_info')
39
41
  output = Facter::Core::Execution.execute('ip -o address', logger: log)
42
+ log.debug("ip -o address result is:\n#{output}")
43
+
40
44
  interfaces = {}
41
45
 
42
46
  output.each_line do |ip_line|
43
47
  ip_tokens = ip_line.split(' ')
44
48
 
49
+ log.debug("ip_tokens = #{ip_tokens}")
50
+ log.debug("interfaces = #{interfaces}")
45
51
  fill_ip_v4_info!(ip_tokens, interfaces)
46
52
  fill_io_v6_info!(ip_tokens, interfaces)
47
53
  find_dhcp!(ip_tokens, interfaces)
@@ -93,10 +99,15 @@ module Facter
93
99
  end
94
100
 
95
101
  def fill_ip_v4_info!(ip_tokens, network_info)
102
+ log.debug('fill_ip_v4_info!')
96
103
  return unless ip_tokens[2].casecmp('inet').zero?
97
104
 
98
105
  interface_name, ip4_address, ip4_mask_length = retrieve_name_and_ip_info(ip_tokens)
99
106
 
107
+ log.debug("interface_name = #{interface_name}\n" \
108
+ "ip4_address = #{ip4_address}\n" \
109
+ "ip4_mask_length = #{ip4_mask_length}")
110
+
100
111
  binding = ::Resolvers::Utils::Networking.build_binding(ip4_address, ip4_mask_length)
101
112
  build_network_info_structure!(network_info, interface_name, :bindings)
102
113
 
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facter
4
+ module Resolvers
5
+ module Solaris
6
+ class Memory < BaseResolver
7
+ BLOCKSIZE = 512
8
+ # :system
9
+ # :swap
10
+ @semaphore = Mutex.new
11
+ @fact_list ||= {}
12
+ class << self
13
+ private
14
+
15
+ def post_resolve(fact_name)
16
+ @fact_list.fetch(fact_name) { calculate_memory(fact_name) }
17
+ end
18
+
19
+ def calculate_memory(fact_name)
20
+ @fact_list = { system: sys, swap: swap }
21
+
22
+ @fact_list[fact_name]
23
+ end
24
+
25
+ def sys
26
+ sys = {}
27
+ output = Facter::Core::Execution.execute('/usr/bin/kstat -m unix -n system_pages', logger: log).strip
28
+ total, free = parse_sys_output(output)
29
+
30
+ return unless total || free
31
+
32
+ sys[:total_bytes] = total
33
+ sys[:available_bytes] = free
34
+ sys[:used_bytes] = total - free
35
+ sys[:capacity] = FilesystemHelper.compute_capacity(total - free, total)
36
+
37
+ sys
38
+ end
39
+
40
+ def swap
41
+ swap_hash = {}
42
+ output = Facter::Core::Execution.execute('/usr/sbin/swap -l', logger: log).strip
43
+ total, free = parse_swap_output(output)
44
+
45
+ swap_hash[:total_bytes] = total
46
+ swap_hash[:available_bytes] = free
47
+ swap_hash[:used_bytes] = total - free
48
+ swap_hash[:capacity] = FilesystemHelper.compute_capacity(total - free, total)
49
+
50
+ swap_hash if total != 0
51
+ end
52
+
53
+ def parse_sys_output(output)
54
+ kstats = output.scan(/(physmem|pagesfree)\s+(\d+)/)
55
+ kstats = kstats.to_h
56
+ return unless kstats['physmem'] || kstats['pagesfree']
57
+ return unless pagesize != 0
58
+
59
+ total = kstats['physmem'].to_i * pagesize
60
+ free = kstats['pagesfree'].to_i * pagesize
61
+
62
+ [total, free]
63
+ end
64
+
65
+ def parse_swap_output(output)
66
+ total = 0
67
+ free = 0
68
+
69
+ output.each_line do |line|
70
+ swap_sizes = line.match(/(\d+)\s+(\d+)$/)
71
+ next if swap_sizes.nil?
72
+
73
+ total += swap_sizes[1].to_i
74
+ free += swap_sizes[2].to_i
75
+ end
76
+ total *= BLOCKSIZE
77
+ free *= BLOCKSIZE
78
+
79
+ [total, free]
80
+ end
81
+
82
+ def pagesize
83
+ unless @fact_list[:pagesize]
84
+ @fact_list[:pagesize] = Facter::Core::Execution.execute('pagesize', logger: log).strip.to_i
85
+ log.debug("Pagesize: #{@fact_list[:pagesize]}")
86
+ end
87
+ @fact_list[:pagesize]
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'ipaddr'
4
+
3
5
  module Resolvers
4
6
  module Utils
5
7
  module Networking
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ipaddr'
4
-
5
3
  module Facter
6
4
  module Resolvers
7
5
  class Networking < BaseResolver
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Facter
4
- VERSION = '4.0.32' unless defined?(VERSION)
4
+ VERSION = '4.0.33' 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.32
4
+ version: 4.0.33
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-30 00:00:00.000000000 Z
11
+ date: 2020-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -565,6 +565,20 @@ files:
565
565
  - lib/facter/facts/solaris/kernelrelease.rb
566
566
  - lib/facter/facts/solaris/kernelversion.rb
567
567
  - lib/facter/facts/solaris/macaddress_interfaces.rb
568
+ - lib/facter/facts/solaris/memory/swap/available.rb
569
+ - lib/facter/facts/solaris/memory/swap/available_bytes.rb
570
+ - lib/facter/facts/solaris/memory/swap/capacity.rb
571
+ - lib/facter/facts/solaris/memory/swap/total.rb
572
+ - lib/facter/facts/solaris/memory/swap/total_bytes.rb
573
+ - lib/facter/facts/solaris/memory/swap/used.rb
574
+ - lib/facter/facts/solaris/memory/swap/used_bytes.rb
575
+ - lib/facter/facts/solaris/memory/system/available.rb
576
+ - lib/facter/facts/solaris/memory/system/available_bytes.rb
577
+ - lib/facter/facts/solaris/memory/system/capacity.rb
578
+ - lib/facter/facts/solaris/memory/system/total.rb
579
+ - lib/facter/facts/solaris/memory/system/total_bytes.rb
580
+ - lib/facter/facts/solaris/memory/system/used.rb
581
+ - lib/facter/facts/solaris/memory/system/used_bytes.rb
568
582
  - lib/facter/facts/solaris/mountpoints.rb
569
583
  - lib/facter/facts/solaris/mtu_interfaces.rb
570
584
  - lib/facter/facts/solaris/netmask6_interfaces.rb
@@ -808,6 +822,7 @@ files:
808
822
  - lib/facter/resolvers/solaris/ffi/structs.rb
809
823
  - lib/facter/resolvers/solaris/filesystems_resolver.rb
810
824
  - lib/facter/resolvers/solaris/ipaddress_resolver.rb
825
+ - lib/facter/resolvers/solaris/memory.rb
811
826
  - lib/facter/resolvers/solaris/networking_resolver.rb
812
827
  - lib/facter/resolvers/solaris/processors.rb
813
828
  - lib/facter/resolvers/solaris/solaris_os_release_resolver.rb