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.
-
#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) ⇒ Aggregate
constructor
A new instance of Aggregate.
-
#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) ⇒ Aggregate
Returns a new instance of Aggregate.
56 57 58 59 60 61 62 63 64 65 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 56 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 |
#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
72 73 74 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 72 def <=>(other) weight <=> other.weight end |
#aggregate {|Hash<Symbol, Object>| ... } ⇒ Facter::Core::Aggregate
Define how all chunks should be combined
158 159 160 161 162 163 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 158 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
118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 118 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
94 95 96 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 94 def evaluate(&block) instance_eval(&block) 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
81 82 83 84 85 86 87 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 81 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
170 171 172 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 170 def resolution_type :aggregate end |