|
52 | 52 | ServerLogSettingError, |
53 | 53 | ServerLogSettingSetError, |
54 | 54 | ServerMetricsError, |
| 55 | + ServerModeError, |
| 56 | + ServerModeSetError, |
55 | 57 | ServerReadLogError, |
56 | 58 | ServerReloadRoutingError, |
57 | 59 | ServerRequiredDBVersionError, |
@@ -554,6 +556,56 @@ def response_handler(resp: Response) -> str: |
554 | 556 |
|
555 | 557 | return self._execute(request, response_handler) |
556 | 558 |
|
| 559 | + def mode(self) -> Result[str]: |
| 560 | + """Return the server mode (default or read-only) |
| 561 | +
|
| 562 | + In a read-only server, all write operations will fail |
| 563 | + with an error code of 1004 (ERROR_READ_ONLY). Creating or dropping |
| 564 | + databases and collections will also fail with error code 11 (ERROR_FORBIDDEN). |
| 565 | +
|
| 566 | + :return: Server mode. Possible values are "default" or "readonly". |
| 567 | + :rtype: str |
| 568 | + :raise arango.exceptions.ServerModeError: If retrieval fails. |
| 569 | + """ |
| 570 | + request = Request(method="get", endpoint="/_admin/server/mode") |
| 571 | + |
| 572 | + def response_handler(resp: Response) -> str: |
| 573 | + if resp.is_success: |
| 574 | + return str(resp.body["mode"]) |
| 575 | + |
| 576 | + raise ServerModeError(resp, request) |
| 577 | + |
| 578 | + return self._execute(request, response_handler) |
| 579 | + |
| 580 | + def set_mode(self, mode: str) -> Result[Json]: |
| 581 | + """Set the server mode to read-only or default. |
| 582 | +
|
| 583 | + Update mode information about a server. The JSON response will |
| 584 | + contain a field mode with the value readonly or default. |
| 585 | + In a read-only server all write operations will fail with an error |
| 586 | + code of 1004 (ERROR_READ_ONLY). Creating or dropping of databases |
| 587 | + and collections will also fail with error code 11 (ERROR_FORBIDDEN). |
| 588 | +
|
| 589 | + This is a protected API. It requires authentication and administrative |
| 590 | + server rights. |
| 591 | +
|
| 592 | + :param mode: Server mode. Possible values are "default" or "readonly". |
| 593 | + :type mode: str |
| 594 | + :return: Server mode. |
| 595 | + :rtype: str |
| 596 | + :raise arango.exceptions.ServerModeSetError: If set fails. |
| 597 | + """ |
| 598 | + request = Request( |
| 599 | + method="put", endpoint="/_admin/server/mode", data={"mode": mode} |
| 600 | + ) |
| 601 | + |
| 602 | + def response_handler(resp: Response) -> Json: |
| 603 | + if resp.is_success: |
| 604 | + return format_body(resp.body) |
| 605 | + raise ServerModeSetError(resp, request) |
| 606 | + |
| 607 | + return self._execute(request, response_handler) |
| 608 | + |
557 | 609 | def time(self) -> Result[datetime]: |
558 | 610 | """Return server system time. |
559 | 611 |
|
|
0 commit comments