sensu-plugins-oracle 0.6.0 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +3 -2
- data/bin/check-oracle-alive.rb +34 -21
- data/bin/check-oracle-query.rb +58 -39
- data/lib/sensu-plugins-oracle/session.rb +71 -39
- data/lib/sensu-plugins-oracle/version.rb +1 -7
- metadata +19 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8754fe74e7bae6ba56d526c7f82e2cdc2cf7d25e
|
4
|
+
data.tar.gz: c08634c5b47caf6160e037d1a078922ffda78271
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 086707b8af26c658237c93e7cea9063840a31a582c4ef51db0019c9034b864c978a6e533016a8b0160da23ba95c03f0a5a601734290b1e0aee629538228fb7aa
|
7
|
+
data.tar.gz: bbccf4e8ebf44b1f34e46d23a2d21df9d52aac5a26e567959bed49bff656f37d0da03e3016cc34898166997663e9ced24b65e6a0b213a5088219dbf75f0910a2
|
data/README.md
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
|
2
2
|
[](https://badge.fury.io/rb/sensu-plugins-oracle)
|
3
|
-
[](https://codeclimate.com/github/thomis/sensu-plugins-oracle/maintainability)
|
4
4
|
[](https://gemnasium.com/github.com/thomis/sensu-plugins-oracle)
|
5
|
+
[](https://travis-ci.org/thomis/sensu-plugins-oracle)
|
5
6
|
|
6
7
|
# sensu-plugins-oracle
|
7
8
|
|
@@ -34,7 +35,7 @@ This sensu plugin provides native Oracle instrumentation.
|
|
34
35
|
```
|
35
36
|
|
36
37
|
```
|
37
|
-
-- check for invalid objects in a schema,
|
38
|
+
-- check for invalid objects in a schema, shows type and name if there are invalid objects (-s), define a ciritical boundary only (-c)
|
38
39
|
check-oracle-query.rb -u scott -p tiger -d hr -t -s -query "select object_type, object_name from user_objects where status = 'INVALID'" -c "value > 0"
|
39
40
|
|
40
41
|
-- same as above but check for all connections in a file, use 5 worker threads
|
data/bin/check-oracle-alive.rb
CHANGED
@@ -16,7 +16,8 @@
|
|
16
16
|
# gem: ruby-oci8
|
17
17
|
#
|
18
18
|
# USAGE:
|
19
|
-
# ./check-oracle-alive.rb -u USERNAME -p PASSWORD -d DATABASE
|
19
|
+
# ./check-oracle-alive.rb -u USERNAME -p PASSWORD -d DATABASE \
|
20
|
+
# -P PRIVILEGE -T TIMEOUT -f FILE
|
20
21
|
#
|
21
22
|
# NOTES:
|
22
23
|
#
|
@@ -29,6 +30,7 @@
|
|
29
30
|
require 'sensu-plugins-oracle'
|
30
31
|
require 'sensu-plugin/check/cli'
|
31
32
|
|
33
|
+
# Check Oracle Alive
|
32
34
|
class CheckOracleAlive < Sensu::Plugin::Check::CLI
|
33
35
|
option :username,
|
34
36
|
description: 'Oracle Username',
|
@@ -46,7 +48,8 @@ class CheckOracleAlive < Sensu::Plugin::Check::CLI
|
|
46
48
|
long: '--database DATABASE'
|
47
49
|
|
48
50
|
option :privilege,
|
49
|
-
description: 'Connect to Oracle database by optional priviledge
|
51
|
+
description: 'Connect to Oracle database by optional priviledge' \
|
52
|
+
' (SYSDBA, SYSOPER, SYSASM, , SYSDG or SYSKM)',
|
50
53
|
short: '-P PRIVILEGE',
|
51
54
|
long: '--privilege PRIVILEGE'
|
52
55
|
|
@@ -61,22 +64,35 @@ class CheckOracleAlive < Sensu::Plugin::Check::CLI
|
|
61
64
|
long: '--file FILE'
|
62
65
|
|
63
66
|
option :worker,
|
64
|
-
description: 'Number of worker threads to check
|
67
|
+
description: 'Number of worker threads to check' \
|
68
|
+
' for alive connections',
|
65
69
|
short: '-W WORKER',
|
66
70
|
long: '--worker WORKER',
|
67
71
|
default: 1,
|
68
|
-
:proc
|
72
|
+
proc: proc { |v| v.to_i.zero? ? 1 : v.to_i }
|
69
73
|
|
70
74
|
option :verbose,
|
71
75
|
description: 'Shows console log messages',
|
72
|
-
short: '-
|
76
|
+
short: '-V',
|
73
77
|
long: '--verbose',
|
74
78
|
boolean: true,
|
75
79
|
default: false
|
76
80
|
|
81
|
+
option :version,
|
82
|
+
description: 'Shows current version',
|
83
|
+
short: '-v',
|
84
|
+
long: '--version',
|
85
|
+
boolean: true,
|
86
|
+
default: false
|
87
|
+
|
77
88
|
def run
|
78
89
|
# handle OCI8 properties
|
79
|
-
::SensuPluginsOracle::Session.
|
90
|
+
::SensuPluginsOracle::Session.timeout_properties(config[:timeout])
|
91
|
+
|
92
|
+
if config[:version]
|
93
|
+
ok("Version #{SensuPluginsOracle::Version::VER_STRING}")
|
94
|
+
return
|
95
|
+
end
|
80
96
|
|
81
97
|
if config[:file]
|
82
98
|
handle_connections_from_file
|
@@ -88,11 +104,10 @@ class CheckOracleAlive < Sensu::Plugin::Check::CLI
|
|
88
104
|
private
|
89
105
|
|
90
106
|
def handle_connection
|
91
|
-
session = SensuPluginsOracle::Session.new(
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
privilege: config[:privilege])
|
107
|
+
session = SensuPluginsOracle::Session.new(username: config[:username],
|
108
|
+
password: config[:password],
|
109
|
+
database: config[:database],
|
110
|
+
privilege: config[:privilege])
|
96
111
|
|
97
112
|
if session.alive?
|
98
113
|
ok "Server version: #{session.server_version}"
|
@@ -103,29 +118,27 @@ class CheckOracleAlive < Sensu::Plugin::Check::CLI
|
|
103
118
|
|
104
119
|
def handle_connections_from_file
|
105
120
|
sessions = ::SensuPluginsOracle::Session.parse_from_file(config[:file])
|
106
|
-
::SensuPluginsOracle::Session.handle_multiple(
|
107
|
-
|
108
|
-
|
109
|
-
config: config
|
110
|
-
)
|
121
|
+
::SensuPluginsOracle::Session.handle_multiple(sessions: sessions,
|
122
|
+
method: :alive?,
|
123
|
+
config: config)
|
111
124
|
|
112
125
|
errors = []
|
113
126
|
sessions.each do |session|
|
114
|
-
|
127
|
+
message = session.error_message
|
128
|
+
errors << message if message
|
115
129
|
end
|
116
130
|
|
117
131
|
sessions_total = sessions.size
|
118
132
|
errors_total = errors.size
|
119
133
|
|
120
|
-
if errors_total
|
134
|
+
if errors_total.zero?
|
121
135
|
ok "All are alive (#{sessions_total}/#{sessions_total})"
|
122
136
|
else
|
123
|
-
|
137
|
+
message = "#{sessions_total - errors_total}/#{sessions_total} are alive"
|
138
|
+
critical([message, errors].flatten.join("\n - "))
|
124
139
|
end
|
125
140
|
|
126
141
|
rescue => e
|
127
142
|
unknown e.to_s
|
128
143
|
end
|
129
|
-
|
130
|
-
|
131
144
|
end
|
data/bin/check-oracle-query.rb
CHANGED
@@ -3,7 +3,8 @@
|
|
3
3
|
# check-oracle-query
|
4
4
|
#
|
5
5
|
# DESCRIPTION:
|
6
|
-
# This plugin attempts to execute defined query against provided
|
6
|
+
# This plugin attempts to execute defined query against provided
|
7
|
+
# connection credential(s).
|
7
8
|
#
|
8
9
|
# OUTPUT:
|
9
10
|
# plain text
|
@@ -16,7 +17,10 @@
|
|
16
17
|
# gem: ruby-oci8
|
17
18
|
#
|
18
19
|
# USAGE:
|
19
|
-
# ./check-oracle-query.rb -u USERNAME -p PASSWORD -d DATABASE
|
20
|
+
# ./check-oracle-query.rb -u USERNAME -p PASSWORD -d DATABASE \
|
21
|
+
# -P PRIVILEGE -T TIMEOUT -f FILE \
|
22
|
+
# -q 'select foo from bar' \
|
23
|
+
# -w 'value > 5' -c 'value > 10'
|
20
24
|
#
|
21
25
|
# NOTES:
|
22
26
|
#
|
@@ -47,7 +51,8 @@ class CheckOracleQuery < Sensu::Plugin::Check::CLI
|
|
47
51
|
long: '--database DATABASE'
|
48
52
|
|
49
53
|
option :privilege,
|
50
|
-
description: 'Connect to Oracle database by optional priviledge
|
54
|
+
description: 'Connect to Oracle database by optional priviledge' \
|
55
|
+
' (SYSDBA, SYSOPER, SYSASM, , SYSDG or SYSKM)',
|
51
56
|
short: '-P PRIVILEGE',
|
52
57
|
long: '--privilege PRIVILEGE'
|
53
58
|
|
@@ -94,22 +99,35 @@ class CheckOracleQuery < Sensu::Plugin::Check::CLI
|
|
94
99
|
default: false
|
95
100
|
|
96
101
|
option :worker,
|
97
|
-
description: 'Number of worker threads to execute query
|
102
|
+
description: 'Number of worker threads to execute query' \
|
103
|
+
' against provided connections',
|
98
104
|
short: '-W WORKER',
|
99
105
|
long: '--worker WORKER',
|
100
106
|
default: 1,
|
101
|
-
:proc
|
107
|
+
proc: proc { |v| v.to_i.zero? ? 1 : v.to_i }
|
102
108
|
|
103
109
|
option :verbose,
|
104
110
|
description: 'Shows console log messages',
|
105
|
-
short: '-
|
111
|
+
short: '-V',
|
106
112
|
long: '--verbose',
|
107
113
|
boolean: true,
|
108
114
|
default: false
|
109
115
|
|
116
|
+
option :version,
|
117
|
+
description: 'Shows current version',
|
118
|
+
short: '-v',
|
119
|
+
long: '--version',
|
120
|
+
boolean: true,
|
121
|
+
default: false
|
122
|
+
|
110
123
|
def run
|
111
124
|
# handle OCI8 properties
|
112
|
-
::SensuPluginsOracle::Session.
|
125
|
+
::SensuPluginsOracle::Session.timeout_properties(config[:timeout])
|
126
|
+
|
127
|
+
if config[:version]
|
128
|
+
ok("Version #{SensuPluginsOracle::Version::VER_STRING}")
|
129
|
+
return
|
130
|
+
end
|
113
131
|
|
114
132
|
if config[:file]
|
115
133
|
handle_connections_from_file
|
@@ -121,15 +139,14 @@ class CheckOracleQuery < Sensu::Plugin::Check::CLI
|
|
121
139
|
private
|
122
140
|
|
123
141
|
def handle_connection
|
124
|
-
session = SensuPluginsOracle::Session.new(
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
privilege: config[:privilege])
|
142
|
+
session = SensuPluginsOracle::Session.new(username: config[:username],
|
143
|
+
password: config[:password],
|
144
|
+
database: config[:database],
|
145
|
+
privilege: config[:privilege])
|
129
146
|
|
130
147
|
if session.query(config[:query].to_s)
|
131
148
|
method, message = session.handle_query_result(config)
|
132
|
-
|
149
|
+
send(method, message)
|
133
150
|
else
|
134
151
|
# issue with the query
|
135
152
|
critical session.error_message
|
@@ -138,44 +155,46 @@ class CheckOracleQuery < Sensu::Plugin::Check::CLI
|
|
138
155
|
|
139
156
|
def handle_connections_from_file
|
140
157
|
sessions = ::SensuPluginsOracle::Session.parse_from_file(config[:file])
|
141
|
-
::SensuPluginsOracle::Session.handle_multiple(
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
config: config
|
146
|
-
)
|
158
|
+
::SensuPluginsOracle::Session.handle_multiple(sessions: sessions,
|
159
|
+
method: :query,
|
160
|
+
config: config,
|
161
|
+
method_args: config[:query])
|
147
162
|
|
148
163
|
results = Hash.new { |h, key| h[key] = [] }
|
149
164
|
sessions.each do |session|
|
150
|
-
|
151
|
-
|
165
|
+
message = session.error_message
|
166
|
+
if message
|
167
|
+
results[:critical] << message
|
152
168
|
else
|
153
|
-
|
154
|
-
results[
|
169
|
+
type, message = session.handle_query_result(config)
|
170
|
+
results[type] << message
|
155
171
|
end
|
156
172
|
end
|
157
173
|
|
158
|
-
|
174
|
+
method, messages = summary(results, sessions.size)
|
175
|
+
|
176
|
+
send(method, messages.join("\n"))
|
177
|
+
rescue => e
|
178
|
+
unknown e.to_s
|
179
|
+
end
|
180
|
+
|
181
|
+
# returns summary based on header and detailed (warning & critical) messages
|
182
|
+
def summary(results, session_count)
|
183
|
+
# header
|
159
184
|
method = :ok
|
160
|
-
|
161
|
-
|
162
|
-
header << "Warning: #{results[:warning].size}" if results[:warning].size > 0
|
163
|
-
header << "Critical: #{results[:critical].size}" if results[:critical].size > 0
|
185
|
+
headers = ["Total: #{session_count}"]
|
186
|
+
messages = []
|
164
187
|
|
165
|
-
|
188
|
+
headers << "Ok: #{results[:ok].size}" unless results[:ok].empty?
|
166
189
|
|
167
190
|
[:warning, :critical].each do |type|
|
168
|
-
if results[type].
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
end
|
191
|
+
next if results[type].empty?
|
192
|
+
method = type
|
193
|
+
label = type.to_s.capitalize
|
194
|
+
headers << "#{label}: #{results[type].size}"
|
195
|
+
messages << [label, results[type].compact.sort.join("\n\n")]
|
174
196
|
end
|
175
197
|
|
176
|
-
|
177
|
-
rescue => e
|
178
|
-
unknown e.to_s
|
198
|
+
[method, [headers, messages].flatten]
|
179
199
|
end
|
180
|
-
|
181
200
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'dentaku'
|
2
2
|
|
3
3
|
module SensuPluginsOracle
|
4
|
+
# Session to handle oracle checks
|
4
5
|
class Session
|
5
|
-
|
6
6
|
attr_reader :name, :error_message
|
7
7
|
attr_reader :connect_string
|
8
8
|
attr_reader :username, :password, :database, :priviledge
|
@@ -11,7 +11,17 @@ module SensuPluginsOracle
|
|
11
11
|
|
12
12
|
attr_accessor :rows
|
13
13
|
|
14
|
-
PRIVILEDGES = [
|
14
|
+
PRIVILEDGES = [
|
15
|
+
:SYSDBA,
|
16
|
+
:SYSOPER,
|
17
|
+
:SYSASM,
|
18
|
+
:SYSBACKUP,
|
19
|
+
:SYSDG,
|
20
|
+
:SYSKM
|
21
|
+
].freeze
|
22
|
+
|
23
|
+
# catch any error thrown within a thread during join call
|
24
|
+
Thread.abort_on_exception = true
|
15
25
|
|
16
26
|
def initialize(args)
|
17
27
|
@name = args[:name]
|
@@ -23,24 +33,23 @@ module SensuPluginsOracle
|
|
23
33
|
@username = args[:username]
|
24
34
|
@password = args[:password]
|
25
35
|
@database = args[:database]
|
26
|
-
@priviledge =
|
27
|
-
|
36
|
+
@priviledge = validate_priviledge(args[:priviledge])
|
28
37
|
@provide_name_in_result = args[:provide_name_in_result] || false
|
29
38
|
end
|
30
39
|
|
31
40
|
def self.parse_from_file(file)
|
32
41
|
sessions = []
|
33
42
|
|
34
|
-
File.
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
43
|
+
File.read(file).each_line do |line|
|
44
|
+
line.strip!
|
45
|
+
next if line.size.zero? || line =~ /^#/
|
46
|
+
a = line.split(/:|,|;/)
|
47
|
+
sessions << Session.new(name: a[0],
|
48
|
+
connect_string: a[1],
|
49
|
+
provide_name_in_result: true)
|
41
50
|
end
|
42
51
|
|
43
|
-
|
52
|
+
sessions
|
44
53
|
end
|
45
54
|
|
46
55
|
def alive?
|
@@ -48,7 +57,7 @@ module SensuPluginsOracle
|
|
48
57
|
@server_version = @connection.oracle_server_version
|
49
58
|
true
|
50
59
|
rescue StandardError, OCIError => e
|
51
|
-
@error_message = [@name, e.message.split("\n").first].compact.join(
|
60
|
+
@error_message = [@name, e.message.split("\n").first].compact.join(': ')
|
52
61
|
false
|
53
62
|
ensure
|
54
63
|
disconnect
|
@@ -68,25 +77,21 @@ module SensuPluginsOracle
|
|
68
77
|
|
69
78
|
return true
|
70
79
|
rescue StandardError, OCIError => e
|
71
|
-
@error_message = [@name, e.message.split("\n").first].compact.join(
|
80
|
+
@error_message = [@name, e.message.split("\n").first].compact.join(': ')
|
72
81
|
return false
|
73
82
|
end
|
74
83
|
|
75
|
-
def handle_query_result(config={})
|
84
|
+
def handle_query_result(config = {})
|
76
85
|
# check if query is ok, warning, or critical
|
77
86
|
value = @rows.size
|
78
87
|
value = @rows[0][0].to_f if @rows[0] && !config[:tuples]
|
79
88
|
|
80
|
-
|
89
|
+
method = evaluate(config, value)
|
81
90
|
|
82
|
-
method
|
83
|
-
method = :warning if config[:warning] && calc.evaluate(config[:warning], value: value)
|
84
|
-
method = :critical if config[:critical] && calc.evaluate(config[:critical], value: value)
|
85
|
-
|
86
|
-
return method, show(config[:show])
|
91
|
+
[method, show(config[:show])]
|
87
92
|
end
|
88
93
|
|
89
|
-
def self.
|
94
|
+
def self.timeout_properties(timeout)
|
90
95
|
return unless timeout
|
91
96
|
timeout = timeout.to_i
|
92
97
|
OCI8.properties[:tcp_connect_timeout] = timeout
|
@@ -95,29 +100,34 @@ module SensuPluginsOracle
|
|
95
100
|
OCI8.properties[:recv_timeout] = timeout
|
96
101
|
end
|
97
102
|
|
98
|
-
def self.handle_multiple(args={})
|
103
|
+
def self.handle_multiple(args = {})
|
104
|
+
# queue with sesssion
|
99
105
|
queue_sessions = Queue.new
|
100
106
|
|
101
107
|
# feed the queue with sessions
|
102
|
-
args[:sessions].map{ |session| queue_sessions.push(session) }
|
108
|
+
args[:sessions].map { |session| queue_sessions.push(session) }
|
103
109
|
|
104
|
-
|
110
|
+
if args[:config][:verbose]
|
111
|
+
puts "Worker Threads: #{args[:config][:worker]}"
|
112
|
+
end
|
105
113
|
|
106
114
|
# start worker threads and handle requested sessions
|
107
115
|
worker = (1..args[:config][:worker]).map do
|
108
116
|
Thread.new do
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
puts "Done #{session.name}, took #{ '%0.1f' % ((Time.now - start)*1000)} ms" if args[:config][:verbose]
|
117
|
+
until queue_sessions.empty?
|
118
|
+
session = queue_sessions.pop(true)
|
119
|
+
start = Time.now
|
120
|
+
message = "Processing #{session.name} - Method: #{args[:method]}"
|
121
|
+
puts message if args[:config][:verbose]
|
122
|
+
if args[:method_args]
|
123
|
+
session.send(args[:method], args[:method_args])
|
124
|
+
else
|
125
|
+
session.send(args[:method])
|
119
126
|
end
|
120
|
-
|
127
|
+
message_done = format('Done %s, took %0.1f ms',
|
128
|
+
session.name,
|
129
|
+
(Time.now - start) * 1000)
|
130
|
+
puts message_done if args[:config][:verbose]
|
121
131
|
end
|
122
132
|
end
|
123
133
|
end
|
@@ -126,14 +136,37 @@ module SensuPluginsOracle
|
|
126
136
|
|
127
137
|
private
|
128
138
|
|
129
|
-
def
|
139
|
+
def validate_priviledge(priviledge)
|
140
|
+
return nil unless priviledge
|
141
|
+
priviledge_symbol = priviledge.upcase.to_sym
|
142
|
+
return nil unless PRIVILEDGES.include?(priviledge_symbol)
|
143
|
+
priviledge_symbol
|
144
|
+
end
|
145
|
+
|
146
|
+
def show(show_records = true)
|
130
147
|
return nil unless show_records
|
131
148
|
buffer = []
|
132
149
|
buffer << "#{@name} (#{@rows.size})" if @provide_name_in_result
|
133
|
-
buffer += @rows.map{ |row| '- ' + row.join(', ')}
|
150
|
+
buffer += @rows.map { |row| '- ' + row.join(', ') }
|
134
151
|
buffer.join("\n")
|
135
152
|
end
|
136
153
|
|
154
|
+
def evaluate(config, value)
|
155
|
+
calc = Dentaku::Calculator.new
|
156
|
+
|
157
|
+
method = :ok
|
158
|
+
|
159
|
+
if config[:warning] && calc.evaluate(config[:warning], value: value)
|
160
|
+
method = :warning
|
161
|
+
end
|
162
|
+
|
163
|
+
if config[:critical] && calc.evaluate(config[:critical], value: value)
|
164
|
+
method = :critical
|
165
|
+
end
|
166
|
+
|
167
|
+
method
|
168
|
+
end
|
169
|
+
|
137
170
|
def connect
|
138
171
|
return if @connection
|
139
172
|
|
@@ -148,6 +181,5 @@ module SensuPluginsOracle
|
|
148
181
|
@connection.logoff if @connection
|
149
182
|
@connection = nil
|
150
183
|
end
|
151
|
-
|
152
184
|
end
|
153
185
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu-plugins-oracle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sensu-Plugins and contributors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sensu-plugin
|
@@ -16,115 +16,113 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.3
|
19
|
+
version: '2.3'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.3
|
26
|
+
version: '2.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: ruby-oci8
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 2.2
|
33
|
+
version: '2.2'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 2.2
|
40
|
+
version: '2.2'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: dentaku
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: '3.0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: '3.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.
|
61
|
+
version: '1.16'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 1.
|
68
|
+
version: '1.16'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 12.
|
75
|
+
version: '12.2'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 12.
|
82
|
+
version: '12.2'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: pry
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0.
|
89
|
+
version: '0.11'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 0.
|
96
|
+
version: '0.11'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rspec
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 3.
|
103
|
+
version: '3.7'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 3.
|
110
|
+
version: '3.7'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: codeclimate-test-reporter
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 1.0
|
117
|
+
version: '1.0'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 1.0
|
125
|
-
description:
|
126
|
-
This plugin provides native Oracle
|
127
|
-
instrumentation.
|
124
|
+
version: '1.0'
|
125
|
+
description: This plugin provides native Oracle instrumentation.
|
128
126
|
email: "<thomas.steiner@ikey.ch>"
|
129
127
|
executables:
|
130
128
|
- check-oracle-alive.rb
|