Class: Rubix::Connection
- Inherits:
-
Object
- Object
- Rubix::Connection
- Includes:
- Logs
- Defined in:
- lib/rubix/connection.rb
Overview
Wraps and abstracts the process of connecting to a Zabbix API.
Constant Summary collapse
- COOKIE_NAME =
The name of the cookie used by the Zabbix web application. Used when emulating a request from a browser.
'zbx_sessionid'
- CONTENT_TYPE =
The content type header to send when emulating a browser.
'multipart/form-data'
Instance Attribute Summary collapse
-
#auth ⇒ String
readonly
API for this session.
-
#last_response ⇒ Rubix::Response
readonly
The last response from the Zabbix API – useful for logging purposes.
-
#password ⇒ String
readonly
The password of the Zabbix account used to authenticate.
-
#request_id ⇒ Fixnum
readonly
The ID of the next request that will be sent.
-
#server ⇒ Net::HTTP
readonly
The HTTP server backing the Zabbix API.
-
#uri ⇒ URI
The URI for the Zabbix API.
-
#username ⇒ String
readonly
The username of the Zabbix account used to authenticate.
Instance Method Summary collapse
-
#authorize! ⇒ Object
Force the connection to execute an authorization request and renew (or set) the authorization token.
-
#authorized? ⇒ Boolean
Has this connection already been authorized and provided with a authorization token from the Zabbix API?.
-
#initialize(uri_or_string, username = nil, password = nil) ⇒ Connection
constructor
Set up a connection to a Zabbix API.
-
#request(method, params) ⇒ Rubix::Response
Send a request to the Zabbix API.
-
#web_request(verb, path, data = {}) ⇒ Net::HTTP::Response
Send a request to the Zabbix web application.
Methods included from Logs
#debug, #error, #fatal, #info, #warn
Constructor Details
#initialize(uri_or_string, username = nil, password = nil) ⇒ Connection
Set up a connection to a Zabbix API.
The uri_or_string
can be either a string or a URI
object.
The username
and password
provided must correspond to an existing Zabbix account with API access enabled.
55 56 57 58 59 60 |
# File 'lib/rubix/connection.rb', line 55 def initialize uri_or_string, username=nil, password=nil self.uri = uri_or_string @username = username || uri.user @password = password || uri.password @request_id = 0 end |
Instance Attribute Details
#auth ⇒ String (readonly)
API for this session.
30 31 32 |
# File 'lib/rubix/connection.rb', line 30 def auth @auth end |
#last_response ⇒ Rubix::Response (readonly)
Returns the last response from the Zabbix API – useful for logging purposes.
42 43 44 |
# File 'lib/rubix/connection.rb', line 42 def last_response @last_response end |
#password ⇒ String (readonly)
Returns the password of the Zabbix account used to authenticate.
39 40 41 |
# File 'lib/rubix/connection.rb', line 39 def password @password end |
#request_id ⇒ Fixnum (readonly)
Returns the ID of the next request that will be sent.
33 34 35 |
# File 'lib/rubix/connection.rb', line 33 def request_id @request_id end |
#server ⇒ Net::HTTP (readonly)
Returns the HTTP server backing the Zabbix API.
26 27 28 |
# File 'lib/rubix/connection.rb', line 26 def server @server end |
#uri ⇒ URI
Returns The URI for the Zabbix API.
23 24 25 |
# File 'lib/rubix/connection.rb', line 23 def uri @uri end |
#username ⇒ String (readonly)
Returns the username of the Zabbix account used to authenticate.
36 37 38 |
# File 'lib/rubix/connection.rb', line 36 def username @username end |
Instance Method Details
#authorize! ⇒ Object
Force the connection to execute an authorization request and renew (or set) the authorization token.
111 112 113 114 115 116 |
# File 'lib/rubix/connection.rb', line 111 def response = Response.new(till_response { send_api_request() }) raise AuthenticationError.new("Could not authenticate with Zabbix API at #{uri}: #{response.}") if response.error? raise AuthenticationError.new("Malformed response from Zabbix API: #{response.body}") unless response.string? @auth = response.result end |
#authorized? ⇒ Boolean
Has this connection already been authorized and provided with a authorization token from the Zabbix API?
105 106 107 |
# File 'lib/rubix/connection.rb', line 105 def !auth.nil? end |
#request(method, params) ⇒ Rubix::Response
Send a request to the Zabbix API. Will return a Rubix::Response object.
Documentation on what methods and parameters are available can be found in the Zabbix API documentation
Rubix.connection.request 'host.get', 'filter' => { 'host' => 'foobar' }
74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/rubix/connection.rb', line 74 def request method, params unless response = till_response do send_api_request :jsonrpc => "2.0", :id => request_id, :method => method, :params => params, :auth => auth end Response.new(response) end |
#web_request(verb, path, data = {}) ⇒ Net::HTTP::Response
Send a request to the Zabbix web application. The request is designed to emulate a web browser.
Any values in data
which are file handles will trigger a multipart POST request, uploading those files.
96 97 98 99 100 101 |
# File 'lib/rubix/connection.rb', line 96 def web_request verb, path, data={} unless till_response do send_web_request(verb, path, data) end end |