Skip to content

Patch a PoolAction

PATCH
/apis/nodus.dev/v1/namespaces/{namespace}/poolactions/{name}
curl --request PATCH \
--url https://example.com/apis/nodus.dev/v1/namespaces/example/poolactions/example \
--header 'Content-Type: application/merge-patch+json' \
--data '{}'
namespace
required
string

The project.

name
required
string

The object’s name.

dryRun
string
fieldValidation
string
fieldManager
string
Idempotency-Key
string
If-Match
string
Media type application/merge-patch+json
object
Example generated
{}

OK

Media type application/json

PoolAction is one Act decision: an action on a Pool’s hosts or routing that a member approves or rejects, or that runs by policy. Only the Act controller creates PoolActions; members change only spec.decision.

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

PoolActionSpec is the proposed action.

object
action
required

Action is the policy action that selected it.

string
change

PoolRoutingChange is a bounded patch of Pool.spec.routing.

object
burstMaxGPUs

BurstMaxGPUs is the new burst GPU bound.

integer format: int32
burstToMarket

BurstToMarket is the new burst policy.

string
waitTimeout

WaitTimeout is the new wait timeout.

string
decision

Decision is Pending, Approved or Rejected; the only field a member writes, once.

string
estimatedSavingsUSD

EstimatedSavingsUSD is the estimated saving over 30 days, as a decimal string.

string
expirationTime

ExpirationTime is when an undecided Propose action is canceled (24 h after creation).

string
mode
required

Mode is the Pool’s act.mode when the action was created.

string
opportunityCostUSD

OpportunityCostUSD is the estimated cost of taking the action, as a decimal string.

string
pool
required

Pool is the Pool the action applies to.

string
reason
required

Reason explains, in words, why the action was selected.

string
recommendation

Recommendation is the id of the recommendation the action came from, when there is one.

string
targets

PoolActionTargets names what an action touches.

object
nodes

Nodes are the Nodes the action touches.

Array<string>
nullable
objects

Objects are the objects the action touches, as kind/name.

Array<string>
nullable
status

PoolActionStatus is the action’s progress.

object
completionTime

CompletionTime is when the action finished.

string
conditions

Conditions carries the action’s conditions.

Array<object>
nullable
object
lastTransitionTime
required
string
message
required
string
observedGeneration
integer format: int64
reason
required
string
status
required
string
type
required
string
executed
required

Executed is true only when the action changed something; Shadow records stay false.

boolean
handledRequests

HandledRequests records the nodus.dev/revert-requested-at value last acted on.

object
key
additional properties
string
phase

Phase is the action’s phase.

string
previous

PoolRoutingChange is a bounded patch of Pool.spec.routing.

object
burstMaxGPUs

BurstMaxGPUs is the new burst GPU bound.

integer format: int32
burstToMarket

BurstToMarket is the new burst policy.

string
waitTimeout

WaitTimeout is the new wait timeout.

string
reason

Reason is the terminal phase’s reason (Expired, Rejected, KillSwitch, …).

string
results

Results are the outcomes per target.

Array<object>
nullable

PoolActionResult is the outcome on one target.

object
message

Message explains the outcome.

string
outcome
required

Applied, Skipped, Failed, Reverted

string
target
required

Target is the Node or object the result is for.

string
revertible

Revertible is true when the executed change can be undone with nodus pool revert.

boolean
startTime

StartTime is when the action started.

string
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": {
"action": "example",
"change": {
"burstMaxGPUs": 1,
"burstToMarket": "example",
"waitTimeout": "example"
},
"decision": "example",
"estimatedSavingsUSD": "example",
"expirationTime": "example",
"mode": "example",
"opportunityCostUSD": "example",
"pool": "example",
"reason": "example",
"recommendation": "example",
"targets": {
"nodes": [
"example"
],
"objects": [
"example"
]
}
},
"status": {
"completionTime": "example",
"conditions": [
{
"lastTransitionTime": "example",
"message": "example",
"observedGeneration": 1,
"reason": "example",
"status": "example",
"type": "example"
}
],
"executed": true,
"handledRequests": {
"additionalProperty": "example"
},
"phase": "example",
"previous": {
"burstMaxGPUs": 1,
"burstToMarket": "example",
"waitTimeout": "example"
},
"reason": "example",
"results": [
{
"message": "example",
"outcome": "example",
"target": "example"
}
],
"revertible": true,
"startTime": "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"
}