facter 4.0.39 → 4.0.44

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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/bin/facter +3 -4
  3. data/lib/facter.rb +107 -28
  4. data/lib/facter/config.rb +354 -0
  5. data/lib/facter/custom_facts/core/aggregate.rb +51 -17
  6. data/lib/facter/custom_facts/core/execution.rb +27 -35
  7. data/lib/facter/custom_facts/core/execution/base.rb +13 -7
  8. data/lib/facter/custom_facts/util/directory_loader.rb +1 -1
  9. data/lib/facter/custom_facts/util/fact.rb +1 -1
  10. data/lib/facter/custom_facts/util/resolution.rb +40 -11
  11. data/lib/facter/facts/aix/disks.rb +1 -1
  12. data/lib/facter/facts/linux/ec2_metadata.rb +5 -29
  13. data/lib/facter/facts/linux/ec2_userdata.rb +5 -27
  14. data/lib/facter/facts/linux/is_virtual.rb +7 -46
  15. data/lib/facter/facts/linux/virtual.rb +3 -58
  16. data/lib/facter/facts/rhel/os/release.rb +1 -1
  17. data/lib/facter/facts/solaris/disks.rb +1 -1
  18. data/lib/facter/facts/solaris/zones.rb +1 -1
  19. data/lib/facter/facts_utils/virtual_detector.rb +78 -0
  20. data/lib/facter/framework/benchmarking/timer.rb +4 -2
  21. data/lib/facter/framework/cli/cli.rb +83 -36
  22. data/lib/facter/framework/cli/cli_launcher.rb +34 -38
  23. data/lib/facter/framework/config/fact_groups.rb +41 -7
  24. data/lib/facter/framework/core/cache_manager.rb +43 -23
  25. data/lib/facter/framework/core/fact_loaders/fact_loader.rb +14 -11
  26. data/lib/facter/framework/core/options/config_file_options.rb +5 -3
  27. data/lib/facter/framework/core/options/option_store.rb +60 -27
  28. data/lib/facter/framework/detector/os_hierarchy.rb +5 -9
  29. data/lib/facter/framework/logging/logger.rb +1 -5
  30. data/lib/facter/resolvers/aix/architecture_resolver.rb +15 -1
  31. data/lib/facter/resolvers/aix/os_level.rb +1 -1
  32. data/lib/facter/resolvers/augeas_resolver.rb +7 -1
  33. data/lib/facter/resolvers/bsd/processors.rb +11 -7
  34. data/lib/facter/resolvers/disk_resolver.rb +11 -3
  35. data/lib/facter/resolvers/dmi_decode.rb +1 -0
  36. data/lib/facter/resolvers/dmi_resolver.rb +2 -2
  37. data/lib/facter/resolvers/freebsd/geom_resolver.rb +12 -20
  38. data/lib/facter/resolvers/freebsd/processors.rb +11 -7
  39. data/lib/facter/resolvers/memory_resolver.rb +12 -14
  40. data/lib/facter/resolvers/mountpoints_resolver.rb +50 -22
  41. data/lib/facter/resolvers/networking_linux_resolver.rb +10 -5
  42. data/lib/facter/resolvers/partitions.rb +60 -57
  43. data/lib/facter/resolvers/processors_resolver.rb +5 -1
  44. data/lib/facter/resolvers/solaris/dmi.rb +2 -0
  45. data/lib/facter/resolvers/solaris/mountpoints.rb +60 -0
  46. data/lib/facter/resolvers/solaris/networking.rb +1 -2
  47. data/lib/facter/resolvers/solaris/os_release.rb +4 -3
  48. data/lib/facter/resolvers/ssh_resolver.rb +4 -4
  49. data/lib/facter/version.rb +1 -1
  50. metadata +5 -4
  51. data/lib/facter/fact_groups.conf +0 -308
  52. data/lib/facter/os_hierarchy.json +0 -36
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e1cc7c2dc4026c1c24f4140c319b3ac68c5b77dd1b42e61c46f07facff044380
4
- data.tar.gz: 3565addd16973284508cfc3058aab779dcf3bb30d4c65257fc9831cee898a380
3
+ metadata.gz: 26e4084c96b8e155bea96be6eb69c241acf2974bf31d98ebc20a571f191e3083
4
+ data.tar.gz: 8cfb10254f2474b003c7d5f4739b455302546258b3dd0b65b1768df6e1a38b1e
5
5
  SHA512:
