Class: SensuPluginsOracle::Session

Inherits:
Object
  • Object
show all
Defined in:
lib/sensu-plugins-oracle/session.rb

Constant Summary collapse

PRIVILEDGES =
[:SYSDBA, :SYSOPER, :SYSASM, :SYSBACKUP, :SYSDG, :SYSKM]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args) ⇒ Session

Returns a new instance of Session.



16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/sensu-plugins-oracle/session.rb', line 16

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 = args[:priviledge].upcase.to_sym if args[:priviledge] && PRIVILEDGES.include?(args[:priviledge].upcase.to_sym)

  @provide_name_in_result = args[:provide_name_in_result] || false
end

Instance Attribute Details

#connect_stringObject (readonly)

Returns the value of attribute connect_string.



7
8
9
# File 'lib/sensu-plugins-oracle/session.rb', line 7

def connect_string
  @connect_string
end

#databaseObject (readonly)

Returns the value of attribute database.



8
9
10
# File 'lib/sensu-plugins-oracle/session.rb', line 8

def database
  @database
end

#error_messageObject (readonly)

Returns the value of attribute error_message.



6
7
8
# File 'lib/sensu-plugins-oracle/session.rb', line 6

def error_message
  @error_message
end

#nameObject (readonly)

Returns the value of attribute name.



6
7
8
# File 'lib/sensu-plugins-oracle/session.rb', line 6

def name
  @name
end

#passwordObject (readonly)

Returns the value of attribute password.



8
9
10
# File 'lib/sensu-plugins-oracle/session.rb', line 8

def password
  @password
end

#priviledgeObject (readonly)

Returns the value of attribute priviledge.



8
9
10
# File 'lib/sensu-plugins-oracle/session.rb', line 8

def priviledge
  @priviledge
end

#rowsObject

Returns the value of attribute rows.



12
13
14
# File 'lib/sensu-plugins-oracle/session.rb', line 12

def rows
  @rows
end

#server_versionObject (readonly)

Returns the value of attribute server_version.



10
11
12
# File 'lib/sensu-plugins-oracle/session.rb', line 10

def server_version
  @server_version
end

#usernameObject (readonly)

Returns the value of attribute username.



8
9
10
# File 'lib/sensu-plugins-oracle/session.rb', line 8

def username
  @username
end

Class Method Details

.parse_from_file(file) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/sensu-plugins-oracle/session.rb', line 31

def self.parse_from_file(file)
  sessions = []

  File.open(file) do |input|
    input.each_line do |line|
      line.strip!
      next if line.size == 0 || line =~ /^#/
      a = line.split(/:|,|;/)
      sessions << Session.new(name: a[0], connect_string: a[1], provide_name_in_result: true)
    end
  end

  return sessions
end

.set_timeout_properties(timeout) ⇒ Object



89
90
91
92
93
94
95
96
# File 'lib/sensu-plugins-oracle/session.rb', line 89

def self.set_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

Returns:

  • (Boolean)


46
47
48
49
50
51
52
53
54
55
# File 'lib/sensu-plugins-oracle/session.rb', line 46

def alive?
  connect
  @server_version = @connection.oracle_server_version
  true
rescue StandardError, OCIError => e
  @error_message = [@name, e.message.split("\n").first].compact.join(": ")
  false
ensure
  disconnect
end

#handle_query_result(config = {}) ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/sensu-plugins-oracle/session.rb', line 75

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]

  calc = Dentaku::Calculator.new

  method = :ok
  method = :warning if config[:warning] && calc.evaluate(config[:warning], value: value)
  method = :critical if config[:critical] && calc.evaluate(config[:critical], value: value)

  return method, show(config[:show])
end

#query(query_string) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/sensu-plugins-oracle/session.rb', line 57

def query(query_string)
  connect
  @rows = []

  cursor = @connection.exec(query_string)

  @rows = []
  while (row = cursor.fetch)
    @rows << row
  end
  cursor.close

  return true
rescue StandardError, OCIError => e
  @error_message = [@name, e.message.split("\n").first].compact.join(": ")
  return false
end