Class: Facter::Core::Aggregate
- Inherits:
-
Object
- Object
- Facter::Core::Aggregate
- Defined in:
- lib/facter/custom_facts/core/aggregate.rb
Overview
Defined Under Namespace
Classes: DependencyError
Instance Attribute Summary collapse
-
#confines ⇒ Array<LegacyFacter::Core::Confine>
readonly
private
An array of confines restricting this to a specific platform.
- #deps ⇒ LegacyFacter::Core::DirectedGraph readonly private
- #fact ⇒ Facter::Util::Fact readonly private
-
#fact_type ⇒ Symbol
readonly
private
The fact type of the aggregate resolution.
- #last_evaluated ⇒ String readonly
-
#name ⇒ Symbol
readonly
The name of the aggregate resolution.
Attributes included from LegacyFacter::Core::Resolvable
Instance Method Summary collapse
-
#<=>(other) ⇒ bool
private
Compares the weight of two aggregate facts.
-
#aggregate {|Hash<Symbol, Object>| ... } ⇒ Facter::Core::Aggregate
Define how all chunks should be combined.
-
#chunk(name, opts = {}, &block) ⇒ Facter::Core::Aggregate
Define a new chunk for the given aggregate.
-
#evaluate(&block) ⇒ String
private
Evaluates the given block.
-
#initialize(name, fact) ⇒ Facter::Util::Resolution
constructor
private
Create a new aggregated resolution mechanism.
-
#options(options) ⇒ nil
private
Sets options for the aggregate fact.
-
#resolution_type ⇒ Symbol
private
Returns the fact’s resolution type.
Methods included from LegacyFacter::Core::Resolvable
#flush, #limit, #on_flush, #value
Methods included from LegacyFacter::Core::Suitable
#confine, #has_weight, #suitable?, #weight
Constructor Details
#initialize(name, fact) ⇒ Facter::Util::Resolution
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.
Create a new aggregated resolution mechanism.
72 73 74 75 76 77 78 79 80 81 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 72 def initialize(name, fact) @name = name @fact = fact @confines = [] @chunks = {} @aggregate = nil @deps = LegacyFacter::Core::DirectedGraph.new end |
Instance Attribute Details
#confines ⇒ Array<LegacyFacter::Core::Confine> (readonly)
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.
Returns An array of confines restricting this to a specific platform.
47 48 49 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 47 def confines @confines end |
#deps ⇒ LegacyFacter::Core::DirectedGraph (readonly)
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.
39 40 41 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 39 def deps @deps end |
#fact ⇒ Facter::Util::Fact (readonly)
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.
54 55 56 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 54 def fact @fact end |
#fact_type ⇒ Symbol (readonly)
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.
Returns The fact type of the aggregate resolution.
32 33 34 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 32 def fact_type @fact_type end |
#last_evaluated ⇒ String (readonly)
61 62 63 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 61 def last_evaluated @last_evaluated end |
#name ⇒ Symbol (readonly)
Returns The name of the aggregate resolution.
25 26 27 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 25 def name @name end |
Instance Method Details
#<=>(other) ⇒ bool
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.
Compares the weight of two aggregate facts
88 89 90 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 88 def <=>(other) weight <=> other.weight end |
#aggregate {|Hash<Symbol, Object>| ... } ⇒ Facter::Core::Aggregate
Define how all chunks should be combined
182 183 184 185 186 187 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 182 def aggregate(&block) raise ArgumentError, "#{self.class.name}#aggregate requires a block" unless block_given? @aggregate = block self end |
#chunk(name, opts = {}, &block) ⇒ Facter::Core::Aggregate
Define a new chunk for the given aggregate
142 143 144 145 146 147 148 149 150 151 152 153 154 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 142 def chunk(name, opts = {}, &block) evaluate_params(name, &block) deps = Array(opts.delete(:require)) unless opts.empty? raise ArgumentError, "Unexpected options passed to #{self.class.name}#chunk: #{opts.keys.inspect}" end @deps[name] = deps @chunks[name] = block self end |
#evaluate(&block) ⇒ String
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.
Evaluates the given block
110 111 112 113 114 115 116 117 118 119 120 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 110 def evaluate(&block) if @last_evaluated msg = +"Already evaluated #{@name}" msg << " at #{@last_evaluated}" if msg.is_a? String msg << ', reevaluating anyways' log.warn msg end instance_eval(&block) @last_evaluated = block.source_location.join(':') end |
#options(options) ⇒ nil
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.
Sets options for the aggregate fact
97 98 99 100 101 102 103 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 97 def () = %i[name timeout weight fact_type] .each do |option_name| instance_variable_set("@#{option_name}", .delete(option_name)) if .key?(option_name) end raise ArgumentError, "Invalid aggregate options #{.keys.inspect}" unless .keys.empty? end |
#resolution_type ⇒ Symbol
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.
Returns the fact’s resolution type
194 195 196 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 194 def resolution_type :aggregate end |