Module: Facter
- Includes:
- ApiDebugger
- Defined in:
- lib/facter/custom_facts/util/fact.rb,
lib/facter.rb,
lib/facter/version.rb,
lib/facter/resolvers/ec2.rb,
lib/facter/resolvers/gce.rb,
lib/facter/resolvers/xen.rb,
lib/facter/resolvers/zfs.rb,
lib/facter/resolvers/cloud.rb,
lib/facter/resolvers/lspci.rb,
lib/facter/resolvers/zpool.rb,
lib/facter/resolvers/vmware.rb,
lib/facter/util/file_helper.rb,
lib/facter/framework/cli/cli.rb,
lib/facter/resolvers/aix/nim.rb,
lib/facter/resolvers/open_vz.rb,
lib/facter/models/loaded_fact.rb,
lib/facter/resolvers/aix/disks.rb,
lib/facter/resolvers/utils/ssh.rb,
lib/facter/resolvers/virt_what.rb,
lib/facter/models/resolved_fact.rb,
lib/facter/models/searched_fact.rb,
lib/facter/resolvers/aix/memory.rb,
lib/facter/resolvers/containers.rb,
lib/facter/resolvers/dmi_decode.rb,
lib/facter/resolvers/partitions.rb,
lib/facter/resolvers/utils/http.rb,
lib/facter/framework/utils/utils.rb,
lib/facter/resolvers/solaris/dmi.rb,
lib/facter/resolvers/windows/ssh.rb,
lib/facter/framework/core/options.rb,
lib/facter/models/fact_collection.rb,
lib/facter/resolvers/aix/os_level.rb,
lib/facter/resolvers/dmi_resolver.rb,
lib/facter/resolvers/solaris/ldom.rb,
lib/facter/resolvers/solaris/zone.rb,
lib/facter/resolvers/ssh_resolver.rb,
lib/facter/facts_utils/facts_utils.rb,
lib/facter/resolvers/base_resolver.rb,
lib/facter/resolvers/disk_resolver.rb,
lib/facter/resolvers/load_averages.rb,
lib/facter/resolvers/lpar_resolver.rb,
lib/facter/resolvers/path_resolver.rb,
lib/facter/resolvers/ruby_resolver.rb,
lib/facter/resolvers/solaris/disks.rb,
lib/facter/resolvers/wpar_resolver.rb,
lib/facter/framework/logging/logger.rb,
lib/facter/resolvers/aix/partitions.rb,
lib/facter/resolvers/aix/processors.rb,
lib/facter/resolvers/bsd/processors.rb,
lib/facter/resolvers/debian_version.rb,
lib/facter/resolvers/solaris/memory.rb,
lib/facter/resolvers/uname_resolver.rb,
lib/facter/facts_utils/uptime_parser.rb,
lib/facter/resolvers/aix/mountpoints.rb,
lib/facter/resolvers/augeas_resolver.rb,
lib/facter/resolvers/memory_resolver.rb,
lib/facter/resolvers/solaris/ffi/ffi.rb,
lib/facter/resolvers/uptime_resolver.rb,
lib/facter/facts_utils/unit_converter.rb,
lib/facter/framework/core/fact_filter.rb,
lib/facter/resolvers/aix/serialnumber.rb,
lib/facter/resolvers/selinux_resolver.rb,
lib/facter/resolvers/sw_vers_resolver.rb,
lib/facter/custom_facts/core/aggregate.rb,
lib/facter/custom_facts/core/execution.rb,
lib/facter/framework/core/fact_manager.rb,
lib/facter/resolvers/aio_agent_version.rb,
lib/facter/resolvers/hostname_resolver.rb,
lib/facter/resolvers/identity_resolver.rb,
lib/facter/resolvers/solaris/dmi_sparc.rb,
lib/facter/resolvers/solaris/ipaddress.rb,
lib/facter/resolvers/solaris/zone_name.rb,
lib/facter/resolvers/timezone_resolver.rb,
lib/facter/resolvers/utils/fingerprint.rb,
lib/facter/custom_facts/util/resolution.rb,
lib/facter/facts_utils/virtual_detector.rb,
lib/facter/framework/benchmarking/timer.rb,
lib/facter/framework/config/fact_groups.rb,
lib/facter/framework/core/cache_manager.rb,
lib/facter/framework/core/session_cache.rb,
lib/facter/resolvers/aix/ffi/ffi_helper.rb,
lib/facter/resolvers/bsd/ffi/ffi_helper.rb,
lib/facter/resolvers/freebsd/processors.rb,
lib/facter/resolvers/solaris/networking.rb,
lib/facter/resolvers/solaris/os_release.rb,
lib/facter/resolvers/solaris/processors.rb,
lib/facter/framework/core/fact_augmenter.rb,
lib/facter/resolvers/aix/utils/odm_query.rb,
lib/facter/resolvers/linux/docker_uptime.rb,
lib/facter/resolvers/linux/load_averages.rb,
lib/facter/resolvers/macosx/dmi_resolver.rb,
lib/facter/resolvers/networking_resolver.rb,
lib/facter/resolvers/os_release_resolver.rb,
lib/facter/resolvers/processors_resolver.rb,
lib/facter/resolvers/solaris/ffi/structs.rb,
lib/facter/resolvers/solaris/filesystems.rb,
lib/facter/resolvers/utils/uptime_helper.rb,
lib/facter/framework/config/config_reader.rb,
lib/facter/framework/parsers/query_parser.rb,
lib/facter/resolvers/eos_release_resolver.rb,
lib/facter/resolvers/filesystems_resolver.rb,
lib/facter/resolvers/freebsd/dmi_resolver.rb,
lib/facter/resolvers/lsb_release_resolver.rb,
lib/facter/resolvers/mountpoints_resolver.rb,
lib/facter/framework/detector/os_hierarchy.rb,
lib/facter/resolvers/aix/hardware_resolver.rb,
lib/facter/resolvers/fips_enabled_resolver.rb,
lib/facter/resolvers/freebsd/geom_resolver.rb,
lib/facter/resolvers/solaris/ffi/functions.rb,
lib/facter/resolvers/suse_release_resolver.rb,
lib/facter/resolvers/windows/fips_resolver.rb,
lib/facter/custom_facts/core/execution/base.rb,
lib/facter/resolvers/facterversion_resolver.rb,
lib/facter/resolvers/freebsd/ffi/ffi_helper.rb,
lib/facter/custom_facts/core/execution/posix.rb,
lib/facter/resolvers/aix/filesystem_resolver.rb,
lib/facter/resolvers/aix/networking_resolver.rb,
lib/facter/resolvers/puppet_version_resolver.rb,
lib/facter/resolvers/redhat_release_resolver.rb,
lib/facter/resolvers/utils/ffi/load_averages.rb,
lib/facter/resolvers/utils/filesystem_helper.rb,
lib/facter/resolvers/windows/kernel_resolver.rb,
lib/facter/resolvers/windows/memory_resolver.rb,
lib/facter/resolvers/windows/netkvm_resolver.rb,
lib/facter/resolvers/windows/uptime_resolver.rb,
lib/facter/facts_utils/windows_release_finder.rb,
lib/facter/resolvers/aix/utils/info_extractor.rb,
lib/facter/custom_facts/core/execution/windows.rb,
lib/facter/framework/core/options/option_store.rb,
lib/facter/resolvers/aix/architecture_resolver.rb,
lib/facter/resolvers/macosx/processor_resolver.rb,
lib/facter/resolvers/networking_linux_resolver.rb,
lib/facter/resolvers/windows/aio_agent_version.rb,
lib/facter/resolvers/windows/dmi_bios_resolver.rb,
lib/facter/resolvers/windows/identity_resolver.rb,
lib/facter/resolvers/windows/system32_resolver.rb,
lib/facter/resolvers/aix/load_averages_resolver.rb,
lib/facter/framework/formatters/formatter_helper.rb,
lib/facter/resolvers/macosx/filesystems_resolver.rb,
lib/facter/resolvers/macosx/mountpoints_resolver.rb,
lib/facter/resolvers/macosx/swap_memory_resolver.rb,
lib/facter/resolvers/windows/networking_resolver.rb,
lib/facter/resolvers/windows/processors_resolver.rb,
lib/facter/framework/core/fact/internal/core_fact.rb,
lib/facter/framework/formatters/formatter_factory.rb,
lib/facter/resolvers/freebsd/swap_memory_resolver.rb,
lib/facter/framework/core/fact_loaders/fact_loader.rb,
lib/facter/resolvers/macosx/load_averages_resolver.rb,
lib/facter/resolvers/macosx/system_memory_resolver.rb,
lib/facter/framework/core/options/options_validator.rb,
lib/facter/framework/formatters/json_fact_formatter.rb,
lib/facter/framework/formatters/yaml_fact_formatter.rb,
lib/facter/resolvers/freebsd/system_memory_resolver.rb,
lib/facter/framework/formatters/hocon_fact_formatter.rb,
lib/facter/resolvers/macosx/system_profiler_resolver.rb,
lib/facter/resolvers/windows/virtualization_resolver.rb,
lib/facter/framework/core/options/config_file_options.rb,
lib/facter/framework/formatters/legacy_fact_formatter.rb,
lib/facter/resolvers/freebsd/freebsd_version_resolver.rb,
lib/facter/resolvers/windows/product_release_resolver.rb,
lib/facter/framework/core/fact_loaders/class_discoverer.rb,
lib/facter/resolvers/windows/dmi_computersystem_resolver.rb,
lib/facter/resolvers/windows/win_os_description_resolver.rb,
lib/facter/resolvers/macosx/utils/system_profile_executor.rb,
lib/facter/framework/core/fact_loaders/external_fact_loader.rb,
lib/facter/framework/core/fact_loaders/internal_fact_loader.rb,
lib/facter/resolvers/windows/hardware_architecture_resolver.rb,
lib/facter/framework/core/fact/external/external_fact_manager.rb,
lib/facter/framework/core/fact/internal/internal_fact_manager.rb
Overview
CuAt (Customized Attributes) non-default attribute values CuDv (Customized Devices) the devices present on this machine PdAt (Predefined Attributes) default values for all device attributes PdDv (Predefined Devices) the list of all devices supported by this release of AIX
Defined Under Namespace
Modules: Aix, Bsd, Core, FactAugmenter, FactsUtils, FilesystemHelper, Framework, Freebsd, InfoExtractor, OptionsValidator, Resolvers, Util, Utils Classes: CacheManager, ClassDiscoverer, Cli, ConfigFileOptions, ConfigReader, CoreFact, ExternalFactLoader, ExternalFactManager, FactCollection, FactFilter, FactGroups, FactLoader, FactManager, FingerPrint, FormatterFactory, FormatterHelper, HoconFactFormatter, InternalFactLoader, InternalFactManager, JsonFactFormatter, LegacyFactFormatter, LoadedFact, Log, ODMQuery, OptionStore, Options, OsHierarchy, QueryParser, ResolveCustomFactError, ResolvedFact, SearchedFact, SessionCache, Ssh, UptimeParser, VirtualDetector, WindowsReleaseFinder, YamlFactFormatter
Constant Summary collapse
- VERSION =
'4.0.41'
- RED =
"\e[31m"
- GREEN =
"\e[32m"
- YELLOW =
"\e[33m"
- CYAN =
"\e[36m"
- RESET =
"\e[0m"
- DEFAULT_LOG_LEVEL =
:warn
Class Method Summary collapse
-
.[](name) ⇒ Facter::Util::Fact?
Alias method for Facter.fact().
-
.add(name, options = {}, &block) ⇒ Facter::Util::Fact
Add custom facts to fact collection.
-
.clear ⇒ nil
Clears all cached values and removes all facts from memory.
- .clear_messages ⇒ Object
- .core_value(user_query) ⇒ Object
-
.debug(message) ⇒ nil
Logs debug message when debug option is set to true.
-
.debugging(debug_bool) ⇒ type
Enable or disable debugging.
-
.debugging? ⇒ bool
Check whether debugging is enabled.
-
.debugonce(message) ⇒ nil
Logs the same debug message only once when debug option is set to true.
-
.define_fact(name, options = {}, &block) ⇒ Facter::Util::Fact
Define a new fact or extend an existing fact.
-
.each {|name, value| ... } ⇒ Facter
Iterates over fact names and values.
-
.fact(user_query) ⇒ Facter::Util::Fact?
Returns a fact object by name.
-
.list ⇒ Array
Returns a list with the names of all solved facts.
-
.loadfacts ⇒ nil
Loads all facts.
- .log_exception(exception, message = nil) ⇒ Object
- .on_message(&block) ⇒ Object
-
.reset ⇒ nil
Reset search paths for custom and external facts If config file is set custom and external facts will be reloaded.
- .resolve(args_as_string) ⇒ Object
-
.search(*dirs) ⇒ void
Register directories to be searched for custom facts.
-
.search_external(dirs) ⇒ void
Registers directories to be searched for external facts.
-
.search_external_path ⇒ Array<String>
Returns the registered search directories.for external facts.
-
.search_path ⇒ Array<String>
Returns the registered search directories for custom facts.
-
.to_hash ⇒ FactCollection
Gets a hash mapping fact names to their values The hash contains core facts, legacy facts, custom facts and external facts (all facts that can be resolved).
-
.to_user_output(cli_options, *args) ⇒ Array
private
Gets a hash mapping fact names to their values.
-
.trace(bool) ⇒ type
Enable or disable trace.
-
.trace? ⇒ bool
Check whether printing stack trace is enabled.
-
.value(user_query) ⇒ String
Gets the value for a fact.
- .values(options, user_queries) ⇒ Object
-
.version ⇒ String
Returns Facter version.
-
.warn(message) ⇒ nil
Logs the message parameter as a warning.
-
.warnonce(message) ⇒ nil
Logs only once the same warning message.
Methods included from ApiDebugger
Class Method Details
.[](name) ⇒ Facter::Util::Fact?
Alias method for Facter.fact()
52 53 54 |
# File 'lib/facter.rb', line 52 def [](name) fact(name) end |
.add(name, options = {}, &block) ⇒ Facter::Util::Fact
Add custom facts to fact collection
67 68 69 70 71 |
# File 'lib/facter.rb', line 67 def add(name, = {}, &block) [:fact_type] = :custom LegacyFacter.add(name, , &block) LegacyFacter.collection.invalidate_custom_facts end |
.clear ⇒ nil
Clears all cached values and removes all facts from memory.
78 79 80 81 82 83 84 85 86 |
# File 'lib/facter.rb', line 78 def clear @already_searched = {} @debug_once = [] @warn_once = [] LegacyFacter.clear Options[:custom_dir] = [] LegacyFacter.collection.invalidate_custom_facts LegacyFacter.collection.reload_custom_facts end |
.clear_messages ⇒ Object
41 42 43 |
# File 'lib/facter.rb', line 41 def logger.debug('clear_messages is not implemented') end |
.core_value(user_query) ⇒ Object
88 89 90 91 92 93 94 |
# File 'lib/facter.rb', line 88 def core_value(user_query) user_query = user_query.to_s resolved_facts = Facter::FactManager.instance.resolve_core([user_query]) fact_collection = FactCollection.new.build_fact_collection!(resolved_facts) splitted_user_query = Facter::Utils.split_user_query(user_query) fact_collection.dig(*splitted_user_query) end |
.debug(message) ⇒ nil
Logs debug message when debug option is set to true
102 103 104 105 106 107 |
# File 'lib/facter.rb', line 102 def debug() return unless debugging? logger.debug(.to_s) nil end |
.debugging(debug_bool) ⇒ type
Enable or disable debugging
158 159 160 |
# File 'lib/facter.rb', line 158 def debugging(debug_bool) Facter::Options[:debug] = debug_bool end |
.debugging? ⇒ bool
Check whether debugging is enabled
148 149 150 |
# File 'lib/facter.rb', line 148 def debugging? Options[:debug] end |
.debugonce(message) ⇒ nil
Logs the same debug message only once when debug option is set to true
115 116 117 118 119 120 121 122 123 124 |
# File 'lib/facter.rb', line 115 def debugonce() return unless debugging? = .to_s return if @debug_once.include? @debug_once << logger.debug() nil end |
.define_fact(name, options = {}, &block) ⇒ Facter::Util::Fact
Define a new fact or extend an existing fact.
134 135 136 137 |
# File 'lib/facter.rb', line 134 def define_fact(name, = {}, &block) [:fact_type] = :custom LegacyFacter.define_fact(name, , &block) end |
.each {|name, value| ... } ⇒ Facter
Iterates over fact names and values
170 171 172 173 174 175 176 177 178 179 180 |
# File 'lib/facter.rb', line 170 def each log_blocked_facts resolved_facts = Facter::FactManager.instance.resolve_facts SessionCache.invalidate_all_caches resolved_facts.each do |fact| yield(fact.name, fact.value) end self end |
.fact(user_query) ⇒ Facter::Util::Fact?
Returns a fact object by name. If you use this, you still have to call ‘value` on it to retrieve the actual value.
192 193 194 195 196 197 |
# File 'lib/facter.rb', line 192 def fact(user_query) user_query = user_query.to_s resolve_fact(user_query) @already_searched[user_query] end |
.list ⇒ Array
Returns a list with the names of all solved facts
361 362 363 |
# File 'lib/facter.rb', line 361 def list to_hash.keys.sort end |
.loadfacts ⇒ nil
Loads all facts
217 218 219 220 |
# File 'lib/facter.rb', line 217 def loadfacts LegacyFacter.loadfacts nil end |
.log_exception(exception, message = nil) ⇒ Object
347 348 349 350 351 352 353 354 |
# File 'lib/facter.rb', line 347 def log_exception(exception, = nil) = [] << .to_s unless .nil? || (.is_a?(String) && .empty?) parse_exception(exception, ) logger.error(.flatten.join("\n")) end |
.on_message(&block) ⇒ Object
139 140 141 |
# File 'lib/facter.rb', line 139 def (&block) Facter::Log.(&block) end |
.reset ⇒ nil
Reset search paths for custom and external facts If config file is set custom and external facts will be reloaded
205 206 207 208 209 210 |
# File 'lib/facter.rb', line 205 def reset LegacyFacter.reset Options[:custom_dir] = [] Options[:external_dir] = [] nil end |
.resolve(args_as_string) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/facter.rb', line 20 def resolve(args_as_string) require 'facter/framework/cli/cli_launcher' args = args_as_string.split(' ') Facter::OptionsValidator.validate(args) processed_arguments = CliLauncher.prepare_arguments(args, nil) cli = Facter::Cli.new([], processed_arguments) if cli.args.include?(:version) cli.invoke(:version, []) elsif cli.args.include?('--list-cache-groups') cli.invoke(:list_cache_groups, []) elsif cli.args.include?('--list-block-groups') cli.invoke(:list_block_groups, []) else cli.invoke(:arg_parser) end end |
.search(*dirs) ⇒ void
This method returns an undefined value.
Register directories to be searched for custom facts. The registered directories must be absolute paths or they will be ignored.
230 231 232 |
# File 'lib/facter.rb', line 230 def search(*dirs) Options[:custom_dir] += dirs end |
.search_external(dirs) ⇒ void
This method returns an undefined value.
Registers directories to be searched for external facts.
241 242 243 |
# File 'lib/facter.rb', line 241 def search_external(dirs) Options[:external_dir] += dirs end |
.search_external_path ⇒ Array<String>
Returns the registered search directories.for external facts.
250 251 252 |
# File 'lib/facter.rb', line 250 def search_external_path Options.external_dir end |
.search_path ⇒ Array<String>
Returns the registered search directories for custom facts.
259 260 261 |
# File 'lib/facter.rb', line 259 def search_path Options.custom_dir end |
.to_hash ⇒ FactCollection
Gets a hash mapping fact names to their values The hash contains core facts, legacy facts, custom facts and external facts (all facts that can be resolved).
269 270 271 272 273 274 275 |
# File 'lib/facter.rb', line 269 def to_hash log_blocked_facts resolved_facts = Facter::FactManager.instance.resolve_facts Facter::SessionCache.invalidate_all_caches Facter::FactCollection.new.build_fact_collection!(resolved_facts) end |
.to_user_output(cli_options, *args) ⇒ Array
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Gets a hash mapping fact names to their values
334 335 336 337 338 339 340 341 342 343 344 345 |
# File 'lib/facter.rb', line 334 def to_user_output(, *args) (, args) logger.info("executed with command line: #{ARGV.drop(1).join(' ')}") log_blocked_facts resolved_facts = Facter::FactManager.instance.resolve_facts(args) SessionCache.invalidate_all_caches fact_formatter = Facter::FormatterFactory.build(Facter::Options.get) status = error_check(resolved_facts) [fact_formatter.format(resolved_facts), status || 0] end |
.trace(bool) ⇒ type
Enable or disable trace
292 293 294 |
# File 'lib/facter.rb', line 292 def trace(bool) Options[:trace] = bool end |
.trace? ⇒ bool
Check whether printing stack trace is enabled
282 283 284 |
# File 'lib/facter.rb', line 282 def trace? Options[:trace] end |
.value(user_query) ⇒ String
Gets the value for a fact. Returns ‘nil` if no such fact exists.
302 303 304 305 306 |
# File 'lib/facter.rb', line 302 def value(user_query) user_query = user_query.to_s resolve_fact(user_query) @already_searched[user_query]&.value end |
.values(options, user_queries) ⇒ Object
308 309 310 311 312 313 314 315 316 317 318 |
# File 'lib/facter.rb', line 308 def values(, user_queries) (, user_queries) resolved_facts = Facter::FactManager.instance.resolve_facts(user_queries) Facter::SessionCache.invalidate_all_caches if user_queries.count.zero? Facter::FactCollection.new.build_fact_collection!(resolved_facts) else FormatterHelper.retrieve_facts_to_display_for_user_query(user_queries, resolved_facts) end end |
.version ⇒ String
Returns Facter version
325 326 327 |
# File 'lib/facter.rb', line 325 def version Facter::VERSION end |
.warn(message) ⇒ nil
Logs the message parameter as a warning.
372 373 374 375 |
# File 'lib/facter.rb', line 372 def warn() logger.warn(.to_s) nil end |
.warnonce(message) ⇒ nil
Logs only once the same warning message.
384 385 386 387 388 389 390 391 |
# File 'lib/facter.rb', line 384 def warnonce() = .to_s return if @warn_once.include? @warn_once << logger.warn() nil end |