Skip to content

Commit 4771bfd

Browse files
authored
Replication namespace (#464)
1 parent bf35601 commit 4771bfd

File tree

10 files changed

+849
-0
lines changed

10 files changed

+849
-0
lines changed

.cspell

+4
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ authc
1010
authinfo
1111
authtoken
1212
autocut
13+
autofollow
1314
backendroles
1415
backpressure
1516
beider
@@ -74,6 +75,7 @@ ignorecase
7475
integ
7576
internalusers
7677
Intertransport
78+
ipam
7779
Jelinek
7880
kibanainfo
7981
kibanaserver
@@ -90,6 +92,7 @@ lucene
9092
Lucene
9193
lycheeverse
9294
marvinpinto
95+
memlock
9396
metaphone
9497
mget
9598
millis
@@ -206,6 +209,7 @@ Translog
206209
trbl
207210
truststore
208211
tubone
212+
ulimits
209213
Undeploys
210214
unigrams
211215
Unmanaged

.github/workflows/test-spec.yml

+4
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ jobs:
3636
tests: routing
3737
- version: 2.18.0
3838
tests: snapshot
39+
- version: 2.18.0
40+
tests: plugins/replication
41+
url: http://localhost:9200
3942
- version: 2.18.0
4043
tests: plugins/streaming
4144
- version: 2.18.0
@@ -89,6 +92,7 @@ jobs:
8992
--opensearch-insecure \
9093
--opensearch-version=${{ matrix.entry.version }} \
9194
--coverage coverage/test-spec-coverage-${{ steps.tests.outputs.hash }}.json \
95+
--opensearch-url=${{ matrix.entry.url || 'https://localhost:9200'}} \
9296
--tests=tests/${{ matrix.entry.tests || 'default' }}
9397
9498
- name: Get Container Logs

.lycheeignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
https://localhost:*
2+
http://localhost:*
23
http://webhook:8080

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
9696
- Added support for request headers in tests [#461](https://github.com/opensearch-project/opensearch-api-specification/pull/461)
9797
- Added metadata additionalProperties to `ErrorCause` ([#462](https://github.com/opensearch-project/opensearch-api-specification/pull/462))
9898
- Added `creation_date` field to `DanglingIndex` ([#462](https://github.com/opensearch-project/opensearch-api-specification/pull/462))
99+
- Added `replication` namespace API specifications ([#464](https://github.com/opensearch-project/opensearch-api-specification/pull/464))
99100
- Added doc on `cluster create-index blocked` workaround ([#465](https://github.com/opensearch-project/opensearch-api-specification/pull/465))
100101
- Added `observability` namespace API specifications ([#474](https://github.com/opensearch-project/opensearch-api-specification/pull/474))
101102
- Added support for reusing output variables as keys in payload expectations ([#471](https://github.com/opensearch-project/opensearch-api-specification/pull/471))

spec/namespaces/replication.yaml

+301
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,301 @@
1+
openapi: 3.1.0
2+
info:
3+
title: OpenSearch Replication API
4+
description: OpenSearch Replication API.
5+
version: 1.0.0
6+
paths:
7+
/_plugins/_replication/{index}/_start:
8+
put:
9+
operationId: replication.start.0
10+
x-operation-group: replication.start
11+
x-version-added: '1.1'
12+
description: Initiate replication of an index from the leader cluster to the follower cluster.
13+
externalDocs:
14+
url: https://opensearch.org/docs/latest/tuning-your-cluster/replication-plugin/api/#start-replication
15+
parameters:
16+
- $ref: '#/components/parameters/replication.start::path.index'
17+
requestBody:
18+
$ref: '#/components/requestBodies/replication.start'
19+
responses:
20+
'200':
21+
$ref: '#/components/responses/replication.start@200'
22+
/_plugins/_replication/{index}/_stop:
23+
post:
24+
operationId: replication.stop.0
25+
x-operation-group: replication.stop
26+
x-version-added: '1.1'
27+
description: Terminates replication and converts the follower index to a standard index.
28+
externalDocs:
29+
url: https://opensearch.org/docs/latest/tuning-your-cluster/replication-plugin/api/#stop-replication
30+
parameters:
31+
- $ref: '#/components/parameters/replication.stop::path.index'
32+
requestBody:
33+
$ref: '#/components/requestBodies/replication.stop'
34+
responses:
35+
'200':
36+
$ref: '#/components/responses/replication.stop@200'
37+
/_plugins/_replication/{index}/_pause:
38+
post:
39+
operationId: replication.pause.0
40+
x-operation-group: replication.pause
41+
x-version-added: '1.1'
42+
description: Pauses replication of the leader index.
43+
externalDocs:
44+
url: https://opensearch.org/docs/latest/tuning-your-cluster/replication-plugin/api/#pause-replication
45+
parameters:
46+
- $ref: '#/components/parameters/replication.pause::path.index'
47+
requestBody:
48+
$ref: '#/components/requestBodies/replication.pause'
49+
responses:
50+
'200':
51+
$ref: '#/components/responses/replication.pause@200'
52+
/_plugins/_replication/{index}/_resume:
53+
post:
54+
operationId: replication.resume.0
55+
x-operation-group: replication.resume
56+
x-version-added: '1.1'
57+
description: Resumes replication of the leader index.
58+
externalDocs:
59+
url: https://opensearch.org/docs/latest/tuning-your-cluster/replication-plugin/api/#resume-replication
60+
parameters:
61+
- $ref: '#/components/parameters/replication.resume::path.index'
62+
requestBody:
63+
$ref: '#/components/requestBodies/replication.resume'
64+
responses:
65+
'200':
66+
$ref: '#/components/responses/replication.resume@200'
67+
/_plugins/_replication/{index}/_status:
68+
get:
69+
operationId: replication.status.0
70+
x-operation-group: replication.status
71+
x-version-added: '1.1'
72+
description: Gets the status of index replication.
73+
externalDocs:
74+
url: https://opensearch.org/docs/latest/tuning-your-cluster/replication-plugin/api/#get-replication-status
75+
parameters:
76+
- $ref: '#/components/parameters/replication.status::path.index'
77+
responses:
78+
'200':
79+
$ref: '#/components/responses/replication.status@200'
80+
/_plugins/_replication/leader_stats:
81+
get:
82+
operationId: replication.leader_stats.0
83+
x-operation-group: replication.leader_stats
84+
x-version-added: '1.1'
85+
description: Gets information about replicated leader indexes on a specified cluster.
86+
externalDocs:
87+
url: https://opensearch.org/docs/latest/tuning-your-cluster/replication-plugin/api/#get-leader-cluster-stats
88+
responses:
89+
'200':
90+
$ref: '#/components/responses/replication.leader_stats@200'
91+
/_plugins/_replication/follower_stats:
92+
get:
93+
operationId: replication.follower_stats.0
94+
x-operation-group: replication.follower_stats
95+
x-version-added: '1.1'
96+
description: Gets information about follower (syncing) indexes on a specified cluster.
97+
externalDocs:
98+
url: https://opensearch.org/docs/latest/tuning-your-cluster/replication-plugin/api/#get-follower-cluster-stats
99+
responses:
100+
'200':
101+
$ref: '#/components/responses/replication.follower_stats@200'
102+
/_plugins/_replication/autofollow_stats:
103+
get:
104+
operationId: replication.autofollow_stats.0
105+
x-operation-group: replication.autofollow_stats
106+
x-version-added: '1.1'
107+
description: Gets information about auto-follow activity and any replication rules configured on the specified cluster.
108+
externalDocs:
109+
url: https://opensearch.org/docs/latest/tuning-your-cluster/replication-plugin/api/#get-auto-follow-stats
110+
responses:
111+
'200':
112+
$ref: '#/components/responses/replication.autofollow_stats@200'
113+
/_plugins/_replication/{index}/_update:
114+
put:
115+
operationId: replication.update_settings.0
116+
x-operation-group: replication.update_settings
117+
x-version-added: '1.1'
118+
description: Updates settings on the follower index.
119+
externalDocs:
120+
url: https://opensearch.org/docs/latest/tuning-your-cluster/replication-plugin/api/#update-settings
121+
parameters:
122+
- $ref: '#/components/parameters/replication.update_settings::path.index'
123+
requestBody:
124+
$ref: '#/components/requestBodies/replication.update_settings'
125+
responses:
126+
'200':
127+
$ref: '#/components/responses/replication.update_settings@200'
128+
/_plugins/_replication/_autofollow:
129+
post:
130+
operationId: replication.create_replication_rule.0
131+
x-operation-group: replication.create_replication_rule
132+
x-version-added: '1.1'
133+
description: Automatically starts replication on indexes matching a specified pattern.
134+
externalDocs:
135+
url: https://opensearch.org/docs/latest/tuning-your-cluster/replication-plugin/api/#create-replication-rule
136+
requestBody:
137+
$ref: '#/components/requestBodies/replication.create_replication_rule'
138+
responses:
139+
'200':
140+
$ref: '#/components/responses/replication.create_replication_rule@200'
141+
delete:
142+
operationId: replication.delete_replication_rule.0
143+
x-operation-group: replication.delete_replication_rule
144+
x-version-added: '1.1'
145+
description: Deletes the specified replication rule.
146+
externalDocs:
147+
url: https://opensearch.org/docs/latest/tuning-your-cluster/replication-plugin/api/#delete-replication-rule
148+
requestBody:
149+
$ref: '#/components/requestBodies/replication.delete_replication_rule'
150+
responses:
151+
'200':
152+
$ref: '#/components/responses/replication.delete_replication_rule@200'
153+
components:
154+
parameters:
155+
replication.start::path.index:
156+
in: path
157+
name: index
158+
description: Name of the data stream, index, or index alias to perform bulk actions on.
159+
required: true
160+
schema:
161+
$ref: '../schemas/_common.yaml#/components/schemas/IndexName'
162+
style: simple
163+
replication.stop::path.index:
164+
in: path
165+
name: index
166+
description: Name of the data stream, index, or index alias to perform bulk actions on.
167+
required: true
168+
schema:
169+
$ref: '../schemas/_common.yaml#/components/schemas/IndexName'
170+
style: simple
171+
replication.pause::path.index:
172+
in: path
173+
name: index
174+
description: Name of the data stream, index, or index alias to perform bulk actions on.
175+
required: true
176+
schema:
177+
$ref: '../schemas/_common.yaml#/components/schemas/IndexName'
178+
style: simple
179+
replication.resume::path.index:
180+
in: path
181+
name: index
182+
description: Name of the data stream, index, or index alias to perform bulk actions on.
183+
required: true
184+
schema:
185+
$ref: '../schemas/_common.yaml#/components/schemas/IndexName'
186+
style: simple
187+
replication.status::path.index:
188+
in: path
189+
name: index
190+
description: Name of the data stream, index, or index alias to perform bulk actions on.
191+
required: true
192+
schema:
193+
$ref: '../schemas/_common.yaml#/components/schemas/IndexName'
194+
style: simple
195+
replication.update_settings::path.index:
196+
in: path
197+
name: index
198+
description: Name of the data stream, index, or index alias to perform bulk actions on.
199+
required: true
200+
schema:
201+
$ref: '../schemas/_common.yaml#/components/schemas/IndexName'
202+
style: simple
203+
requestBodies:
204+
replication.start:
205+
content:
206+
application/json:
207+
schema:
208+
$ref: '../schemas/replication._common.yaml#/components/schemas/Replication'
209+
required: true
210+
replication.stop:
211+
content:
212+
application/json:
213+
schema:
214+
type: object
215+
required: true
216+
replication.pause:
217+
content:
218+
application/json:
219+
schema:
220+
type: object
221+
required: true
222+
replication.resume:
223+
content:
224+
application/json:
225+
schema:
226+
type: object
227+
required: true
228+
replication.update_settings:
229+
content:
230+
application/json:
231+
schema:
232+
$ref: '../schemas/replication._common.yaml#/components/schemas/UpdateSettings'
233+
required: true
234+
replication.create_replication_rule:
235+
content:
236+
application/json:
237+
schema:
238+
$ref: '../schemas/replication._common.yaml#/components/schemas/CreateReplicationRule'
239+
required: true
240+
replication.delete_replication_rule:
241+
content:
242+
application/json:
243+
schema:
244+
$ref: '../schemas/replication._common.yaml#/components/schemas/DeleteReplicationRule'
245+
required: true
246+
responses:
247+
replication.start@200:
248+
content:
249+
application/json:
250+
schema:
251+
$ref: '../schemas/_common.yaml#/components/schemas/AcknowledgedResponseBase'
252+
replication.stop@200:
253+
content:
254+
application/json:
255+
schema:
256+
$ref: '../schemas/_common.yaml#/components/schemas/AcknowledgedResponseBase'
257+
replication.pause@200:
258+
content:
259+
application/json:
260+
schema:
261+
$ref: '../schemas/_common.yaml#/components/schemas/AcknowledgedResponseBase'
262+
replication.resume@200:
263+
content:
264+
application/json:
265+
schema:
266+
$ref: '../schemas/_common.yaml#/components/schemas/AcknowledgedResponseBase'
267+
replication.status@200:
268+
content:
269+
application/json:
270+
schema:
271+
$ref: '../schemas/replication._common.yaml#/components/schemas/Status'
272+
replication.leader_stats@200:
273+
content:
274+
application/json:
275+
schema:
276+
$ref: '../schemas/replication._common.yaml#/components/schemas/LeaderStatus'
277+
replication.follower_stats@200:
278+
content:
279+
application/json:
280+
schema:
281+
$ref: '../schemas/replication._common.yaml#/components/schemas/FollowerStatus'
282+
replication.autofollow_stats@200:
283+
content:
284+
application/json:
285+
schema:
286+
$ref: '../schemas/replication._common.yaml#/components/schemas/AutoFollowStatus'
287+
replication.update_settings@200:
288+
content:
289+
application/json:
290+
schema:
291+
$ref: '../schemas/_common.yaml#/components/schemas/AcknowledgedResponseBase'
292+
replication.create_replication_rule@200:
293+
content:
294+
application/json:
295+
schema:
296+
$ref: '../schemas/_common.yaml#/components/schemas/AcknowledgedResponseBase'
297+
replication.delete_replication_rule@200:
298+
content:
299+
application/json:
300+
schema:
301+
$ref: '../schemas/_common.yaml#/components/schemas/AcknowledgedResponseBase'

0 commit comments

Comments
 (0)