35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""Lease management CLI commands."""
|
|
from db.accounts_repo import cleanup_expired_leases, list_active_leases, release_lease
|
|
from service._svc_common import _err_json, _ok_json, _say
|
|
from util.logging_config import get_skill_logger
|
|
|
|
|
|
def cmd_lease_release(lease_token: str) -> None:
|
|
"""lease release <token>"""
|
|
log = get_skill_logger()
|
|
log.info("cli_start subcommand=lease_release token_prefix=%s", lease_token[:8])
|
|
ok = release_lease(lease_token)
|
|
if ok:
|
|
_say(_ok_json({"lease_token": lease_token, "status": "released"}))
|
|
else:
|
|
_say(_err_json("ERROR:LEASE_NOT_FOUND", "未找到活跃的租约,或租约已释放/过期。"))
|
|
|
|
|
|
def cmd_lease_list(active_only: bool = False) -> None:
|
|
"""lease list [--active]"""
|
|
log = get_skill_logger()
|
|
log.info("cli_start subcommand=lease_list active_only=%s", active_only)
|
|
leases = list_active_leases()
|
|
if active_only:
|
|
pass
|
|
_say(_ok_json({"leases": leases}))
|
|
|
|
|
|
def cmd_lease_cleanup() -> None:
|
|
"""lease cleanup — mark expired leases as expired."""
|
|
log = get_skill_logger()
|
|
log.info("cli_start subcommand=lease_cleanup")
|
|
count = cleanup_expired_leases()
|
|
_say(_ok_json({"cleaned": count}))
|