Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Status

Current state"WIP/Under DiscussionAccepted"

Discussion thread: N/A

JIRA: N/A

...

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:

    * Root endpoint: List all the available endpoints

    *     * Config: Do the configuration.

    * Bookkeeper : API related to BookKeeper.

    *     * Ledger: API related to ledgers

...

/api/v1/<component>/<action>

 

2. Root endpoint:

/api/v1
GET
Get all the available endpoints

Response

CodeDescription
200successful operation
403Don't have permission

 

3. Config:

/api/v1/config/valuesserver_config

GET

Get value of all configured values overridden on local server config

Response

CodeDescription
200successful operation
403

Don't have permission

404Configuration not foundError handling


/api/v1/config/:configName/:configValueserver_config

PUTPOST
Update server configuration

Parameters

NameTypeRequiredDescription
configNameStringYesConfiguration name(key) 
configValueStringYesConfiguration value(value)

ResponseBody

CodeDescription
204successful operation
403

Don't have permission

404Configuration not found

 

4. Bookkeeper:

/api/v1/bookkeeper/format_metadata/:force

POST

Format bookkeeper metadata

Parameters

NameTypeRequiredDescription
forcebooleanNowhether to force format and delete the old data 

Response

CodeDescription
204successful operation
403

Don't have permission

/api/v1/bookkeeper/list_bookies/:type/:hostnames

GET
 Get all the available bookies.

Parameters

NameTypeRequiredDescription
typeStringYes

 value: rw/ro , list read-write/read-only bookies 

HostnamesBooleanNo whether print hostname of bookie  

Response

CodeDescription
200successful operation
403

Don't have permission

{
   "configName1": "configValue1",
   "configName2": "configValue2"
}


Response

CodeDescription
200

/api/v1/bookkeeper/update_cookie/:idType

POST

Update bookie id in cookie.

Parameters

NameTypeRequiredDescription
idTypeStringYes

 value:  hostname/ip ,  Id by hostname or IP address 

Response

CodeDescription
204successful operation
403

Don't have permission

404Not update, for errorsError handling

 

53. Ledger:

...

/api/v1/ledger/create/:ensemble_size/:write_quorum_size/:ack_quorum_size/:digest_type/:password

...

Parameters

...

 

...

Response

Yes

 write quorum size

ack_quorum_sizeIntYes

 ack quorum size

digest_typeStringYes MAC or CRC32
passwordStringYespassword
CodeDescription
200successful created, return ledger_id.
403

Don't have permission

404No ledger found

/api/v1/ledger/delete/:?ledger_id=<ledger_id>

DELETEDelete a ledger.

Parameters

NameTypeRequiredDescription
ledger_idLongYes

 ledger id of the ledger. 

Response

Code

Description

403

Don't have permission

404No ledger found

/api/v1/ledger/delete/:ledger_id

DELETEDelete a ledger.
200successful operation

Parameters

NameTypeRequiredDescription
ledger_idLongYes

 ledger id of the ledger. 

Response

No ledger found
CodeDescription
403

Don't have permission

404Error handling

/api/v1/ledger/list/

...

?print_metadata=<metadata>

GET

List all the ledgers

Parameters

Name

...

Type

...

Required

...

Description
metadata

...

Boolean

...

No

 whether print out metadata 

Response

Code

...

Description

200

...

successful operation.
403

...

Don't have permission

404

...

No ledger found

 

/api/v1/ledger/metadata/

...

?ledger_id=<ledger_id>

GET

Get the metadata of a ledger

Parameters

Name

...

Type

...

Required

...

Description
ledger_id

...

Long

...

Yes

 ledger id of the ledger 

Response

Code

...

Description

200

...

successful operation.
403

...

Don't have permission

404

...

Error handling

/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

Name

...

Type

...

Required

...

Description
ledger_id

...

Long

...

Yes

 ledger id of the ledger 

start_entry_id

...

Long

...

No

...

 start entry id of read range

end_entry_id

...

Long

...

No

...

 end entry id of read range

Response

Code

...

Description

200

...

successful operation.
403

...

Don't have permission

404

...

Error handling

 

4. Bookies

/api/v1/

...

bookie/list_bookies/?type=<type>&print_hostnames=<hostnames>

GET
 Get all the available bookies.

...

PUT

...

Parameters

Name

...

Type

...

Required

...

Description

ledger_id  Long  Yes   ledger id of the ledger

...

typeStringYes

 value: rw/ro , list read-write/read-only bookies 

hostnamesBooleanNo whether print hostname of bookies

Response

Code

...

Description
200

...

successful operation

...

403

...

Don't have permission

404  Ledger not found

 

7. Bookies

/api/v1/bookie/

...

list_bookie

