*: Change etcdserver API to support raft learner

- Added isLearner flag to MemberAddRequest in Cluster API.
- Added isLearner field to StatusResponse in Maintenance API.
- Added MemberPromote rpc to Cluster API.
This commit is contained in:
Jingyi Hu
2019-03-14 15:00:08 -07:00
parent d8c89021d7
commit 7dc5451fae
7 changed files with 1097 additions and 329 deletions

View File

@@ -501,6 +501,33 @@
}
}
},
"/v3/cluster/member/promote": {
"post": {
"tags": [
"Cluster"
],
"summary": "MemberPromote promotes a member from raft learner (non-voting) to raft voting member.",
"operationId": "MemberPromote",
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/etcdserverpbMemberPromoteRequest"
}
}
],
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/etcdserverpbMemberPromoteResponse"
}
}
}
}
},
"/v3/cluster/member/remove": {
"post": {
"tags": [
@@ -820,7 +847,7 @@
"200": {
"description": "A successful response.(streaming responses)",
"schema": {
"$ref": "#/definitions/etcdserverpbLeaseKeepAliveResponse"
"$ref": "#/x-stream-definitions/etcdserverpbLeaseKeepAliveResponse"
}
}
}
@@ -1009,7 +1036,7 @@
"200": {
"description": "A successful response.(streaming responses)",
"schema": {
"$ref": "#/definitions/etcdserverpbSnapshotResponse"
"$ref": "#/x-stream-definitions/etcdserverpbSnapshotResponse"
}
}
}
@@ -1091,7 +1118,7 @@
"200": {
"description": "A successful response.(streaming responses)",
"schema": {
"$ref": "#/definitions/etcdserverpbWatchResponse"
"$ref": "#/x-stream-definitions/etcdserverpbWatchResponse"
}
}
}
@@ -1882,6 +1909,11 @@
"type": "string"
}
},
"isLearner": {
"description": "isLearner indicates if the member is raft learner.",
"type": "boolean",
"format": "boolean"
},
"name": {
"description": "name is the human-readable name of the member. If the member is not started, the name will be an empty string.",
"type": "string"
@@ -1898,6 +1930,11 @@
"etcdserverpbMemberAddRequest": {
"type": "object",
"properties": {
"isLearner": {
"description": "isLearner indicates if the added member is raft learner.",
"type": "boolean",
"format": "boolean"
},
"peerURLs": {
"description": "peerURLs is the list of URLs the added member will use to communicate with the cluster.",
"type": "array",
@@ -1944,6 +1981,31 @@
}
}
},
"etcdserverpbMemberPromoteRequest": {
"type": "object",
"properties": {
"ID": {
"description": "ID is the member ID of the member to promote.",
"type": "string",
"format": "uint64"
}
}
},
"etcdserverpbMemberPromoteResponse": {
"type": "object",
"properties": {
"header": {
"$ref": "#/definitions/etcdserverpbResponseHeader"
},
"members": {
"description": "members is a list of all members after promoting the member.",
"type": "array",
"items": {
"$ref": "#/definitions/etcdserverpbMember"
}
}
}
},
"etcdserverpbMemberRemoveRequest": {
"type": "object",
"properties": {
@@ -2266,6 +2328,11 @@
"header": {
"$ref": "#/definitions/etcdserverpbResponseHeader"
},
"isLearner": {
"description": "isLearner indicates if the member is raft learner.",
"type": "boolean",
"format": "boolean"
},
"leader": {
"description": "leader is the member ID which the responding member believes is the current leader.",
"type": "string",
@@ -2508,6 +2575,43 @@
"format": "int64"
}
}
},
"protobufAny": {
"type": "object",
"properties": {
"type_url": {
"type": "string"
},
"value": {
"type": "string",
"format": "byte"
}
}
},
"runtimeStreamError": {
"type": "object",
"properties": {
"details": {
"type": "array",
"items": {
"$ref": "#/definitions/protobufAny"
}
},
"grpc_code": {
"type": "integer",
"format": "int32"
},
"http_code": {
"type": "integer",
"format": "int32"
},
"http_status": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
},
"securityDefinitions": {
@@ -2521,5 +2625,43 @@
{
"ApiKey": []
}
]
],
"x-stream-definitions": {
"etcdserverpbLeaseKeepAliveResponse": {
"properties": {
"error": {
"$ref": "#/definitions/runtimeStreamError"
},
"result": {
"$ref": "#/definitions/etcdserverpbLeaseKeepAliveResponse"
}
},
"title": "Stream result of etcdserverpbLeaseKeepAliveResponse",
"type": "object"
},
"etcdserverpbSnapshotResponse": {
"properties": {
"error": {
"$ref": "#/definitions/runtimeStreamError"
},
"result": {
"$ref": "#/definitions/etcdserverpbSnapshotResponse"
}
},
"title": "Stream result of etcdserverpbSnapshotResponse",
"type": "object"
},
"etcdserverpbWatchResponse": {
"properties": {
"error": {
"$ref": "#/definitions/runtimeStreamError"
},
"result": {
"$ref": "#/definitions/etcdserverpbWatchResponse"
}
},
"title": "Stream result of etcdserverpbWatchResponse",
"type": "object"
}
}
}