lib/kafo/kafo_configure.rb in kafo-0.0.10 vs lib/kafo/kafo_configure.rb in kafo-0.0.11

- old
+ new

@@ -1,6 +1,7 @@ # encoding: UTF-8 +require 'facter' require 'pty' require 'clamp' require 'kafo/exceptions' require 'kafo/configuration' require 'kafo/logger' @@ -12,21 +13,23 @@ class KafoConfigure < Clamp::Command include StringHelper attr_reader :logger class << self - attr_accessor :config, :root_dir, :config_file, :gem_root, :temp_config_file + attr_accessor :config, :root_dir, :config_file, :gem_root, :temp_config_file, :modules_dir end def initialize(*args) self.class.config_file = config_file self.class.config = Configuration.new(self.class.config_file) self.class.root_dir = File.expand_path(self.class.config.app[:installer_dir]) + modules_dir = self.class.config.app[:module_dir] || (self.class.config.app[:installer_dir] + '/modules') + self.class.modules_dir = File.expand_path(modules_dir) self.class.gem_root = File.join(File.dirname(__FILE__), '../../') Logger.setup @logger = Logging.logger.root - set_env + check_env super set_parameters set_options end @@ -93,11 +96,12 @@ error_codes = { :invalid_system => 20, :invalid_values => 21, :manifest_error => 22, :no_answer_file => 23, :unknown_module => 24, - :defaults_error => 25 } + :defaults_error => 25, + :wrong_hostname => 26} if error_codes.has_key? code return error_codes[code] else raise "Unknown code #{code}" end @@ -206,16 +210,14 @@ exit(exit_code) end def puppet_log(line) method, message = case - when line =~ /^Error:(.*)/i + when line =~ /^Error:(.*)/i || line =~ /^Err:(.*)/i [:error, $1] - when line =~ /^Warning:(.*)/i + when line =~ /^Warning:(.*)/i || line =~ /^Notice:(.*)/i [:warn, $1] - when line =~ /^Notice:(.*)/i - [:warn, $1] when line =~ /^Info:(.*)/i [:info, $1] when line =~ /^Debug:(.*)/i [:debug, $1] else @@ -226,13 +228,20 @@ def unset params.select { |p| p.module.enabled? && p.value_set.nil? } end - def set_env - # Puppet tries to determine FQDN from /etc/resolv.conf and we do NOT want this behavior - facter_hostname = Socket.gethostname - ENV['FACTER_fqdn'] = facter_hostname + def check_env + # Check that facter actually has a value that matches the hostname. + # This should always be true for facter >= 1.7 + fqdn_exit("'facter fqdn' does not match 'hostname -f'") if Facter.fqdn != `hostname -f`.chomp + # Every FQDN should have at least one dot + fqdn_exit("Invalid FQDN: #{Facter.fqdn}, check your hostname") unless Facter.fqdn.include?('.') + end + + def fqdn_exit(message) + logger.error message + exit(:wrong_hostname) end def config_file return CONFIG_FILE if defined?(CONFIG_FILE) && File.exists?(CONFIG_FILE) return '/etc/kafo/kafo.yaml' if File.exists?('/etc/kafo/kafo.yaml')