Functions
Refer to Starlark function specification for details about various types of function arguments. Note that ytt’s Starlark use requires functions to be closed with an end
.
- function definition within YAML
Labels returns map with two keys: test1, and test2:
#@ def my_labels():
test1: 123
test2: 124
#@ end
Above is almost equivalent to (differnce is that return type in one case is a YAML fragment and in another it’s a dict):
#@ def my_labels():
#@ return {"test1": 123, "test2": 124}
#@ end
- function definition within Starlark (.star files)
def my_labels():
return {"test1": 123, "test2": 124}
end
- function arguments (positional and keyword arguments)
#@ def my_deployment(name, replicas=1, labels={}):
kind: Deployment
metadata:
name: #@ name
labels: #@ labels
spec:
replicas: #@ replicas
#@ end
---
kind: List
items:
- #@ my_deployment("dep1", replicas=3)
- common function usage
To set labels
key to return value of my_labels()
:
labels: #@ my_labels()
labels_as_array:
- #@ my_labels()
To merge return value of my_labels()
into labels
map:
#@ load("@ytt:template", "template")
labels:
another-label: true
_: #@ template.replace(my_labels())
Note that in most cases template.replace
is not necessary since it’s only helps replacing one item (array item, map item or document) with multiple items of that type.
(Help improve our docs: edit this page on GitHub)