Skip to content
Proud to collaborate with Microsoft for Startups

kubernetes.resource.wait_for_condition ​

Generic kubectl-wait equivalent: poll any Kubernetes resource until a condition matches the requested status

Generic kubectl-wait equivalent: poll any Kubernetes resource until a named condition matches the requested status.

The workflow uses the CustomObjectsApi client which works across all resource kinds — core (v1), named API groups (apps/v1, batch/v1, …), and CRDs — without needing a typed client per resource type.

4-state polling pattern:

PENDING (auto_advance="start_polling") → WAITING (re-polls via schedule_transition) → COMPLETED matched=True (condition reached) → COMPLETED matched=False (timeout) → FAILED (unexpected exception)

Kind-to-plural mapping:

"Deployment" → "deployments", "Policy" → "policies", "Ingress" → "ingresses", "MyCustomKind" → "mycustomkinds"

Inputs:

  • connection_uuid: UUID of the cloud connection (required)
  • api_version: API group/version string, e.g. "v1", "apps/v1", "batch/v1" (required)
  • kind: Resource kind, e.g. "Deployment", "Pod", "MyCustomKind" (required)
  • name: Resource name (required)
  • namespace: Namespace for namespaced resources; omit for cluster-scoped (optional)
  • condition_type: Condition type to watch, e.g. "Ready", "Available" (required)
  • condition_status: Expected condition status: "True", "False", or "Unknown" (optional, default "True")
  • timeout_seconds: Maximum total wait in seconds (optional, default 300, cap 1800)
  • poll_interval: Seconds between polls (optional, default 5, cap 60)

Outputs:

  • matched: bool — True if condition reached; False on timeout
  • poll_count: int — number of polls executed
  • last_observed_status: JSON — last raw status.conditions list

Plugin required: context.get_plugin("connection").kubernetes_runner_clients(connection_uuid, organization_uuid) must expose custom_objects (kubernetes.client.CustomObjectsApi).

Overview ​

PropertyValue
Workflow typeLinear
LibraryApp-kubernetes
Version1.0

Input Schema ​

FieldTypeRequiredDefaultDescription
connection_uuiduuidYes——
api_versionstringYes——
kindstringYes——
namestringYes——
namespacestringNo——
condition_typestringYes——
condition_statusstringNo——
timeout_secondsintegerNo——
poll_intervalintegerNo——
organization_uuiduuidNo——

Output Schema ​

FieldTypeRequiredDefaultDescription
connection_uuiduuidNo——
organization_uuiduuidNo——
api_versionstringNo——
kindstringNo——
namestringNo——
namespacestringNo——
condition_typestringNo——
condition_statusstringNo——
timeout_secondsintegerNo——
poll_intervalintegerNo——
matchedbooleanNo——
poll_countintegerNo——
last_observed_statusjsonNo——
failure_reasonstringNo——
failure_typestringNo——
failed_actionstringNo——
failed_at_statestringNo——
failed_stepstringNo——
failed_layerstringNo——
errorstringNo——
error_typestringNo——

States ​

StateInitialTerminalSuccessAuto-advanceDescription
pendingYesNo—start_polling—
waitingNoNo———
completedNoYesYes——
failedNoYesNo——

State Diagram ​

Transitions ​

FromActionToDescription
pendingstart_pollingwaiting—
waitingpollwaiting—
waitingcompletecompleted—
* (any state)failfailed—

API Usage ​

bash
POST /api/workflows/start
Content-Type: application/json

{
  "workflow_type": "kubernetes.resource.wait_for_condition",
  "initial_data": {
    "connection_uuid": "value",
    "api_version": "value",
    "kind": "value",
    "name": "value"
  }
}