class Elesai::CLI
Constants
- COMMANDS
Public Class Methods
new(arguments)
click to toggle source
# File lib/elesai/cli.rb, line 17 def initialize(arguments) @arguments = arguments @whoami = File.basename($PROGRAM_NAME).to_sym @options = { :debug => false, :megacli => 'MegaCli' } @action = nil @elesai = nil end
Public Instance Methods
run()
click to toggle source
# File lib/elesai/cli.rb, line 26 def run begin parsed_options? @log = Elesai::Logger.instance.log @log.level = Log4r::INFO unless @options[:debug] arguments_valid? options_valid? process_options process_arguments process_command rescue => e #ArgumentError, OptionParser::MissingArgument, Senedsa::SendNsca::ConfigurationError => e if @options[:debug] output_message "#{e.class}: #{e.message}\n #{e.backtrace.join("\n ")}",1 else output_message e.message,1 end end end
Protected Instance Methods
arguments_valid?()
click to toggle source
# File lib/elesai/cli.rb, line 78 def arguments_valid? true end
options_valid?()
click to toggle source
# File lib/elesai/cli.rb, line 82 def options_valid? true end
output_message(message, exitstatus=nil)
click to toggle source
# File lib/elesai/cli.rb, line 98 def output_message(message, exitstatus=nil) m = (! exitstatus.nil? and exitstatus > 0) ? "%s: error: %s" % [ID, message] : message Syslog.open("elesai", Syslog::LOG_PID | Syslog::LOG_CONS) { |s| s.err "error: #{message}" } unless @options[:debug] $stderr.write "#{m}\n" if STDIN.tty? exit exitstatus unless exitstatus.nil? end
parsed_options?()
click to toggle source
# File lib/elesai/cli.rb, line 50 def parsed_options? opts = OptionParser.new opts.banner = "Usage: #{ID} [options] <action> [options]" opts.separator "" opts.separator "Actions: (<action> -h displays help for specific action)" opts.separator " show Displays component information" opts.separator " check Performs health checks" opts.separator "" opts.separator "General options:" opts.on('-m', '--megacli MEGACLI', String, "Path to MegaCli binary") { |megacli| @options[:megacli] = megacli } opts.on('-f', '--fake DIRECTORY', String, "Path to directory with Megacli output") { |dir| @options[:fake] = dir } opts.on('-d', '--debug', "Enable debug mode") { @options[:debug] = true} opts.on('-a', '--about', "Display #{ID} information") { output_message ABOUT, 0 } opts.on('-V', '--version', "Display #{ID} version") { output_message VERSION, 0 } opts.on_tail('--help', "Show this message") { @options[:HELP] = true } opts.order!(@arguments) unless @whoami == :check_lsi output_message opts, 0 if (@arguments.size == 0 and @whoami != :check_lsi) or @options[:HELP] @action = @whoami == :check_lsi ? :check : @arguments.shift.to_sym case @action when :show then @elesai = Show.new(@arguments,@options) when :check then @elesai = Check.new(@arguments,@options) else raise OptionParser::InvalidArgument, "invalid action #@action" end end
process_arguments()
click to toggle source
# File lib/elesai/cli.rb, line 90 def process_arguments true end
process_command()
click to toggle source
# File lib/elesai/cli.rb, line 94 def process_command @elesai.exec end
process_options()
click to toggle source
# File lib/elesai/cli.rb, line 86 def process_options true end