Project

General

Profile

Download (3.39 KB) Statistics
| Branch: | Tag: | Revision:
if RUBY_VERSION <= '1.8.7'
require 'rubygems'
end

require 'forwardable'
require 'json'
require 'logger'
require 'yaml'

module ForemanMaintain
require 'foreman_maintain/core_ext'
require 'foreman_maintain/concerns/logger'
require 'foreman_maintain/concerns/finders'
require 'foreman_maintain/concerns/metadata'
require 'foreman_maintain/concerns/scenario_metadata'
require 'foreman_maintain/concerns/system_helpers'
require 'foreman_maintain/concerns/hammer'
require 'foreman_maintain/top_level_modules'
require 'foreman_maintain/yaml_storage'
require 'foreman_maintain/config'
require 'foreman_maintain/detector'
require 'foreman_maintain/dependency_graph'
require 'foreman_maintain/param'
require 'foreman_maintain/feature'
require 'foreman_maintain/executable'
require 'foreman_maintain/check'
require 'foreman_maintain/procedure'
require 'foreman_maintain/scenario'
require 'foreman_maintain/runner'
require 'foreman_maintain/upgrade_runner'
require 'foreman_maintain/reporter'
require 'foreman_maintain/utils'
require 'foreman_maintain/error'

class << self
attr_accessor :config, :logger

LOGGER_LEVEL_MAPPING = {
'debug' => ::Logger::DEBUG,
'info' => ::Logger::INFO,
'warn' => ::Logger::WARN,
'error' => ::Logger::ERROR,
'fatal' => ::Logger::FATAL,
'unknown' => ::Logger::UNKNOWN
}.freeze

def setup(options = {})
# using a queue, we can log the messages which are generated before initializing logger
self.config = Config.new(options)
load_definitions
init_logger
end

def config_file
config.config_file
end

def load_definitions
# we need to add the load paths first, in case there is crossreferencing
# between the definitions directories
$LOAD_PATH.concat(config.definitions_dirs)
config.definitions_dirs.each do |definitions_dir|
file_paths = File.expand_path(File.join(definitions_dir, '**', '*.rb'))
Dir.glob(file_paths).each { |f| require f }
end
end

def cache
ObjectCache.instance
end

def detector
@detector ||= Detector.new
end

def available_features(*args)
detector.available_features(*args)
end

def available_scenarios(*args)
detector.available_scenarios(*args)
end

def available_checks(*args)
detector.available_checks(*args)
end

def available_procedures(*args)
detector.available_procedures(*args)
end

def init_logger
# Note - If timestamp added to filename then number of log files i.e second
# argument to Logger.new will not work as expected
filename = File.expand_path("#{config.log_dir}/foreman-maintain.log")
# convert size in KB to Bytes
log_fsize = config.log_file_size.to_i * 1024
@logger = Logger.new(filename, 10, log_fsize).tap do |logger|
logger.level = LOGGER_LEVEL_MAPPING[config.log_level] || Logger::DEBUG
logger.datetime_format = '%Y-%m-%d %H:%M:%S%z '
end
pickup_log_messages
end

def pickup_log_messages
return if config.pre_setup_log_messages.empty?
config.pre_setup_log_messages.each { |msg| logger.info msg }
config.pre_setup_log_messages.clear
end

def storage(label = :default)
ForemanMaintain::YamlStorage.load(label)
rescue => e
logger.error "Invalid Storage label i.e #{label}. Error - #{e.message}"
end
end
end
    (1-1/1)