facter 4.0.32 → 4.0.33

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