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) ⇒ 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.
65 66 67 68 69 70 71 72 73 74 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 65 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
81 82 83 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 81 def <=>(other) weight <=> other.weight end |
#aggregate {|Hash<Symbol, Object>| ... } ⇒ Facter::Core::Aggregate
Define how all chunks should be combined
167 168 169 170 171 172 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 167 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
127 128 129 130 131 132 133 134 135 136 137 138 139 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 127 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
103 104 105 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 103 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
90 91 92 93 94 95 96 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 90 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
179 180 181 |
# File 'lib/facter/custom_facts/core/aggregate.rb', line 179 def resolution_type :aggregate end |