feat(cloud-store): persist task lease history
This commit is contained in:
@@ -10,7 +10,7 @@ from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass, field
|
||||
from datetime import datetime
|
||||
from typing import TYPE_CHECKING, Literal, Protocol, runtime_checkable
|
||||
from typing import TYPE_CHECKING, Any, Literal, Protocol, runtime_checkable
|
||||
from uuid import uuid4
|
||||
|
||||
from core.models import utc_now
|
||||
@@ -44,6 +44,12 @@ class ScheduledTask:
|
||||
status: ScheduledTaskStatus = "queued"
|
||||
assigned_device_id: str | None = None
|
||||
assigned_host_id: str | None = None
|
||||
attempt_count: int = 0
|
||||
lease_id: str | None = None
|
||||
lease_expires_at: datetime | None = None
|
||||
terminal_result: dict[str, Any] | None = None
|
||||
failure_reason: str | None = None
|
||||
updated_at: datetime | None = None
|
||||
created_at: datetime = field(default_factory=utc_now)
|
||||
|
||||
|
||||
@@ -107,7 +113,9 @@ class TaskScheduler:
|
||||
self.pool = pool
|
||||
self.store = store
|
||||
self.config = config
|
||||
self._strategies = dict(strategies) if strategies is not None else dict(DEFAULT_STRATEGIES)
|
||||
self._strategies = (
|
||||
dict(strategies) if strategies is not None else dict(DEFAULT_STRATEGIES)
|
||||
)
|
||||
if config.default_assignment_strategy not in self._strategies:
|
||||
raise UnknownAssignmentStrategyError(
|
||||
f"unknown assignment strategy {config.default_assignment_strategy!r}; "
|
||||
|
||||
Reference in New Issue
Block a user