The connect method will create a connection object based the provider type passed in If provider is left blank the function will use the first available provider
# File lib/rubyipmi.rb, line 11 def self.connect(user, pass, host, provider="any",debug=false) # use this variable to reduce cmd calls installed = false # use the first available provider if provider == "any" if is_provider_installed?("freeipmi") provider = "freeipmi" installed = true elsif is_provider_installed?("ipmitool") provider = "ipmitool" installed = true else raise "No IPMI provider is installed, please install freeipmi or ipmitool" end end # If the provider is available create a connection object if installed or is_provider_installed?(provider) if provider == "freeipmi" @conn = Rubyipmi::Freeipmi::Connection.new(user, pass, host, debug) elsif provider == "ipmitool" @conn = Rubyipmi::Ipmitool::Connection.new(user,pass,host, debug) else raise "Incorrect provider given, must use freeipmi or ipmitool" end else # Can't find the provider command line tool, maybe try other provider? raise "The IPMI provider: #{provider} is not installed" end end
# File lib/rubyipmi.rb, line 45 def self.connection return @conn if @conn raise "No Connection available, please use the connect method" end
gets data from the bmc device and puts in a hash for diagnostics
# File lib/rubyipmi.rb, line 93 def self.get_diag(user, pass, host) data = {} if Rubyipmi.is_provider_installed?('freeipmi') @freeconn = Rubyipmi::connect(user, pass, host, 'freeipmi') if @freeconn puts "Retrieving freeipmi data" data['freeipmi'] = @freeconn.get_diag end end if Rubyipmi.is_provider_installed?('ipmitool') @ipmiconn = Rubyipmi::connect(user, pass, host, 'ipmitool') if @ipmiconn puts "Retrieving ipmitool data" data['ipmitool'] = @ipmiconn.get_diag end end return data end
Return true or false if the provider is available
# File lib/rubyipmi.rb, line 60 def self.is_provider_installed?(provider) case provider when "freeipmi" cmdpath = locate_command('ipmipower') when "ipmitool" cmdpath = locate_command('ipmitool') else raise "Invalid BMC provider type" end # return false if command was not found return ! cmdpath.nil? end
method used to find the command which also makes it easier to mock with
# File lib/rubyipmi.rb, line 51 def self.locate_command(commandname) location = `which #{commandname}`.strip if not $?.success? location = nil end return location end
returns true if any of the providers are installed
# File lib/rubyipmi.rb, line 78 def self.provider_installed? providers_installed?.length > 0 end
Generated with the Darkfish Rdoc Generator 2.