TOKEN=$(oc whoami -t) ENDPOINT=$(oc config current-context | cut -d/ -f2 | tr - .) NAMESPACE=$(oc config current-context | cut -d/ -f1)
This page includes usage examples for OpenShift’s REST API. The examples are
presented as curl and
jq command calls. The examples are
parameterised using environment variables as follows:
Environment variable | Purpose |
---|---|
TOKEN |
Authentication token for OpenShift. If using X.509 authentication, remove lines
referencing $TOKEN and provide a client certificate and key instead. For
example, the curl |
ENDPOINT |
TCP endpoint of OpenShift API server, such as 127.0.0.1:8443. Without loss of generality, in these examples it is assumed that the API server is presented by HTTPS and that it may be accessed insecurely. |
NAMESPACE |
Namespace to use for namespaced objects. |
To try out the usage examples by copy/paste, first set all of the previously mentioned environment variables, for example:
TOKEN=$(oc whoami -t) ENDPOINT=$(oc config current-context | cut -d/ -f2 | tr - .) NAMESPACE=$(oc config current-context | cut -d/ -f1)
Templates include one or more objects to be instantiated, as well as optionally specifying parameters to be used at instantiation time. The flow to instantiate a Template using the TemplateInstance API follows:
To set any parameter values (e.g. to override default values specified in the Template or to specify parameter values which have no defaults), create a secret containing the necessary values.
$ curl -k \ -X POST \ -d @- \ -H "Authorization: Bearer $TOKEN" \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ https://$ENDPOINT/api/v1/namespaces/$NAMESPACE/secrets <<'EOF' { "kind": "secret", "apiVersion": "v1", "metadata": { "name": "secret" }, "stringData": { "NAME": "example" } } EOF
Create a TemplateInstance containing the whole template you want to instantiate, and a reference to the secret created above.
$ curl -k \ -X POST \ -d @- \ -H "Authorization: Bearer $TOKEN" \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ https://$ENDPOINT/apis/template.openshift.io/v1/namespaces/$NAMESPACE/templateinstances <<EOF { "kind": "TemplateInstance", "apiVersion": "template.openshift.io/v1", "metadata": { "name": "templateinstance" }, "spec": { "secret": { "name": "secret" }, "template": $(curl -k \ -H "Authorization: Bearer $TOKEN" \ -H 'Accept: application/json' \ https://$ENDPOINT/apis/template.openshift.io/v1/namespaces/openshift/templates/cakephp-mysql-example) } } EOF
Poll the TemplateInstance
or
watch the TemplateInstance
until either the Ready
or InstantiateFailure
condition types report
status True
.
$ while ! curl -s -k \ -H "Authorization: Bearer $TOKEN" \ -H 'Accept: application/json' \ https://$ENDPOINT/apis/template.openshift.io/v1/namespaces/$NAMESPACE/templateinstances/templateinstance | \ jq -e '.status.conditions[] | select(.status == "True") | .type'; do sleep 1 done