Class: ForemanApi::Base
- Inherits:
-
Object
show all
- Defined in:
- lib/foreman_api/base.rb
Direct Known Subclasses
Resources::Architecture, Resources::Audit, Resources::AuthSourceLdap, Resources::Autosign, Resources::Bookmark, Resources::CommonParameter, Resources::ComputeResource, Resources::ConfigTemplate, Resources::Dashboard, Resources::Domain, Resources::Environment, Resources::FactValue, Resources::Home, Resources::Host, Resources::HostClass, Resources::Hostgroup, Resources::HostgroupClass, Resources::Image, Resources::Interface, Resources::Location, Resources::LookupKey, Resources::Medium, Resources::Model, Resources::OperatingSystem, Resources::Organization, Resources::OsDefaultTemplate, Resources::OverrideValue, Resources::Parameter, Resources::Plugin, Resources::Ptable, Resources::Puppetclass, Resources::Report, Resources::Role, Resources::Setting, Resources::SmartClassParameter, Resources::SmartProxy, Resources::SmartVariable, Resources::Statistic, Resources::Subnet, Resources::Task, Resources::TemplateCombination, Resources::TemplateKind, Resources::User, Resources::Usergroup
Constant Summary
collapse
- API_VERSION =
"2"
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(config, options = {}) ⇒ Base
Returns a new instance of Base.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/foreman_api/base.rb', line 33
def initialize(config, options = {})
config = config.dup
self.logger = config.delete(:logger)
= {
:content_type => 'application/json',
:accept => "application/json;version=#{API_VERSION}"
}
.merge!(config[:headers]) unless config[:headers].nil?
.merge!(options.delete(:headers)) unless options[:headers].nil?
resource_config = {
:user => config[:username],
:password => config[:password],
:oauth => config[:oauth],
:headers =>
}.merge(options)
@client = RestClient::Resource.new(config[:base_url], resource_config)
@config = config
end
|
Instance Attribute Details
#client ⇒ Object
Returns the value of attribute client.
31
32
33
|
# File 'lib/foreman_api/base.rb', line 31
def client
@client
end
|
#config ⇒ Object
Returns the value of attribute config.
31
32
33
|
# File 'lib/foreman_api/base.rb', line 31
def config
@config
end
|
#logger ⇒ Object
Returns the value of attribute logger.
31
32
33
|
# File 'lib/foreman_api/base.rb', line 31
def logger
@logger
end
|
Class Method Details
.doc ⇒ Object
81
82
83
|
# File 'lib/foreman_api/base.rb', line 81
def self.doc
raise NotImplementedError
end
|
.method_doc(method) ⇒ Object
89
90
91
|
# File 'lib/foreman_api/base.rb', line 89
def self.method_doc(method)
method_docs[method.to_s]
end
|
.validation_hash(method) ⇒ Object
85
86
87
|
# File 'lib/foreman_api/base.rb', line 85
def self.validation_hash(method)
validation_hashes[method.to_s]
end
|
Instance Method Details
#http_call(http_method, path, params = { }, headers = { }) ⇒ Object
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# File 'lib/foreman_api/base.rb', line 64
def http_call(http_method, path, params = { }, = { })
||= { }
args = [http_method]
if %w[post put].include?(http_method.to_s)
args << params.to_json
else
[:params] = params if params
end
logger.info "#{http_method.upcase} #{path}"
logger.debug "Params: #{params.inspect}"
logger.debug "Headers: #{.inspect}"
args << if
process_data client[path].send(*args)
end
|
55
56
57
58
59
60
61
62
|
# File 'lib/foreman_api/base.rb', line 55
def perform_call(method_name, params, )
method_doc = self.class.method_doc(method_name)
check_params params, :allowed => method_doc['params'].any?, :method => method_name
method_apis = method_doc['apis']
api = find_suitable_api_call(method_apis, params)
url, params = fill_params_in_url api['api_url'], params
return http_call(api['http_method'].downcase, url, params, )
end
|
#validate_params!(params, rules) ⇒ Object
93
94
95
96
97
98
99
100
101
102
103
104
|
# File 'lib/foreman_api/base.rb', line 93
def validate_params!(params, rules)
return unless params.is_a?(Hash)
invalid_keys = params.keys.map(&:to_s) - (rules.is_a?(Hash) ? rules.keys : rules)
raise ArgumentError, "Invalid keys: #{invalid_keys.join(", ")}" unless invalid_keys.empty?
if rules.is_a? Hash
rules.each do |key, sub_keys|
validate_params!(params[key], sub_keys) if params[key]
end
end
end
|