Status
Current state: "Accepted"
Discussion thread: N/A
JIRA: N/A
Released: 4.6.0
Motivation
Github #278 introduces BookKeeper Http Endpoint module. However there are only two endpoints, which is “/heartbeat” and “/api/config/serverConfig”, defined in #278. In order to fully leverage the http modules, The goal is to add more endpoints to this modules.
Public Interfaces
N/A
Proposed Changes
1, Overview
Provide Http EndPoints for these components:
* Components:
* Config: Do the configuration.
* Ledger: API related to ledgers
* Bookie: API related to Bookie
* Recover: API related to Recover
All API access is over HTTPS. All data is sent and received as JSON.
The common REST API Pattern will be:
/api/v1/<component>/<action>
2. Config:
/api/v1/config/server_config | ||||||||
---|---|---|---|---|---|---|---|---|
GET | ||||||||
Get value of all configured values overridden on local server config | ||||||||
Response
|
/api/v1/config/server_config | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
PUT | |||||||||||||||||||||
Update server configuration | |||||||||||||||||||||
Parameters
Body
Response
|
3. Ledger:
/api/v1/ledger/delete/?ledger_id=<ledger_id> | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DELETE | ||||||||||||||||
Delete a ledger. | ||||||||||||||||
Parameters
Response
|
/api/v1/ledger/list/?print_metadata=<metadata> | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
GET | ||||||||||||||||
List all the ledgers | ||||||||||||||||
Parameters
Response
|
/api/v1/ledger/metadata/?ledger_id=<ledger_id> | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
GET | ||||||||||||||||
Get the metadata of a ledger | ||||||||||||||||
Parameters
Response
|
/api/v1/ledger/read/?ledger_id=<ledger_id>&start_entry_id=<start_entry_id>&end_entry_id=<end_entry_id> | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
GET | ||||||||||||||||||||||||
Read a range of entries from ledger | ||||||||||||||||||||||||
Parameters
Response
|
4. Bookies
/api/v1/bookie/list_bookies/?type=<type>&print_hostnames=<hostnames> | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
GET | ||||||||||||||||||
Get all the available bookies. | ||||||||||||||||||
Parameters
Response
|
/api/v1/bookie/list_bookie_info | ||||||
---|---|---|---|---|---|---|
Get | ||||||
Get bookies disk usage info of this cluster. | ||||||
Response
|
/api/v1/bookie/last_log_mark | ||||||
---|---|---|---|---|---|---|
GET | ||||||
Get the last log marker. | ||||||
Response
|
/api/v1/bookie/list_disk_file/?file_type=<type> | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
GET | ||||||||||||||
Get all the files on disk of current bookie. | ||||||||||||||
Parameters
Response
|
/api/v1/bookie/expand_storage | ||||||
---|---|---|---|---|---|---|
PUT | ||||||
Expand storage for a bookie. | ||||||
Response
|
5. Recover
/api/v1/autorecovery/bookie/ | |||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
PUT | |||||||||||||||||||||||||
Ledger data recovery for failed bookie | |||||||||||||||||||||||||
Parameters
Body
Response
|
/api/v1/autorecovery/list_under_replicated_ledger/?missingreplica=<bookie_address>&excludingmissingreplica=<bookie_address> | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
GET | ||||||||||||||||||||
Get all under replicated ledgers. | ||||||||||||||||||||
Parameters
Response
|
/api/v1/autorecovery/who_is_auditor | ||||||||
---|---|---|---|---|---|---|---|---|
GET | ||||||||
Get auditor bookie id. | ||||||||
Response
|
/api/v1/autorecovery/trigger_audit | ||||||||
---|---|---|---|---|---|---|---|---|
PUT | ||||||||
Force trigger audit by resting the lostBookieRecoveryDelay. | ||||||||
Response
|
/api/v1/autorecovery/lost_bookie_recovery_delay | ||||||||
---|---|---|---|---|---|---|---|---|
GET | ||||||||
Get lostBookieRecoveryDelay value in seconds. | ||||||||
Response
|
/api/v1/autorecover/lost_bookie_recovery_delay | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
PUT | |||||||||||||||||
Set lostBookieRecoveryDelay value in seconds. | |||||||||||||||||
Parameters
Body
Response
|
/api/v1/autorecovery/decommission | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
PUT | |||||||||||||||||
Decommission Bookie, Force trigger Audittask and make sure all the ledgers stored in the decommissioning bookie are replicated. | |||||||||||||||||
Parameters
Body
Response
|
Compatibility, Deprecation, and Migration Plan
This is a new component introduced in 4.6.0. So there is no migration required. You can still enable http endpint by setting `...` to true.
Test Plan
- Unit test
- will support backward compatibility test in future when there is more version introduced.
Rejected Alternatives
N/A