Class: ArangoReplication

Inherits:
ArangoServer show all
Defined in:
lib/ArangoRB_Replication.rb

Overview

REPLICATION ===

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from ArangoServer

address, async, async=, batch, cancelAsync, changePropertyWAL, checkPort, cluster, cluster=, clusterRoundtrip, clusterStatistics, collection, collection=, createDumpBatch, database, database=, databaseVersion, databases, default_server, destroyAllAsync, destroyAsync, destroyCluster, destroyDumpBatch, destroyExpiredAsync, echo, endpoints, execute, executeCluster, executeClusterHead, executeClusterPut, fetchAsync, flushWAL, graph, graph=, log, pendingAsync, prolongDumpBatch, propertyWAL, reload, request, restart, retrieveAsync, retrieveDoneAsync, retrievePendingAsync, return_result, return_result_async, role, server, serverId, shutdown, sleep, statistics, tasks, test, time, transactions, updateCluster, user, user=, username, users, verbose, verbose=, version

Constructor Details

#initialize(endpoint:, username:, password:, database: nil, includeSystem: true, initialSyncMaxWaitTime: nil, incremental: nil, restrictCollections: nil, verbose: false, connectTimeout: nil, autoResync: nil, idleMinWaitTime: nil, requestTimeout: nil, requireFromPresent: nil, idleMaxWaitTime: nil, restrictType: nil, maxConnectRetries: nil, adaptivePolling: nil, connectionRetryWaitTime: nil, autoResyncRetries: nil, chunkSize: nil) ⇒ ArangoReplication

Returns a new instance of ArangoReplication.



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/ArangoRB_Replication.rb', line 4

def initialize(endpoint:, username:, password:, database: nil, includeSystem: true, initialSyncMaxWaitTime: nil, incremental: nil, restrictCollections: nil, verbose: false, connectTimeout: nil, autoResync: nil, idleMinWaitTime: nil, requestTimeout: nil, requireFromPresent: nil, idleMaxWaitTime: nil, restrictType: nil, maxConnectRetries: nil, adaptivePolling: nil, connectionRetryWaitTime: nil, autoResyncRetries: nil, chunkSize: nil)
  if database.is_a?(String) || database.nil?
    @database = database
  elsif database.is_a?(ArangoDatabase)
    @database = database.database
  else
    raise "database should be nil, a String or an ArangoDatabase instance, not a #{database.class}"
  end

  if restrictType == "include" || restrictType == "exclude" || restrictType.nil?
    @restrictType = restrictType
  else
    raise "restrictType can be only \"include\" or \"exclude\"."
  end

  if restrictCollections.nil?
    @restrictCollections = nil
  else
    @restrictCollections = []
    restrictCollections.each do |v|
      if v.is_a? (String)
        @restrictCollections << v
      elsif v.is_a? (ArangoCollection)
        @restrictCollections << v.name
      end
    end
  end

  @endpoint = endpoint
  @username = username
  @password = password
  @includeSytem = includeSystem
  @initialSyncMaxWaitTime = initialSyncMaxWaitTime,
  @incremental = incremental
  @verbose = verbose,
  @connectTimeout = connectTimeout
  @autoResync = autoResync
  @idleMinWaitTime = idleMinWaitTime
  @requestTimeout = requestTimeout
  @requireFromPresent = requireFromPresent
  @idleMaxWaitTime = idleMaxWaitTime
  @maxConnectRetries = maxConnectRetries
  @adaptivePolling = adaptivePolling
  @connectionRetryWaitTime = connectionRetryWaitTime
  @autoResyncRetries = autoResyncRetries
  @chunkSize = chunkSize
end

Instance Attribute Details

#adaptivePollingObject

Returns the value of attribute adaptivePolling.



66
67
68
# File 'lib/ArangoRB_Replication.rb', line 66

def adaptivePolling
  @adaptivePolling
end

#autoResyncObject

Returns the value of attribute autoResync.



66
67
68
# File 'lib/ArangoRB_Replication.rb', line 66

def autoResync
  @autoResync
end

#autoResyncRetriesObject

Returns the value of attribute autoResyncRetries.



66
67
68
# File 'lib/ArangoRB_Replication.rb', line 66

def autoResyncRetries
  @autoResyncRetries
end

#chunkSizeObject

Returns the value of attribute chunkSize.



66
67
68
# File 'lib/ArangoRB_Replication.rb', line 66

def chunkSize
  @chunkSize
end

#connectionRetryWaitTimeObject

Returns the value of attribute connectionRetryWaitTime.



66
67
68
# File 'lib/ArangoRB_Replication.rb', line 66

def connectionRetryWaitTime
  @connectionRetryWaitTime
end

#connectTimeoutObject