...

_

...

info

PUT

Format a bookie.

Parameters

Name  Type Required  Description

delete_cookie Boolean No   whether delete its cookie on zookeeper.

Response

Code Description

204  successful format.

...

Get

Get bookies disk usage info of this cluster.

Response

Code

Description

200successful operation.
403

Don't have permission

 

/api/v1/bookie/

...

last_

...

log_

...

mark

...

GET

Get

...

the last log marker.

Response

Code

...

Description

200

...

successful operation.
403

...

Don't have permission

 

/api/v1/bookie/list_disk_

...

file/

...

?file_type=<type>

...

GET

Get all the files on disk of current bookie.

Parameters

Name

...

Type

...

Required

...

Description
type

...

String

...

No

  

...

file type: journal/entrylog/index.

Response

Code

...

Description

200

...

successful operation.
403

...

Don't have permission

...

...

Get

Read entry log content from entry log files.

Parameters

Name  Type Required  Description

print_msg Boolean      No   whether print message body.

ledger_id  Long  No   only read content of this ledger_id.

entry_id  Long  No   entry_id to read.

start_position Long  No   start position to read

end_positon Long  No   end position of read

Response

Code Description

...

/api/v1/bookie/

...

expand_storage

PUT

Expand storage for a bookie.

Response

Code

Description

204
successful operation.
403

...

Don't have permission

 

 

5. Recover

/api/v1/autorecovery/bookie/

...

PUT
Ledger data recovery for failed bookie

...

Get

...

Parameters

Name

...

Type

...

Required

...

Description

...

bookie_

...

journal_id String Yes   Journal file name/id.

print_msg Boolean No   whether print message body.

Response

Code Description

200  successful operation.

...

srcString

...

Yesbookie source to recovery
bookie_destStringNobookie data recovery destination
delete_cookieBooleanNoWhether delete cookie

Body

{
 "bookie_src": [ "bookie_src1", "bookie_src2"... ],

 "bookie_dest": [ "bookie_dest1", "bookie_dest2"... ],

 "delete_cookie": <bool_value>

}

Response

Code

Description

200successful operation.
403

Don't have permission

404

...

Not found Bookie

...

...

Get

Get the last log marker.

Response

Code Description

200  successful operation.

403  Don't have permission

 

/api/v1/bookie/expend_storage

POST

Expend bookie storage.

Response

Code Description

204  successful operation.

...

/api/v1/

...

autorecovery/list_under_replicated_ledger/?missingreplica=<bookie_address>&excludingmissingreplica=<bookie_address>

GET
Get all under replicated ledgers.

Parameters

NameTypeRequiredDescription
missingreplicaStringNomissing replica bookieId
excludingmissingreplicaStringNoexclude missing replica bookieId


Response

Code

Description

200successful operation.
403

Don't have permission

 

...

404Not found under replication node

/api/v1/

...

autorecovery/who_is_auditor

GET
Get auditor bookie id.

Response

Code

...

Description

200

...

successful operation.
403

...

Don't have permission

404

...

Error handling

...

/api/v1/

...

autorecovery/

...

trigger_audit

PUT
Force trigger audit by resting the lostBookieRecoveryDelay.

Response

Code

...

Description

...

200successful operation.
403

...

Don't have permission

404

...

Error handling

...

/api/v1/

...

autorecovery/lost_bookie_recovery_delay

GET
Get lostBookieRecoveryDelay value in seconds.

Response

Code

...

Description

200

...

successful operation.
403

...

Don't have permission

404

...

Not found under replication node

 

/api/v1/

...

autorecover/lost_bookie_recovery_delay

...

...

PUT

Set lostBookieRecoveryDelay value in seconds.

Parameters

Name

...

Type

...

Required

...

Description

...

delay_seconds
LongYes

 set delay value in seconds.

Body

{
 "delay_seconds": <delay_seconds>

}

Response

Code

...

Description

204

...

successful operation.
403

...

Don't have permission

404

...

Not found under replication node

...

/api/v1/

...

autorecovery/decommission

...

PUT
Decommission Bookie, Force trigger Audittask and make sure all the ledgers stored in the decommissioning bookie are replicated.

Response

Code Description

204  successful operation

403  Don't have permission

404  Not found under replication node

 

/api/v1/recover/list_under_replicated_ledger

GET

Get all under replicated ledgers.

Response

Code Description

200  successful operation

...

Parameters

NameTypeRequiredDescription
bookie_srcStringYes

 Bookie src to decommission.

Body

{
 "bookie_src": bookie_src,

}

Response

Code

Description

204successful operation.
403

Don't have permission

404

...

Not found under replication

...

node

 

Compatibility, Deprecation, and Migration Plan

...