Skip to content

List or watch attempts

GET
/apis/nodus.dev/v1/namespaces/{namespace}/attempts
curl --request GET \
--url https://example.com/apis/nodus.dev/v1/namespaces/example/attempts
namespace
required
string

The project.

labelSelector
string
fieldSelector
string
limit
string
continue
string
watch
string
resourceVersion
string
allowWatchBookmarks
string
timeoutSeconds
string

OK

Media type application/json
object
apiVersion
string
items
required
Array<object>

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=), and gang members also carry nodus.dev/rank.

object
apiVersion
string
kind
string
metadata
object
annotations
object
key
additional properties
string
creationTimestamp
string
deletionGracePeriodSeconds
integer format: int64
deletionTimestamp
string
finalizers
Array<string>
nullable
generateName
string
generation
integer format: int64
labels
object
key
additional properties
string
managedFields
Array<object>
nullable
object
apiVersion
string
fieldsType
string
fieldsV1
object
key
additional properties
manager
string
operation
string
subresource
string
time
string
name
string
namespace
string
ownerReferences
Array<object>
nullable
object
apiVersion
required
string
blockOwnerDeletion
boolean
controller
boolean
kind
required
string
name
required
string
uid
required
string
resourceVersion
string
selfLink
string
uid
string
spec
required

AttemptSpec says where the Attempt runs in its owner and what it resumed from.

object
epoch
required

Epoch is the fence number, increased on every replacement in the slot.

integer format: int64
gang

AttemptGang places a gang member in its gang.

object
epoch
required

Epoch is the gang epoch this member belongs to; a gang restart starts the next one.

integer format: int64
id
required

ID is the gang’s id, shared by every rank of the Job.

string
rank
required

Rank is this member’s rank; rank 0 hosts the rendezvous.

integer format: int32
size
required

Size is the number of ranks.

integer format: int32
restoreFrom

AttemptRestore is the restore point an Attempt started from.

object
cursor

AttemptCursor is a Restartable Job’s progress cursor (NODUS_CURSOR_COMPLETED and NODUS_CURSOR_TOTAL).

object
completed
required

Completed is how many units were done.

integer format: int64
total
required

Total is how many units there are.

integer format: int64
seq

Seq is the sequence number of the committed checkpoint or snapshot it restored.

integer format: int64
slot
required

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.

string
status

AttemptStatus is the observed state of an Attempt.

object
actual

AttemptActual is status.actual: what has been charged for the Attempt.

object
costUSD

CostUSD is the captured cost.

string
hours

Hours is the billed time in decimal hours.

string
segments

CostSegments splits a charge by billing segment.

object
bootUSD

BootUSD is the charge from the start of billing until the program started.

string
coveredByNodus

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.

Array<string>
nullable
restoreUSD

RestoreUSD is the charge for bringing a replacement up after capacity was lost.

string
runningUSD

RunningUSD is the charge while the program ran.

string
teardownUSD

TeardownUSD is the charge from stop until deletion was confirmed, with the billing increment.

string
checkpoints

AttemptCheckpoints is status.checkpoints.

object
count

Count is how many checkpoints were committed during the Attempt.

integer format: int32
lastSeq

LastSeq is the sequence number of the last one.

integer format: int64
restoreBytes

RestoreBytes is how much the Attempt restored at its start.

integer format: int64
exitCode

ExitCode is the container’s exit code, once it exited.

integer format: int32
interruption

AttemptInterruption says what ended an Attempt early.

object
lostSeconds

LostSeconds is the work lost since the last committed checkpoint.

integer format: int64
recoverySeconds

RecoverySeconds is the time until the next Attempt’s program started.

integer format: int64
time

Time is when the Attempt was interrupted.

string
trigger
required

Trigger is PreemptionNotice, ProviderEvidence, HeartbeatLoss, ReadinessFailed, StartupTimeout, Drill, Funding or User.

string
phase

Phase is Queued, Provisioning, Running, Succeeded, Failed (real failures and lost capacity) or Cancelled (clean stops).

string
placement

AttemptPlacement is status.placement: the customer-safe projection of the placement decision.

object
candidates

