Class: Facter::FactGroups
- Inherits:
-
Object
- Object
- Facter::FactGroups
- Defined in:
- lib/facter/framework/config/fact_groups.rb
Constant Summary collapse
- STRING_TO_SECONDS =
{ 'ns' => 1.fdiv(1_000_000_000), 'nanos' => 1.fdiv(1_000_000_000), 'nanoseconds' => 1.fdiv(1_000_000_000), 'us' => 1.fdiv(1_000_000), 'micros' => 1.fdiv(1_000_000), 'microseconds' => 1.fdiv(1_000_000), '' => 1.fdiv(1000), 'ms' => 1.fdiv(1000), 'milis' => 1.fdiv(1000), 'milliseconds' => 1.fdiv(1000), 's' => 1, 'seconds' => 1, 'm' => 60, 'minutes' => 60, 'h' => 3600, 'hours' => 3600, 'd' => 3600 * 24, 'days' => 3600 * 24 }.freeze
Instance Attribute Summary collapse
- #block_list ⇒ Object readonly
- #facts_ttls ⇒ Object readonly
- #groups ⇒ Object readonly
- #groups_ttls ⇒ Object
Instance Method Summary collapse
-
#blocked_facts ⇒ Object
Breakes down blocked groups in blocked facts.
- #get_fact(fact_name) ⇒ Object
-
#get_fact_group(fact_name) ⇒ Object
Get the group name a fact is part of.
-
#get_group_ttls(group_name) ⇒ Object
Get config ttls for a given group.
-
#initialize ⇒ FactGroups
constructor
A new instance of FactGroups.
Constructor Details
#initialize ⇒ FactGroups
Returns a new instance of FactGroups.
20 21 22 23 24 25 26 27 28 |
# File 'lib/facter/framework/config/fact_groups.rb', line 20 def initialize @groups = Facter::Config::FACT_GROUPS.dup load_groups load_facts_ttls # Reverse sort facts so that children have precedence when caching. eg: os.macosx vs os @facts_ttls = @facts_ttls.sort.reverse.to_h end |
Instance Attribute Details
#block_list ⇒ Object (readonly)
8 9 10 |
# File 'lib/facter/framework/config/fact_groups.rb', line 8 def block_list @block_list end |
#facts_ttls ⇒ Object (readonly)
8 9 10 |
# File 'lib/facter/framework/config/fact_groups.rb', line 8 def facts_ttls @facts_ttls end |
#groups ⇒ Object (readonly)
8 9 10 |
# File 'lib/facter/framework/config/fact_groups.rb', line 8 def groups @groups end |
#groups_ttls ⇒ Object
7 8 9 |
# File 'lib/facter/framework/config/fact_groups.rb', line 7 def groups_ttls @groups_ttls end |
Instance Method Details
#blocked_facts ⇒ Object
Breakes down blocked groups in blocked facts
31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/facter/framework/config/fact_groups.rb', line 31 def blocked_facts fact_list = [] @block_list.each do |group_name| # legacy is a special group and does not need to be broken into facts next if group_name == 'legacy' facts_for_block = @groups[group_name] fact_list += facts_for_block || [group_name] end fact_list end |
#get_fact(fact_name) ⇒ Object
64 65 66 67 68 69 70 71 |
# File 'lib/facter/framework/config/fact_groups.rb', line 64 def get_fact(fact_name) return @facts_ttls[fact_name] if @facts_ttls[fact_name] result = @facts_ttls.select { |name, fact| break fact if /^#{name}\..*/.match?(fact_name) } return nil if result == {} result end |
#get_fact_group(fact_name) ⇒ Object
Get the group name a fact is part of
47 48 49 50 51 52 53 54 55 |
# File 'lib/facter/framework/config/fact_groups.rb', line 47 def get_fact_group(fact_name) fact = get_fact(fact_name) return fact[:group] if fact # @groups.detect { |k, v| break k if Array(v).find { |f| fact_name =~ /^#{f}.*/ } } @groups.detect do |k, v| break k if Array(v).find { |f| fact_name.include?('.*') ? fact_name == f : fact_name =~ /^#{f}.*/ } end end |
#get_group_ttls(group_name) ⇒ Object
Get config ttls for a given group
58 59 60 61 62 |
# File 'lib/facter/framework/config/fact_groups.rb', line 58 def get_group_ttls(group_name) return unless (ttls = @groups_ttls.find { |g| g[group_name] }) ttls_to_seconds(ttls[group_name]) end |