Module: Arango::Server::Administration
- Included in:
- Arango::Server
- Defined in:
- lib/arango/server/administration.rb
Overview
Arango Server Administration
Instance Method Summary collapse
-
#agent? ⇒ Boolean
Check if server role is AGENT.
-
#available? ⇒ Boolean
Check availability of the server.
-
#cluster_endpoints ⇒ Array<String>
Returns information about all coordinator endpoints (cluster only).
-
#coordinator? ⇒ Boolean
Check if server role is COORDINATOR.
-
#detailed_version ⇒ Arango::Result
Return server version details.
-
#echo(request_hash) ⇒ Hash
Send back what was sent in, headers, post body etc.
-
#endpoints ⇒ Array<String>
Returns information about all server endpoints.
-
#engine ⇒ Arango::Result
Return server database engine information.
-
#enterprise? ⇒ Boolean
Check if the server has the enterprise license.
-
#flush_wal(wait_for_sync: false, wait_for_collector: false) ⇒ Object
Flushes the write-ahead log.
-
#in_cluster? ⇒ Boolean
Check if server is part of a cluster.
-
#log(upto: nil, level: nil, start: nil, size: nil, offset: nil, search: nil, sort: nil) ⇒ Arango::Result
Read global logs from the server.
-
#log_level ⇒ Arango::Result
Returns the current log level settings.
-
#log_level=(log_level_object) ⇒ Object
Modifies the current log level settings.
-
#mmfiles? ⇒ Boolean
Return true if the server uses the mmfiles engine.
-
#mode ⇒ Symbol
Return mode information about a server.
-
#mode=(mode) ⇒ Symbol
Set server mode.
-
#primary? ⇒ Boolean
Check if server role is PRIMARY.
-
#read_only? ⇒ Boolean
Check if server is read only.
-
#reload_routing ⇒ Object
Reloads the routing information from the collection routing.
-
#rocksdb? ⇒ Boolean
Return true if the server uses the rocksdb engine.
-
#role ⇒ String
Returns the role of a server in a cluster.
-
#secondary? ⇒ Boolean
Check if server role is SECONDARY.
-
#server_id ⇒ Boolean
Returns the id of a server in a cluster.
-
#shutdown ⇒ Boolean
Shutdown the server.
-
#single? ⇒ Boolean
Check if server role is SINGLE.
-
#statistics ⇒ Arango::Result
Returns the statistics information.
-
#statistics_description ⇒ Arango::Result
Returns a description of the statistics returned by /_admin/statistics.
-
#status ⇒ Arango::Result
Returns status information about the server.
-
#target_version ⇒ String
Returns the database version that this server requires.
-
#time ⇒ Float
The servers current system time as a Unix timestamp with microsecond precision of the server.
-
#version ⇒ String
The server version string.
-
#wal_properties ⇒ Object
Retrieves the configuration of the write-ahead log.
-
#wal_properties=(properties_object) ⇒ Object
Configures the behavior of the write-ahead log.
Instance Method Details
#agent? ⇒ Boolean
Check if server role is AGENT.
155 156 157 |
# File 'lib/arango/server/administration.rb', line 155 def agent? role == 'AGENT' end |
#available? ⇒ Boolean
Check availability of the server.
10 11 12 |
# File 'lib/arango/server/administration.rb', line 10 def available? 200 == Arango::Requests::Administration::Availability.execute(server: self).response_code end |
#cluster_endpoints ⇒ Array<String>
Returns information about all coordinator endpoints (cluster only).
16 17 18 19 20 21 |
# File 'lib/arango/server/administration.rb', line 16 def cluster_endpoints if in_cluster? result = Arango::Requests::Administration::ClusterEndpoints.execute(server: self) result.endpoints.map { |e| e[:endpoint] } end end |
#coordinator? ⇒ Boolean
Check if server role is COORDINATOR.
161 162 163 |
# File 'lib/arango/server/administration.rb', line 161 def coordinator? role == 'COORDINATOR' end |
#detailed_version ⇒ Arango::Result
Return server version details. The response will contain a details attribute with additional information about included components and their versions. The attribute names and internals of the details object may vary depending on platform and ArangoDB version.
229 230 231 |
# File 'lib/arango/server/administration.rb', line 229 def detailed_version Arango::Requests::Administration::Version.execute(server: self, params: {details: true}) end |
#echo(request_hash) ⇒ Hash
Send back what was sent in, headers, post body etc.
33 34 35 |
# File 'lib/arango/server/administration.rb', line 33 def echo(request_hash) Arango::Requests::Administration::Echo.execute(server: self, body: request_hash) end |
#endpoints ⇒ Array<String>
Returns information about all server endpoints.
25 26 27 28 |
# File 'lib/arango/server/administration.rb', line 25 def endpoints result = Arango::Requests::Administration::Endpoints.execute(server: self) result.map { |e| e[:endpoint] } end |
#engine ⇒ Arango::Result
Return server database engine information
39 40 41 |
# File 'lib/arango/server/administration.rb', line 39 def engine @engine ||= Arango::Requests::Administration::Engine.execute(server: self) end |
#enterprise? ⇒ Boolean
Check if the server has the enterprise license.
215 216 217 |
# File 'lib/arango/server/administration.rb', line 215 def enterprise? @enterprise ||= (status.license == 'enterprise') end |
#flush_wal(wait_for_sync: false, wait_for_collector: false) ⇒ Object
Flushes the write-ahead log. By flushing the currently active write-ahead logfile, the data in it can be transferred to collection journals and datafiles. This is useful to ensure that all data for a collection is present in the collection journals and datafiles, for example, when dumping the data of a collection.
257 258 259 260 261 262 263 |
# File 'lib/arango/server/administration.rb', line 257 def flush_wal(wait_for_sync: false, wait_for_collector: false) params = { waitForSync: wait_for_sync, waitForCollector: wait_for_collector } 200 == Arango::Requests::Wal::Flush.execute(server: self, params: params).response_code end |
#in_cluster? ⇒ Boolean
Check if server is part of a cluster.
185 186 187 |
# File 'lib/arango/server/administration.rb', line 185 def in_cluster? coordinator? || primary? || agent? || secondary? end |
#log(upto: nil, level: nil, start: nil, size: nil, offset: nil, search: nil, sort: nil) ⇒ Arango::Result
Read global logs from the server. Log levels for the upto and level params:
-
fatal or 0
-
error or 1
-
warning or 2
-
info or 3
-
debug or 4
The parameters upto and level are mutually exclusive. All params are optional.
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/arango/server/administration.rb', line 72 def log(upto: nil, level: nil, start: nil, size: nil, offset: nil, search: nil, sort: nil) sort = sort.to_s if sort satisfy_category?(sort, [nil, "asc", "desc"]) query = Hash.new query[:start] = start if start query[:size] = size if size query[:offset] = offset if offset query[:search] = search if search query[:sort] = sort if sort if upto upto = upto.to_s satisfy_category?(upto, [nil, "fatal", 0, "error", 1, "warning", 2, "info", 3, "debug", 4]) query[:upto] = upto elsif level level = level.to_s satisfy_category?(level, [nil, "fatal", 0, "error", 1, "warning", 2, "info", 3, "debug", 4]) query[:level] = level end Arango::Requests::Administration::Log.execute(server: self, params: query) end |
#log_level ⇒ Arango::Result
Returns the current log level settings
95 96 97 |
# File 'lib/arango/server/administration.rb', line 95 def log_level Arango::Requests::Administration::GetLogLevel.execute(server: self) end |
#log_level=(log_level_object) ⇒ Object
Modifies the current log level settings
103 104 105 106 107 108 109 110 |
# File 'lib/arango/server/administration.rb', line 103 def log_level=(log_level_object) body = if log_level_object.class == Arango::Result log_level_object.to_h else log_level_object end Arango::Requests::Administration::SetLogLevel.execute(server: self, body: body) end |
#mmfiles? ⇒ Boolean
Return true if the server uses the mmfiles engine.
45 46 47 |
# File 'lib/arango/server/administration.rb', line 45 def mmfiles? 'mmfiles' == engine.name end |
#mode ⇒ Symbol
Return mode information about a server.
114 115 116 |
# File 'lib/arango/server/administration.rb', line 114 def mode Arango::Requests::Administration::GetMode.execute(server: self).mode.to_sym end |
#mode=(mode) ⇒ Symbol
Set server mode.
121 122 123 124 125 |
# File 'lib/arango/server/administration.rb', line 121 def mode=(mode) satisfy_category?(mode, ["default", "readonly", :default, :readonly]) body = { mode: mode.to_s } Arango::Requests::Administration::SetMode.execute(server: self, body: body).mode.to_sym end |
#primary? ⇒ Boolean
Check if server role is PRIMARY.
167 168 169 |
# File 'lib/arango/server/administration.rb', line 167 def primary? role == 'PRIMARY' end |
#read_only? ⇒ Boolean
Check if server is read only.
129 130 131 |
# File 'lib/arango/server/administration.rb', line 129 def read_only? :readonly == mode end |
#reload_routing ⇒ Object
Reloads the routing information from the collection routing.
135 136 137 138 |
# File 'lib/arango/server/administration.rb', line 135 def reload_routing Arango::Requests::Administration::ReloadRouting.execute(server: self) true end |
#rocksdb? ⇒ Boolean
Return true if the server uses the rocksdb engine.
51 52 53 |
# File 'lib/arango/server/administration.rb', line 51 def rocksdb? 'rocksdb' == engine.name end |
#role ⇒ String
Returns the role of a server in a cluster. SINGLE: the server is a standalone server without clustering COORDINATOR: the server is a Coordinator in a cluster PRIMARY: the server is a DBServer in a cluster SECONDARY: this role is not used anymore AGENT: the server is an Agency node in a cluster UNDEFINED: in a cluster, UNDEFINED is returned if the server role cannot be determined.
149 150 151 |
# File 'lib/arango/server/administration.rb', line 149 def role @role ||= Arango::Requests::Administration::Role.execute(server: self).role end |
#secondary? ⇒ Boolean
Check if server role is SECONDARY.
173 174 175 |
# File 'lib/arango/server/administration.rb', line 173 def secondary? role == 'SECONDARY' end |
#server_id ⇒ Boolean
Returns the id of a server in a cluster.
191 192 193 |
# File 'lib/arango/server/administration.rb', line 191 def server_id request(get: "_admin/server/id").serverId if in_cluster? end |
#shutdown ⇒ Boolean
Shutdown the server.
299 300 301 |
# File 'lib/arango/server/administration.rb', line 299 def shutdown 200 == request(delete: "_admin/shutdown").response_code end |
#single? ⇒ Boolean
Check if server role is SINGLE.
179 180 181 |
# File 'lib/arango/server/administration.rb', line 179 def single? role == 'SINGLE' end |
#statistics ⇒ Arango::Result
Returns the statistics information.
197 198 199 |
# File 'lib/arango/server/administration.rb', line 197 def statistics Arango::Requests::Administration::Statistics.execute(server: self) end |
#statistics_description ⇒ Arango::Result
Returns a description of the statistics returned by /_admin/statistics.
203 204 205 |
# File 'lib/arango/server/administration.rb', line 203 def statistics_description Arango::Requests::Administration::StatisticsDescription.execute(server: self) end |
#status ⇒ Arango::Result
Returns status information about the server.
209 210 211 |
# File 'lib/arango/server/administration.rb', line 209 def status Arango::Requests::Administration::Status.execute(server: self) end |
#target_version ⇒ String
Returns the database version that this server requires.
242 243 244 |
# File 'lib/arango/server/administration.rb', line 242 def target_version Arango::Requests::Administration::TargetVersion.execute(server: self).version end |
#time ⇒ Float
The servers current system time as a Unix timestamp with microsecond precision of the server
221 222 223 |
# File 'lib/arango/server/administration.rb', line 221 def time Arango::Requests::Administration::Time.execute(server: self).time end |
#version ⇒ String
The server version string. The string has the format “major.minor.sub”. major and minor will be numeric, and sub may contain a number or a textual version.
236 237 238 |
# File 'lib/arango/server/administration.rb', line 236 def version Arango::Requests::Administration::Version.execute(server: self).version end |
#wal_properties ⇒ Object
Retrieves the configuration of the write-ahead log. Properties:
-
allow_oversize_entries: whether or not operations that are bigger than a single logfile can be executed and stored
-
log_file_size: the size of each write-ahead logfile
-
historic_logfiles: the maximum number of historic logfiles to keep
-
reserve_logfiles: the maximum number of reserve logfiles that ArangoDB allocates in the background
-
throttle_wait: the maximum wait time that operations will wait before they get aborted if case of write-throttling (in milliseconds)
-
throttle_when_pending: the number of unprocessed garbage-collection operations that, when reached, will activate write-throttling.
A value of 0 means that write-throttling will not be triggered.
return [Arango::Result]
274 275 276 277 278 |
# File 'lib/arango/server/administration.rb', line 274 def wal_properties result = Arango::Requests::Wal::GetProperties.execute(server: self) raise "WAL properties not available." if result.response_code >= 500 result end |
#wal_properties=(properties_object) ⇒ Object
Configures the behavior of the write-ahead log.
283 284 285 286 287 288 289 290 291 292 293 294 295 |
# File 'lib/arango/server/administration.rb', line 283 def wal_properties=(properties_object) body = { allowOversizeEntries: properties_object.allow_oversize_entries, logfileSize: properties_object.logfile_size, historicLogfiles: properties_object.historic_logfiles, reserveLogfiles: properties_object.reserve_logfiles, throttleWait: properties_object.throttle_wait, throttleWhenPending: properties_object.throttle_when_pending } result = request(put: "_admin/wal/properties", body: body) raise "WAL properties not available." if result.response_code >= 500 result end |