6
- metadata.gz: ca715b689b8b050d20021ed104770a75737fed542236826592068d01066adfc369b222dbf94f2d1eb867c5b3d2023689f8ebd458f690f3f969e98c1c39375ddb
7
- data.tar.gz: cf6be422f902d75dcbf6fb6d147c3c95f718ab2129a18756b0ffe0626f3cfb3fd4f652a8c9f3278801826a7e15e35e9574cf11e22780593f79db315c6aa3b87b
6
+ metadata.gz: 74e4755e3dedc6aedcba900d72577faa265f889b31b7ae60f6c85f0221f1e96f748c8b1342d9fc6ea7eafdf57dcacb675f3001465892b968f076c18432cfe9b7
7
+ data.tar.gz: cc030bcb93b65dddf47b5fdbbe39487a95f08794caf0f60985134c733f74a98ede9d0822c3647e9e0ab634eb9c336dd4a33a6f22d26ab8438f105787fbe74614
data/bin/facter CHANGED
@@ -4,8 +4,7 @@
4
4
  require 'pathname'
5
5
  require 'facter/framework/cli/cli_launcher.rb'
6
6
 
7
- cli_launcher = CliLauncher.new(ARGV)
7
+ Facter::OptionsValidator.validate(ARGV)
8
+ processed_arguments = CliLauncher.prepare_arguments(ARGV)
8
9
 
9
- cli_launcher.validate_options
10
- cli_launcher.prepare_arguments
11
- cli_launcher.start
10
+ CliLauncher.start(processed_arguments)
@@ -17,8 +17,31 @@ module Facter
17
17
  @warn_once = []
18
18
 
19
19
  class << self
20
- def clear_messages
21
- logger.debug('clear_messages is not implemented')
20
+ # Method used by puppet-agent to retrieve facts
21
+ # @param args_as_string [string] facter cli arguments
22
+ #
23
+ # @return query result
24
+ #
25
+ # @api private
26
+ def resolve(args_as_string)
27
+ require 'facter/framework/cli/cli_launcher'
28
+
29
+ args = args_as_string.split(' ')
30
+
31
+ Facter::OptionsValidator.validate(args)
32
+ processed_arguments = CliLauncher.prepare_arguments(args, nil)
33
+
34
+ cli = Facter::Cli.new([], processed_arguments)
35
+
36
+ if cli.args.include?(:version)
37
+ cli.invoke(:version, [])
38
+ elsif cli.args.include?('--list-cache-groups')
39
+ cli.invoke(:list_cache_groups, [])
40
+ elsif cli.args.include?('--list-block-groups')
41
+ cli.invoke(:list_block_groups, [])
42
+ else
43
+ cli.invoke(:arg_parser)
44
+ end
22
45
  end
23
46
 
24
47
  # Alias method for Facter.fact()
@@ -62,8 +85,16 @@ module Facter
62
85
  Options[:custom_dir] = []
63
86
  LegacyFacter.collection.invalidate_custom_facts
64
87
  LegacyFacter.collection.reload_custom_facts
88
+ SessionCache.invalidate_all_caches
89
+ nil
65
90
  end
66
91
 
92
+ # Gets the value for a core fact, external or custom facts are
93
+ # not returned with this call. Returns `nil` if no such fact exists.
94
+ #
95
+ # @return [FactCollection] hash with fact names and values
96
+ #
97
+ # @api private
67
98
  def core_value(user_query)
68
99
  user_query = user_query.to_s
69
100
  resolved_facts = Facter::FactManager.instance.resolve_core([user_query])
@@ -115,8 +146,16 @@ module Facter
115
146
  LegacyFacter.define_fact(name, options, &block)
116
147
  end
117
148
 
149
+ # Stores a proc that will be used to output custom messages.
150
+ # The proc must receive one parameter that will be the message to log.
151
+ # @param block [Proc] a block defining messages handler
152
+ #
153
+ # @return [nil]
154
+ #
155
+ # @api public
118
156
  def on_message(&block)
119
157
  Facter::Log.on_message(&block)
158
+ nil
120
159
  end
121
160
 
122
161
  # Check whether debugging is enabled
@@ -149,7 +188,6 @@ module Facter
149
188
  def each
150
189
  log_blocked_facts
151
190
  resolved_facts = Facter::FactManager.instance.resolve_facts
152
- SessionCache.invalidate_all_caches
153
191
 
154
192
  resolved_facts.each do |fact|
