Class: ArangoServer
Overview
SERVER ===
Direct Known Subclasses
ArangoAQL, ArangoCollection, ArangoDatabase, ArangoDocument, ArangoGraph, ArangoIndex, ArangoReplication, ArangoTask, ArangoTransaction, ArangoTraversal, ArangoUser
Constant Summary collapse
- @@verbose =
false
- @@async =
false
- @@database =
"_system"
- @@graph =
nil
- @@collection =
nil
- @@user =
nil
- @@request =
{:body => {}, :headers => {}, :query => {}}
- @@password =
""
- @@username =
"root"
- @@server =
"localhost"
- @@port =
"8529"
- @@cluster =
"cluster-test"
Class Method Summary collapse
-
.address ⇒ Object
TESTED.
-
.async ⇒ Object
TESTED.
-
.async=(async) ⇒ Object
TESTED.
-
.batch(queries:) ⇒ Object
BATCH ===.
-
.cancelAsync(id:) ⇒ Object
TESTED.
-
.changePropertyWAL(allowOversizeEntries: nil, logfileSize: nil, historicLogfiles: nil, reserveLogfiles: nil, throttleWait: nil, throttleWhenPending: nil) ⇒ Object
TESTED.
- .checkPort(port:) ⇒ Object
- .cluster ⇒ Object
- .cluster=(cluster) ⇒ Object
-
.clusterRoundtrip(cluster: @@cluster) ⇒ Object
SHARDING ===.
- .clusterStatistics(dbserver:) ⇒ Object
-
.collection ⇒ Object
TESTED.
-
.collection=(collection) ⇒ Object
TESTED.
-
.createDumpBatch(ttl:, dbserver: nil) ⇒ Object
TESTED.
-
.database ⇒ Object
TESTED.
-
.database=(database) ⇒ Object
TESTED.
-
.databases(user: nil) ⇒ Object
TESTED.
-
.databaseVersion ⇒ Object
def self.longEcho body: {} request = @@request.merge({ :body => body.to_json }) result = get(“/_admin/long_echo”, request) return_result result: result end.
-
.default_server(user: @@username, password: @@password, server: @@server, port: @@port) ⇒ Object
TESTED.
-
.destroyAllAsync ⇒ Object
TESTED.
-
.destroyAsync(type: nil, id: nil) ⇒ Object
TESTED.
- .destroyCluster(cluster: @@cluster) ⇒ Object
-
.destroyDumpBatch(id:, dbserver: nil) ⇒ Object
TESTED.
-
.destroyExpiredAsync ⇒ Object
TESTED.
-
.echo ⇒ Object
TESTED.
-
.endpoints ⇒ Object
LISTS ===.
- .execute(body:) ⇒ Object
- .executeCluster(body:, cluster: @@cluster) ⇒ Object
- .executeClusterHead(body:, cluster: @@cluster) ⇒ Object
- .executeClusterPut(body:, cluster: @@cluster) ⇒ Object
-
.fetchAsync(id:) ⇒ Object
TESTED.
-
.flushWAL(waitForSync: nil, waitForCollector: nil) ⇒ Object
TESTED.
-
.graph ⇒ Object
TESTED.
-
.graph=(graph) ⇒ Object
TESTED.
-
.log ⇒ Object
MONITORING ===.
-
.pendingAsync ⇒ Object
ASYNC ===.
-
.prolongDumpBatch(id:, ttl:, dbserver: nil) ⇒ Object
TESTED.
-
.propertyWAL ⇒ Object
TESTED.
-
.reload ⇒ Object
TESTED.
-
.request ⇒ Object
TESTED.
- .restart ⇒ Object
-
.retrieveAsync(type: nil, id: nil) ⇒ Object
TESTED.
-
.retrieveDoneAsync ⇒ Object
TESTED.
-
.retrievePendingAsync ⇒ Object
TESTED.
-
.return_result(result:, caseTrue: false, key: nil) ⇒ Object
UTILITY ===.
- .return_result_async(result:, caseTrue: false) ⇒ Object
-
.role ⇒ Object
TESTED.
- .server ⇒ Object
-
.serverId ⇒ Object
REPLICATION ===.
-
.shutdown ⇒ Object
TESTED.
-
.sleep(duration:) ⇒ Object
TESTED.
-
.statistics(description: false) ⇒ Object
TESTED.
-
.tasks ⇒ Object
TESTED.
- .test(body:) ⇒ Object
-
.time ⇒ Object
TESTED.
-
.transactions ⇒ Object
TESTED.
- .updateCluster(body:, cluster: @@cluster) ⇒ Object
-
.user ⇒ Object
TESTED.
- .user=(user) ⇒ Object
-
.username ⇒ Object
TESTED.
-
.users ⇒ Object
TESTED.
-
.verbose ⇒ Object
TESTED.
-
.verbose=(verbose) ⇒ Object
TESTED.
-
.version(details: nil) ⇒ Object
MISCELLANEOUS FUNCTIONS ===.
Class Method Details
.address ⇒ Object
TESTED
28 29 30 |
# File 'lib/ArangoRB_Ser.rb', line 28 def self.address # TESTED "#{@@server}:#{@@port}" end |
.async ⇒ Object
TESTED
57 58 59 |
# File 'lib/ArangoRB_Ser.rb', line 57 def self.async # TESTED @@async end |
.async=(async) ⇒ Object
TESTED
44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/ArangoRB_Ser.rb', line 44 def self.async=(async) # TESTED if async == true || async == "true" @@request[:headers] = {"x-arango-async" => "true"} @@async = true elsif async == "store" @@request[:headers] = {"x-arango-async" => "store"} @@async = "store" else @@request[:headers] = {} @@async = false end end |
.batch(queries:) ⇒ Object
BATCH ===
244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 |
# File 'lib/ArangoRB_Ser.rb', line 244 def self.batch(queries:) # TESTED headers = { "Content-Type": "multipart/form-data", "boundary": "XboundaryX" } body = "" queries.each{|query| body += "--XboundaryX\n" body += "Content-Type: application/x-arango-batchpart\n" body += "Content-Id: #{query[:id]}\n" unless query[:id].nil? body += "\n" body += "#{query[:type]} " body += "#{query[:address]} HTTP/1.1\n" body += "\n#{query[:body].to_json}\n" unless query[:body].nil? } body += "--XboundaryX--\n" if queries.length > 0 request = @@request.merge({ :body => body, :headers => headers }) result = post("/_api/batch", request) return_result result: result end |
.cancelAsync(id:) ⇒ Object
TESTED
224 225 226 227 |
# File 'lib/ArangoRB_Ser.rb', line 224 def self.cancelAsync(id:) # TESTED result = put("/_api/job/#{id}/cancel") return_result_async result: result end |
.changePropertyWAL(allowOversizeEntries: nil, logfileSize: nil, historicLogfiles: nil, reserveLogfiles: nil, throttleWait: nil, throttleWhenPending: nil) ⇒ Object
TESTED
362 363 364 365 366 367 368 369 370 371 372 373 374 |
# File 'lib/ArangoRB_Ser.rb', line 362 def self.changePropertyWAL(allowOversizeEntries: nil, logfileSize: nil, historicLogfiles: nil, reserveLogfiles: nil, throttleWait: nil, throttleWhenPending: nil) # TESTED body = { "allowOversizeEntries" => allowOversizeEntries, "logfileSize" => allowOversizeEntries, "historicLogfiles" => historicLogfiles, "reserveLogfiles" => reserveLogfiles, "throttleWait" => throttleWait, "throttleWhenPending" => throttleWhenPending }.delete_if{|k,v| v.nil?}.to_json request = @@request.merge({ :body => body }) result = put("/_admin/wal/properties", request) return_result result: result end |
.checkPort(port:) ⇒ Object
331 332 333 334 335 336 |
# File 'lib/ArangoRB_Ser.rb', line 331 def self.checkPort(port:) query = {"port": port} request = @@request.merge({ "query" => query }) result = get("/_admin/clusterCheckPort", request) return_result result: result end |
.cluster ⇒ Object
125 126 127 |
# File 'lib/ArangoRB_Ser.rb', line 125 def self.cluster @@cluster end |
.cluster=(cluster) ⇒ Object
129 130 131 |
# File 'lib/ArangoRB_Ser.rb', line 129 def self.cluster=(cluster) @@cluster = cluster end |
.clusterRoundtrip(cluster: @@cluster) ⇒ Object
SHARDING ===
298 299 300 301 |
# File 'lib/ArangoRB_Ser.rb', line 298 def self.clusterRoundtrip(cluster: @@cluster) result = get("/_admin/#{cluster}", @@request) return_result result: result end |
.clusterStatistics(dbserver:) ⇒ Object
164 165 166 167 168 169 |
# File 'lib/ArangoRB_Ser.rb', line 164 def self.clusterStatistics dbserver: query = {"DBserver": dbserver} request = @@request.merge({ :query => query }) result = get("/_admin/clusterStatistics", request) return_result result: result end |
.collection ⇒ Object
TESTED
102 103 104 |
# File 'lib/ArangoRB_Ser.rb', line 102 def self.collection # TESTED ArangoCollection.new(database: @@database, collection: @@collection) end |
.collection=(collection) ⇒ Object
TESTED
91 92 93 94 95 96 97 98 99 100 |
# File 'lib/ArangoRB_Ser.rb', line 91 def self.collection=(collection) # TESTED if collection.is_a? String @@collection = collection elsif collection.is_a? ArangoCollection @@collection = collection.collection else raise "graph should be a String or an ArangoCollection instance, not a #{collection.class}" end ArangoCollection.new(database: @@database, collection: @@collection) end |
.createDumpBatch(ttl:, dbserver: nil) ⇒ Object
TESTED
273 274 275 276 277 278 279 |
# File 'lib/ArangoRB_Ser.rb', line 273 def self.createDumpBatch(ttl:, dbserver: nil) # TESTED query = {"DBserver" => dbserver}.delete_if{|k,v| v.nil?} body = { "ttl" => ttl } request = @@request.merge({ :body => body.to_json, :query => query }) result = post("/_api/replication/batch", request) return_result result: result, key: "id" end |
.database ⇒ Object
TESTED
72 73 74 |
# File 'lib/ArangoRB_Ser.rb', line 72 def self.database # TESTED ArangoDatabase.new(database: @@database) end |
.database=(database) ⇒ Object
TESTED
61 62 63 64 65 66 67 68 69 70 |
# File 'lib/ArangoRB_Ser.rb', line 61 def self.database=(database) # TESTED if database.is_a? String @@database = database elsif database.is_a? ArangoDatabase @@database = database.database else raise "database should be a String or an ArangoDatabase instance, not a #{database.class}" end ArangoDatabase.new(database: @@database) end |
.databases(user: nil) ⇒ Object
TESTED
186 187 188 |
# File 'lib/ArangoRB_Ser.rb', line 186 def self.databases(user: nil) # TESTED ArangoDatabase.databases user: user end |
.databaseVersion ⇒ Object
def self.longEcho body: {}
request = @@request.merge({ :body => body.to_json })
result = get("/_admin/long_echo", request)
return_result result: result
end
397 398 399 400 |
# File 'lib/ArangoRB_Ser.rb', line 397 def self.databaseVersion # TESTED result = get("/_admin/database/target-version", @@request) return_result result: result, key: "version" end |
.default_server(user: @@username, password: @@password, server: @@server, port: @@port) ⇒ Object
TESTED
19 20 21 22 23 24 25 26 |
# File 'lib/ArangoRB_Ser.rb', line 19 def self.default_server(user: @@username, password: @@password, server: @@server, port: @@port) # TESTED base_uri "http://#{server}:#{port}" basic_auth user, password @@username = user @@password = password @@server = server @@port = port end |
.destroyAllAsync ⇒ Object
TESTED
234 235 236 |
# File 'lib/ArangoRB_Ser.rb', line 234 def self.destroyAllAsync # TESTED destroyAsync(type: "all") end |
.destroyAsync(type: nil, id: nil) ⇒ Object
TESTED
229 230 231 232 |
# File 'lib/ArangoRB_Ser.rb', line 229 def self.destroyAsync(type: nil, id: nil) # TESTED result = id.nil? ? delete("/_api/job/#{type}") : delete("/_api/job/#{id}") return_result_async result: result, caseTrue: true end |
.destroyCluster(cluster: @@cluster) ⇒ Object
315 316 317 318 |
# File 'lib/ArangoRB_Ser.rb', line 315 def self.destroyCluster(cluster: @@cluster) result = delete("/_admin/#{cluster}", @@request) return_result result: result, caseTrue: true end |
.destroyDumpBatch(id:, dbserver: nil) ⇒ Object
TESTED
265 266 267 268 269 270 271 |
# File 'lib/ArangoRB_Ser.rb', line 265 def self.destroyDumpBatch(id:, dbserver: nil) # TESTED query = {"DBserver" => dbserver}.delete_if{|k,v| v.nil?} request = @@request.merge({ :query => query }) result = delete("/_api/replication/batch/#{id}", request) return true if result.nil? return result["errorMessage"] if result["error"] end |
.destroyExpiredAsync ⇒ Object
TESTED
238 239 240 |
# File 'lib/ArangoRB_Ser.rb', line 238 def self.destroyExpiredAsync # TESTED destroyAsync(type: "expired") end |
.echo ⇒ Object
TESTED
386 387 388 389 |
# File 'lib/ArangoRB_Ser.rb', line 386 def self.echo # TESTED result = get("/_admin/echo", @@request) return_result result: result end |
.endpoints ⇒ Object
LISTS ===
173 174 175 176 |
# File 'lib/ArangoRB_Ser.rb', line 173 def self.endpoints # TESTED result = get("/_api/endpoint", @@request) return_result result: result end |
.execute(body:) ⇒ Object
424 425 426 427 428 |
# File 'lib/ArangoRB_Ser.rb', line 424 def self.execute(body:) request = @@request.merge({ "body" => body.to_json }) result = post("/_admin/execute", request) return_result result: result end |
.executeCluster(body:, cluster: @@cluster) ⇒ Object
303 304 305 306 307 |
# File 'lib/ArangoRB_Ser.rb', line 303 def self.executeCluster(body:, cluster: @@cluster) request = @@request.merge({ "body" => body.to_json }) result = post("/_admin/#{cluster}", request) return_result result: result end |
.executeClusterHead(body:, cluster: @@cluster) ⇒ Object
326 327 328 329 |
# File 'lib/ArangoRB_Ser.rb', line 326 def self.executeClusterHead(body:, cluster: @@cluster) result = head("/_admin/#{cluster}", @@request) return_result result: result end |
.executeClusterPut(body:, cluster: @@cluster) ⇒ Object
309 310 311 312 313 |
# File 'lib/ArangoRB_Ser.rb', line 309 def self.executeClusterPut(body:, cluster: @@cluster) request = @@request.merge({ "body" => body.to_json }) result = put("/_admin/#{cluster}", request) return_result result: result end |
.fetchAsync(id:) ⇒ Object
TESTED
206 207 208 209 |
# File 'lib/ArangoRB_Ser.rb', line 206 def self.fetchAsync(id:) # TESTED result = put("/_api/job/#{id}") return_result_async result: result end |
.flushWAL(waitForSync: nil, waitForCollector: nil) ⇒ Object
TESTED
347 348 349 350 351 352 353 354 355 |
# File 'lib/ArangoRB_Ser.rb', line 347 def self.flushWAL(waitForSync: nil, waitForCollector: nil) # TESTED body = { "waitForSync" => waitForSync, "waitForCollector" => waitForCollector }.delete_if{|k,v| v.nil?}.to_json request = @@request.merge({ :body => body }) result = put("/_admin/wal/flush", request) return_result result: result, caseTrue: true end |
.graph ⇒ Object
TESTED
87 88 89 |
# File 'lib/ArangoRB_Ser.rb', line 87 def self.graph # TESTED ArangoGraph.new(database: @@database, graph: @@graph) end |
.graph=(graph) ⇒ Object
TESTED
76 77 78 79 80 81 82 83 84 85 |
# File 'lib/ArangoRB_Ser.rb', line 76 def self.graph=(graph) # TESTED if graph.is_a? String @@graph = graph elsif graph.is_a? ArangoGraph @@graph = graph.graph else raise "graph should be a String or an ArangoGraph instance, not a #{graph.class}" end ArangoGraph.new(database: @@database, graph: @@graph) end |
.log ⇒ Object
MONITORING ===
135 136 137 138 |
# File 'lib/ArangoRB_Ser.rb', line 135 def self.log # TESTED result = get("/_admin/log", @@request) return_result result: result end |
.pendingAsync ⇒ Object
ASYNC ===
201 202 203 204 |
# File 'lib/ArangoRB_Ser.rb', line 201 def self.pendingAsync # TESTED result = get("/_api/job/pending") return_result_async result: result end |
.prolongDumpBatch(id:, ttl:, dbserver: nil) ⇒ Object
TESTED
281 282 283 284 285 286 287 |
# File 'lib/ArangoRB_Ser.rb', line 281 def self.prolongDumpBatch(id:, ttl:, dbserver: nil) # TESTED query = {"DBserver" => dbserver}.delete_if{|k,v| v.nil?} body = { "ttl" => ttl } request = @@request.merge({ :body => body.to_json, :query => query }) result = post("/_api/replication/batch/#{id}", request) return_result result: result, key: "id" end |
.propertyWAL ⇒ Object
TESTED
357 358 359 360 |
# File 'lib/ArangoRB_Ser.rb', line 357 def self.propertyWAL # TESTED result = get("/_admin/wal/properties", @@request) return_result result: result end |
.reload ⇒ Object
TESTED
140 141 142 143 |
# File 'lib/ArangoRB_Ser.rb', line 140 def self.reload # TESTED result = post("/_admin/routing/reload", @@request) return_result result: result, caseTrue: true end |
.request ⇒ Object
TESTED
121 122 123 |
# File 'lib/ArangoRB_Ser.rb', line 121 def self.request # TESTED @@request end |
.restart ⇒ Object
414 415 416 |
# File 'lib/ArangoRB_Ser.rb', line 414 def self.restart `sudo service arangodb restart` end |
.retrieveAsync(type: nil, id: nil) ⇒ Object
TESTED
211 212 213 214 |
# File 'lib/ArangoRB_Ser.rb', line 211 def self.retrieveAsync(type: nil, id: nil) # TESTED result = id.nil? ? get("/_api/job/#{type}") : get("/_api/job/#{id}") return_result_async result: result end |
.retrieveDoneAsync ⇒ Object
TESTED
216 217 218 |
# File 'lib/ArangoRB_Ser.rb', line 216 def self.retrieveDoneAsync # TESTED retrieveAsync(type: "done") end |
.retrievePendingAsync ⇒ Object
TESTED
220 221 222 |
# File 'lib/ArangoRB_Ser.rb', line 220 def self.retrievePendingAsync # TESTED retrieveAsync(type: "pending") end |
.return_result(result:, caseTrue: false, key: nil) ⇒ Object
UTILITY ===
432 433 434 435 436 437 438 439 440 |
# File 'lib/ArangoRB_Ser.rb', line 432 def self.return_result(result:, caseTrue: false, key: nil) return result.headers["x-arango-async-id"] if @@async == "store" return true if @@async result = result.parsed_response return result if @@verbose || !result.is_a?(Hash) return result["errorMessage"] if result["error"] return true if caseTrue return key.nil? ? result.delete_if{|k,v| k == "error" || k == "code"} : result[key] end |
.return_result_async(result:, caseTrue: false) ⇒ Object
442 443 444 445 |
# File 'lib/ArangoRB_Ser.rb', line 442 def self.return_result_async(result:, caseTrue: false) result = result.parsed_response (@@verbose || !result.is_a?(Hash)) ? result : result["error"] ? result["errorMessage"] : caseTrue ? true : result.delete_if{|k,v| k == "error" || k == "code"} end |
.role ⇒ Object
TESTED
154 155 156 157 |
# File 'lib/ArangoRB_Ser.rb', line 154 def self.role # TESTED result = get("/_admin/server/role", @@request) return_result result: result, key: "role" end |
.server ⇒ Object
159 160 161 162 |
# File 'lib/ArangoRB_Ser.rb', line 159 def self.server result = get("/_admin/server/id", @@request) return_result result: result end |
.serverId ⇒ Object
REPLICATION ===
291 292 293 294 |
# File 'lib/ArangoRB_Ser.rb', line 291 def self.serverId # TESTED result = get("/_api/replication/server-id", @@request) return_result result: result, key: "serverId" end |
.shutdown ⇒ Object
TESTED
409 410 411 412 |
# File 'lib/ArangoRB_Ser.rb', line 409 def self.shutdown # TESTED result = delete("/_admin/shutdown", @@request) return_result result: result, caseTrue: true end |
.sleep(duration:) ⇒ Object
TESTED
402 403 404 405 406 407 |
# File 'lib/ArangoRB_Ser.rb', line 402 def self.sleep(duration:) # TESTED query = {"duration": duration} request = @@request.merge({ "query" => query }) result = get("/_admin/sleep", request) return_result result: result, key: "duration" end |
.statistics(description: false) ⇒ Object
TESTED
145 146 147 148 149 150 151 152 |
# File 'lib/ArangoRB_Ser.rb', line 145 def self.statistics description: false # TESTED if description result = get("/_admin/statistics-description", @@request) else result = get("/_admin/statistics", @@request) end return_result result: result end |
.tasks ⇒ Object
TESTED
191 192 193 194 195 196 197 |
# File 'lib/ArangoRB_Ser.rb', line 191 def self.tasks # TESTED result = get("/_api/tasks", @@request) return result.headers["x-arango-async-id"] if @@async == "store" return true if @@async result = result.parsed_response @@verbose ? result : (result.is_a?(Hash) && result["error"]) ? result["errorMessage"] : result.map{|x| ArangoTask.new(id: x["id"], name: x["name"], type: x["type"], period: x["period"], created: x["created"], command: x["command"], database: x["database"])} end |
.test(body:) ⇒ Object
418 419 420 421 422 |
# File 'lib/ArangoRB_Ser.rb', line 418 def self.test(body:) request = @@request.merge({ "body" => body.to_json }) result = post("/_admin/test", request) return_result result: result end |
.time ⇒ Object
TESTED
381 382 383 384 |
# File 'lib/ArangoRB_Ser.rb', line 381 def self.time # TESTED result = get("/_admin/time", @@request) return_result result: result, key: "time" end |
.transactions ⇒ Object
TESTED
376 377 378 379 |
# File 'lib/ArangoRB_Ser.rb', line 376 def self.transactions # TESTED result = get("/_admin/wal/transactions", @@request) return_result result: result end |
.updateCluster(body:, cluster: @@cluster) ⇒ Object
320 321 322 323 324 |
# File 'lib/ArangoRB_Ser.rb', line 320 def self.updateCluster(body:, cluster: @@cluster) request = @@request.merge({ "body" => body.to_json }) result = patch("/_admin/#{cluster}", request) return_result result: result, caseTrue: true end |
.user ⇒ Object
TESTED
117 118 119 |
# File 'lib/ArangoRB_Ser.rb', line 117 def self.user # TESTED ArangoUser.new(user: @@user) end |
.user=(user) ⇒ Object
106 107 108 109 110 111 112 113 114 115 |
# File 'lib/ArangoRB_Ser.rb', line 106 def self.user=(user) if user.is_a? String @@user = user elsif user.is_a? ArangoUser @@user = user.user else raise "graph should be a String or an ArangoUser instance, not a #{user.class}" end ArangoUser.new(user: @@user) end |
.username ⇒ Object
TESTED
32 33 34 |
# File 'lib/ArangoRB_Ser.rb', line 32 def self.username # TESTED @@username end |
.users ⇒ Object
TESTED
178 179 180 181 182 183 184 |
# File 'lib/ArangoRB_Ser.rb', line 178 def self.users # TESTED result = get("/_api/user", @@request) return result.headers["x-arango-async-id"] if @@async == "store" return true if @@async result = result.parsed_response @@verbose ? result : result["error"] ? result["errorMessage"] : result["result"].map{|x| ArangoUser.new(user: x["user"], active: x["active"], extra: x["extra"])} end |
.verbose ⇒ Object
TESTED
40 41 42 |
# File 'lib/ArangoRB_Ser.rb', line 40 def self.verbose # TESTED @@verbose end |
.verbose=(verbose) ⇒ Object
TESTED
36 37 38 |
# File 'lib/ArangoRB_Ser.rb', line 36 def self.verbose=(verbose) # TESTED @@verbose = verbose end |
.version(details: nil) ⇒ Object
MISCELLANEOUS FUNCTIONS ===
340 341 342 343 344 345 |
# File 'lib/ArangoRB_Ser.rb', line 340 def self.version(details: nil) # TESTED query = {"details": details} request = @@request.merge({ "query" => query }) result = get("/_api/version", request) return_result result: result end |