Skip to content

Commit 90966cb

Browse files
committed
Introducing HTTP DELETE /_admin/log/level to reset all log
1 parent 22e6ea9 commit 90966cb

File tree

3 files changed

+45
-2
lines changed

3 files changed

+45
-2
lines changed

arango/database.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
ServerLicenseGetError,
5353
ServerLicenseSetError,
5454
ServerLogLevelError,
55+
ServerLogLevelResetError,
5556
ServerLogLevelSetError,
5657
ServerLogSettingError,
5758
ServerLogSettingSetError,
@@ -1003,6 +1004,35 @@ def response_handler(resp: Response) -> Json:
10031004

10041005
return self._execute(request, response_handler)
10051006

1007+
def reset_log_levels(self, server_id: Optional[str] = None) -> Result[Json]:
1008+
"""Reset the logging levels.
1009+
1010+
Revert the server’s log level settings to the values they had at startup,
1011+
as determined by the startup options specified on the command-line,
1012+
a configuration file, and the factory defaults.
1013+
1014+
:param server_id: Forward log level to a specific server. This makes it
1015+
easier to adjust the log levels in clusters because DB-Servers require
1016+
JWT authentication whereas Coordinators also support authentication
1017+
using usernames and passwords.
1018+
:type server_id: str | None
1019+
:return: New logging levels.
1020+
:rtype: dict
1021+
"""
1022+
params: Params = {}
1023+
if server_id is not None:
1024+
params["serverId"] = server_id
1025+
1026+
request = Request(method="delete", endpoint="/_admin/log/level", params=params)
1027+
1028+
def response_handler(resp: Response) -> Json:
1029+
if not resp.is_success:
1030+
raise ServerLogLevelResetError(resp, request)
1031+
result: Json = resp.body
1032+
return result
1033+
1034+
return self._execute(request, response_handler)
1035+
10061036
def reload_routing(self) -> Result[bool]:
10071037
"""Reload the routing information.
10081038

arango/exceptions.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -674,6 +674,10 @@ class ServerLogLevelError(ArangoServerError):
674674
"""Failed to retrieve server log levels."""
675675

676676

677+
class ServerLogLevelResetError(ArangoServerError):
678+
"""Failed to reset server log levels."""
679+
680+
677681
class ServerLogSettingError(ArangoServerError):
678682
"""Failed to retrieve server log settings."""
679683

tests/test_database.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
ServerEngineError,
2525
ServerLicenseSetError,
2626
ServerLogLevelError,
27+
ServerLogLevelResetError,
2728
ServerLogLevelSetError,
2829
ServerMetricsError,
2930
ServerModeSetError,
@@ -65,7 +66,7 @@ def test_database_attributes(db, username):
6566
assert isinstance(db.wal, WAL)
6667

6768

68-
def test_database_misc_methods(client, sys_db, db, bad_db, cluster, secret):
69+
def test_database_misc_methods(client, sys_db, db, bad_db, cluster, secret, db_version):
6970
# Test get properties
7071
properties = db.properties()
7172
assert "id" in properties
@@ -249,7 +250,8 @@ def test_database_misc_methods(client, sys_db, db, bad_db, cluster, secret):
249250
assert err.value.error_code in {11, 1228}
250251

251252
# Test get log levels
252-
assert isinstance(sys_db.log_levels(), dict)
253+
default_log_levels = sys_db.log_levels()
254+
assert isinstance(default_log_levels, dict)
253255

254256
# Test get log levels with bad database
255257
with assert_raises(ServerLogLevelError) as err:
@@ -296,6 +298,13 @@ def test_database_misc_methods(client, sys_db, db, bad_db, cluster, secret):
296298
assert "username" not in result_1
297299
assert result_1 == result_2
298300

301+
# Reset Log Settings
302+
if db.version() >= "3.12.1":
303+
result = sys_db.reset_log_levels()
304+
assert result == default_log_levels
305+
with assert_raises(ServerLogLevelResetError):
306+
bad_db.reset_log_levels()
307+
299308
# Test get storage engine
300309
engine = db.engine()
301310
assert engine["name"] in ["rocksdb"]

0 commit comments

Comments
 (0)