Read a Attempt
const url = 'https://example.com/apis/nodus.dev/v1/namespaces/example/attempts/example';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://example.com/apis/nodus.dev/v1/namespaces/example/attempts/exampleParameters
Section titled “ Parameters ”Path Parameters
Section titled “ Path Parameters ”The project.
The object’s name.
Responses
Section titled “ Responses ”OK
Attempt is one incarnation of a container spec on a machine: a Job index, a Sandbox incarnation, a Workspace session, a Function or Agent worker, an image build or a volume import. Every compute kind runs as Attempts, and a replacement after lost capacity is a new Attempt at the next epoch of the same slot. Attempts are read-only and never name a provider. Each carries the owner label (for example nodus.dev/job=
object
object
object
object
object
object
object
AttemptSpec says where the Attempt runs in its owner and what it resumed from.
object
Epoch is the fence number, increased on every replacement in the slot.
AttemptGang places a gang member in its gang.
object
Epoch is the gang epoch this member belongs to; a gang restart starts the next one.
ID is the gang’s id, shared by every rank of the Job.
Rank is this member’s rank; rank 0 hosts the rendezvous.
Size is the number of ranks.
AttemptRestore is the restore point an Attempt started from.
object
AttemptCursor is a Restartable Job’s progress cursor (NODUS_CURSOR_COMPLETED and NODUS_CURSOR_TOTAL).
object
Completed is how many units were done.
Total is how many units there are.
Seq is the sequence number of the committed checkpoint or snapshot it restored.
Slot is the owner’s position the Attempt fills: the Job index, 0 for a Sandbox or Workspace, the worker slot of a Function or Agent, build or import.
AttemptStatus is the observed state of an Attempt.
object
AttemptActual is status.actual: what has been charged for the Attempt.
object
CostUSD is the captured cost.
Hours is the billed time in decimal hours.
CostSegments splits a charge by billing segment.
object
BootUSD is the charge from the start of billing until the program started.
CoveredByNodus lists the segments (Boot, Running, Restore, Teardown) with time Nodus paid for instead of charging it, such as the start and teardown of a run that failed because of Nodus.
RestoreUSD is the charge for bringing a replacement up after capacity was lost.
RunningUSD is the charge while the program ran.
TeardownUSD is the charge from stop until deletion was confirmed, with the billing increment.
AttemptCheckpoints is status.checkpoints.
object
Count is how many checkpoints were committed during the Attempt.
LastSeq is the sequence number of the last one.
RestoreBytes is how much the Attempt restored at its start.
ExitCode is the container’s exit code, once it exited.
AttemptInterruption says what ended an Attempt early.
object
LostSeconds is the work lost since the last committed checkpoint.
RecoverySeconds is the time until the next Attempt’s program started.
Time is when the Attempt was interrupted.
Trigger is PreemptionNotice, ProviderEvidence, HeartbeatLoss, ReadinessFailed, StartupTimeout, Drill, Funding or User.
Phase is Queued, Provisioning, Running, Succeeded, Failed (real failures and lost capacity) or Cancelled (clean stops).
AttemptPlacement is status.placement: the customer-safe projection of the placement decision.
object
Candidates is how many offerings were considered.
PlacementExplain is the scheduler’s explanation of a placement; Estimate’s placementPreview has the same shape.
object
Fallbacks are the offering classes that would be tried next.
Profile is the placement profile that weighted the scores.
Rejected are up to 20 offering classes ruled out, with why.
PlacementRejection is one offering class a placement ruled out.
object
OfferingClass is the offering class ruled out.
Reason is the stable reason code, for example InsufficientCapacity.
Scores are the winner’s decimal scores by name: fit, timeToResult, costToComplete, recoveryValue, health.
object
Hedged reports whether a second machine was started to race the first.
Interruptible reports whether the capacity can be reclaimed.
Offering is the offering class chosen, for example h100-sxm-80g-x1-us.
Profile is the placement profile: Balanced, Cost or Speed.
RateUSDPerHour is the capacity’s hourly rate.
RegionClass is the offering’s region class.
WarmReuse reports whether the Attempt reused a warm machine of the organization.
AttemptPredicted is status.predicted, from the placement.
object
CostUSD is the predicted cost of the Attempt.
Hours is the predicted run time in decimal hours.
InterruptionRate is the predicted interruptions per hour, as a decimal.
AttemptProgress is status.progress.
object
Stage is the kernel phase: Pending, Placing, Acquiring, Starting, Running, Succeeded, Failed, Lost or Stopped.
Reason is the failure class when Failed (for example Preempted, NodeLost, CustomerExit) and Stopped, Suspended, Unfunded, MaxCostReached or Released when Cancelled.
Signal is the signal that ended the container, if one did.
SupersededBy names the next Attempt in the slot.
AttemptTimings are an Attempt’s milestones. The billing clock runs from billingStartTime to deletionProvenTime; commandStartedTime splits Boot (or Restore, for an Attempt that resumes) from Running.
object
AcquiredTime is when its placement was persisted and capacity requested.
BillingStartTime is when the supplier started billing the machine.
BootSeconds is the time from acquisition to the program’s start.
CommandStartedTime is when the program started.
DeletionProvenTime is when the machine’s deletion was confirmed.
FinishedTime is when the Attempt ended.
PullSeconds is the image pull’s part of it.
QueuedTime is when the Attempt was created.
RegisteredTime is when the machine registered and passed readiness.
RestoreSeconds is BootSeconds for an Attempt that resumed, restore included.
TeardownSeconds is the time from the stop to confirmed deletion.
Example generated
{ "apiVersion": "example", "kind": "example", "metadata": { "annotations": { "additionalProperty": "example" }, "creationTimestamp": "example", "deletionGracePeriodSeconds": 1, "deletionTimestamp": "example", "finalizers": [ "example" ], "generateName": "example", "generation": 1, "labels": { "additionalProperty": "example" }, "managedFields": [ { "apiVersion": "example", "fieldsType": "example", "fieldsV1": { "additionalProperty": "example" }, "manager": "example", "operation": "example", "subresource": "example", "time": "example" } ], "name": "example", "namespace": "example", "ownerReferences": [ { "apiVersion": "example", "blockOwnerDeletion": true, "controller": true, "kind": "example", "name": "example", "uid": "example" } ], "resourceVersion": "example", "selfLink": "example", "uid": "example" }, "spec": { "epoch": 1, "gang": { "epoch": 1, "id": "example", "rank": 1, "size": 1 }, "restoreFrom": { "cursor": { "completed": 1, "total": 1 }, "seq": 1 }, "slot": "example" }, "status": { "actual": { "costUSD": "example", "hours": "example", "segments": { "bootUSD": "example", "coveredByNodus": [ "example" ], "restoreUSD": "example", "runningUSD": "example", "teardownUSD": "example" } }, "checkpoints": { "count": 1, "lastSeq": 1, "restoreBytes": 1 }, "exitCode": 1, "interruption": { "lostSeconds": 1, "recoverySeconds": 1, "time": "example", "trigger": "example" }, "phase": "example", "placement": { "candidates": 1, "explain": { "fallbacks": [ "example" ], "profile": "example", "rejected": [ { "offeringClass": "example", "reason": "example" } ], "scores": { "additionalProperty": "example" } }, "hedged": true, "interruptible": true, "offering": "example", "profile": "example", "rateUSDPerHour": "example", "regionClass": "example", "warmReuse": true }, "predicted": { "costUSD": "example", "hours": "example", "interruptionRate": "example" }, "progress": { "stage": "example" }, "reason": "example", "signal": 1, "supersededBy": "example", "timings": { "acquiredTime": "example", "billingStartTime": "example", "bootSeconds": 1, "commandStartedTime": "example", "deletionProvenTime": "example", "finishedTime": "example", "pullSeconds": 1, "queuedTime": "example", "registeredTime": "example", "restoreSeconds": 1, "teardownSeconds": 1 } }}default
Section titled “ default ”An error: a metav1.Status whose reason is a registered code.
Status is the error body of every API response: a Kubernetes metav1.Status (so kubectl and client-go understand it) plus three top-level extensions that those clients ignore (ADR-028).
object
object
object
Docs is the URL of the code’s docs page.
Fix says what to do next, for example a CLI command or the field to change.
object
object
RequestID identifies the request in logs and support tickets.
Example generated
{ "apiVersion": "example", "code": 1, "details": { "causes": [ { "field": "example", "message": "example", "reason": "example" } ], "group": "example", "kind": "example", "name": "example", "retryAfterSeconds": 1, "uid": "example" }, "docs": "example", "fix": "example", "kind": "example", "message": "example", "metadata": { "continue": "example", "remainingItemCount": 1, "resourceVersion": "example", "selfLink": "example", "shardInfo": { "selector": "example" } }, "reason": "example", "requestId": "example", "status": "example"}