class Arango::Server
Attributes
size[RW]
timeout[RW]
warning[RW]
Public Class Methods
new(username: "root", password:, server: "localhost", warning: true, port: "8529", verbose: false, return_output: false, async: false, active_cache: false, pool: false, size: 5, timeout: 5, tls: false)
click to toggle source
# File lib/Server.rb, line 7 def initialize(username: "root", password:, server: "localhost", warning: true, port: "8529", verbose: false, return_output: false, async: false, active_cache: false, pool: false, size: 5, timeout: 5, tls: false) @tls = tls @base_uri = "http" @base_uri += "s" if tls @base_uri += "://#{server}:#{port}" @server = server @port = port @username = username @password = password @options = {body: {}, headers: {}, query: {}, basic_auth: {username: @username, password: @password }, format: :plain} @verbose = verbose @return_output = return_output @warning = warning @active_cache = active_cache @cache = @active_cache ? Arango::Cache.new : nil @pool = pool @size = size @timeout = timeout @request = Arango::Request.new(return_output: @return_output, base_uri: @base_uri, options: @options, verbose: @verbose, async: @async) assign_async(async) if @pool @internal_request = ConnectionPool.new(size: @size, timeout: @timeout){ @request } end end
Public Instance Methods
[](database)
click to toggle source
active_cache=(active)
click to toggle source
# File lib/Server.rb, line 43 def active_cache=(active) satisfy_category?(active, [true, false]) @active_cache = active if @active_cache @cache ||= Arango::Cache.new elsif !@cache.nil? @cache.clear end end
agencyConfig()
click to toggle source
agencyRead(body:, agency_mode: nil)
click to toggle source
# File lib/Server.rb, line 402 def agencyRead(body:, agency_mode: nil) satisfy_category?(agency_mode, ["waitForCommmitted", "waitForSequenced", "noWait", nil]) headers = {"X-ArangoDB-Agency-Mode": agency_mode} request("POST", "_api/agency/read", headers: headers, body: body) end
agencyWrite(body:, agency_mode: nil)
click to toggle source
# File lib/Server.rb, line 395 def agencyWrite(body:, agency_mode: nil) satisfy_category?(agency_mode, ["waitForCommmitted", "waitForSequenced", "noWait", nil]) headers = {"X-ArangoDB-Agency-Mode": agency_mode} request("POST", "_api/agency/write", headers: headers, body: body) end
allEndpoints(warning: @warning)
click to toggle source
# File lib/Server.rb, line 281 def allEndpoints(warning: @warning) warning_deprecated(warning, "allEndpoints") request("GET", "_api/endpoint") end
async=(async)
click to toggle source
# File lib/Server.rb, line 120 def async=(async) satisfy_category?(async, ["true", "false", false, true, "store", :store]) case async when true, "true" @options[:headers]["x-arango-async"] = "true" @async = true when :store, "store" @options[:headers]["x-arango-async"] ="store" @async = :store when false, "false" @options[:headers].delete("x-arango-async") @async = false end @request.async = @async @request.options = @options end
Also aliased as: assign_async
available?()
click to toggle source
# File lib/Server.rb, line 224 def available? request("POST", "_admin/routing/availability", body: {}) end
batch(boundary: "XboundaryX", queries: [])
click to toggle source
cancelAsync(id:)
click to toggle source
# File lib/Server.rb, line 319 def cancelAsync(id:) request("PUT", "_api/job/#{id}/cancel", key: :result) end
changePropertyWAL(allowOversizeEntries: nil, logfileSize: nil, historicLogfiles: nil, reserveLogfiles: nil, throttleWait: nil, throttleWhenPending: nil)
click to toggle source
# File lib/Server.rb, line 433 def changePropertyWAL(allowOversizeEntries: nil, logfileSize: nil, historicLogfiles: nil, reserveLogfiles: nil, throttleWait: nil, throttleWhenPending: nil) body = { "allowOversizeEntries": allowOversizeEntries, "logfileSize": allowOversizeEntries, "historicLogfiles": historicLogfiles, "reserveLogfiles": reserveLogfiles, "throttleWait": throttleWait, "throttleWhenPending": throttleWhenPending } request("PUT", "_admin/wal/properties", body: body) end
checkPort(port: @port)
click to toggle source
clusterHealth()
click to toggle source
# File lib/Server.rb, line 258 def clusterHealth request("GET", "_admin/health") end
clusterStatistics(dbserver: query = {DBserver: dbserver})
click to toggle source
# File lib/Server.rb, line 262 def clusterStatistics dbserver: query = {DBserver: dbserver} request("GET", "_admin/clusterStatistics", query: query) end
createDumpBatch(ttl:, dbserver: nil)
click to toggle source
# File lib/Server.rb, line 365 def createDumpBatch(ttl:, dbserver: nil) query = { DBserver: dbserver } body = { ttl: ttl } result = request("POST", "_api/replication/batch", body: body, query: query) return result if return_directly?(result) return result[:id] end
database(name:)
click to toggle source
# File lib/Server.rb, line 179 def database(name:) Arango::Database.new(name: name, server: self) end
databaseVersion()
click to toggle source
# File lib/Server.rb, line 459 def databaseVersion request("GET", "_admin/database/target-version", key: :version) end
databases(user: false)
click to toggle source
# File lib/Server.rb, line 183 def databases(user: false) if user result = request("GET", "_api/database/user", key: :result) else result = request("GET", "_api/database", key: :result) end return result if return_directly?(result) result.map{|db| Arango::Database.new(name: db, server: self)} end
destroyAllAsync()
click to toggle source
# File lib/Server.rb, line 334 def destroyAllAsync destroyAsyncByType(type: "all") end
destroyAsync(id:, stamp: nil)
click to toggle source
# File lib/Server.rb, line 323 def destroyAsync(id:, stamp: nil) query = {"stamp": stamp} request("DELETE", "_api/job/#{id}", query: query, key: :result) end
destroyAsyncByType(type:, stamp: nil)
click to toggle source
# File lib/Server.rb, line 328 def destroyAsyncByType(type:, stamp: nil) satisfy_category?(type, ["all", "expired"]) query = {"stamp": stamp} request("DELETE", "_api/job/#{type}", query: query) end
destroyDumpBatch(id:, dbserver: nil)
click to toggle source
# File lib/Server.rb, line 374 def destroyDumpBatch(id:, dbserver: nil) query = {DBserver: dbserver} result = request("DELETE", "_api/replication/batch/#{id}", query: query) return_delete(result) end
destroyExpiredAsync()
click to toggle source
# File lib/Server.rb, line 338 def destroyExpiredAsync destroyAsyncByType(type: "expired") end
download(*args)
click to toggle source
# File lib/Server.rb, line 165 def download(*args) if @pool @internal_request.with{|request| request.download(*args)} else @request.download(*args) end end
echo()
click to toggle source
# File lib/Server.rb, line 455 def echo request("POST", "_admin/echo", body: {}) end
endpoint()
click to toggle source
endpoints()
click to toggle source
# File lib/Server.rb, line 277 def endpoints request("GET", "_api/cluster/endpoints") end
engine()
click to toggle source
# File lib/Server.rb, line 416 def engine request("GET", "_api/engine") end
execute(body:)
click to toggle source
# File lib/Server.rb, line 472 def execute(body:) request("POST", "_admin/execute", body: body) end
fetchAsync(id:)
click to toggle source
flushWAL(waitForSync: nil, waitForCollector: nil)
click to toggle source
# File lib/Server.rb, line 420 def flushWAL(waitForSync: nil, waitForCollector: nil) body = { "waitForSync": waitForSync, "waitForCollector": waitForCollector } result = request("PUT", "_admin/wal/flush", body: body) return return_directly?(result) ? result: true end
log(upto: nil, level: nil, start: nil, size: nil, offset: nil, search: nil, sort: nil)
click to toggle source
MONITORING ===¶ ↑
# File lib/Server.rb, line 201 def log(upto: nil, level: nil, start: nil, size: nil, offset: nil, search: nil, sort: nil) satisfy_category?(upto, [nil, "fatal", 0, "error", 1, "warning", 2, "info", 3, "debug", 4]) satisfy_category?(sort, [nil, "asc", "desc"]) query = { upto: upto, level: level, start: start, size: size, offset: offset, search: search, sort: sort } request("GET", "_admin/log", query: query) end
loglevel()
click to toggle source
# File lib/Server.rb, line 211 def loglevel request("GET", "_admin/log/level") end
mode()
click to toggle source
# File lib/Server.rb, line 248 def mode request("GET", "_admin/server/mode") end
password=(password)
click to toggle source
# File lib/Server.rb, line 89 def password=(password) @password = password @options[:basic_auth][:password] = @password @request.options = options end
pool=(pool)
click to toggle source
# File lib/Server.rb, line 53 def pool=(pool) satisfy_category?(pool, [true, false]) return if @pool == pool @pool = pool if @pool @internal_request = ConnectionPool.new(size: @size, timeout: @timeout){ @request } else @internal_request&.shutdown { |conn| conn.quit } @internal_request = nil end end
Also aliased as: changePoolStatus
port=(port)
click to toggle source
# File lib/Server.rb, line 95 def port=(port) @port = port @base_uri = "http" @base_uri += "s" if @tls @base_uri += "://#{@server}:#{@port}" @request.base_uri = @base_uri end
prolongDumpBatch(id:, ttl:, dbserver: nil)
click to toggle source
# File lib/Server.rb, line 380 def prolongDumpBatch(id:, ttl:, dbserver: nil) query = { DBserver: dbserver } body = { ttl: ttl } result = request("PUT", "_api/replication/batch/#{id}", body: body, query: query) return result if return_directly?(result) return true end
propertyWAL()
click to toggle source
# File lib/Server.rb, line 429 def propertyWAL request("GET", "_admin/wal/properties") end
reload()
click to toggle source
# File lib/Server.rb, line 219 def reload request("GET", "_admin/routing/reload") return true end
request(*args)
click to toggle source
restartPool()
click to toggle source
# File lib/Server.rb, line 66 def restartPool changePoolStatus(false) changePoolStatus(true) end
retrieveAsync(id:)
click to toggle source
# File lib/Server.rb, line 342 def retrieveAsync(id:) request("GET", "_api/job/#{id}") end
retrieveAsyncByType(type:, count: nil)
click to toggle source
# File lib/Server.rb, line 346 def retrieveAsyncByType(type:, count: nil) satisfy_category?(type, ["done", "pending"]) request("GET", "_api/job/#{type}", query: {count: count}) end
retrieveDoneAsync(count: nil)
click to toggle source
# File lib/Server.rb, line 351 def retrieveDoneAsync(count: nil) retrieveAsyncByType(type: "done", count: count) end
retrievePendingAsync(count: nil)
click to toggle source
# File lib/Server.rb, line 355 def retrievePendingAsync(count: nil) retrieveAsyncByType(type: "pending", count: count) end
return_delete(result)
click to toggle source
# File lib/Server.rb, line 481 def return_delete(result) return result if @async != false return return_directly?(result) ? result : true end
return_directly?(result)
click to toggle source
# File lib/Server.rb, line 476 def return_directly?(result) return @async != false || @return_direct_result return result if result == true end
return_output=(return_output)
click to toggle source
# File lib/Server.rb, line 77 def return_output=(return_output) satisfy_category?(return_output, [true, false]) @return_output = return_output @request.return_output = return_output end
role()
click to toggle source
# File lib/Server.rb, line 240 def role request("GET", "_admin/server/role", key: :role) end
server=(server)
click to toggle source
# File lib/Server.rb, line 103 def server=(server) @server = server @base_uri = "http" @base_uri += "s" if @tls @base_uri += "://#{@server}:#{@port}" @request.base_uri = @base_uri end
serverData()
click to toggle source
# File lib/Server.rb, line 244 def serverData request("GET", "_admin/server/id") end
serverId()
click to toggle source
# File lib/Server.rb, line 267 def serverId request("GET", "_api/replication/server-id", key: :serverId) end
shutdown()
click to toggle source
# File lib/Server.rb, line 463 def shutdown result = request("DELETE", "_admin/shutdown") return return_directly?(result) ? result: true end
statistics()
click to toggle source
# File lib/Server.rb, line 228 def statistics request("GET", "_admin/statistics") end
statisticsDescription()
click to toggle source
# File lib/Server.rb, line 232 def statisticsDescription request("GET", "_admin/statistics-description") end
status()
click to toggle source
# File lib/Server.rb, line 236 def status request("GET", "_admin/status") end
tasks()
click to toggle source
test(body:)
click to toggle source
# File lib/Server.rb, line 468 def test(body:) request("POST", "_admin/test", body: body) end
time()
click to toggle source
# File lib/Server.rb, line 451 def time request("GET", "_admin/time", key: :time) end
tls=(tls)
click to toggle source
# File lib/Server.rb, line 111 def tls=(tls) satisfy_category?(tls, [false, true]) @tls = tls @base_uri = "http" @base_uri += "s" if @tls @base_uri += "://#{@server}:#{@port}" @request.base_uri = @base_uri end
to_h()
click to toggle source
transactions()
click to toggle source
# File lib/Server.rb, line 447 def transactions request("GET", "_admin/wal/transactions") end
updateLoglevel(body:)
click to toggle source
# File lib/Server.rb, line 215 def updateLoglevel(body:) request("PUT", "_admin/log/level", body: body) end
updateMode(mode:)
click to toggle source
# File lib/Server.rb, line 252 def updateMode(mode:) satisfy_category?(mode, ["default", "readonly"]) body = {mode: mode} request("PUT", "_admin/server/mode", body: mode) end
user(password: "", name:, extra: {}, active: nil)
click to toggle source
username=(username)
click to toggle source
# File lib/Server.rb, line 83 def username=(username) @username = username @options[:basic_auth][:username] = @username @request.options = options end
users()
click to toggle source
# File lib/Server.rb, line 293 def users result = request("GET", "_api/user", key: :result) return result if return_directly?(result) result.map do |user| Arango::User.new(name: user[:user], active: user[:active], extra: user[:extra], server: self) end end
verbose=(verbose)
click to toggle source
# File lib/Server.rb, line 71 def verbose=(verbose) satisfy_category?(verbose, [true, false]) @verbose = verbose @request.verbose = verbose end