class CloudstackClient::Client

Attributes

api[R]
options[RW]

Public Class Methods

new(api_url, api_key, secret_key, options = {}) click to toggle source
Calls superclass method
   # File lib/cloudstack_client/client.rb
13 def initialize(api_url, api_key, secret_key, options = {})
14   super(api_url, api_key, secret_key, options)
15   define_api_methods unless options[:no_api_methods]
16 end

Public Instance Methods

define_api_methods() click to toggle source
   # File lib/cloudstack_client/client.rb
18 def define_api_methods
19   @api = Api.new(@options)
20   @api.commands.each do |name, command|
21     method_name = camel_case_to_underscore(command["name"]).to_sym
22 
23     define_singleton_method(method_name) do |args = {}, options = {}|
24       params = { "command" => command["name"] }
25 
26       args.each do |k, v|
27         k = k.to_s.gsub("_", "")
28         if v && @api.command_supports_param?(command["name"], k)
29           params[k] = v
30         end
31       end
32 
33       unless @api.all_required_params?(command["name"], params)
34         raise ParameterError, @api.missing_params_msg(command["name"])
35       end
36 
37       if command["isasync"] == false || options[:sync]
38         send_request(params)
39       else
40         send_async_request(params)
41       end
42     end
43   end
44 end