module ForemanMaintain::Concerns::SystemHelpers
Public Class Methods
included(klass)
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 13 def self.included(klass) klass.extend(self) end
Public Instance Methods
check_max_version(name, maximal_version)
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 42 def check_max_version(name, maximal_version) check_version(name) do |current_version| version(maximal_version) >= current_version end end
check_min_version(name, minimal_version)
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 36 def check_min_version(name, minimal_version) check_version(name) do |current_version| current_version >= version(minimal_version) end end
command_present?(command_name)
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 53 def command_present?(command_name) execute?("command -v #{command_name}") end
directory_empty?(dir)
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 166 def directory_empty?(dir) Dir.entries(dir).size <= 2 end
execute(command, options = {})
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 73 def execute(command, options = {}) execute_runner(command, options).output end
execute!(command, options = {})
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 64 def execute!(command, options = {}) command_runner = execute_runner(command, options) if command_runner.success? command_runner.output else raise command_runner.execution_error end end
execute?(command, options = {})
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 48 def execute?(command, options = {}) execute(command, options) $CHILD_STATUS.success? end
execute_runner(command, options = {})
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 57 def execute_runner(command, options = {}) command_runner = Utils::CommandRunner.new(logger, command, options) execution.puts '' if command_runner.interactive? && respond_to?(:execution) command_runner.run command_runner end
execute_with_status(command, options = {})
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 77 def execute_with_status(command, options = {}) command_runner = execute_runner(command, options) [command_runner.exit_status, command_runner.output] end
file_exists?(filename)
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 82 def file_exists?(filename) File.exist?(filename) end
file_nonzero?(filename)
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 86 def file_nonzero?(filename) File.exist?(filename) && !File.zero?(filename) end
find_dir_containing_file(directory, target)
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 170 def find_dir_containing_file(directory, target) result = nil Find.find(directory) do |path| result = File.dirname(path) if File.basename(path) == target end result end
find_package(name)
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 90 def find_package(name) package_manager.find_installed_package(name) end
find_symlinks(dir_path)
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 160 def find_symlinks(dir_path) cmd = "find '#{dir_path}' -maxdepth 1 -type l" result = execute(cmd).strip result.split(/\n/) end
foreman_plugin_name(plugin)
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 194 def foreman_plugin_name(plugin) plugin = plugin.tr('_', '-') if debian_or_ubuntu? ruby_prefix + plugin end
format_shell_args(options = {})
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 156 def format_shell_args(options = {}) options.map { |shell_optn, val| " #{shell_optn} #{shellescape(val)}" }.join end
hammer_package()
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 214 def hammer_package hammer_prefix = if debian_or_ubuntu? 'hammer-cli' else 'hammer_cli' end ruby_prefix + hammer_prefix end
hammer_plugin_name(plugin)
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 209 def hammer_plugin_name(plugin) plugin = plugin.tr('_', '-') if debian_or_ubuntu? [hammer_package, plugin].join(debian_or_ubuntu? ? '-' : '_') end
hostname()
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 94 def hostname execute('hostname -f') end
package_manager()
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 178 def package_manager ForemanMaintain.package_manager end
package_version(name)
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 121 def package_version(name) ver = if el? '%{VERSION}' elsif debian_or_ubuntu? '${VERSION}' end pkg = package_manager.find_installed_package(name, ver) version(pkg) unless pkg.nil? end
packages_action(action, packages, options = {})
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 102 def packages_action(action, packages, options = {}) options.validate_options!(:assumeyes, :options, :download_only, :enabled_repos) case action when :install package_manager.install(packages, :assumeyes => options[:assumeyes]) when :update package_manager.update( packages, :assumeyes => options[:assumeyes], :download_only => options[:download_only], :enabled_repos => options[:enabled_repos] ) when :remove package_manager.remove(packages, :assumeyes => options[:assumeyes]) else raise ArgumentError, "Unexpected action #{action} expected #{expected_actions.inspect}" end end
parse_csv(data)
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 131 def parse_csv(data) parsed_data = CSV.parse(data) header = parsed_data.first parsed_data[1..].map do |row| Hash[*header.zip(row).flatten(1)] end end
parse_json(json_string)
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 139 def parse_json(json_string) JSON.parse(json_string) rescue StandardError nil end
proxy_plugin_name(plugin)
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 199 def proxy_plugin_name(plugin) if debian_or_ubuntu? plugin = plugin.tr('_', '-') proxy_plugin_prefix = 'smart-proxy-' else proxy_plugin_prefix = 'smart_proxy_' end ruby_prefix + proxy_plugin_prefix + plugin end
repository_manager()
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 182 def repository_manager ForemanMaintain.repository_manager end
ruby_prefix()
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 186 def ruby_prefix if debian_or_ubuntu? 'ruby-' else 'rubygem-' end end
server?()
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 98 def server? find_package('foreman') end
shellescape(string)
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 145 def shellescape(string) Shellwords.escape(string) end
systemd_installed?()
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 32 def systemd_installed? File.exist?('/run/systemd/system/') end
version(value)
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 149 def version(value) # packages versions, especially on Debian, sometimes include a + or a ~, # but Gem::Version can't handle that. value.gsub!(/[+~]/, '-') Version.new(value) end
Private Instance Methods
check_version(name) { |current_version| ... }
click to toggle source
# File lib/foreman_maintain/concerns/system_helpers.rb, line 225 def check_version(name) current_version = package_version(name) if current_version yield current_version end end