Module: ForemanMaintain
- Extended by:
- Concerns::PrimaryChecks
- 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/bash.rb,
lib/foreman_maintain/utils/backup.rb,
lib/foreman_maintain/yaml_storage.rb,
lib/foreman_maintain/upgrade_runner.rb,
lib/foreman_maintain/utils/response.rb,
lib/foreman_maintain/concerns/hammer.rb,
lib/foreman_maintain/concerns/logger.rb,
lib/foreman_maintain/package_manager.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/os_facts.rb,
lib/foreman_maintain/concerns/reporter.rb,
lib/foreman_maintain/concerns/upstream.rb,
lib/foreman_maintain/concerns/versions.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/plugin_command.rb,
lib/foreman_maintain/repository_manager.rb,
lib/foreman_maintain/cli/content_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/concerns/downstream.rb,
lib/foreman_maintain/utils/curl_response.rb,
lib/foreman_maintain/cli/advanced_command.rb,
lib/foreman_maintain/cli/packages_command.rb,
lib/foreman_maintain/concerns/pulp_common.rb,
lib/foreman_maintain/utils/command_runner.rb,
lib/foreman_maintain/utils/disk/io_device.rb,
lib/foreman_maintain/utils/system_helpers.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/primary_checks.rb,
lib/foreman_maintain/concerns/system_helpers.rb,
lib/foreman_maintain/concerns/system_service.rb,
lib/foreman_maintain/runner/stored_execution.rb,
lib/foreman_maintain/cli/self_upgrade_command.rb,
lib/foreman_maintain/concerns/directory_marker.rb,
lib/foreman_maintain/concerns/scenario_metadata.rb,
lib/foreman_maintain/cli/transform_clamp_options.rb,
lib/foreman_maintain/cli/maintenance_mode_command.rb,
lib/foreman_maintain/cli/advanced/procedure_command.rb,
lib/foreman_maintain/cli/advanced/procedure/run_command.rb,
lib/foreman_maintain/concerns/firewall/maintenance_mode.rb,
lib/foreman_maintain/cli/advanced/prebuild_bash_completion.rb,
lib/foreman_maintain/cli/advanced/procedure/by_tag_command.rb,
lib/foreman_maintain/concerns/foreman_and_katello_version_map.rb,
lib/foreman_maintain/concerns/firewall/iptables_maintenance_mode.rb,
lib/foreman_maintain/concerns/firewall/nftables_maintenance_mode.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, PackageManager, RepositoryManager, 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 =
'1.2.3'.freeze
Class Attribute Summary collapse
Class Method Summary
collapse
package_name, validate_downstream_packages
Class Attribute Details
.config ⇒ Object
Returns the value of attribute config.
55
56
57
|
# File 'lib/foreman_maintain.rb', line 55
def config
@config
end
|
.logger ⇒ Object
Returns the value of attribute logger.
55
56
57
|
# File 'lib/foreman_maintain.rb', line 55
def logger
@logger
end
|
Class Method Details
.allowed_available_procedures(*args) ⇒ Object
137
138
139
140
|
# File 'lib/foreman_maintain.rb', line 137
def allowed_available_procedures(*args)
procedures = detector.available_procedures(*args)
procedures.select(&:advanced_run?)
end
|
.available_checks(*args) ⇒ Object
129
130
131
|
# File 'lib/foreman_maintain.rb', line 129
def available_checks(*args)
detector.available_checks(*args)
end
|
.available_features(*args) ⇒ Object
121
122
123
|
# File 'lib/foreman_maintain.rb', line 121
def available_features(*args)
detector.available_features(*args)
end
|
.available_procedures(*args) ⇒ Object
133
134
135
|
# File 'lib/foreman_maintain.rb', line 133
def available_procedures(*args)
detector.available_procedures(*args)
end
|
.available_scenarios(*args) ⇒ Object
125
126
127
|
# File 'lib/foreman_maintain.rb', line 125
def available_scenarios(*args)
detector.available_scenarios(*args)
end
|
.cache ⇒ Object
105
106
107
|
# File 'lib/foreman_maintain.rb', line 105
def cache
ObjectCache.instance
end
|
.config_file ⇒ Object
91
92
93
|
# File 'lib/foreman_maintain.rb', line 91
def config_file
config.config_file
end
|
.detector ⇒ Object
109
110
111
|
# File 'lib/foreman_maintain.rb', line 109
def detector
@detector ||= Detector.new
end
|
.init_logger ⇒ Object
142
143
144
145
146
147
148
149
150
|
# File 'lib/foreman_maintain.rb', line 142
def init_logger
log_fsize = config.log_file_size.to_i * 1024
@logger = Logger.new(config.log_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_definitions ⇒ Object
95
96
97
98
99
100
101
102
103
|
# File 'lib/foreman_maintain.rb', line 95
def load_definitions
$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
|
.main_package_name ⇒ Object
191
192
193
|
# File 'lib/foreman_maintain.rb', line 191
def main_package_name
'rubygem-foreman_maintain'
end
|
.package_manager ⇒ Object
177
178
179
180
181
182
183
184
185
186
187
188
189
|
# File 'lib/foreman_maintain.rb', line 177
def perform_self_upgrade
package_name, command = pkg_and_cmd_name
puts "Checking for new version of #{package_name}..."
if ForemanMaintain.package_manager.update_available?(main_package_name)
puts "\nUpdating #{package_name} package."
ForemanMaintain.package_manager.update(main_package_name, :assumeyes => true)
puts "\nThe #{package_name} package successfully updated."\
"\nRe-run #{command} with required options!"
exit 75
end
puts "Nothing to update, can't find new version of #{package_name}."
end
|
.pickup_log_messages ⇒ Object
152
153
154
155
156
|
# File 'lib/foreman_maintain.rb', line 152
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
|
.pkg_and_cmd_name ⇒ Object
168
169
170
171
172
173
174
175
|
# File 'lib/foreman_maintain.rb', line 168
def pkg_and_cmd_name
instance_feature = ForemanMaintain.available_features(:label => :instance).first
if instance_feature.downstream
return instance_feature.downstream.fm_pkg_and_cmd_name
end
[main_package_name, 'foreman-maintain']
end
|
.refresh_features ⇒ Object
113
114
115
|
# File 'lib/foreman_maintain.rb', line 113
def refresh_features
@detector = Detector.new
end
|
.repository_manager ⇒ Object
4
5
6
7
8
9
10
11
12
|
# File 'lib/foreman_maintain/repository_manager.rb', line 4
def self.repository_manager
@repository_manager ||= if el?
ForemanMaintain::RepositoryManager::El.new
elsif debian_or_ubuntu?
raise 'Not implemented!'
else
raise 'No supported repository manager was found'
end
end
|
.set_home_environment ⇒ Object
76
77
78
|
# File 'lib/foreman_maintain.rb', line 76
def set_home_environment
ENV['HOME'] ||= '/root'
end
|
.setup(options = {}) ⇒ Object
66
67
68
69
70
71
72
73
74
|
# File 'lib/foreman_maintain.rb', line 66
def setup(options = {})
set_home_environment
self.config = Config.new(options)
load_definitions
init_logger
update_path
end
|
.storage(label = :default) ⇒ Object
158
159
160
161
162
|
# File 'lib/foreman_maintain.rb', line 158
def storage(label = :default)
ForemanMaintain::YamlStorage.load(label)
rescue StandardError => e
logger.error "Invalid Storage label i.e #{label}. Error - #{e.message}"
end
|
.update_path ⇒ Object
Appending PATH with expected paths needed for commands we run
81
82
83
84
85
86
87
88
89
|
# File 'lib/foreman_maintain.rb', line 81
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
|
.upgrade_in_progress ⇒ Object
164
165
166
|
# File 'lib/foreman_maintain.rb', line 164
def upgrade_in_progress
storage[:upgrade_target_version]
end
|