Skip to content

Wait

The wait operation is a wrapper around kubectl wait. It allows to wait for deletion or conditions against resources.

Configuration

Reference documentation

The full structure of the Wait is documented here.

Deprecated syntax

You can specify the resource directly instead of using apiVersion and kind.

This is a deprecated syntax though and will be removed in a future version.

Clustered resources

When used with a clustered resource, the namespace is ignored and is not added to the corresponding kubectl command.

All resources

If you don't specify a name or a selector, the wait operation will consider all resources.

All namespaces

When used with a namespaced resource, it is possible to consider all namespaces in the cluster by setting namespace: '*'.

Usage examples

Below is an example of using wait in a Test resource.

Wait pod ready

apiVersion: chainsaw.kyverno.io/v1alpha1
kind: Test
metadata:
  name: example
spec:
  steps:
  - try:
    # ...
    - wait:
        apiVersion: v1
        kind: Pod
        name: my-pod
        timeout: 1m
        for:
          condition:
            name: Ready
            value: 'true'
    # ...

Wait pod ready in a specific namespace

apiVersion: chainsaw.kyverno.io/v1alpha1
kind: Test
metadata:
  name: example
spec:
  steps:
  - try:
    # ...
    - wait:
        apiVersion: v1
        kind: Pod
        name: my-pod
        namespace: my-ns
        timeout: 1m
        for:
          condition:
            name: Ready
            value: 'true'
    # ...

Wait pods ready using a label selector

apiVersion: chainsaw.kyverno.io/v1alpha1
kind: Test
metadata:
  name: example
spec:
  steps:
  - try:
    # ...
    - wait:
        apiVersion: v1
        kind: Pod
        selector: app=foo
        timeout: 1m
        for:
          condition:
            name: Ready
            value: 'true'
    # ...

Wait pod deleted

apiVersion: chainsaw.kyverno.io/v1alpha1
kind: Test
metadata:
  name: example
spec:
  steps:
  - try:
    # ...
    - wait:
        apiVersion: v1
        kind: Pod
        name: my-pod
        timeout: 1m
        for:
          deletion: {}
    # ...

Wait pod deleted in a specific namespace

apiVersion: chainsaw.kyverno.io/v1alpha1
kind: Test
metadata:
  name: example
spec:
  steps:
  - try:
    # ...
    - wait:
        apiVersion: v1
        kind: Pod
        name: my-pod
        namespace: my-ns
        timeout: 1m
        for:
          deletion: {}
    # ...

Wait pods deleted using a label selector

apiVersion: chainsaw.kyverno.io/v1alpha1
kind: Test
metadata:
  name: example
spec:
  steps:
  - try:
    # ...
    - wait:
        apiVersion: v1
        kind: Pod
        selector: app=foo
        timeout: 1m
        for:
          deletion: {}
    # ...

Format

An optional format can be specified. Supported formats are json and yaml.

If format is not specified, results will be returned in text format.

Use json format

apiVersion: chainsaw.kyverno.io/v1alpha1
kind: Test
metadata:
  name: example
spec:
  steps:
  - try:
    # ...
    - wait:
        apiVersion: v1
        kind: Pod
        format: json
        # ...
    catch:
    # ...
    - wait:
        apiVersion: v1
        kind: Pod
        format: json
        # ...
    finally:
    # ...
    - wait:
        apiVersion: v1
        kind: Pod
        format: json
        # ...

Use yaml format

apiVersion: chainsaw.kyverno.io/v1alpha1
kind: Test
metadata:
  name: example
spec:
  steps:
  - try:
    # ...
    - wait:
        apiVersion: v1
        kind: Pod
        format: yaml
        # ...
    catch:
    # ...
    - wait:
        apiVersion: v1
        kind: Pod
        format: yaml
        # ...
    finally:
    # ...
    - wait:
        apiVersion: v1
        kind: Pod
        format: yaml
        # ...