Class: SensuPluginsOracle::Session
- Inherits:
-
Object
- Object
- SensuPluginsOracle::Session
- Defined in:
- lib/sensu-plugins-oracle/session.rb
Overview
Session to handle oracle checks
Constant Summary collapse
- PRIVILEDGES =
[ :SYSDBA, :SYSOPER, :SYSASM, :SYSBACKUP, :SYSDG, :SYSKM ].freeze
Instance Attribute Summary collapse
-
#connect_string ⇒ Object
readonly
Returns the value of attribute connect_string.
-
#database ⇒ Object
readonly
Returns the value of attribute database.
-
#error_message ⇒ Object
readonly
Returns the value of attribute error_message.
-
#module ⇒ Object
readonly
Returns the value of attribute module.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#password ⇒ Object
readonly
Returns the value of attribute password.
-
#priviledge ⇒ Object
readonly
Returns the value of attribute priviledge.
-
#rows ⇒ Object
Returns the value of attribute rows.
-
#server_version ⇒ Object
readonly
Returns the value of attribute server_version.
-
#username ⇒ Object
readonly
Returns the value of attribute username.
Class Method Summary collapse
- .handle_multiple(args = {}) ⇒ Object
- .parse_from_file(file, db_module = nil) ⇒ Object
- .timeout_properties(timeout) ⇒ Object
Instance Method Summary collapse
- #alive? ⇒ Boolean
- #handle_query_result(config = {}) ⇒ Object
-
#initialize(args) ⇒ Session
constructor
A new instance of Session.
- #query(query_string) ⇒ Object
Constructor Details
#initialize(args) ⇒ Session
Returns a new instance of Session.
24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/sensu-plugins-oracle/session.rb', line 24 def initialize(args) @name = args[:name] @error_message = nil @rows = [] @connect_string = args[:connect_string] @username = args[:username] @password = args[:password] @database = args[:database] @priviledge = validate_priviledge(args[:priviledge]) @module = args[:module] @provide_name_in_result = args[:provide_name_in_result] || false end |
Instance Attribute Details
#connect_string ⇒ Object (readonly)
Returns the value of attribute connect_string.
5 6 7 |
# File 'lib/sensu-plugins-oracle/session.rb', line 5 def connect_string @connect_string end |
#database ⇒ Object (readonly)
Returns the value of attribute database.
6 7 8 |
# File 'lib/sensu-plugins-oracle/session.rb', line 6 def database @database end |
#error_message ⇒ Object (readonly)
Returns the value of attribute error_message.
4 5 6 |
# File 'lib/sensu-plugins-oracle/session.rb', line 4 def @error_message end |
#module ⇒ Object (readonly)
Returns the value of attribute module.
6 7 8 |
# File 'lib/sensu-plugins-oracle/session.rb', line 6 def module @module end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
4 5 6 |
# File 'lib/sensu-plugins-oracle/session.rb', line 4 def name @name end |
#password ⇒ Object (readonly)
Returns the value of attribute password.
6 7 8 |
# File 'lib/sensu-plugins-oracle/session.rb', line 6 def password @password end |
#priviledge ⇒ Object (readonly)
Returns the value of attribute priviledge.
6 7 8 |
# File 'lib/sensu-plugins-oracle/session.rb', line 6 def priviledge @priviledge end |
#rows ⇒ Object
Returns the value of attribute rows.
10 11 12 |
# File 'lib/sensu-plugins-oracle/session.rb', line 10 def rows @rows end |
#server_version ⇒ Object (readonly)
Returns the value of attribute server_version.
8 9 10 |
# File 'lib/sensu-plugins-oracle/session.rb', line 8 def server_version @server_version end |
#username ⇒ Object (readonly)
Returns the value of attribute username.
6 7 8 |
# File 'lib/sensu-plugins-oracle/session.rb', line 6 def username @username end |
Class Method Details
.handle_multiple(args = {}) ⇒ Object
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/sensu-plugins-oracle/session.rb', line 103 def self.handle_multiple(args = {}) # queue with sesssion queue_sessions = Queue.new # feed the queue with sessions args[:sessions].map { |session| queue_sessions.push(session) } if args[:config][:verbose] puts "Worker Threads: #{args[:config][:worker]}" end # start worker threads and handle requested sessions worker = (1..args[:config][:worker]).map do Thread.new do until queue_sessions.empty? session = queue_sessions.pop(true) start = Time.now = "Processing #{session.name} - Method: #{args[:method]}" puts if args[:config][:verbose] if args[:method_args] session.send(args[:method], args[:method_args]) else session.send(args[:method]) end = format("Done %s, took %0.1f ms", session.name, (Time.now - start) * 1000) puts if args[:config][:verbose] end end end worker.map(&:join) end |
.parse_from_file(file, db_module = nil) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/sensu-plugins-oracle/session.rb', line 39 def self.parse_from_file(file, db_module = nil) sessions = [] File.read(file).each_line do |line| line.strip! next if line.size.zero? || line =~ /^#/ a = line.split(/:|,|;/) sessions << Session.new(name: a[0], connect_string: a[1], provide_name_in_result: true, module: db_module) end sessions end |
.timeout_properties(timeout) ⇒ Object
94 95 96 97 98 99 100 101 |
# File 'lib/sensu-plugins-oracle/session.rb', line 94 def self.timeout_properties(timeout) return unless timeout timeout = timeout.to_i OCI8.properties[:tcp_connect_timeout] = timeout OCI8.properties[:connect_timeout] = timeout OCI8.properties[:send_timeout] = timeout OCI8.properties[:recv_timeout] = timeout end |
Instance Method Details
#alive? ⇒ Boolean
55 56 57 58 59 60 61 62 63 64 |
# File 'lib/sensu-plugins-oracle/session.rb', line 55 def alive? connect @server_version = @connection.oracle_server_version true rescue StandardError, OCIError => e @error_message = [@name, e..split("\n").first].compact.join(": ") false ensure disconnect end |
#handle_query_result(config = {}) ⇒ Object
84 85 86 87 88 89 90 91 92 |
# File 'lib/sensu-plugins-oracle/session.rb', line 84 def handle_query_result(config = {}) # check if query is ok, warning, or critical value = @rows.size value = @rows[0][0].to_f if @rows[0] && !config[:tuples] method = evaluate(config, value) [method, show(config[:show])] end |
#query(query_string) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/sensu-plugins-oracle/session.rb', line 66 def query(query_string) connect @rows = [] cursor = @connection.exec(query_string) @rows = [] while (row = cursor.fetch) @rows << row end cursor.close true rescue StandardError, OCIError => e @error_message = [@name, e..split("\n").first].compact.join(": ") false end |