155
193
  yield(fact.name, fact.value)
@@ -185,6 +223,19 @@ module Facter
185
223
  LegacyFacter.reset
186
224
  Options[:custom_dir] = []
187
225
  Options[:external_dir] = []
226
+ SessionCache.invalidate_all_caches
227
+ nil
228
+ end
229
+
230
+ # Flushes cached values for all facts. This does not cause code to be
231
+ # reloaded; it only clears the cached results.
232
+ #
233
+ # @return [void]
234
+ #
235
+ # @api public
236
+ def flush
237
+ LegacyFacter.flush
238
+ SessionCache.invalidate_all_caches
188
239
  nil
189
240
  end
190
241
 
@@ -199,26 +250,26 @@ module Facter
199
250
  end
200
251
 
201
252
  # Register directories to be searched for custom facts. The registered directories
202
- # must be absolute paths or they will be ignored.
203
- #
253
+ # must be absolute paths or they will be ignored.
204
254
  # @param dirs [Array<String>] An array of searched directories
205
255
  #
206
- # @return [void]
256
+ # @return [nil]
207
257
  #
208
258
  # @api public
209
259
  def search(*dirs)
210
260
  Options[:custom_dir] += dirs
261
+ nil
211
262
  end
212
263
 
213
264
  # Registers directories to be searched for external facts.
214
- #
215
265
  # @param dirs [Array<String>] An array of searched directories
216
266
  #
217
- # @return [void]
267
+ # @return [nil]
218
268
  #
219
269
  # @api public
220
270
  def search_external(dirs)
221
271
  Options[:external_dir] += dirs
272
+ nil
222
273
  end
223
274
 
224
275
  # Returns the registered search directories.for external facts.
@@ -242,14 +293,13 @@ module Facter
242
293
  # Gets a hash mapping fact names to their values
243
294
  # The hash contains core facts, legacy facts, custom facts and external facts (all facts that can be resolved).
244
295
  #
245
- # @return [FactCollection] the hash of fact names and values
296
+ # @return [FactCollection] hash with fact names and values
246
297
  #
247
298
  # @api public
248
299
  def to_hash
249
300
  log_blocked_facts
250
301
 
251
302
  resolved_facts = Facter::FactManager.instance.resolve_facts
252
- Facter::SessionCache.invalidate_all_caches
253
303
  Facter::FactCollection.new.build_fact_collection!(resolved_facts)
254
304
  end
255
305
 
@@ -265,7 +315,7 @@ module Facter
265
315
  # Enable or disable trace
266
316
  # @param bool [bool] Set trace on debug state
267
317
  #
268
- # @return [type] [description]
318
+ # @return [bool] Value of trace debug state
269
319
  #
270
320
  # @api public
271
321
  def trace(bool)
@@ -284,6 +334,27 @@ module Facter
284
334
  @already_searched[user_query]&.value
285
335
  end
286
336
 
337
+ # Gets the values for multiple facts.
338
+ #
339
+ # @param options [Hash] parameters for the fact - attributes
340
+ # of {Facter::Util::Fact} and {Facter::Util::Resolution} can be
341
+ # supplied here
342
+ # @param user_queries [String] the fact names
343
+ #
344
+ # @return [FactCollection] hash with fact names and values
345
+ #
346
+ # @api public
347
+ def values(options, user_queries)
348
+ init_cli_options(options, user_queries)
349
+ resolved_facts = Facter::FactManager.instance.resolve_facts(user_queries)
350
+
351
+ if user_queries.count.zero?
352
+ Facter::FactCollection.new.build_fact_collection!(resolved_facts)
353
+ else
354
+ FormatterHelper.retrieve_facts_to_display_for_user_query(user_queries, resolved_facts)
355
+ end
356
+ end
357
+
287
358
  # Returns Facter version
288
359
  #
289
360
  # @return [String] Current version
@@ -303,7 +374,6 @@ module Facter
303
374
  logger.info("executed with command line: #{ARGV.drop(1).join(' ')}")
304
375
  log_blocked_facts
305
376
  resolved_facts = Facter::FactManager.instance.resolve_facts(args)
306
- SessionCache.invalidate_all_caches
307
377
  fact_formatter = Facter::FormatterFactory.build(Facter::Options.get)
308
378
 
309
379
  status = error_check(resolved_facts)
@@ -311,23 +381,22 @@ module Facter
311
381
  [fact_formatter.format(resolved_facts), status || 0]
312
382
  end
