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.
56 57 58 59 60 61 |
# File 'lib/rubix/connection.rb', line 56 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.
31 32 33 |
# File 'lib/rubix/connection.rb', line 31 def auth @auth end |
#last_response ⇒ Rubix::Response (readonly)
Returns the last response from the Zabbix API – useful for logging purposes.
43 44 45 |
# File 'lib/rubix/connection.rb', line 43 def last_response @last_response end |
#password ⇒ String (readonly)
Returns the password of the Zabbix account used to authenticate.
40 41 42 |
# File 'lib/rubix/connection.rb', line 40 def password @password end |
#request_id ⇒ Fixnum (readonly)
Returns the ID of the next request that will be sent.
34 35 36 |
# File 'lib/rubix/connection.rb', line 34 def request_id @request_id end |
#server ⇒ Net::HTTP (readonly)
Returns the HTTP server backing the Zabbix API.
27 28 29 |
# File 'lib/rubix/connection.rb', line 27 def server @server end |
#uri ⇒ URI
Returns The URI for the Zabbix API.
24 25 26 |
# File 'lib/rubix/connection.rb', line 24 def uri @uri end |
#username ⇒ String (readonly)
Returns the username of the Zabbix account used to authenticate.
37 38 39 |
# File 'lib/rubix/connection.rb', line 37 def username @username end |
Instance Method Details
#authorize! ⇒ Object
Force the connection to execute an authorization request and renew (or set) the authorization token.
112 113 114 115 116 117 |
# File 'lib/rubix/connection.rb', line 112 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?
106 107 108 |
# File 'lib/rubix/connection.rb', line 106 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' }
75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/rubix/connection.rb', line 75 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.
97 98 99 100 101 102 |
# File 'lib/rubix/connection.rb', line 97 def web_request verb, path, data={} unless till_response do send_web_request(verb, path, data) end end |