Skip to content

Commit 4334b0f

Browse files
committed
Adding api-calls endpoint
1 parent 9ec5b94 commit 4334b0f

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

arango/database.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
PermissionListError,
4545
PermissionResetError,
4646
PermissionUpdateError,
47+
ServerAPICallsError,
4748
ServerAvailableOptionsGetError,
4849
ServerCheckAvailabilityError,
4950
ServerCurrentOptionsGetError,
@@ -463,6 +464,26 @@ def response_handler(resp: Response) -> Json:
463464

464465
return self._execute(request, response_handler)
465466

467+
def api_calls(self) -> Result[Json]:
468+
"""Return recent API calls.
469+
470+
:return: API calls history.
471+
:rtype: dict
472+
:raise arango.exceptions.ServerAPICallsError: If retrieval fails.
473+
"""
474+
request = Request(
475+
method="get",
476+
endpoint="/_admin/server/api-calls",
477+
)
478+
479+
def response_handler(resp: Response) -> Json:
480+
if not resp.is_success:
481+
raise ServerAPICallsError(resp, request)
482+
res: Json = resp.body["result"]
483+
return res
484+
485+
return self._execute(request, response_handler)
486+
466487
def status(self) -> Result[Json]:
467488
"""Return ArangoDB server status.
468489

arango/exceptions.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -642,6 +642,10 @@ class ServerDetailsError(ArangoServerError):
642642
"""Failed to retrieve server details."""
643643

644644

645+
class ServerAPICallsError(ArangoServerError):
646+
"""Failed to retrieve recent API calls."""
647+
648+
645649
class ServerLicenseGetError(ArangoServerError):
646650
"""Failed to retrieve server license."""
647651

tests/test_database.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
DatabaseListError,
2121
DatabasePropertiesError,
2222
DatabaseSupportInfoError,
23+
ServerAPICallsError,
2324
ServerCheckAvailabilityError,
2425
ServerDetailsError,
2526
ServerEchoError,
@@ -314,6 +315,12 @@ def test_database_misc_methods(client, sys_db, db, bad_db, cluster, secret, db_v
314315
with assert_raises(ServerLogLevelResetError):
315316
bad_db.reset_log_levels()
316317

318+
# Test api calls history
319+
with assert_raises(ServerAPICallsError):
320+
bad_db.api_calls()
321+
history = sys_db.api_calls()
322+
assert isinstance(history, dict)
323+
317324
# Test get storage engine
318325
engine = db.engine()
319326
assert engine["name"] in ["rocksdb"]

0 commit comments

Comments
 (0)