313
383
 
314
- def log_exception(exception, message = :default)
315
- arr = []
316
- if message == :default
317
- arr << exception.message
318
- elsif message
319
- arr << message
320
- end
321
- if Options[:trace]
322
- arr << 'backtrace:'
323
- arr.concat(exception.backtrace)
324
- end
384
+ # Logs an exception and an optional message
385
+ #
386
+ # @return [nil]
387
+ #
388
+ # @api public
389
+ def log_exception(exception, message = nil)
390
+ error_message = []
391
+
392
+ error_message << message.to_s unless message.nil? || (message.is_a?(String) && message.empty?)
325
393
 
326
- logger.error(arr.flatten.join("\n"))
394
+ parse_exception(exception, error_message)
395
+ logger.error(error_message.flatten.join("\n"))
396
+ nil
327
397
  end
328
398
 
329
399
  # Returns a list with the names of all solved facts
330
- #
331
400
  # @return [Array] the list with all the fact names
332
401
  #
333
402
  # @api public
@@ -336,7 +405,6 @@ module Facter
336
405
  end
337
406
 
338
407
  # Logs the message parameter as a warning.
339
- #
340
408
  # @param message [Object] the warning object to be displayed
341
409
  #
342
410
  # @return [nil]
@@ -348,7 +416,6 @@ module Facter
348
416
  end
349
417
 
350
418
  # Logs only once the same warning message.
351
- #
352
419
  # @param message [Object] the warning message object
353
420
  #
354
421
  # @return [nil]
@@ -365,6 +432,19 @@ module Facter
365
432
 
366
433
  private
367
434
 
435
+ def parse_exception(exception, error_message)
436
+ if exception.is_a?(Exception)
437
+ error_message << exception.message if error_message.empty?
438
+
439
+ if Options[:trace] && !exception.backtrace.nil?
440
+ error_message << 'backtrace:'
441
+ error_message.concat(exception.backtrace)
442
+ end
443
+ elsif error_message.empty?
444
+ error_message << exception.to_s
445
+ end
446
+ end
447
+
368
448
  def logger
369
449
  @logger ||= Log.new(self)
370
450
  end
@@ -386,7 +466,6 @@ module Facter
386
466
  def resolve_fact(user_query)
387
467
  user_query = user_query.to_s
388
468
  resolved_facts = Facter::FactManager.instance.resolve_facts([user_query])
389
- SessionCache.invalidate_all_caches
390
469
  # we must make a distinction between custom facts that return nil and nil facts
391
470
  # Nil facts should not be packaged as ResolvedFacts! (add_fact_to_searched_facts packages facts)
392
471
  resolved_facts = resolved_facts.reject { |fact| fact.type == :nil }
