class Moob::Idrac6
Constants
- INFO_FIELDS
Public Class Methods
new(hostname, options = {})
click to toggle source
Calls superclass method
Moob::BaseLom::new
# File lib/moob/idrac6.rb, line 26 def initialize hostname, options = {} super hostname, options @username ||= 'root' @password ||= 'calvin' end
Public Instance Methods
authenticate()
click to toggle source
# File lib/moob/idrac6.rb, line 32 def authenticate @session.handle_cookies nil start = @session.get 'start.html' raise ResponseError.new start unless start.status == 200 auth = @session.post 'data/login', "user=#{@username}&password=#{@password}" raise ResponseError.new auth unless auth.status == 200 auth.body =~ /<authResult>([^<]+)<\/authResult>/ raise 'Cannot find auth result' unless $& raise "Auth failed with: \"#{auth.body}\"" unless $1 == "0" return self end
boot_on(level)
click to toggle source
# File lib/moob/idrac6.rb, line 90 def boot_on level req = @session.post "data?set=vmBootOnce:1,firstBootDevice:#{level}", {} raise ResponseError.new req unless req.status == 200 return nil end
detect()
click to toggle source
# File lib/moob/idrac6.rb, line 53 def detect begin home = @session.get 'login.html' home.body =~ /Integrated Dell Remote Access Controller 6/ rescue false end end
drac_set_params(params)
click to toggle source
# File lib/moob/idrac6.rb, line 170 def drac_set_params params params.each do |p,v| req = @session.post "data?set=#{p}:#{v}", {} raise ResponseError.new req unless req.status == 200 end return nil end
enable_ipmi()
click to toggle source
# File lib/moob/idrac6.rb, line 166 def enable_ipmi drac_set_params({ 'ipmiLAN' => 1 }) end
fetch_console_preview()
click to toggle source
# File lib/moob/idrac6.rb, line 181 def fetch_console_preview imgfile = Tempfile.new('console_preview') refreshreq = @session.get "data?get=consolepreview[auto%20#{Time.now.utc.to_i}]", {} raise ResponseError.new req unless refreshreq.status == 200 req = @session.get_file "capconsole/scapture0.png?#{Time.now.utc.to_i}", imgfile.path raise ResponseError.new req unless req.status == 200 content_type = req.headers['Content-type'] || req.headers['Content-Type'] raise "Unexpected content type #{content_type}, expected 'image/' prefix" unless content_type =~ /image\// return imgfile, req.headers end
get_infos(keys)
click to toggle source
# File lib/moob/idrac6.rb, line 142 def get_infos keys infos = @session.post "data?get=#{keys.join(',')}", {} raise ResponseError.new infos unless infos.status == 200 raise "The status isn't OK" unless infos.body =~ /<status>ok<\/status>/ return Hash[keys.collect do |k| if infos.body =~ /<#{k}>(.*?)<\/#{k}>/ [k, $1] else [k, nil] end end] end
infos()
click to toggle source
# File lib/moob/idrac6.rb, line 138 def infos return JSON.pretty_generate get_infos INFO_FIELDS end
jnlp()
click to toggle source
# File lib/moob/idrac6.rb, line 63 def jnlp idx = @session.get 'index.html' raise ResponseError.new idx unless idx.status == 200 idx.body =~ /var DnsName += +"([^"]+)"/ raise "Couldn't find the DNS name -- is the iDRAC running firmware 1.50 or higher?" unless $& dns_name = $1 idx.body =~ /var sysNameStr += +"([^"]+)"/ raise "Couldn't find the system name" unless $& sys_name = $1 # eg PowerEdge R610 # eg escaped "idrac-A1BCD2E, PowerEdge R610, User:root" title = CGI::escape "#{dns_name}, #{sys_name}, User:#{@username}" viewer = @session.get "viewer.jnlp(#{@hostname}@0@#{title}@#{Time.now.to_i * 1000})" raise ResponseError.new viewer unless viewer.status == 200 return viewer.body end
logout()
click to toggle source
# File lib/moob/idrac6.rb, line 47 def logout out = @session.get 'data/logout' raise ResponseError.new out unless out.status == 200 return self end
power_control(action)
click to toggle source
# File lib/moob/idrac6.rb, line 84 def power_control action req = @session.post "data?set=pwState:#{action}", {} raise ResponseError.new req unless req.status == 200 return nil end
pstatus()
click to toggle source
# File lib/moob/idrac6.rb, line 126 def pstatus case get_infos(['pwState'])['pwState'] when '0' return :off when '1' return :on else return nil end end
set_params()
click to toggle source
# File lib/moob/idrac6.rb, line 158 def set_params unless @params raise "Params are not set!" end drac_set_params @params end