harry’s memorandum

おれおれメモ

XenserverのAPIをrubyで叩く xenapi.rb も便利だった

これの続きです。xenap.rbをrequireして、あとはxenserverのapidocumentをみればすんなりいけるよね。

ディスクの使用状況を取得するサンプル。
require 'xenapi'

class Net::HTTP
  alias_method :old_initialize, :initialize
  def initialize(*args)
    old_initialize(*args)
    @ssl_context = OpenSSL::SSL::SSLContext.new
    @ssl_context.verify_mode = OpenSSL::SSL::VERIFY_NONE
  end
end

# first create a connection and login
session = XenAPI::Session.new('https://xenserver.host.com')

begin
  session.login_with_password('root', 'password')

  srs = session.SR.get_all
  srs.each {|sr|
    record = session.SR.get_record(sr)
    if record["type"] == "lvm"
      label = record["name_label"]
      physical = record["physical_size"].to_i / ( 1024*1024*1024)
      used = record["physical_utilisation"].to_i / ( 1024*1024*1024)
      virtual  = record["virtual_allocation"].to_i / ( 1024*1024*1024)
      usage =(used * 100) / physical

      puts "name label: #{label}"
      puts "size: #{usage}%(#{used} GB used)"
      puts "usage: #{physical} GB"
      puts "virtual allocation: #{virtual} GB"
    end
  }
ensure
  session.logout
end

こんな感じで。

$ ruby foo.rb
name label: Local storage
size: 56%(1584 GB used)
usage: 2786 GB
virtual allocation: 996 GB