fix(observatory): version non-binding idle claims and preserve grant history
This commit is contained in:
@@ -158,7 +158,10 @@ class ObservatoryWorkerExecutorCapability(_StrictWorkerRequest):
|
||||
|
||||
|
||||
class ObservatoryWorkerClaimRequest(_StrictWorkerRequest):
|
||||
schema_version: Literal["missioncore.observatory-worker-claim-request/v2"]
|
||||
schema_version: Literal[
|
||||
"missioncore.observatory-worker-claim-request/v2",
|
||||
"missioncore.observatory-worker-claim-request/v3",
|
||||
]
|
||||
claim_request_id: str = Field(
|
||||
min_length=1,
|
||||
max_length=160,
|
||||
@@ -276,6 +279,10 @@ def build_observatory_worker_router(
|
||||
dependencies=[Depends(require_configured_worker)],
|
||||
)
|
||||
|
||||
@router.get("/recorded-jobs/claim-readiness")
|
||||
def claim_readiness() -> dict[str, object]:
|
||||
return _queue_call(queue.claim_readiness)
|
||||
|
||||
@router.post("/recorded-jobs/claims", response_model=None)
|
||||
def claim_next(
|
||||
request: ObservatoryWorkerClaimRequest,
|
||||
@@ -288,10 +295,15 @@ def build_observatory_worker_router(
|
||||
capability.recorded_identity()
|
||||
for capability in request.supported_executor_identities
|
||||
),
|
||||
protocol_version=(3 if request.schema_version.endswith("/v3") else 2),
|
||||
)
|
||||
)
|
||||
if claim is None:
|
||||
return Response(status_code=204)
|
||||
return Response(status_code=204, headers={
|
||||
"X-Mission-Core-Idle-Claim": (
|
||||
"non-binding" if request.schema_version.endswith("/v3") else "durable"
|
||||
),
|
||||
})
|
||||
return claim.as_dict()
|
||||
|
||||
@router.get("/recorded-jobs/{job_id}")
|
||||
|
||||
Reference in New Issue
Block a user