class Fog::Compute::OpenNebula::Mock

Public Class Methods

data() click to toggle source
# File lib/fog/opennebula/compute.rb, line 37
def self.data
  @data ||= Hash.new do |hash, key|
    hash[key] = {
      "vms" => [
        {
          "onevm_object" => "",
          "status" => "RUNNING",
          "state" => "3",
          "id" => 4,
          "uuid" => "5",
          "gid" => "5",
          "name" => "MockVM",
          "user" => "MockUser",
          "group" => "MockGroup",
          "cpu" => "2",
          "memory" => "1024",
          "mac" => "00:01:02:03:04:05",
          "ip" => "1.1.1.1"
        }
      ],
      "image_pool" => [
        {}
      ],
      "template_pool" => [
        {
          "content" => %Q{
            NAME = mock-vm
            MEMORY = 512
            VCPU = 1
            CPU = 1
          },
          "id" => 1,
          "name" => 'mock',
          "cpu" => 1,
          "vcpu" => 1,
          "memory" => 512,
          "sched_requirements" => 'CPUSPEED > 1000',
          "sched_rank" => 'FREECPU',
          "sched_ds_requirements" => "NAME=mock",
          "sched_ds_rank" => "FREE_MB",
          "disk" => {},
          "nic" => {},
          "os" => {
            'ARCH' => 'x86_64'
          },
          "graphics" => {},
          "raw" => %|["DATA"=>"<cpu match='exact'><model fallback='allow'>core2duo</model></cpu>", "TYPE"=>"kvm"]|,
          "context" => {},
          "user_variables" => {}
        }
      ]
    }
  end
end
new(options={}) click to toggle source
# File lib/fog/opennebula/compute.rb, line 97
def initialize(options={})
  @opennebula_endpoint = options[:opennebula_endpoint]
  @opennebula_username = options[:opennebula_username]
  @opennebula_password = options[:opennebula_password]

  begin
    require "opennebula"
  rescue LoadError
    raise Fog::Errors::LoadError, "To use OpenNebula provider, you must load 'opennebula' gem"
  end
end
reset() click to toggle source
# File lib/fog/opennebula/compute.rb, line 92
def self.reset
  @data = nil
end

Public Instance Methods

client() click to toggle source
# File lib/fog/opennebula/compute.rb, line 109
def client
  return @client
end
data() click to toggle source
# File lib/fog/opennebula/compute.rb, line 113
def data
  self.class.data[@opennebula_endpoint]
end
get_vnc_console(server_id, console_type) click to toggle source

Get a vnc console for an instance.

Parameters

  • server_id <~String> - The ID of the server.

  • console_type <~String> - Type of vnc console to get ('novnc' or 'xvpvnc').

Returns

  • response <~Excon::Response>:

    • body <~Hash>:

      • url <~String>

      • type <~String>

# File lib/fog/opennebula/requests/compute/get_vnc_console.rb, line 16
def get_vnc_console(server_id, console_type)
  body = {
      :type => "novnc",
      :proxy_port => "29876",
      :password => "null",
      :token => "3n32dtwpsdj5jkug3b4w",
      :proxy_host => "example.com"
  }
end
list_groups(filter={}) click to toggle source
# File lib/fog/opennebula/requests/compute/list_groups.rb, line 43
def list_groups(filter={})
  groups = []
  net1 = mock_group "1", 'net1'
  net2 = mock_group "2", 'fogtest'

  grouppool = [net1, net2]
  grouppool.each do |group| 
    filter_missmatch = false

    unless (filter.empty?)
      filter.each do |k,v|
        if group["#{k.to_s.upcase}"] && group["#{k.to_s.upcase}"] != v.to_s
          filter_missmatch = true
          break
        end
      end 
      next if filter_missmatch
    end 
    groups << {:id => group["ID"], :name => group["NAME"]}
  end
  groups
end
list_networks(filters={}) click to toggle source
# File lib/fog/opennebula/requests/compute/list_networks.rb, line 52
def list_networks(filters={})
  net1 = mock_network 'fogtest'
  net2 = mock_network 'net2'
  [net1, net2]
end
list_vms(filter = {}) click to toggle source
# File lib/fog/opennebula/requests/compute/list_vms.rb, line 55
def list_vms(filter = {})
  vms = []
  self.data['vms'].each do |vm|
    if filter[:id].nil?
      vms << vm
    elsif filter[:id] == vm['id']
      vms << vm
    end
  end
  vms
end
mock_group(id, name) click to toggle source
# File lib/fog/opennebula/requests/compute/list_groups.rb, line 66
def mock_group id, name
  {
    "ID"         => id,
    "NAME"       => name,
    "UID"        => "5",
    "GID"        => "5",
    "DESCRIPTION" => "netDescription",
    "VLAN"       => "5"
  }
end
mock_network(name) click to toggle source
# File lib/fog/opennebula/requests/compute/list_networks.rb, line 58
def mock_network name
  {
    :id              => "5",
    :name            => name,
    :uid             => "5",
    :uname       => "mock",
    :gid             => "5",
    :description => "netDescription",
    :vlan              => "5"
  }
end
reset_data() click to toggle source
# File lib/fog/opennebula/compute.rb, line 117
def reset_data
  self.class.data.delete(@opennebula_endpoint)
end
template_pool(filter = { }) click to toggle source
# File lib/fog/opennebula/requests/compute/template_pool.rb, line 109
def template_pool(filter = { })
  nic1 = Mock_nic.new
  nic1.vnet = networks.first

  self.data['template_pool']
  self.data['template_pool'].each do |tmpl|
    tmpl['nic'][0] = nic1
  end
  self.data['template_pool']
end
vm_allocate(attr={ }) click to toggle source
# File lib/fog/opennebula/requests/compute/vm_allocate.rb, line 70
def vm_allocate(attr={ })
  response = Excon::Response.new
  response.status = 200

  id = rand(1000)
  ids = []

  self.data['vms'].each do |vm|
    ids << vm['id']
    if vm['id'] == id
      while ids.include?(id)
        id = rand(1000)
      end
      break
    end
  end

  data = {}
  data['id'] = id
                                data['flavor'] = attr[:flavor]
                                data['name'] = attr[:name]
  data['state'] = 'RUNNING'
  data['status'] = 3
  self.data['vms'] << data
                                data
end
vm_destroy(id) click to toggle source
# File lib/fog/opennebula/requests/compute/vm_destroy.rb, line 17
def vm_destroy(id)
  response = Excon::Response.new
  response.status = 200

  self.data['vms'].each do |vm|
    if vm['id'] == id
      self.data['vms'].delete(vm)
    end
  end
  true
end
vm_disk_snapshot(id, disk_id, image_name) click to toggle source
# File lib/fog/opennebula/requests/compute/vm_disk_snapshot.rb, line 23
def vm_disk_snapshot(id, disk_id, image_name)
end
vm_resume(id) click to toggle source
# File lib/fog/opennebula/requests/compute/vm_resume.rb, line 16
def vm_resume(id)
  self.data['vms'].each do |vm|
    if id == vm['id']
      vm['state'] = 'RUNNING'
      vm['status'] = 3
    end
  end
end
vm_suspend(id) click to toggle source
# File lib/fog/opennebula/requests/compute/vm_suspend.rb, line 16
def vm_suspend(id)
  response = Excon::Response.new
  response.status = 200

  self.data['vms'].each do |vm|
    if id == vm['id']
      vm['state'] = 'LCM_INIT'
      vm['status'] = 5
    end
  end

end