class Arango::Server

Attributes

active_cache[R]

DEFINE ===

async[R]

DEFINE ===

base_uri[R]

DEFINE ===

cache[R]

DEFINE ===

password[R]

DEFINE ===

pool[R]

DEFINE ===

port[R]

DEFINE ===

return_output[R]

DEFINE ===

server[R]

DEFINE ===

size[RW]
timeout[RW]
tls[R]

DEFINE ===

username[R]

DEFINE ===

verbose[R]

DEFINE ===

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

DATABASE ==

# File lib/Server.rb, line 175
def [](database)
  Arango::Database.new(name: database, server: self)
end
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

AGENCY ===

# File lib/Server.rb, line 391
def agencyConfig
  request("GET", "_api/agency/config")
end
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
assign_async(async)
Alias for: async=
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

BATCH ===

# File lib/Server.rb, line 361
def batch(boundary: "XboundaryX", queries: [])
  Arango::Batch.new(server: self, boundary: boundary, queries: queries)
end
cancelAsync(id:) click to toggle source
# File lib/Server.rb, line 319
def cancelAsync(id:)
  request("PUT", "_api/job/#{id}/cancel", key: :result)
end
changePoolStatus(pool)
Alias for: pool=
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

CLUSTER ==

# File lib/Server.rb, line 195
def checkPort(port: @port)
  request("GET", "_admin/clusterCheckPort", query: {port: port.to_s})
end
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

ENDPOINT ===

# File lib/Server.rb, line 273
def endpoint
  "tcp://#{@server}:#{@port}"
end
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

ASYNC ===

# File lib/Server.rb, line 315
def fetchAsync(id:)
  request("PUT", "_api/job/#{id}")
end
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

REQUESTS ===

# File lib/Server.rb, line 157
def request(*args)
  if @pool
    @internal_request.with{|request| request.request(*args)}
  else
    @request.request(*args)
  end
end
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

TASKS ==

# File lib/Server.rb, line 304
def tasks
  result = request("GET", "_api/tasks")
  return result if return_directly?(result)
  result.map do |task|
    database = Arango::Database.new(name: task[:database], server: self)
    Arango::Task.new(body: task, database: database)
  end
end
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

TO HASH ===

# File lib/Server.rb, line 140
def to_h
  hash = {
    "base_uri": @base_uri,
    "server":   @server,
    "port":     @port,
    "username": @username,
    "async":    @async,
    "verbose":  @verbose,
    "return_output": @return_output,
    "warning": @warning,
    "tls": @tls
  }.delete_if{|k,v| v.nil?}
  hash
end
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

USER ===

# File lib/Server.rb, line 288
def user(password: "", name:, extra: {}, active: nil)
  Arango::User.new(server: self, password: password, name: name, extra: extra,
    active: active)
end
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
version(details: nil) click to toggle source

MISCELLANEOUS FUNCTIONS ===

# File lib/Server.rb, line 411
def version(details: nil)
  query = {"details": details}
  request("GET", "_api/version", query: query)
end