class OS::Puppet::Fencing::Classifier
Public Class Methods
new(config, facter_adapter)
click to toggle source
# File lib/fencing/classifier.rb, line 9 def initialize(config, facter_adapter) @config = config @facter = facter_adapter end
Public Instance Methods
assert_blocked(host_name, blocker)
click to toggle source
# File lib/fencing/classifier.rb, line 21 def assert_blocked(host_name, blocker) if !blocker Log.log("No blocker exists - returning") return end allowed_host = blocker.blocking_host_name return if !allowed_host Log.log("blocker not blocking #{allowed_host}") return if host_name.start_with?(allowed_host) fact_name = blocker.fact fact_value = @facter.lookup(allowed_host, fact_name) Log.log("Fact #{fact_name} on node #{allowed_host} has value #{fact_value}: expecting #{blocker.expected_value}") raise "cannot release #{host_name}" unless fact_value == blocker.expected_value Log.log("Fine - releasing node definition for #{host_name}") end
resolve_node(host_name)
click to toggle source
# File lib/fencing/classifier.rb, line 14 def resolve_node(host_name) Log.log("Looking up #{host_name}") node_config = @config.match_node(host_name) assert_blocked(host_name, node_config.blocker) node_config.node end