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/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/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/os_level_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/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/aix/os_level_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, WindowsReleaseFinder, YamlFactFormatter
Constant Summary collapse
- VERSION =
'4.0.38'
- 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.
-
.fact(user_query) ⇒ Facter::Util::Fact?
Returns a fact object by name.
-
.list ⇒ Array
Returns a list with the names of all solved facts.
- .log_exception(exception, message = :default) ⇒ 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.
-
.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.
-
.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()
31 32 33 |
# File 'lib/facter.rb', line 31 def [](name) fact(name) end |
.add(name, options = {}, &block) ⇒ Facter::Util::Fact
Add custom facts to fact collection
46 47 48 49 50 |
# File 'lib/facter.rb', line 46 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.
57 58 59 60 61 62 63 64 65 |
# File 'lib/facter.rb', line 57 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
20 21 22 |
# File 'lib/facter.rb', line 20 def logger.debug('clear_messages is not implemented') end |
.core_value(user_query) ⇒ Object
67 68 69 70 71 72 73 |
# File 'lib/facter.rb', line 67 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
81 82 83 84 85 86 |
# File 'lib/facter.rb', line 81 def debug() return unless debugging? logger.debug(.to_s) nil end |
.debugging(debug_bool) ⇒ type
Enable or disable debugging
124 125 126 |
# File 'lib/facter.rb', line 124 def debugging(debug_bool) Facter::Options[:debug] = debug_bool end |
.debugging? ⇒ bool
Check whether debugging is enabled
114 115 116 |
# File 'lib/facter.rb', line 114 def debugging? Options[:debug] end |
.debugonce(message) ⇒ nil
Logs the same debug message only once when debug option is set to true
94 95 96 97 98 99 100 101 102 103 |
# File 'lib/facter.rb', line 94 def debugonce() return unless debugging? = .to_s return if @debug_once.include? @debug_once << logger.debug() nil 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.
138 139 140 141 142 143 |
# File 'lib/facter.rb', line 138 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
291 292 293 |
# File 'lib/facter.rb', line 291 def list to_hash.keys.sort end |
.log_exception(exception, message = :default) ⇒ Object
271 272 273 274 275 276 277 278 279 280 281 282 283 284 |
# File 'lib/facter.rb', line 271 def log_exception(exception, = :default) arr = [] if == :default arr << exception. elsif arr << end if Options[:trace] arr << 'backtrace:' arr.concat(exception.backtrace) end logger.error(arr.flatten.join("\n")) end |
.on_message(&block) ⇒ Object
105 106 107 |
# File 'lib/facter.rb', line 105 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
151 152 153 154 155 156 |
# File 'lib/facter.rb', line 151 def reset LegacyFacter.reset Options[:custom_dir] = [] Options[:external_dir] = [] nil 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.
166 167 168 |
# File 'lib/facter.rb', line 166 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.
177 178 179 |
# File 'lib/facter.rb', line 177 def search_external(dirs) Options[:external_dir] += dirs end |
.search_external_path ⇒ Array<String>
Returns the registered search directories.for external facts.
186 187 188 |
# File 'lib/facter.rb', line 186 def search_external_path Options.external_dir end |
.search_path ⇒ Array<String>
Returns the registered search directories for custom facts.
195 196 197 |
# File 'lib/facter.rb', line 195 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).
205 206 207 208 209 210 211 |
# File 'lib/facter.rb', line 205 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
258 259 260 261 262 263 264 265 266 267 268 269 |
# File 'lib/facter.rb', line 258 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
228 229 230 |
# File 'lib/facter.rb', line 228 def trace(bool) Options[:trace] = bool end |
.trace? ⇒ bool
Check whether printing stack trace is enabled
218 219 220 |
# File 'lib/facter.rb', line 218 def trace? Options[:trace] end |
.value(user_query) ⇒ String
Gets the value for a fact. Returns ‘nil` if no such fact exists.
238 239 240 241 242 |
# File 'lib/facter.rb', line 238 def value(user_query) user_query = user_query.to_s resolve_fact(user_query) @already_searched[user_query]&.value end |
.version ⇒ String
Returns Facter version
249 250 251 |
# File 'lib/facter.rb', line 249 def version Facter::VERSION end |
.warn(message) ⇒ nil
Logs the message parameter as a warning.
302 303 304 305 |
# File 'lib/facter.rb', line 302 def warn() logger.warn(.to_s) nil end |
.warnonce(message) ⇒ nil
Logs only once the same warning message.
314 315 316 317 318 319 320 321 |
# File 'lib/facter.rb', line 314 def warnonce() = .to_s return if @warn_once.include? @warn_once << logger.warn() nil end |