diff options
| author | Christian Breunig <christian@breunig.cc> | 2026-09-28 21:18:12 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-09-28 21:18:12 +0200 |
| commit | 504c97e7c661de8ea771a8daa7a3c7d6c8e5d86b (patch) | |
| tree | d7d3d0120fa74465e34ce2948c55f8fc249d6165 /src/services | |
| parent | 39528a2d74fd1f18433cc4cbec301f869181e5ec (diff) | |
| parent | 9b5110a868ef413fdc1303f834220d99af8ceead (diff) | |
| download | vyos-1x-504c97e7c661de8ea771a8daa7a3c7d6c8e5d86b.tar.gz vyos-1x-504c97e7c661de8ea771a8daa7a3c7d6c8e5d86b.zip | |
Merge pull request #5503 from c-po/T9354
op-mode: T9354: replace "reset connection" with "reconnect interface"
Diffstat (limited to 'src/services')
| -rw-r--r-- | src/services/api/rest/models.py | 14 | ||||
| -rw-r--r-- | src/services/api/rest/routers.py | 23 |
2 files changed, 37 insertions, 0 deletions
diff --git a/src/services/api/rest/models.py b/src/services/api/rest/models.py index 8321ad2e3..8762c3bff 100644 --- a/src/services/api/rest/models.py +++ b/src/services/api/rest/models.py @@ -291,6 +291,20 @@ class ResetModel(ApiModel): } +class ReconnectModel(ApiModel): + op: StrictStr + path: List[StrictStr] + + class Config: + json_schema_extra = { + 'example': { + 'key': 'id_key', + 'op': 'reconnect', + 'path': ['op', 'mode', 'path'], + } + } + + class PoweroffModel(ApiModel): op: StrictStr path: List[StrictStr] diff --git a/src/services/api/rest/routers.py b/src/services/api/rest/routers.py index 1808e5a5b..c2aa033bc 100644 --- a/src/services/api/rest/routers.py +++ b/src/services/api/rest/routers.py @@ -74,6 +74,7 @@ from .models import GenerateModel from .models import ShowModel from .models import RebootModel from .models import ResetModel +from .models import ReconnectModel from .models import RenewModel from .models import ImportPkiModel from .models import PingModel @@ -934,6 +935,28 @@ def reset_op(data: ResetModel): return success(res) +@router.post('/reconnect') +def reconnect_op(data: ReconnectModel): + state = SessionState() + session = state.session + + op = data.op + path = data.path + + try: + if op == 'reconnect': + res = session.reconnect(path) + else: + return error(400, f"'{op}' is not a valid operation") + except ConfigSessionError as e: + return error(400, str(e)) + except Exception: + LOG.critical(traceback.format_exc()) + return error(500, 'An internal error occurred. Check the logs for details.') + + return success(res) + + @router.post('/import-pki') def import_pki(data: ImportPkiModel): # pylint: disable=consider-using-with |
