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  |