class Moob::Supermicro
Public Class Methods
new(hostname, options = {})
click to toggle source
Calls superclass method
Moob::BaseLom::new
# File lib/moob/supermicro.rb, line 5 def initialize hostname, options = {} super hostname, options @username ||= 'ADMIN' @password ||= 'ADMIN' begin @ip = Socket.getaddrinfo(hostname, nil)[0][3] rescue raise "Couldn't resolve \"#{hostname}\"" end @session.base_url = "#{@transport}://#{@ip}/" end
Public Instance Methods
authenticate()
click to toggle source
# File lib/moob/supermicro.rb, line 17 def authenticate @session.handle_cookies nil auth = @session.post 'cgi/login.cgi', "name=#{@username}&pwd=#{@password}" raise ResponseError.new auth unless auth.status == 200 return self end
detect()
click to toggle source
# File lib/moob/supermicro.rb, line 26 def detect begin home = @session.get '/' home.body =~ /META NAME=\"ATEN International Co Ltd\.\"/ rescue false end end
jnlp()
click to toggle source
# File lib/moob/supermicro.rb, line 71 def jnlp viewer = @session.get 'cgi/url_redirect.cgi?url_name=&url_type=jwsk' raise ResponseError.new viewer unless viewer.status == 200 return viewer.body end
pcycle()
click to toggle source
# File lib/moob/supermicro.rb, line 52 def pcycle; power_action "(1,2)"; end
poff()
click to toggle source
# File lib/moob/supermicro.rb, line 50 def poff; power_action "(1,0)"; end
pon()
click to toggle source
# File lib/moob/supermicro.rb, line 51 def pon; power_action "(1,1)"; end
power_action(action)
click to toggle source
# File lib/moob/supermicro.rb, line 35 def power_action action time_s = Time.now.strftime("%a %b %d %Y %H:%M:%S") req = @session.get "cgi/ipmi.cgi?POWER_INFO.XML=" + CGI::escape(action) + "&time_stamp=" + CGI::escape(time_s) raise ResponseError.new req unless req.status == 200 unless req.body =~ /POWER_INFO/ raise 'The answer looks wrong' end return nil end
preset()
click to toggle source
# File lib/moob/supermicro.rb, line 53 def preset; power_action "(1,3)"; end
pstatus()
click to toggle source
# File lib/moob/supermicro.rb, line 57 def pstatus time_s = Time.now.strftime("%a %b %d %Y %H:%M:%S") status = @session.get "cgi/ipmi.cgi?POWER_INFO.XML=(0%2C0)&time_stamp=" + CGI::escape(time_s) raise ResponseError.new status unless status.status == 200 raise 'Couldn\'t read the state' unless status.body =~ /POWER STATUS=\"([A-Z]+)\"/ case $1 when 'OFF' return :off when 'ON' return :on end end
shutdown()
click to toggle source
# File lib/moob/supermicro.rb, line 54 def shutdown; power_action "(1,5)"; end