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