class Arango::Replication

Attributes

adaptivePolling[RW]
autoResync[RW]
autoResyncRetries[RW]
chunkSize[RW]
connectTimeout[RW]
connectionRetryWaitTime[RW]
endpoint[RW]
idleMaxWaitTime[RW]
idleMinWaitTime[RW]
includeSystem[RW]
incremental[RW]
initialSyncMaxWaitTime[RW]
master[R]
maxConnectRetries[RW]
password[RW]
requestTimeout[RW]
requireFromPresent[RW]
restrictCollections[R]
restrictType[R]
slave[R]
username[RW]
verbose[RW]

Public Class Methods

new(master:, slave:, includeSystem: true, initialSyncMaxWaitTime: nil, incremental: nil, restrictCollections: nil, connectTimeout: nil, autoResync: nil, idleMinWaitTime: nil, requestTimeout: nil, requireFromPresent: nil, idleMaxWaitTime: nil, restrictType: nil, maxConnectRetries: nil, adaptivePolling: nil, connectionRetryWaitTime: nil, autoResyncRetries: nil, chunkSize: nil, verbose: nil) click to toggle source
# File lib/Replication.rb, line 7
def initialize(master:, slave:, includeSystem: true,
  initialSyncMaxWaitTime: nil, incremental: nil,
  restrictCollections: nil, connectTimeout: nil,
  autoResync: nil, idleMinWaitTime: nil, requestTimeout: nil,
  requireFromPresent: nil, idleMaxWaitTime: nil, restrictType: nil,
  maxConnectRetries: nil, adaptivePolling: nil,
  connectionRetryWaitTime: nil, autoResyncRetries: nil, chunkSize: nil,
  verbose: nil)
  assign_master(master)
  assign_slave(slave)
  assign_restrictType(restrictType)
  assign_restrictCollections(restrictCollections)
  @includeSytem = includeSystem
  @initialSyncMaxWaitTime = initialSyncMaxWaitTime,
  @incremental = incremental
  @connectTimeout = connectTimeout
  @autoResync = autoResync
  @idleMinWaitTime = idleMinWaitTime
  @requestTimeout = requestTimeout
  @requireFromPresent = requireFromPresent
  @idleMaxWaitTime = idleMaxWaitTime
  @maxConnectRetries = maxConnectRetries
  @adaptivePolling = adaptivePolling
  @connectionRetryWaitTime = connectionRetryWaitTime
  @autoResyncRetries = autoResyncRetries
  @chunkSize = chunkSize
  @verbose = verbose
end

Public Instance Methods

assign_master(master)
Alias for: master=
assign_restrictCollections(restrictCollections)
assign_restrictType(restrictType)
Alias for: restrictType=
assign_slave(slave)
Alias for: slave=
configuration() click to toggle source
# File lib/Replication.rb, line 175
def configuration
  @slave.request("GET", "_api/replication/applier-config")
end
enslave() click to toggle source

ENSLAVING

# File lib/Replication.rb, line 135
def enslave
  body = {
    "username": @master_server.username,
    "password": @master_server.password,
    "includeSystem": @includeSystem,
    "endpoint":      @server.endpoint,
    "initialSyncMaxWaitTime": @initialSyncMaxWaitTime,
    "database":        @database.name,
    "verbose":         verbose,
    "connectTimeout":  @connectTimeout,
    "autoResync":      @autoResync,
    "idleMinWaitTime": @idleMinWaitTime,
    "requestTimeout":  @requestTimeout,
    "requireFromPresent": @requireFromPresent,
    "idleMaxWaitTime":   @idleMaxWaitTime,
    "restrictType":      @restrictType,
    "maxConnectRetries": @maxConnectRetries,
    "adaptivePolling":   @adaptivePolling,
    "connectionRetryWaitTime": @connectionRetryWaitTime,
    "restrictCollections":     @restrictCollections,
    "autoResyncRetries": @autoResyncRetries,
    "chunkSize":          @chunkSize
  }
  @slave.request("PUT", "_api/replication/make-slave", body: body)
end
logger() click to toggle source

LOGGER

# File lib/Replication.rb, line 209
def logger
  @slave.request("GET", "_api/replication/logger-state")
end
loggerFirstTick() click to toggle source
# File lib/Replication.rb, line 223
def loggerFirstTick
  @slave.request("GET", "_api/replication/logger-first-tick", key: :firstTick)
end
loggerFollow(from: nil, to: nil, chunkSize: nil, includeSystem: nil) click to toggle source
# File lib/Replication.rb, line 213
def loggerFollow(from: nil, to: nil, chunkSize: nil, includeSystem: nil)
  query = {
    "from": from,
    "to":   to,
    "chunkSize":     chunkSize,
    "includeSystem": includeSystem
  }
  @slave.request("GET", "_api/replication/logger-follow", query: query)
end
loggerRangeTick() click to toggle source
# File lib/Replication.rb, line 227
def loggerRangeTick
  @slave.request("GET", "_api/replication/logger-tick-ranges")