Returns the value of attribute connectTimeout.



66
67
68
# File 'lib/ArangoRB_Replication.rb', line 66

def connectTimeout
  @connectTimeout
end

#databaseObject (readonly)

Returns the value of attribute database.



67
68
69
# File 'lib/ArangoRB_Replication.rb', line 67

def database
  @database
end

#endpointObject

Returns the value of attribute endpoint.



66
67
68
# File 'lib/ArangoRB_Replication.rb', line 66

def endpoint
  @endpoint
end

#idleMaxWaitTimeObject

Returns the value of attribute idleMaxWaitTime.



66
67
68
# File 'lib/ArangoRB_Replication.rb', line 66

def idleMaxWaitTime
  @idleMaxWaitTime
end

#idleMinWaitTimeObject

Returns the value of attribute idleMinWaitTime.



66
67
68
# File 'lib/ArangoRB_Replication.rb', line 66

def idleMinWaitTime
  @idleMinWaitTime
end

#includeSystemObject

Returns the value of attribute includeSystem.



66
67
68
# File 'lib/ArangoRB_Replication.rb', line 66

def includeSystem
  @includeSystem
end

#incrementalObject

Returns the value of attribute incremental.



66
67
68
# File 'lib/ArangoRB_Replication.rb', line 66

def incremental
  @incremental
end

#initialSyncMaxWaitTimeObject

Returns the value of attribute initialSyncMaxWaitTime.



66
67
68
# File 'lib/ArangoRB_Replication.rb', line 66

def initialSyncMaxWaitTime
  @initialSyncMaxWaitTime
end

#maxConnectRetriesObject

Returns the value of attribute maxConnectRetries.



66
67
68
# File 'lib/ArangoRB_Replication.rb', line 66

def maxConnectRetries
  @maxConnectRetries
end

#passwordObject

Returns the value of attribute password.



66
67
68
# File 'lib/ArangoRB_Replication.rb', line 66

def password
  @password
end

#requestTimeoutObject

Returns the value of attribute requestTimeout.



66
67
68
# File 'lib/ArangoRB_Replication.rb', line 66

def requestTimeout
  @requestTimeout
end

#requireFromPresentObject

Returns the value of attribute requireFromPresent.



66
67
68
# File 'lib/ArangoRB_Replication.rb', line 66

def requireFromPresent
  @requireFromPresent
end

#restrictCollectionsObject

Returns the value of attribute restrictCollections.



67
68
69
# File 'lib/ArangoRB_Replication.rb', line 67

def restrictCollections
  @restrictCollections
end

#restrictTypeObject

Returns the value of attribute restrictType.



67
68
69
# File 'lib/ArangoRB_Replication.rb', line 67

def restrictType
  @restrictType
end

#usernameObject

Returns the value of attribute username.



66
67
68
# File 'lib/ArangoRB_Replication.rb', line 66

def username
  @username
end

#verboseObject

Returns the value of attribute verbose.



66
67
68
# File 'lib/ArangoRB_Replication.rb', line 66

def verbose
  @verbose
end

Instance Method Details

#configurationReplicationObject



181
182
183
184
# File 'lib/ArangoRB_Replication.rb', line 181

def configurationReplication
  result = self.class.get("/_api/replication/applier-config", @@request)
  self.class.return_result result: result
end

#enslaveObject

ENSLAVE



146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
# File 'lib/ArangoRB_Replication.rb', line 146

def enslave
  body = {
    "username" => @username,
    "password" => @password,
    "endpoint" => @endpoint,
    "database" => @database,
    "includeSystem" => @includeSystem,
    "initialSyncMaxWaitTime" => @initialSyncMaxWaitTime,
    "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
  }.delete_if{|k,v| v.nil?}
  request = @@request.merge({ :body => body.to_json })
  result = self.class.put("/_api/replication/make-slave", request)
  self.class.return_result result: result
end

#firstTickObject

TESTED



252
253
254
255
# File 'lib/ArangoRB_Replication.rb', line 252

def firstTick # TESTED
  result = self.class.get("/_db/#{@database}/_api/replication/logger-first-tick")
  self.class.return_result result: result, key: "firstTick"
end

#loggerObject

TESTED



235
236
237
238
# File 'lib/ArangoRB_Replication.rb', line 235

def logger # TESTED
  result = self.class.get("/_db/#{@database}/_api/replication/logger-state")
  self.class.return_result result: result
end

#loggerFollow(from: nil, to: nil, chunkSize: nil, includeSystem: false) ⇒ Object

TESTED



240
241
242
243
244
245
246
247
248
249
250
# File 'lib/ArangoRB_Replication.rb', line 240

