class ProxmoxRb::QemuKvm

Public Class Methods

new(ticket, node, id) click to toggle source
# File lib/proxmox-rb/qemu_kvm.rb, line 3
def initialize(ticket, node, id)
  @node = node
  @csrf = ticket.csrf
  @id = id
  @ip = ticket.host
  @ticket = ticket.ticket
  @headers = { 'Cookie' => "PVEAuthCookie=#{@ticket}", "CSRFPreventionToken" => @csrf }
end

Public Instance Methods

config() click to toggle source
# File lib/proxmox-rb/qemu_kvm.rb, line 12
def config
  http = Net::HTTP.new(@ip, '8006')
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  @qemu ||= http.get('/api2/json/nodes/' + @node + '/' + @id + '/config', @headers).body
  JSON.parse( @qemu )['data']
end
delete() click to toggle source
# File lib/proxmox-rb/qemu_kvm.rb, line 36
def delete
  puts "[unlinking] #{@id}"
  http = Net::HTTP.new(@ip, '8006')
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  req = Net::HTTP::Delete.new('/api2/json/nodes/' + @node + '/' + @id, @headers)
  resp = http.request(req)
  puts resp.body
end
delete_snapshot(name) click to toggle source
# File lib/proxmox-rb/qemu_kvm.rb, line 77
def delete_snapshot(name)
  puts "[deleting snapshot #{name}] #{@id}"
  begin
    params = { snapname: name }
    http = Net::HTTP.new(@ip, '8006')
    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE
    request = Net::HTTP::Delete.new('/api2/json/nodes/' + @node + '/' + @id + '/snapshot/' + name, @headers)
    resp = http.request(request)
    puts resp
  rescue => e
    puts "retrying #{e}"
    sleep 1
    retry
  end
end
mac() click to toggle source
# File lib/proxmox-rb/qemu_kvm.rb, line 28
def mac
  begin
    config['net0'].split('=')[1].split(',')[0]
  rescue
    ''
  end
end
name() click to toggle source
# File lib/proxmox-rb/qemu_kvm.rb, line 24
def name
  config['name'] rescue nil
end
node() click to toggle source
# File lib/proxmox-rb/qemu_kvm.rb, line 20
def node
  @node
end
shutdown() click to toggle source
# File lib/proxmox-rb/qemu_kvm.rb, line 46
def shutdown
  puts "[stopping] #{@id}"
  http = Net::HTTP.new(@ip, '8006')
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  resp = http.post('/api2/json/nodes/' + @node + '/' + @id + '/status/shutdown', nil, @headers)
end
snapshot(name) click to toggle source
# File lib/proxmox-rb/qemu_kvm.rb, line 63
def snapshot(name)
  puts "[snapshotting] #{@id}"
  params = { snapname: name, vmstate: 1 }
  http = Net::HTTP.new(@ip, '8006')
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  request = Net::HTTP::Post.new('/api2/json/nodes/' + @node + '/' + @id + '/snapshot')
  request.add_field("Cookie", "PVEAuthCookie=#{@ticket}")
  request.add_field("CSRFPreventionToken", @csrf)
  request.set_form_data(params)
  resp = http.request(request)
  puts resp
end
start() click to toggle source
# File lib/proxmox-rb/qemu_kvm.rb, line 95
def start
  puts "[starting] #{@id}"
  http = Net::HTTP.new(@ip, '8006')
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  resp = http.post('/api2/json/nodes/' + @node + '/' + @id + '/status/start', nil, @headers)
end
stop() click to toggle source
# File lib/proxmox-rb/qemu_kvm.rb, line 54
def stop
  puts "[stopping] #{@id}"
  http = Net::HTTP.new(@ip, '8006')
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  resp = http.post('/api2/json/nodes/' + @node + '/' + @id + '/status/stop', nil, @headers)
end