@@ -0,0 +1,354 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Facter
4
+ module Config
5
+ unless defined?(OS_HIERARCHY)
6
+ OS_HIERARCHY = [
7
+ {
8
+ 'Linux' => [
9
+ {
10
+ 'Debian' => %w[
11
+ Elementary
12
+ Ubuntu
13
+ Raspbian
14
+ ]
15
+ },
16
+ {
17
+ 'Rhel' => %w[
18
+ Fedora
19
+ Amzn
20
+ Centos
21
+ Ol
22
+ Scientific
23
+ ]
24
+ },
25
+ {
26
+ 'Sles' => [
27
+ 'Opensuse'
28
+ ]
29
+ }
30
+ ]
31
+ },
32
+ {
33
+ 'Bsd' => [
34
+ 'Freebsd'
35
+ ]
36
+ },
37
+ 'Solaris',
38
+ 'Macosx',
39
+ 'Windows',
40
+ 'Aix'
41
+ ].freeze
42
+ end
43
+ unless defined? FACT_GROUPS
44
+ FACT_GROUPS = {
45
+ 'EC2' => %w[
46
+ ec2_metadata
47
+ ec2_userdata
48
+ ],
49
+ 'GCE' => [
50
+ 'gce'
51
+ ],
52
+ 'augeas' => %w[
53
+ augeas
54
+ augeasversion
55
+ ],
56
+ 'desktop management interface' => %w[
57
+ dmi
58
+ bios_vendor
59
+ bios_version
60
+ bios_release_date
61
+ boardassettag
62
+ boardmanufacturer
63
+ boardproductname
64
+ boardserialnumber
65
+ chassisassettag
66
+ manufacturer
67
+ productname
68
+ serialnumber
69
+ uuid
70
+ chassistype
71
+ ],
72
+ 'file system' => %w[
73
+ mountpoints
74
+ filesystems
75
+ partitions
76
+ ],
77
+ 'hypervisors' => [
78
+ 'hypervisors'
79
+ ],
80
+ 'id' => %w[
81
+ id
82
+ gid
83
+ identity
84
+ ],
85
+ 'kernel' => %w[
86
+ kernel
87
+ kernelversion
88
+ kernelrelease
89
+ kernelmajversion
90
+ ],
91
+ 'load_average' => [
92
+ 'load_averages'
93
+ ],
94
+ 'memory' => %w[
95
+ memory
96
+ memoryfree
97
+ memoryfree_mb
98
+ memorysize
99
+ memorysize_mb
100
+ swapfree
101
+ swapfree_mb
102
+ swapsize
103
+ swapsize_mb
104
+ swapencrypted
105
+ ],
106
+ 'networking' => %w[
107
+ networking
108
+ hostname
109
+ ipaddress
110
+ ipaddress6
111
+ netmask
112
+ netmask6
113
+ network
114
+ network6
115
+ macaddress
116
+ interfaces
117
+ domain
118
+ fqdn
119
+ dhcp_servers
120
+ ],
121
+ 'operating system' => %w[
122
+ os
123
+ operatingsystem
124
+ osfamily
125
+ operatingsystemrelease
126
+ operatingsystemmajrelease
127
+ hardwaremodel
128
+ architecture
129
+ lsbdistid
130
+ lsbdistrelease
131
+ lsbdistcodename
132
+ lsbdistdescription
133
+ lsbmajdistrelease
134
+ lsbminordistrelease
135
+ lsbrelease
136
+ macosx_buildversion
137
+ macosx_productname
138
+ macosx_productversion
139
+ macosx_productversion_major
140
+ macosx_productversion_minor
141
+ windows_edition_id
142
+ windows_installation_type
143
+ windows_product_name
144
+ windows_release_id
145
+ system32
146
+ selinux
147
+ selinux_enforced
148
+ selinux_policyversion
149
+ selinux_current_mode
150
+ selinux_config_mode
151
+ selinux_config_policy
152
+ ],
153
+ 'path' => [
154
+ 'path'
155
+ ],
156
+ 'processor' => %w[
157
+ processors
158
+ processorcount
159
+ physicalprocessorcount
160
+ hardwareisa
161
+ ],
162
+ 'ssh' => %w[
163
+ ssh
164
+ sshdsakey
165
+ sshrsakey
166
+ sshecdsakey
167
+ sshed25519key
168
+ sshfp_dsa
169
+ sshfp_rsa
170
+ sshfp_ecdsa
171
+ sshfp_ed25519
172
+ ],
173
+ 'system profiler' => %w[
174
+ system_profiler
175
+ sp_boot_mode
176
+ sp_boot_rom_version
177
+ sp_boot_volume
178
+ sp_cpu_type
179
+ sp_current_processor_speed
180
+ sp_kernel_version
181
+ sp_l2_cache_core
182
+ sp_l3_cache
183
+ sp_local_host_name
184
+ sp_machine_model
185
+ sp_machine_name
186
+ sp_number_processors
187
+ sp_os_version
188
+ sp_packages
189
+ sp_physical_memory
190
+ sp_platform_uuid
191
+ sp_secure_vm
192
+ sp_serial_number
193
+ sp_smc_version_system
194
+ sp_uptime
195
+ sp_user_name
196
+ ],
197
+ 'timezone' => [
198
+ 'timezone'
199
+ ],
200
+ 'uptime' => %w[
201
+ system_uptime
202
+ uptime
203
+ uptime_days
204
+ uptime_hours
205
+ uptime_seconds
206
+ ],
207
+ 'virtualization' => %w[
208
+ virtual
209
+ is_virtual
210
+ cloud
211
+ ],
212
+ 'legacy' => [
213
+ 'architecture',
214
+ 'augeasversion',
215
+ 'bios_release_date',
216
+ 'bios_vendor',
217
+ 'bios_version',
218
+ 'blockdevice_*_model',
219
+ 'blockdevice_*_size',
220
+ 'blockdevice_*_vendor',
221
+ 'blockdevices',
222
+ 'boardassettag',
223
+ 'boardmanufacturer',
224
+ 'boardproductname',
225
+ 'boardserialnumber',
226
+ 'chassisassettag',
227
+ 'chassistype',
228
+ 'dhcp_servers',
229
+ 'domain',
230
+ 'fqdn',
231
+ 'gid',
232
+ 'hardwareisa',
233
+ 'hardwaremodel',
234
+ 'hostname',
235
+ 'id',
236
+ 'interfaces',
237
+ 'ipaddress',
238
+ 'ipaddress_.*',
239
+ 'ipaddress_*',
240
+ 'ipaddress6',
241
+ 'ipaddress6_.*',
242
+ 'ipaddress6_*',
243
+ 'ldom_*',
244
+ 'lsbdistcodename',
245
+ 'lsbdistdescription',
246
+ 'lsbdistid',
247
+ 'lsbdistrelease',
248
+ 'lsbmajdistrelease',
249
+ 'lsbminordistrelease',
250
+ 'lsbrelease',
251
+ 'macaddress',
252
+ 'macaddress_.*',
253
+ 'macaddress_*',
254
+ 'macosx_buildversion',
255
+ 'macosx_productname',
256
+ 'macosx_productversion',
257
+ 'macosx_productversion_major',
258
+ 'macosx_productversion_minor',
259
+ 'manufacturer',
260
+ 'memoryfree',
261
+ 'memoryfree_mb',
262
+ 'memorysize',
263
+ 'memorysize_mb',
264
+ 'mtu_.*',
265
+ 'mtu_*',
266
+ 'netmask',
267
+ 'netmask_.*',
268
+ 'netmask_*',
269
+ 'netmask6',
270
+ 'netmask6_.*',
271
+ 'netmask6_*',
272
+ 'network',
273
+ 'network_.*',
274
+ 'network_*',
275
+ 'network6',
276
+ 'network6_.*',
277
+ 'network6_*',
278
+ 'operatingsystem',
279
+ 'operatingsystemmajrelease',
280
+ 'operatingsystemrelease',
281
+ 'osfamily',
282
+ 'physicalprocessorcount',
283
+ 'processor.*',
284
+ 'processor*',
285
+ 'processorcount',
286
+ 'productname',
287
+ 'rubyplatform',
288
+ 'rubysitedir',
289
+ 'rubyversion',
290
+ 'scope6',
291
+ 'scope6_.*',
292
+ 'selinux',
293
+ 'selinux_config_mode',
294
+ 'selinux_config_policy',
295
+ 'selinux_current_mode',
296
+ 'selinux_enforced',
297
+ 'selinux_policyversion',
298
+ 'serialnumber',
299
+ 'sp_*',
300
+ 'sp_boot_mode',
301
+ 'sp_boot_rom_version',
302
+ 'sp_boot_volume',
303
+ 'sp_cpu_type',
304
+ 'sp_current_processor_speed',
305
+ 'sp_kernel_version',
306
+ 'sp_l2_cache_core',
307
+ 'sp_l3_cache',
308
+ 'sp_local_host_name',
309
+ 'sp_machine_model',
310
+ 'sp_machine_name',
311
+ 'sp_number_processors',
312
+ 'sp_os_version',
313
+ 'sp_packages',
314
+ 'sp_physical_memory',
315
+ 'sp_platform_uuid',
316
+ 'sp_secure_vm',
317
+ 'sp_serial_number',
318
+ 'sp_smc_version_system',
319
+ 'sp_uptime',
320
+ 'sp_user_name',
321
+ 'ssh.*key',
322
+ 'ssh*key',
323
+ 'sshfp_.*',
324
+ 'sshfp_*',
325
+ 'swapencrypted',
326
+ 'swapfree',
327
+ 'swapfree_mb',
328
+ 'swapsize',
329
+ 'swapsize_mb',
330
+ 'system32',
331
+ 'uptime',
332
+ 'uptime_days',
333
+ 'uptime_hours',
334
+ 'uptime_seconds',
335
+ 'uuid',
336
+ 'windows_edition_id',
337
+ 'windows_installation_type',
338
+ 'windows_product_name',
339
+ 'windows_release_id',
340
+ 'xendomains',
341
+ 'zone_*_brand',
342
+ 'zone_*_id',
343
+ 'zone_*_iptype',
344
+ 'zone_*_name',
345
+ 'zone_*_path',
346
+ 'zone_*_status',
347
+ 'zone_*_uuid',
348
+ 'zonename',
349
+ 'zones'
350
+ ]
351
+ }.freeze
352
+ end
353
+ end
354
+ end