1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/lib/fog/linode/requests/compute/avail_kernels.rb
Phil Ross cb96248d6c Update the Linode avail_kernels request and Kernel model.
- Remove the kernelId parameter that is no longer supported by the API.
- Add support for the new isXen and isKVM parameters.
- Add is_xen, is_kvm and is_pvops to the Kernel model.
2015-10-26 20:35:01 +00:00

62 lines
1.8 KiB
Ruby

module Fog
module Compute
class Linode
class Real
# Get available kernels
#
# ==== Parameters
# * options<~Hash>
# * isXen<~Boolean> Show or hide Xen compatible kernels
# * isKVM<~Boolean> Show or hide KVM compatible kernels
#
# ==== Returns
# * response<~Excon::Response>:
# * body<~Array>:
# TODO: docs
def avail_kernels(options={})
# avail.kernels used to accept a kernelId parameter (now removed)
raise Fog::Errors::Error.new('avail_kernels no longer accepts a kernelId parameter') unless !options || options.is_a?(Hash)
request(
:expects => 200,
:method => 'GET',
:query => { :api_action => 'avail.kernels' }.merge!(options || {})
)
end
end
class Mock
def avail_kernels(options={})
# avail.kernels used to accept a kernelId parameter (now removed)
raise Fog::Errors::Error.new('avail_kernels no longer accepts a kernelId parameter') unless !options || options.is_a?(Hash)
response = Excon::Response.new
response.status = 200
body = {
"ERRORARRAY" => [],
"ACTION" => "avail.kernels"
}
mock_kernels = []
10.times do
kernel_id = rand(1..200)
mock_kernels << create_mock_kernel(kernel_id)
end
response.body = body.merge("DATA" => mock_kernels)
response
end
private
def create_mock_kernel(kernel_id)
{
"ISPVOPS" => 1,
"ISXEN" => 1,
"ISKVM" => 1,
"KERNELID" => kernel_id,
"LABEL" => "Latest 3.0 (3.0.18-linode43)"
}
end
end
end
end
end