104 lines
2.6 KiB
Ruby
104 lines
2.6 KiB
Ruby
require 'yaml'
|
|
|
|
module Noop
|
|
class Task
|
|
# @return [Pathname]
|
|
def file_name_facts
|
|
return @file_name_facts if @file_name_facts
|
|
self.file_name_facts = Noop::Utils.path_from_env 'SPEC_FACTS_NAME'
|
|
return @file_name_facts if @file_name_facts
|
|
self.file_name_facts = Noop::Config.default_facts_file_name
|
|
@file_name_facts
|
|
end
|
|
alias :facts :file_name_facts
|
|
|
|
# @return [Pathname]
|
|
def file_name_facts=(value)
|
|
return if value.nil?
|
|
@file_name_facts = Noop::Utils.convert_to_path value
|
|
@file_name_facts = @file_name_facts.sub_ext '.yaml' if @file_name_facts.extname == ''
|
|
end
|
|
alias :facts= :file_name_facts=
|
|
|
|
# @return [Pathname]
|
|
def file_base_facts
|
|
file_name_facts.basename.sub_ext ''
|
|
end
|
|
|
|
# @return [Pathname]
|
|
def file_path_facts
|
|
Noop::Config.dir_path_facts + file_name_facts
|
|
end
|
|
|
|
# @return [true,false]
|
|
def file_present_facts?
|
|
return false unless file_path_facts
|
|
file_path_facts.readable?
|
|
end
|
|
|
|
# @return [Pathname]
|
|
def file_name_facts_override
|
|
file_name_task_extension
|
|
end
|
|
|
|
# @return [Pathname]
|
|
def file_path_facts_override
|
|
Noop::Config.dir_path_facts_override + file_name_facts_override
|
|
end
|
|
|
|
# @return [true,false]
|
|
def file_present_facts_override?
|
|
return unless file_path_facts_override
|
|
file_path_facts_override.readable?
|
|
end
|
|
|
|
# @return [Array<String>]
|
|
def facts_hierarchy
|
|
file_paths = []
|
|
file_paths << file_path_facts.to_s if file_present_facts?
|
|
file_paths << file_path_facts_override.to_s if file_present_facts_override?
|
|
file_paths
|
|
end
|
|
|
|
# @return [void]
|
|
def add_host_names(facts_data)
|
|
hostname = hiera_lookup 'node_name'
|
|
fqdn = hiera_lookup 'fqdn'
|
|
facts_data[:hostname] = hostname if hostname
|
|
facts_data[:l3_fqdn_hostname] = hostname if hostname
|
|
facts_data[:fqdn] = fqdn if fqdn
|
|
facts_data[:puppetversion] = Puppet.version
|
|
end
|
|
|
|
# @return [Hash]
|
|
def facts_data
|
|
facts_data = {}
|
|
facts_hierarchy.each do |file_path|
|
|
begin
|
|
file_data = YAML.load_file file_path
|
|
next unless file_data.is_a? Hash
|
|
file_data = Noop::Utils.symbolize_hash_to_keys file_data
|
|
facts_data.merge! file_data
|
|
rescue
|
|
next
|
|
end
|
|
end
|
|
add_host_names facts_data
|
|
facts_data
|
|
end
|
|
alias :ubuntu_facts :facts_data
|
|
alias :centos_facts :facts_data
|
|
|
|
# @return [String,nil]
|
|
def hostname
|
|
facts_data[:hostname]
|
|
end
|
|
|
|
# @return [String,nil]
|
|
def fqdn
|
|
facts_data[:fqdn]
|
|
end
|
|
|
|
end
|
|
end
|