Candidates is how many offerings were considered.

integer format: int32
explain

PlacementExplain is the scheduler’s explanation of a placement; Estimate’s placementPreview has the same shape.

object
fallbacks

Fallbacks are the offering classes that would be tried next.

Array<string>
nullable
profile

Profile is the placement profile that weighted the scores.

string
rejected

Rejected are up to 20 offering classes ruled out, with why.

Array<object>
nullable

PlacementRejection is one offering class a placement ruled out.

object
offeringClass
required

OfferingClass is the offering class ruled out.

string
reason
required

Reason is the stable reason code, for example InsufficientCapacity.

string
scores

Scores are the winner’s decimal scores by name: fit, timeToResult, costToComplete, recoveryValue, health.

object
key
additional properties
string
hedged

Hedged reports whether a second machine was started to race the first.

boolean
interruptible

Interruptible reports whether the capacity can be reclaimed.

boolean
offering

Offering is the offering class chosen, for example h100-sxm-80g-x1-us.

string
profile

Profile is the placement profile: Balanced, Cost or Speed.

string
rateUSDPerHour

RateUSDPerHour is the capacity’s hourly rate.

string
regionClass

RegionClass is the offering’s region class.

string
warmReuse

WarmReuse reports whether the Attempt reused a warm machine of the organization.

boolean
predicted

AttemptPredicted is status.predicted, from the placement.

object
costUSD

CostUSD is the predicted cost of the Attempt.

string
hours

Hours is the predicted run time in decimal hours.

string
interruptionRate

InterruptionRate is the predicted interruptions per hour, as a decimal.

string
progress

AttemptProgress is status.progress.

object
stage

Stage is the kernel phase: Pending, Placing, Acquiring, Starting, Running, Succeeded, Failed, Lost or Stopped.

string
reason

Reason is the failure class when Failed (for example Preempted, NodeLost, CustomerExit) and Stopped, Suspended, Unfunded, MaxCostReached or Released when Cancelled.

string
signal

Signal is the signal that ended the container, if one did.

integer format: int32
supersededBy

SupersededBy names the next Attempt in the slot.

string
timings

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

AcquiredTime is when its placement was persisted and capacity requested.

string
billingStartTime

BillingStartTime is when the supplier started billing the machine.

string
bootSeconds

BootSeconds is the time from acquisition to the program’s start.

integer format: int64
commandStartedTime

CommandStartedTime is when the program started.

string
deletionProvenTime

DeletionProvenTime is when the machine’s deletion was confirmed.

string
finishedTime

FinishedTime is when the Attempt ended.

string
pullSeconds

PullSeconds is the image pull’s part of it.

integer format: int64
queuedTime

QueuedTime is when the Attempt was created.

string
registeredTime

RegisteredTime is when the machine registered and passed readiness.

string
restoreSeconds

RestoreSeconds is BootSeconds for an Attempt that resumed, restore included.

integer format: int64
teardownSeconds

TeardownSeconds is the time from the stop to confirmed deletion.

integer format: int64
kind
string
metadata
object
continue
string
remainingItemCount
integer format: int64
resourceVersion
string
selfLink
string
shardInfo
object
selector
required
string
Example generated
{
"apiVersion": "example",
"items": [
{
"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
}
}
}
],
"kind": "example",
"metadata": {
"continue": "example",
"remainingItemCount": 1,
"resourceVersion": "example",
"selfLink": "example",
"shardInfo": {
"selector": "example"
}
}
}

An error: a metav1.Status whose reason is a registered code.

Media type application/json

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
apiVersion
string
code
integer format: int32
details
object
causes
Array<object>
nullable
object
field
string
message
string
reason
string
group
string
kind
string
name
string
retryAfterSeconds
integer format: int32
uid
string
docs

Docs is the URL of the code’s docs page.

string
fix

Fix says what to do next, for example a CLI command or the field to change.

string
kind
string
message
string
metadata
object
continue
string
remainingItemCount
integer format: int64
resourceVersion
string
selfLink
string
shardInfo
object
selector
required
string
reason
string
requestId

RequestID identifies the request in logs and support tickets.

string
status
string
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"
}