class Fog::Compute::OpenNebula::Mock

Attributes

client[R]

Public Class Methods

data() click to toggle source
# File lib/fog/opennebula/compute.rb, line 39
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' => %(
            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 99
def initialize(options = {})
  @opennebula_endpoint = options[:opennebula_endpoint]
  @opennebula_username = options[:opennebula_username]
  @opennebula_password = options[:opennebula_password]
  require 'opennebula'
end
reset() click to toggle source
# File lib/fog/opennebula/compute.rb, line 94
def self.reset
  @data = nil
end

Public Instance Methods

data() click to toggle source
# File lib/fog/opennebula/compute.rb, line 108
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 20
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 47
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.to_s] && group[k.to_s.upcase.to_s] != 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 55
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 61
def list_vms(filter = {})
  vms = []
  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 70
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 61
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 112
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 85
def template_pool(_filter = {})
  nic1 = Mock_nic.new
  nic1.vnet = networks.first

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

  id = rand(1000)
  ids = []

  data['vms'].each do |vm|
    ids << vm['id']
    next unless vm['id'] == id

    id = rand(1000) while ids.include?(id)
    break
  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 23
def vm_destroy(id)
  response = Excon::Response.new
  response.status = 200

  data['vms'].each do |vm|
    data['vms'].delete(vm) if vm['id'] == id
  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 25
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 20
def vm_resume(id)
  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 20
def vm_suspend(id)
  response = Excon::Response.new
  response.status = 200

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