def loggerFollow(from: nil, to: nil, chunkSize: nil, includeSystem: false) # TESTED
  query = {
    "from": from,
    "to": to,
    "chunkSize": chunkSize,
    "includeSystem": includeSystem
  }.delete_if{|k,v| v.nil?}
  request = @@request.merge({ :query => query })
  result = self.class.get("/_db/#{@database}/_api/replication/logger-follow", request)
  self.class.return_result result: result
end

#master(endpoint:, username:, password:, database: nil) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/ArangoRB_Replication.rb', line 52

def master(endpoint:, username:, password:, database: nil)
  if database.is_a?(String) || database.nil?
    @database = database
  elsif database.is_a?(ArangoDatabase)
    @database = database.database
  else
    raise "database should be nil, a String or an ArangoDatabase instance, not a #{database.class}"
  end

  @endpoint = endpoint
  @username = username
  @password = password
end

#modifyConfigurationReplicationObject Also known as: modifyReplication



186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
# File 'lib/ArangoRB_Replication.rb', line 186

def modifyConfigurationReplication
  body = {
    "username" => @username,
    "password" => @password,
    "includeSystem" => @includeSystem,
    "endpoint" => @endpoint,
    "initialSyncMaxWaitTime" => @initialSyncMaxWaitTime,
    "database" => @database,
    "verbose" => @verbose,
    "connectTimeout" => @connectTimeout,
    "autoResync" => @autoResync,
    "idleMinWaitTime" => @idleMinWaitTime,
    "requestTimeout" => @requestTimeout,
    "requireFromPresent" => @requireFromPresent,
    "idleMaxWaitTime" => @idleMaxWaitTime,
    "restrictType" => @restrictType,
    "maxConnectRetries" => @maxConnectRetries,
    "autoStart" => @autoStart,
    "adaptivePolling" => @adaptivePolling,
    "connectionRetryWaitTime" => @connectionRetryWaitTime,
    "restrictCollections" => @restrictCollections,
    "autoResyncRetries" => @autoResyncRetries,
    "chunkSize" => @chunkSize
  }.delete_if{|k,v| v.nil?}
  request = @@request.merge({ :body => body.to_json })
  result = self.class.put("/_api/replication/applier-config", request)
  self.class.return_result result: result
end

#rangeTickObject

TESTED



257
258
259
260
# File 'lib/ArangoRB_Replication.rb', line 257

def rangeTick # TESTED
  result = self.class.get("/_db/#{@database}/_api/replication/logger-tick-ranges")
  self.class.return_result result: result
end

#serverIdObject

INFO



230
231
232
233
# File 'lib/ArangoRB_Replication.rb', line 230

def serverId # TESTED
  result = self.class.get("/_db/#{@database}/_api/replication/server-id", @@request)
  self.class.return_result result: result, key: "serverId"
end

#startReplication(from: nil) ⇒ Object

TESTED



216
217
218
219
220
221
# File 'lib/ArangoRB_Replication.rb', line 216

def startReplication(from: nil) # TESTED
  query = {from: from}.delete_if{|k,v| v.nil?}
  request = @@request.merge({ :query => query })
  result = self.class.put("/_api/replication/applier-start", request)
  self.class.return_result result: result
end

#stateReplicationObject

MANAGE CONFIGURATION



176
177
178
179
# File 'lib/ArangoRB_Replication.rb', line 176

def stateReplication # TESTED
  result = self.class.get("/_db/#{@database}/_api/replication/applier-state", @@request)
  self.class.return_result result: result
end

#stopReplicationObject

TESTED



223
224
225
226
# File 'lib/ArangoRB_Replication.rb', line 223

def stopReplication # TESTED
  result = self.class.put("/_api/replication/applier-stop", @@request)
  self.class.return_result result: result
end

#syncObject

SYNCRONISATION



127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# File 'lib/ArangoRB_Replication.rb', line 127

def sync
  body = {
    "username" => @username,
    "password" => @password,
    "endpoint" => @endpoint,
    "database" => @database,
    "includeSystem" => @includeSystem,
    "initialSyncMaxWaitTime" => @initialSyncMaxWaitTime,
    "restrictType" => @restrictType,
    "incremental" => @incremental,
    "restrictCollections" => @restrictCollections
  }.delete_if{|k,v| v.nil?}
  request = @@request.merge({ :body => body.to_json })
  result = self.class.put("/_api/replication/sync", request)
  self.class.return_result result: result
end

#to_hashObject Also known as: to_h



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# File 'lib/ArangoRB_Replication.rb', line 93

def to_hash
  master
  {
    "master" => {
      "endpoint" => @endpoint,
      "username" => @username,
      "password" => @password,
      "database" => @database
    }.delete_if{|k,v| v.nil?},
    "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