feat: extend daemon model with daemon status tracking and list support
- Add daemon status tracking with state and metrics (idle, running, error) - Implement pfhub daemon list CLI command for viewing registered daemons - Extend auth schema and service for daemon lifecycle management - Add postgres repository queries for daemon state persistence - Expand test coverage for daemon registry and status transitions - Update rel-006 release document with daemon model verification results - Support daemon graceful shutdown and error recovery patterns
This commit is contained in:
@@ -161,6 +161,21 @@ class AuthService:
|
||||
raw_token, auth_token = self._repository.rotate_service_token(name)
|
||||
return IssuedServiceToken(token=raw_token, auth_token=auth_token)
|
||||
|
||||
def rebind_service_token(self, name: str, daemon_id: str) -> tuple[str | None, AuthToken]:
|
||||
existing = self._repository.get_service_token_by_name(name)
|
||||
if existing is None:
|
||||
raise ValueError(f"서비스 토큰을 찾을 수 없습니다: {name}")
|
||||
|
||||
daemon = self._repository.get_daemon_by_id(daemon_id)
|
||||
if daemon is None or not daemon.is_active:
|
||||
raise ValueError(f"존재하지 않거나 비활성 데몬입니다: {daemon_id}")
|
||||
if daemon.owner_user_id != existing.user_id:
|
||||
raise ValueError("데몬이 해당 토큰 사용자에 속하지 않습니다")
|
||||
|
||||
previous_daemon_id = existing.daemon_id
|
||||
rebound = self._repository.rebind_service_token(name, daemon_id)
|
||||
return previous_daemon_id, rebound
|
||||
|
||||
def revoke_service_token(self, name: str) -> datetime:
|
||||
existing = self._repository.get_service_token_by_name(name)
|
||||
if existing is None:
|
||||
|
||||
Reference in New Issue
Block a user