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')