Module: ForemanMaintain

Defined in:
lib/foreman_maintain.rb,
lib/foreman_maintain/cli.rb,
lib/foreman_maintain/check.rb,
lib/foreman_maintain/error.rb,
lib/foreman_maintain/param.rb,
lib/foreman_maintain/config.rb,
lib/foreman_maintain/runner.rb,
lib/foreman_maintain/context.rb,
lib/foreman_maintain/feature.rb,
lib/foreman_maintain/version.rb,
lib/foreman_maintain/cli/base.rb,
lib/foreman_maintain/core_ext.rb,
lib/foreman_maintain/detector.rb,
lib/foreman_maintain/reporter.rb,
lib/foreman_maintain/scenario.rb,
lib/foreman_maintain/procedure.rb,
lib/foreman_maintain/csv_parser.rb,
lib/foreman_maintain/executable.rb,
lib/foreman_maintain/utils/backup.rb,
lib/foreman_maintain/yaml_storage.rb,
lib/foreman_maintain/upgrade_runner.rb,
lib/foreman_maintain/concerns/hammer.rb,
lib/foreman_maintain/concerns/logger.rb,
lib/foreman_maintain/concerns/finders.rb,
lib/foreman_maintain/dependency_graph.rb,
lib/foreman_maintain/runner/execution.rb,
lib/foreman_maintain/utils/disk/stats.rb,
lib/foreman_maintain/concerns/metadata.rb,
lib/foreman_maintain/concerns/reporter.rb,
lib/foreman_maintain/utils/disk/device.rb,
lib/foreman_maintain/cli/backup_command.rb,
lib/foreman_maintain/cli/health_command.rb,
lib/foreman_maintain/cli/restore_command.rb,
lib/foreman_maintain/cli/service_command.rb,
lib/foreman_maintain/cli/upgrade_command.rb,
lib/foreman_maintain/utils/curl_response.rb,
lib/foreman_maintain/cli/advanced_command.rb,
lib/foreman_maintain/utils/command_runner.rb,
lib/foreman_maintain/utils/disk/io_device.rb,
lib/foreman_maintain/reporter/cli_reporter.rb,
lib/foreman_maintain/utils/disk/nil_device.rb,
lib/foreman_maintain/concerns/base_database.rb,
lib/foreman_maintain/concerns/system_helpers.rb,
lib/foreman_maintain/runner/stored_execution.rb,
lib/foreman_maintain/concerns/scenario_metadata.rb,
lib/foreman_maintain/cli/transform_clamp_options.rb,
lib/foreman_maintain/cli/advanced/procedure_command.rb,
lib/foreman_maintain/cli/advanced/procedure/run_command.rb,
lib/foreman_maintain/cli/advanced/procedure/by_tag_command.rb,
lib/foreman_maintain/cli/advanced/procedure/abstract_by_tag_command.rb,
lib/foreman_maintain/cli/advanced/procedure/abstract_procedure_command.rb

Defined Under Namespace

Modules: Cli, Concerns, CoreExt, Error, Utils Classes: CSVParser, Check, Config, Context, DependencyGraph, Detector, Executable, Feature, HammerConfigurationError, Param, Procedure, Reporter, Runner, Scenario, UpgradeRunner, YamlStorage

Constant Summary collapse

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

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configObject

Returns the value of attribute config.



40
41
42
# File 'lib/foreman_maintain.rb', line 40

def config
  @config
end

.loggerObject

Returns the value of attribute logger.



40
41
42
# File 'lib/foreman_maintain.rb', line 40

def logger
  @logger
end

Class Method Details

.allowed_available_procedures(*args) ⇒ Object



112
113
114
115
# File 'lib/foreman_maintain.rb', line 112

def allowed_available_procedures(*args)
  procedures = detector.available_procedures(*args)
  procedures.select(&:advanced_run?)
end

.available_checks(*args) ⇒ Object



104
105
106
# File 'lib/foreman_maintain.rb', line 104

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

.available_features(*args) ⇒ Object



96
97
98
# File 'lib/foreman_maintain.rb', line 96

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

.available_procedures(*args) ⇒ Object



108
109
110
# File 'lib/foreman_maintain.rb', line 108

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

.available_scenarios(*args) ⇒ Object



100
101
102
# File 'lib/foreman_maintain.rb', line 100

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

.cacheObject



84
85
86
# File 'lib/foreman_maintain.rb', line 84

def cache
  ObjectCache.instance
end

.config_fileObject



70
71
72
# File 'lib/foreman_maintain.rb', line 70

def config_file
  config.config_file
end

.detectorObject



88
89
90
# File 'lib/foreman_maintain.rb', line 88

def detector
  @detector ||= Detector.new
end

.init_loggerObject



117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/foreman_maintain.rb', line 117

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

.load_definitionsObject



74
75
76
77
78
79
80
81
82
# File 'lib/foreman_maintain.rb', line 74

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

.pickup_log_messagesObject



130
131
132
133
134
# File 'lib/foreman_maintain.rb', line 130

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

.reporterObject



92
93
94
# File 'lib/foreman_maintain.rb', line 92

def reporter
  @reporter ||= ForemanMaintain::Reporter::CLIReporter.new
end

.setup(options = {}) ⇒ Object



51
52
53
54
55
56
57
# File 'lib/foreman_maintain.rb', line 51

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
  update_path
end

.storage(label = :default) ⇒ Object



136
137
138
139
140
# File 'lib/foreman_maintain.rb', line 136

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

.update_pathObject

Appending PATH with expected paths needed for commands we run



60
61
62
63
64
65
66
67
68
# File 'lib/foreman_maintain.rb', line 60

def update_path
  paths = ['/sbin']
  existing_paths = ENV['PATH'].split(':')
  paths -= existing_paths
  if paths.any?
    paths = paths.join(':').chomp(':')
    ENV['PATH'] = "#{ENV['PATH']}:#{paths}"
  end
end