end
master=(master) click to toggle source
# File lib/Replication.rb, line 43
def master=(master)
  satisfy_class?(master, [Arango::Database])
  @master = master
  @master_server = @master.server
end
Also aliased as: assign_master
modify() click to toggle source
# File lib/Replication.rb, line 179
def modify
  body = {
    "username": @master_server.username,
    "password": @master_server.password,
    "endpoint": @master_server.endpoint,
    "database": @master.name,
    "verbose":  @verbose,
    "autoResync": @autoResync,
    "autoStart":  @autoStart,
    "chunkSize":  @chunkSize,
    "includeSystem":   @includeSystem,
    "connectTimeout":  @connectTimeout,
    "idleMinWaitTime": @idleMinWaitTime,
    "requestTimeout":  @requestTimeout,
    "restrictType":    @restrictType,
    "requireFromPresent":      @requireFromPresent,
    "idleMaxWaitTime":         @idleMaxWaitTime,
    "maxConnectRetries":       @maxConnectRetries,
    "adaptivePolling":         @adaptivePolling,
    "initialSyncMaxWaitTime":  @initialSyncMaxWaitTime,
    "connectionRetryWaitTime": @connectionRetryWaitTime,
    "restrictCollections":     @restrictCollections,
    "autoResyncRetries":       @autoResyncRetries
  }
  @slave.request("PUT", "_api/replication/applier-config", body: body)
end
Also aliased as: modifyReplication
modifyReplication()
Alias for: modify
restrictCollections=(restrictCollections) click to toggle source
# File lib/Replication.rb, line 63
def restrictCollections=(restrictCollections)
  if restrictCollections.nil?
    @restrictCollections = nil
  else
    satisfy_class?(restrictCollections, [Arango::Collection, String], true)
    @restrictCollections = restrictCollections.map do |v|
      case v
      when String
        v
      when Arango::Collection
        v.name
      end
    end
  end
end
Also aliased as: assign_restrictCollections
restrictType=(restrictType) click to toggle source
# File lib/Replication.rb, line 57
def restrictType=(restrictType)
  satisfy_category?(restrictType, ["include", "exclude", nil])
  @restrictType = restrictType
end
Also aliased as: assign_restrictType
serverId() click to toggle source

SERVER-ID

# File lib/Replication.rb, line 233
def serverId
  @slave.request("GET", "_api/replication/server-id", key: :serverId)
end
slave=(slave) click to toggle source
# File lib/Replication.rb, line 50
def slave=(slave)
  satisfy_class?(slave, [Arango::Database])
  @slave = slave
  @slave_server = @slave.server
end
Also aliased as: assign_slave
start(from: nil) click to toggle source

REPLICATION

# File lib/Replication.rb, line 163
def start(from: nil)
  @slave.request("PUT", "_api/replication/applier-start", query: {from: from})
end
state() click to toggle source
# File lib/Replication.rb, line 171
def state
  @slave.request("GET", "_api/replication/applier-state")
end
stop() click to toggle source
# File lib/Replication.rb, line 167
def stop
  @slave.request("PUT", "_api/replication/applier-stop")
end
sync() click to toggle source

SYNCRONISATION

# File lib/Replication.rb, line 118
def sync
  body = {
    "username": @master_server.username,
    "password": @master_server.password,
    "endpoint": @master_server.endpoint,
    "database": @master.name,
    "restrictType":  @restrictType,
    "incremental":   @incremental,
    "includeSystem": @includeSystem,
    "restrictCollections":    @restrictCollections,
    "initialSyncMaxWaitTime": @initialSyncMaxWaitTime
  }
  @slave.request("PUT", "_api/replication/sync", body: body)
end
to_h() click to toggle source
# File lib/Replication.rb, line 81
def to_h
  master
  {
    "master": {
      "database": @master.name,
      "username": @master_server.username,
      "endpoint": @master_server.endpoint
    },
    "slave": {
      "database": @slave.name,
      "username": @slave_server.username,
      "endpoint": @slave_server.endpoint
    },
    "options": {
      "includeSytem": @includeSystem,
      "initialSyncMaxWaitTime": @initialSyncMaxWaitTime,
      "restrictType": @restrictType,
      "incremental": @incremental,
      "restrictCollections": @restrictCollections,
      "verbose": @verbose,
      "connectTimeout": @connectTimeout,
      "autoResync": @autoResync,
      "idleMinWaitTime": @idleMinWaitTime,
      "requestTimeout": @requestTimeout,
      "requireFromPresent": @requireFromPresent,
      "idleMaxWaitTime": @idleMaxWaitTime,
      "maxConnectRetries": @maxConnectRetries,
      "adaptivePolling": @adaptivePolling,
      "connectionRetryWaitTime": @connectionRetryWaitTime,
      "autoResyncRetries": @autoResyncRetries,
      "chunkSize": @chunkSize
    }.delete_if{|k,v| v.nil?}
  }
end