Class: Kafo::Configuration
- Inherits:
-
Object
- Object
- Kafo::Configuration
- Defined in:
- lib/kafo/configuration.rb
Constant Summary collapse
- DEFAULT =
{ :log_dir => '/var/log/kafo', :log_level => 'info', :no_prefix => false, :mapping => {}, :answer_file => '/etc/kafo/kafo.yaml', :installer_dir => '.', :modules_dir => './modules', :default_values_dir => '/tmp', :colors => Configuration.colors_possible? }
Instance Attribute Summary collapse
-
#answer_file ⇒ Object
readonly
Returns the value of attribute answer_file.
-
#config_file ⇒ Object
readonly
Returns the value of attribute config_file.
Class Method Summary collapse
Instance Method Summary collapse
-
#[](key) ⇒ Object
if a value is a true we return empty hash because we have no specific options for a particular puppet module.
- #app ⇒ Object
- #config_header ⇒ Object
- #configure_application ⇒ Object
-
#initialize(file, persist = true) ⇒ Configuration
constructor
A new instance of Configuration.
- #module_enabled?(mod) ⇒ Boolean
- #modules ⇒ Object
- #params_default_values ⇒ Object
- #save_configuration(configuration) ⇒ Object
- #store(data, file = nil) ⇒ Object
Constructor Details
#initialize(file, persist = true) ⇒ Configuration
Returns a new instance of Configuration.
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/kafo/configuration.rb', line 26 def initialize(file, persist = true) @config_file = file @persist = persist configure_application @logger = KafoConfigure.logger @answer_file = app[:answer_file] begin @data = YAML.load_file(@answer_file) rescue Errno::ENOENT => e puts "No answers file at #{@answer_file} found, can not continue" KafoConfigure.exit(:no_answer_file) end @config_dir = File.dirname(@config_file) end |
Instance Attribute Details
#answer_file ⇒ Object (readonly)
Returns the value of attribute answer_file.
8 9 10 |
# File 'lib/kafo/configuration.rb', line 8 def answer_file @answer_file end |
#config_file ⇒ Object (readonly)
Returns the value of attribute config_file.
8 9 10 |
# File 'lib/kafo/configuration.rb', line 8 def config_file @config_file end |
Class Method Details
.colors_possible? ⇒ Boolean
10 11 12 |
# File 'lib/kafo/configuration.rb', line 10 def self.colors_possible? !`which tput 2> /dev/null`.empty? && `tput colors`.to_i > 0 end |
Instance Method Details
#[](key) ⇒ Object
if a value is a true we return empty hash because we have no specific options for a particular puppet module
92 93 94 95 |
# File 'lib/kafo/configuration.rb', line 92 def [](key) value = @data[key] value.is_a?(Hash) ? value : {} end |
#app ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/kafo/configuration.rb', line 56 def app @app ||= begin begin configuration = YAML.load_file(@config_file) rescue => e configuration = {} end result = DEFAULT.merge(configuration || {}) result[:password] ||= PasswordManager.new.password result end end |
#config_header ⇒ Object
102 103 104 105 106 |
# File 'lib/kafo/configuration.rb', line 102 def config_header files = [app[:config_header_file], File.join(KafoConfigure.gem_root, '/config/config_header.txt')].compact file = files.select { |f| File.exists?(f) }.first @config_header ||= file.nil? ? '' : File.read(file) end |
#configure_application ⇒ Object
50 51 52 53 54 |
# File 'lib/kafo/configuration.rb', line 50 def configure_application result = app save_configuration(result) result end |
#module_enabled?(mod) ⇒ Boolean
97 98 99 100 |
# File 'lib/kafo/configuration.rb', line 97 def module_enabled?(mod) value = @data[mod.is_a?(String) ? mod : mod.name] !!value || value.is_a?(Hash) end |
#modules ⇒ Object
70 71 72 |
# File 'lib/kafo/configuration.rb', line 70 def modules @modules ||= @data.keys.map { |mod| PuppetModule.new(mod).parse } end |
#params_default_values ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/kafo/configuration.rb', line 74 def params_default_values @params_default_values ||= begin @logger.info "Parsing default values from puppet modules..." command = PuppetCommand.new("#{includes} dump_values(#{params})").append('2>&1').command @logger.debug `#{command}` unless $?.exitstatus == 0 log = app[:log_dir] + '/' + app[:log_name] puts "Could not get default values, check log file at #{log} for more information" @logger.error "Could not get default values, cannot continue" KafoConfigure.exit(:defaults_error) end @logger.info "... finished" YAML.load_file(File.join(KafoConfigure.config.app[:default_values_dir], 'default_values.yaml')) end end |
#save_configuration(configuration) ⇒ Object
43 44 45 46 47 48 |
# File 'lib/kafo/configuration.rb', line 43 def save_configuration(configuration) return true unless @persist FileUtils.touch @config_file File.chmod 0600, @config_file File.open(@config_file, 'w') { |file| file.write(format(YAML.dump(configuration))) } end |
#store(data, file = nil) ⇒ Object
108 109 110 111 112 113 |
# File 'lib/kafo/configuration.rb', line 108 def store(data, file = nil) filename = file || answer_file FileUtils.touch filename File.chmod 0600, filename File.open(filename, 'w') { |file| file.write(config_header + format(YAML.dump(data))) } end |