sensu-plugins-mongodb 0.0.8 → 1.0.0
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 +5 -13
- data/CHANGELOG.md +17 -1
- data/README.md +3 -0
- data/bin/check-mongodb.py +1 -1
- data/bin/metrics-mongodb.rb +75 -12
- data/lib/sensu-plugins-mongodb/version.rb +2 -2
- metadata +43 -54
checksums.yaml
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
|
|
5
|
-
data.tar.gz: !binary |-
|
|
6
|
-
OTg3ODdiYTA2NjA5MmNhZWMxNjI5MDNjNDI0NTE2OTczOTRmYmQ4Yw==
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 59832576dcbd865bd1cd58e4961a53e04c1995f3
|
|
4
|
+
data.tar.gz: 50be87abcbff02c6cfe176a420e005566d26e278
|
|
7
5
|
SHA512:
|
|
8
|
-
metadata.gz:
|
|
9
|
-
|
|
10
|
-
NTBmOGI3YjhlYTgzYTNiM2UxZTRiNDliYWMxODY4Y2ZkN2VmNGE3MzIwOTk0
|
|
11
|
-
NGViODZmZDU3NDI1MjFiNDYzOWYwMWFlNDg2MGEzMDdkNjMwNjQ=
|
|
12
|
-
data.tar.gz: !binary |-
|
|
13
|
-
NGYxZmY1NTYxMGMzYzFkYWFiMWM0YTgzOWI5OWQ2ZGVmOTEyZDU5ZGY4MDg2
|
|
14
|
-
YzRjZmVjMmIyOTRhYjFhODEzNTQyYjAzYWJhOTU5NGU4OTQwYzUyNDQ2OTVk
|
|
15
|
-
ZGZhY2VjNTBiYTg3OWI0YzMzOWJmNDQyNWMxMDJmNWEyNTlmODg=
|
|
6
|
+
metadata.gz: f8abce4c1c05ee006437ba030c2a97d0742bc6d96507177712c970f3c7323ca9f992ef744d2b893b9926c9b63436acd0898d5d20c2c2eae2b4adaed598ec9188
|
|
7
|
+
data.tar.gz: 9f6c99372e062e43b21fa2f78f7cd221a5b44284150b5afb68a87c085627c24f3ecd0c409c4f36051b1b383ef485f6af33773634e4ae173cba85f0e1d6f2f225
|
data/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,21 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [1.0.0] - 2016-06-03
|
|
9
|
+
### Removed
|
|
10
|
+
- support for Rubies 1.9.3 and 2.0
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- support for Ruby 2.3
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- Update to rubocop 0.40 and cleanup
|
|
17
|
+
- Update to mongo gem 2.2.x and boson 4.x for MongoDB 3.2 support
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
- Long was added as a numeric type
|
|
21
|
+
- metrics-mongodb.rb: fix typo
|
|
22
|
+
|
|
8
23
|
## [0.0.8] - 2016-03-04
|
|
9
24
|
### Added
|
|
10
25
|
- Add a ruby wrapper script for check-mongodb.py
|
|
@@ -49,7 +64,8 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
|
|
|
49
64
|
### Added
|
|
50
65
|
- initial release
|
|
51
66
|
|
|
52
|
-
[
|
|
67
|
+
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-mongodb/compare/1.0.0...HEAD
|
|
68
|
+
[1.0.0]: https://github.com/sensu-plugins/sensu-plugins-mongodb/compare/0.0.8...1.0.0
|
|
53
69
|
[0.0.8]: https://github.com/sensu-plugins/sensu-plugins-mongodb/compare/0.0.7...0.0.8
|
|
54
70
|
[0.0.7]: https://github.com/sensu-plugins/sensu-plugins-mongodb/compare/0.0.6...0.0.7
|
|
55
71
|
[0.0.6]: https://github.com/sensu-plugins/sensu-plugins-mongodb/compare/0.0.5...0.0.6
|
data/README.md
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
## Files
|
|
12
12
|
* bin/check-mongodb.py
|
|
13
|
+
* bin/check-mongodb.rb - wrapper for check-mongodb.py
|
|
13
14
|
* bin/metrics-mongodb.rb
|
|
14
15
|
|
|
15
16
|
## Usage
|
|
@@ -19,3 +20,5 @@
|
|
|
19
20
|
[Installation and Setup](http://sensu-plugins.io/docs/installation_instructions.html)
|
|
20
21
|
|
|
21
22
|
## Notes
|
|
23
|
+
|
|
24
|
+
The `pymongo` python package needs to be installed to use `check-mongodb`
|
data/bin/check-mongodb.py
CHANGED
|
@@ -90,7 +90,7 @@ def performance_data(perf_data, params):
|
|
|
90
90
|
|
|
91
91
|
|
|
92
92
|
def numeric_type(param):
|
|
93
|
-
if ((type(param) == float or type(param) == int or param == None)):
|
|
93
|
+
if ((type(param) == float or type(param) == int or type(param) == long or param == None)):
|
|
94
94
|
return True
|
|
95
95
|
return False
|
|
96
96
|
|
data/bin/metrics-mongodb.rb
CHANGED
|
@@ -63,33 +63,96 @@ class MongoDB < Sensu::Plugin::Metric::CLI::Graphite
|
|
|
63
63
|
short: '-s SCHEME',
|
|
64
64
|
default: "#{Socket.gethostname}.mongodb"
|
|
65
65
|
|
|
66
|
+
option :password,
|
|
67
|
+
description: 'MongoDB password',
|
|
68
|
+
long: '--password PASSWORD',
|
|
69
|
+
default: nil
|
|
70
|
+
|
|
71
|
+
option :debug,
|
|
72
|
+
description: 'Enable debug',
|
|
73
|
+
long: '--debug',
|
|
74
|
+
default: false
|
|
75
|
+
|
|
76
|
+
def get_mongo_doc(command)
|
|
77
|
+
rs = @db.command(command)
|
|
78
|
+
unless rs.successful?
|
|
79
|
+
return nil
|
|
80
|
+
end
|
|
81
|
+
rs.documents[0]
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# connects to mongo and sets @db, works with MongoClient < 2.0.0
|
|
85
|
+
def connect_mongo_db(host, port, db_name, db_user, db_password)
|
|
86
|
+
if Gem.loaded_specs['mongo'].version < Gem::Version.new('2.0.0')
|
|
87
|
+
mongo_client = MongoClient.new(host, port)
|
|
88
|
+
@db = mongo_client.db(db_name)
|
|
89
|
+
@db.authenticate(db_user, db_password) unless db_user.nil?
|
|
90
|
+
else
|
|
91
|
+
address_str = "#{host}:#{port}"
|
|
92
|
+
client_opts = {}
|
|
93
|
+
client_opts[:database] = db_name
|
|
94
|
+
unless db_user.nil?
|
|
95
|
+
client_opts[:user] = db_user
|
|
96
|
+
client_opts[:password] = db_password
|
|
97
|
+
end
|
|
98
|
+
mongo_client = Mongo::Client.new([address_str], client_opts)
|
|
99
|
+
@db = mongo_client.database
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
66
103
|
def run
|
|
104
|
+
Mongo::Logger.logger.level = Logger::FATAL
|
|
105
|
+
@debug = config[:debug]
|
|
106
|
+
if @debug
|
|
107
|
+
Mongo::Logger.logger.level = Logger::DEBUG
|
|
108
|
+
config_debug = config.clone
|
|
109
|
+
config_debug[:password] = '***'
|
|
110
|
+
puts 'arguments:' + config_debug.inspect
|
|
111
|
+
end
|
|
67
112
|
host = config[:host]
|
|
68
113
|
port = config[:port]
|
|
69
114
|
db_name = 'admin'
|
|
70
115
|
db_user = config[:user]
|
|
71
116
|
db_password = config[:password]
|
|
72
117
|
|
|
73
|
-
|
|
74
|
-
@db = mongo_client.db(db_name)
|
|
75
|
-
@db.authenticate(db_user, db_password) unless db_user.nil?
|
|
118
|
+
connect_mongo_db(host, port, db_name, db_user, db_password)
|
|
76
119
|
|
|
77
|
-
|
|
120
|
+
_result = false
|
|
121
|
+
# check if master
|
|
122
|
+
begin
|
|
123
|
+
@is_master = get_mongo_doc('isMaster' => 1)
|
|
124
|
+
unless @is_master.nil?
|
|
125
|
+
_result = @is_master['ok'] == 1
|
|
126
|
+
end
|
|
127
|
+
rescue StandardError => e
|
|
128
|
+
if @debug
|
|
129
|
+
puts 'Error checking isMaster:' + e.message
|
|
130
|
+
puts e.backtrace.inspect
|
|
131
|
+
end
|
|
132
|
+
exit(1)
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
# get the metrics
|
|
78
136
|
begin
|
|
79
137
|
metrics = {}
|
|
80
|
-
|
|
81
|
-
server_status
|
|
82
|
-
if server_status['ok'] == 1
|
|
138
|
+
server_status = get_mongo_doc('serverStatus' => 1)
|
|
139
|
+
if !server_status.nil? && server_status['ok'] == 1
|
|
83
140
|
metrics.update(gather_replication_metrics(server_status))
|
|
84
141
|
timestamp = Time.now.to_i
|
|
85
142
|
metrics.each do |k, v|
|
|
86
143
|
output [config[:scheme], k].join('.'), v, timestamp
|
|
87
144
|
end
|
|
88
145
|
end
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
146
|
+
rescue StandardError => e
|
|
147
|
+
if @debug
|
|
148
|
+
puts 'Error checking serverStatus:' + e.message
|
|
149
|
+
puts e.backtrace.inspect
|
|
150
|
+
end
|
|
151
|
+
exit(2)
|
|
92
152
|
end
|
|
153
|
+
|
|
154
|
+
# done!
|
|
155
|
+
ok
|
|
93
156
|
end
|
|
94
157
|
|
|
95
158
|
def gather_replication_metrics(server_status)
|
|
@@ -117,8 +180,8 @@ class MongoDB < Sensu::Plugin::Metric::CLI::Graphite
|
|
|
117
180
|
end
|
|
118
181
|
end
|
|
119
182
|
|
|
120
|
-
server_metrics['cursors.open'] = server_status['
|
|
121
|
-
server_metrics['cursors.timedOut'] = server_status['
|
|
183
|
+
server_metrics['cursors.open'] = server_status['metrics']['cursor']['open']['total']
|
|
184
|
+
server_metrics['cursors.timedOut'] = server_status['metrics']['cursor']['timedOut']
|
|
122
185
|
|
|
123
186
|
server_metrics['mem.residentMb'] = server_status['mem']['resident']
|
|
124
187
|
server_metrics['mem.virtualMb'] = server_status['mem']['virtual']
|
metadata
CHANGED
|
@@ -1,203 +1,191 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: sensu-plugins-mongodb
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0
|
|
4
|
+
version: 1.0.0
|
|
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: 2016-
|
|
11
|
+
date: 2016-06-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bson
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- -
|
|
17
|
+
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
19
|
+
version: '4.0'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- -
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: 1.12.3
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: bson_ext
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - '='
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: 1.12.3
|
|
34
|
-
type: :runtime
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - '='
|
|
24
|
+
- - "~>"
|
|
39
25
|
- !ruby/object:Gem::Version
|
|
40
|
-
version:
|
|
26
|
+
version: '4.0'
|
|
41
27
|
- !ruby/object:Gem::Dependency
|
|
42
28
|
name: mongo
|
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
|
44
30
|
requirements:
|
|
45
31
|
- - '='
|
|
46
32
|
- !ruby/object:Gem::Version
|
|
47
|
-
version:
|
|
33
|
+
version: 2.2.2
|
|
48
34
|
type: :runtime
|
|
49
35
|
prerelease: false
|
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
37
|
requirements:
|
|
52
38
|
- - '='
|
|
53
39
|
- !ruby/object:Gem::Version
|
|
54
|
-
version:
|
|
40
|
+
version: 2.2.2
|
|
55
41
|
- !ruby/object:Gem::Dependency
|
|
56
42
|
name: sensu-plugin
|
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
|
58
44
|
requirements:
|
|
59
|
-
- - ~>
|
|
45
|
+
- - "~>"
|
|
60
46
|
- !ruby/object:Gem::Version
|
|
61
47
|
version: '1.2'
|
|
62
48
|
type: :runtime
|
|
63
49
|
prerelease: false
|
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
51
|
requirements:
|
|
66
|
-
- - ~>
|
|
52
|
+
- - "~>"
|
|
67
53
|
- !ruby/object:Gem::Version
|
|
68
54
|
version: '1.2'
|
|
69
55
|
- !ruby/object:Gem::Dependency
|
|
70
56
|
name: bundler
|
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
|
72
58
|
requirements:
|
|
73
|
-
- - ~>
|
|
59
|
+
- - "~>"
|
|
74
60
|
- !ruby/object:Gem::Version
|
|
75
61
|
version: '1.7'
|
|
76
62
|
type: :development
|
|
77
63
|
prerelease: false
|
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
65
|
requirements:
|
|
80
|
-
- - ~>
|
|
66
|
+
- - "~>"
|
|
81
67
|
- !ruby/object:Gem::Version
|
|
82
68
|
version: '1.7'
|
|
83
69
|
- !ruby/object:Gem::Dependency
|
|
84
70
|
name: codeclimate-test-reporter
|
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
|
86
72
|
requirements:
|
|
87
|
-
- - ~>
|
|
73
|
+
- - "~>"
|
|
88
74
|
- !ruby/object:Gem::Version
|
|
89
75
|
version: '0.4'
|
|
90
76
|
type: :development
|
|
91
77
|
prerelease: false
|
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
79
|
requirements:
|
|
94
|
-
- - ~>
|
|
80
|
+
- - "~>"
|
|
95
81
|
- !ruby/object:Gem::Version
|
|
96
82
|
version: '0.4'
|
|
97
83
|
- !ruby/object:Gem::Dependency
|
|
98
84
|
name: github-markup
|
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
|
100
86
|
requirements:
|
|
101
|
-
- - ~>
|
|
87
|
+
- - "~>"
|
|
102
88
|
- !ruby/object:Gem::Version
|
|
103
89
|
version: '1.3'
|
|
104
90
|
type: :development
|
|
105
91
|
prerelease: false
|
|
106
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
93
|
requirements:
|
|
108
|
-
- - ~>
|
|
94
|
+
- - "~>"
|
|
109
95
|
- !ruby/object:Gem::Version
|
|
110
96
|
version: '1.3'
|
|
111
97
|
- !ruby/object:Gem::Dependency
|
|
112
98
|
name: pry
|
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
|
114
100
|
requirements:
|
|
115
|
-
- - ~>
|
|
101
|
+
- - "~>"
|
|
116
102
|
- !ruby/object:Gem::Version
|
|
117
103
|
version: '0.10'
|
|
118
104
|
type: :development
|
|
119
105
|
prerelease: false
|
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
107
|
requirements:
|
|
122
|
-
- - ~>
|
|
108
|
+
- - "~>"
|
|
123
109
|
- !ruby/object:Gem::Version
|
|
124
110
|
version: '0.10'
|
|
125
111
|
- !ruby/object:Gem::Dependency
|
|
126
112
|
name: rake
|
|
127
113
|
requirement: !ruby/object:Gem::Requirement
|
|
128
114
|
requirements:
|
|
129
|
-
- - ~>
|
|
115
|
+
- - "~>"
|
|
130
116
|
- !ruby/object:Gem::Version
|
|
131
117
|
version: '10.0'
|
|
132
118
|
type: :development
|
|
133
119
|
prerelease: false
|
|
134
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
121
|
requirements:
|
|
136
|
-
- - ~>
|
|
122
|
+
- - "~>"
|
|
137
123
|
- !ruby/object:Gem::Version
|
|
138
124
|
version: '10.0'
|
|
139
125
|
- !ruby/object:Gem::Dependency
|
|
140
126
|
name: redcarpet
|
|
141
127
|
requirement: !ruby/object:Gem::Requirement
|
|
142
128
|
requirements:
|
|
143
|
-
- - ~>
|
|
129
|
+
- - "~>"
|
|
144
130
|
- !ruby/object:Gem::Version
|
|
145
131
|
version: '3.2'
|
|
146
132
|
type: :development
|
|
147
133
|
prerelease: false
|
|
148
134
|
version_requirements: !ruby/object:Gem::Requirement
|
|
149
135
|
requirements:
|
|
150
|
-
- - ~>
|
|
136
|
+
- - "~>"
|
|
151
137
|
- !ruby/object:Gem::Version
|
|
152
138
|
version: '3.2'
|
|
153
139
|
- !ruby/object:Gem::Dependency
|
|
154
140
|
name: rspec
|
|
155
141
|
requirement: !ruby/object:Gem::Requirement
|
|
156
142
|
requirements:
|
|
157
|
-
- - ~>
|
|
143
|
+
- - "~>"
|
|
158
144
|
- !ruby/object:Gem::Version
|
|
159
145
|
version: '3.1'
|
|
160
146
|
type: :development
|
|
161
147
|
prerelease: false
|
|
162
148
|
version_requirements: !ruby/object:Gem::Requirement
|
|
163
149
|
requirements:
|
|
164
|
-
- - ~>
|
|
150
|
+
- - "~>"
|
|
165
151
|
- !ruby/object:Gem::Version
|
|
166
152
|
version: '3.1'
|
|
167
153
|
- !ruby/object:Gem::Dependency
|
|
168
154
|
name: rubocop
|
|
169
155
|
requirement: !ruby/object:Gem::Requirement
|
|
170
156
|
requirements:
|
|
171
|
-
- - ~>
|
|
157
|
+
- - "~>"
|
|
172
158
|
- !ruby/object:Gem::Version
|
|
173
|
-
version:
|
|
159
|
+
version: 0.40.0
|
|
174
160
|
type: :development
|
|
175
161
|
prerelease: false
|
|
176
162
|
version_requirements: !ruby/object:Gem::Requirement
|
|
177
163
|
requirements:
|
|
178
|
-
- - ~>
|
|
164
|
+
- - "~>"
|
|
179
165
|
- !ruby/object:Gem::Version
|
|
180
|
-
version:
|
|
166
|
+
version: 0.40.0
|
|
181
167
|
- !ruby/object:Gem::Dependency
|
|
182
168
|
name: yard
|
|
183
169
|
requirement: !ruby/object:Gem::Requirement
|
|
184
170
|
requirements:
|
|
185
|
-
- - ~>
|
|
171
|
+
- - "~>"
|
|
186
172
|
- !ruby/object:Gem::Version
|
|
187
173
|
version: '0.8'
|
|
188
174
|
type: :development
|
|
189
175
|
prerelease: false
|
|
190
176
|
version_requirements: !ruby/object:Gem::Requirement
|
|
191
177
|
requirements:
|
|
192
|
-
- - ~>
|
|
178
|
+
- - "~>"
|
|
193
179
|
- !ruby/object:Gem::Version
|
|
194
180
|
version: '0.8'
|
|
195
|
-
description:
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
181
|
+
description: |-
|
|
182
|
+
This plugin provides native MongoDB
|
|
183
|
+
instrumentation for monitoring and metrics
|
|
184
|
+
collection, including: service health, database
|
|
185
|
+
connectivity, replication lag/status, `oplog`
|
|
186
|
+
monitoring, collection-specific metrics, and
|
|
187
|
+
more.
|
|
188
|
+
email: "<sensu-users@googlegroups.com>"
|
|
201
189
|
executables:
|
|
202
190
|
- check-mongodb.rb
|
|
203
191
|
- metrics-mongodb.rb
|
|
@@ -228,18 +216,19 @@ require_paths:
|
|
|
228
216
|
- lib
|
|
229
217
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
230
218
|
requirements:
|
|
231
|
-
- -
|
|
219
|
+
- - ">="
|
|
232
220
|
- !ruby/object:Gem::Version
|
|
233
|
-
version: 1
|
|
221
|
+
version: '2.1'
|
|
234
222
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
235
223
|
requirements:
|
|
236
|
-
- -
|
|
224
|
+
- - ">="
|
|
237
225
|
- !ruby/object:Gem::Version
|
|
238
226
|
version: '0'
|
|
239
227
|
requirements: []
|
|
240
228
|
rubyforge_project:
|
|
241
|
-
rubygems_version: 2.
|
|
229
|
+
rubygems_version: 2.5.1
|
|
242
230
|
signing_key:
|
|
243
231
|
specification_version: 4
|
|
244
232
|
summary: Sensu plugins for mongodb
|
|
245
233
|
test_files: []
|
|
234
|
+
has_rdoc:
|