Class: IcingaApi::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/icinga_api/request.rb

Direct Known Subclasses

Host, HostGroup, Service

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Attribute Details

#connectionObject

Returns the value of attribute connection.



3
4
5
# File 'lib/icinga_api/request.rb', line 3

def connection
  @connection
end

Class Method Details

.boolean_request(connection, target, filter, field) ⇒ Object



40
41
42
# File 'lib/icinga_api/request.rb', line 40

def self.boolean_request(connection, target, filter, field)
  integer_request(connection, target, filter, field) == 1
end

.float_request(connection, target, filter, field) ⇒ Object



35
36
37
# File 'lib/icinga_api/request.rb', line 35

def self.float_request(connection, target, filter, field)
  string_request(connection, target, filter, field).to_f
end

.integer_request(connection, target, filter, field) ⇒ Object



30
31
32
# File 'lib/icinga_api/request.rb', line 30

def self.integer_request(connection, target, filter, field)
  string_request(connection, target, filter, field).to_i
end

.request(connection, target, filter, columns) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/icinga_api/request.rb', line 5

def self.request(connection, target, filter, columns)
  # prepare post data
  data = Hash.new
  data[:authkey] = connection.data[:authkey]
  data[:target] = target
  data[:filters_json] = filter.to_json if filter
  columns.each_with_index do |col, i|
    data["columns[#{i}]".to_sym] = col
  end

  # post data
  url = connection.data[:url]
  uri = URI("#{url}/web/api/authkey=#{data[:authkey]}/json")
  res = Net::HTTP.post_form(uri, data)
  raise "error on API query" unless res.code.to_i == 200
  JSON.parse(res.body, { symbolize_names: true })
end

.string_request(connection, target, filter, field) ⇒ Object



24
25
26
27
# File 'lib/icinga_api/request.rb', line 24

def self.string_request(connection, target, filter, field)
  rc = request(connection, target, filter, [ field ])
  rc[:result][0][field]
end

.time_request(connection, target, filter, field) ⇒ Object



45
46
47
# File 'lib/icinga_api/request.rb', line 45

def self.time_request(connection, target, filter, field)
  Time.parse(string_request(connection, target, filter, field))
end