module ForemanMaintain
Constants
- LOGGER_LEVEL_MAPPING
- VERSION
Attributes
config[RW]
logger[RW]
Public Class Methods
allowed_available_procedures(*args)
click to toggle source
# File lib/foreman_maintain.rb, line 138 def allowed_available_procedures(*args) procedures = detector.available_procedures(*args) procedures.select(&:advanced_run?) end
available_checks(*args)
click to toggle source
# File lib/foreman_maintain.rb, line 130 def available_checks(*args) detector.available_checks(*args) end
available_features(*args)
click to toggle source
# File lib/foreman_maintain.rb, line 122 def available_features(*args) detector.available_features(*args) end
available_procedures(*args)
click to toggle source
# File lib/foreman_maintain.rb, line 134 def available_procedures(*args) detector.available_procedures(*args) end
available_scenarios(*args)
click to toggle source
# File lib/foreman_maintain.rb, line 126 def available_scenarios(*args) detector.available_scenarios(*args) end
cache()
click to toggle source
# File lib/foreman_maintain.rb, line 106 def cache ObjectCache.instance end
command_name()
click to toggle source
# File lib/foreman_maintain.rb, line 178 def command_name pkg_and_cmd_name[1] end
config_file()
click to toggle source
# File lib/foreman_maintain.rb, line 88 def config_file config.config_file end
configure_highline()
click to toggle source
# File lib/foreman_maintain.rb, line 102 def configure_highline HighLine.use_color = config.use_color? end
detector()
click to toggle source
# File lib/foreman_maintain.rb, line 110 def detector @detector ||= Detector.new end
enable_maintenance_module()
click to toggle source
# File lib/foreman_maintain.rb, line 200 def enable_maintenance_module return unless el8? maintenance_module = 'satellite-maintenance:el8' package_manager = ForemanMaintain.package_manager if package_manager.module_exists?(maintenance_module) && !package_manager.module_enabled?(maintenance_module) puts "\nEnabling #{maintenance_module} module" package_manager.enable_module(maintenance_module) end end
init_logger()
click to toggle source
# File lib/foreman_maintain.rb, line 143 def init_logger # convert size in KB to Bytes 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::INFO logger.datetime_format = '%Y-%m-%d %H:%M:%S%z ' end pickup_log_messages end
load_definitions()
click to toggle source
# File lib/foreman_maintain.rb, line 92 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).sort.each { |f| require f } end end
main_package_name()
click to toggle source
# File lib/foreman_maintain.rb, line 213 def main_package_name el? ? 'rubygem-foreman_maintain' : 'ruby-foreman-maintain' end
package_manager()
click to toggle source
# File lib/foreman_maintain/package_manager.rb, line 6 def self.package_manager if el? ForemanMaintain::PackageManager::Dnf.new elsif debian_or_ubuntu? ForemanMaintain::PackageManager::Apt.new else raise 'No supported package manager was found' end end
perform_self_upgrade()
click to toggle source
# File lib/foreman_maintain.rb, line 182 def perform_self_upgrade package_name, command = pkg_and_cmd_name puts "Checking for new version of #{package_name}..." enable_maintenance_module package_manager = ForemanMaintain.package_manager if package_manager.update_available?(main_package_name) puts "\nUpdating #{package_name} package." 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()
click to toggle source
# File lib/foreman_maintain.rb, line 153 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()
click to toggle source
# File lib/foreman_maintain.rb, line 169 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()
click to toggle source
# File lib/foreman_maintain.rb, line 114 def refresh_features @detector = Detector.new end
reporter()
click to toggle source
# File lib/foreman_maintain.rb, line 118 def reporter @reporter ||= ForemanMaintain::Reporter::CLIReporter.new end
repository_manager()
click to toggle source
# File lib/foreman_maintain/repository_manager.rb, line 5 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()
click to toggle source
# File lib/foreman_maintain.rb, line 73 def set_home_environment ENV['HOME'] ||= '/root' end
setup(options = {})
click to toggle source
# File lib/foreman_maintain.rb, line 62 def setup(options = {}) set_home_environment # using a queue, we can log the messages which are generated before initializing logger self.config = Config.new(options) configure_highline load_definitions init_logger update_path end
storage(label = :default)
click to toggle source
# File lib/foreman_maintain.rb, line 159 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()
click to toggle source
Appending PATH with expected paths needed for commands we run
# File lib/foreman_maintain.rb, line 78 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()
click to toggle source
# File lib/foreman_maintain.rb, line 165 def upgrade_in_progress storage[:upgrade_target_version] end