API Reference

Packages:

theodolite.rocks/v1beta1

Resource Types:

benchmark

↩ Parent

Name Type Description Required
apiVersion string theodolite.rocks/v1beta1 true
kind string benchmark true
metadata object Refer to the Kubernetes API documentation for the fields of the `metadata` field. true
spec object
true
status object
false

benchmark.spec

↩ Parent

Name Type Description Required
loadGenerator object The loadGenResourceSets specifies all Kubernetes resources required to start the load generator. A resourceSet can be either a configMap resourceSet or a fileSystem resourceSet.
true
loadTypes []object A list of load types that can be scaled for this benchmark. For each load type the concrete values are defined in the execution object.
true
resourceTypes []object A list of resource types that can be scaled for this `benchmark` resource. For each resource type the concrete values are defined in the `execution` object.
true
slos []object List of resource values for the specified resource type.
true
sut object The appResourceSets specifies all Kubernetes resources required to start the sut. A resourceSet can be either a configMap resourceSet or a fileSystem resourceSet.
true
infrastructure object (Optional) A list of file names that reference Kubernetes resources that are deployed on the cluster to create the required infrastructure.

Default: map[]
false
kafkaConfig object Contains the Kafka configuration.
false
name string This field exists only for technical reasons and should not be set by the user. The value of the field will be overwritten.

Default:
false
waitForResourcesEnabled boolean If true, Theodolite waits to create the resource for the SUT until the infrastructure resources are ready, and analogously, Theodolite waits to create the load-gen resource until the resources of the SUT are ready.

Default: false
false

benchmark.spec.loadGenerator

↩ Parent

The loadGenResourceSets specifies all Kubernetes resources required to start the load generator. A resourceSet can be either a configMap resourceSet or a fileSystem resourceSet.

Name Type Description Required
afterActions []object Load generator after actions are executed after the teardown of the load generator.

Default: []
false
beforeActions []object Load generator before actions are executed before the load generator is started.

Default: []
false
resources []object

Default: []
false

benchmark.spec.loadGenerator.afterActions[index]

↩ Parent

Name Type Description Required
delete object Specifies deletion of a resource.
false
exec object Specifies a command that gets executed within a Container of a Pod
false

benchmark.spec.loadGenerator.afterActions[index].delete

↩ Parent

Specifies deletion of a resource.

Name Type Description Required
selector object Defines how to select the resource to delete.
true

benchmark.spec.loadGenerator.afterActions[index].delete.selector

↩ Parent

Defines how to select the resource to delete.

Name Type Description Required
apiVersion string Specifies the api/version of the resource that should be deleted, e.g. 'kafka.strimzi.io/v1beta2'.
true
kind string Specifies the Kind of the resource that should be deleted, e.g. 'KafkaTopic'.
true
nameRegex string Specifies a regular expression that is matched with the metadata.name property of all resources with given api/version and Kind that should be deleted.

Default: *
false

benchmark.spec.loadGenerator.afterActions[index].exec

↩ Parent

Specifies a command that gets executed within a Container of a Pod

Name Type Description Required
command []string The command to be executed as string array.
true
selector object The selector specifies which resource should be selected for the execution of the command.
true
timeoutSeconds integer Specifies the timeout (in seconds) for the specified command.
true

benchmark.spec.loadGenerator.afterActions[index].exec.selector

↩ Parent

The selector specifies which resource should be selected for the execution of the command.

Name Type Description Required
container string Specifies the container.

Default:
false
pod object Specifies the pod.
false

benchmark.spec.loadGenerator.afterActions[index].exec.selector.pod

↩ Parent

Specifies the pod.

Name Type Description Required
matchLabels map[string]string The matchLabels of the desired pod.

Default: map[]
false

benchmark.spec.loadGenerator.beforeActions[index]

↩ Parent

Name Type Description Required
delete object Specifies deletion of a resource.
false
exec object Specifies a command that gets executed within a Container of a Pod
false

benchmark.spec.loadGenerator.beforeActions[index].delete

↩ Parent

Specifies deletion of a resource.

Name Type Description Required
selector object Defines how to select the resource to delete.
true

benchmark.spec.loadGenerator.beforeActions[index].delete.selector

↩ Parent

Defines how to select the resource to delete.

Name Type Description Required
apiVersion string Specifies the api/version of the resource that should be deleted, e.g. 'kafka.strimzi.io/v1beta2'.
true
kind string Specifies the Kind of the resource that should be deleted, e.g. 'KafkaTopic'.
true
nameRegex string Specifies a regular expression that is matched with the metadata.name property of all resources with given api/version and Kind that should be deleted.

Default: *
false

benchmark.spec.loadGenerator.beforeActions[index].exec

↩ Parent

Specifies a command that gets executed within a Container of a Pod

Name Type Description Required
command []string The command to be executed as string array.
true
selector object The selector specifies which resource should be selected for the execution of the command.
true
timeoutSeconds integer Specifies the timeout (in seconds) for the specified command.
true

benchmark.spec.loadGenerator.beforeActions[index].exec.selector

↩ Parent

The selector specifies which resource should be selected for the execution of the command.

Name Type Description Required
container string Specifies the container.

Default:
false
pod object Specifies the pod.
false

benchmark.spec.loadGenerator.beforeActions[index].exec.selector.pod

↩ Parent

Specifies the pod.

Name Type Description Required
matchLabels map[string]string The matchLabels of the desired pod.

Default: map[]
false

benchmark.spec.loadGenerator.resources[index]

↩ Parent

Name Type Description Required
configMap object The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.
false
fileSystem object The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.
false

benchmark.spec.loadGenerator.resources[index].configMap

↩ Parent

The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.

Name Type Description Required
files []string (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
false
name string The name of the configMap
false

benchmark.spec.loadGenerator.resources[index].fileSystem

↩ Parent

The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.

Name Type Description Required
files []string (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
false
path string The path to the folder which contains the Kubernetes manifests files.
false

benchmark.spec.loadTypes[index]

↩ Parent

Name Type Description Required
patchers []object List of patchers used to scale this resource type.
true
typeName string Name of the load type.
true

benchmark.spec.loadTypes[index].patchers[index]

↩ Parent

Name Type Description Required
resource string Specifies the Kubernetes resource to be patched.

Default:
true
type string Type of the Patcher.

Default:
true
properties map[string]string (Optional) Patcher specific additional arguments.

Default: map[]
false

benchmark.spec.resourceTypes[index]

↩ Parent

Name Type Description Required
patchers []object List of patchers used to scale this resource type.
true
typeName string Name of the resource type.
true

benchmark.spec.resourceTypes[index].patchers[index]

↩ Parent

Name Type Description Required
resource string Specifies the Kubernetes resource to be patched.

Default:
true
type string Type of the patcher.

Default:
true
properties map[string]string (Optional) Patcher specific additional arguments.

Default: map[]
false

benchmark.spec.slos[index]

↩ Parent

Name Type Description Required
name string The name of the SLO.
true
offset integer Hours by which the start and end timestamp will be shifted (for different timezones).
true
prometheusUrl string Connection string for Prometheus.
true
sloType string The type of the SLO. It must match 'lag trend'.
true
properties map[string]string (Optional) SLO specific additional arguments.

Default: map[]
false

benchmark.spec.sut

↩ Parent

The appResourceSets specifies all Kubernetes resources required to start the sut. A resourceSet can be either a configMap resourceSet or a fileSystem resourceSet.

Name Type Description Required
afterActions []object SUT after actions are executed after the teardown of the SUT.

Default: []
false
beforeActions []object SUT before actions are executed before the SUT is started.

Default: []
false
resources []object

Default: []
false

benchmark.spec.sut.afterActions[index]

↩ Parent

Name Type Description Required
delete object Specifies deletion of a resource.
false
exec object Specifies a command that gets executed within a Container of a Pod
false

benchmark.spec.sut.afterActions[index].delete

↩ Parent

Specifies deletion of a resource.

Name Type Description Required
selector object Defines how to select the resource to delete.
true

benchmark.spec.sut.afterActions[index].delete.selector

↩ Parent

Defines how to select the resource to delete.

Name Type Description Required
apiVersion string Specifies the api/version of the resource that should be deleted, e.g. 'kafka.strimzi.io/v1beta2'.
true
kind string Specifies the Kind of the resource that should be deleted, e.g. 'KafkaTopic'.
true
nameRegex string Specifies a regular expression that is matched with the metadata.name property of all resources with given api/version and Kind that should be deleted.

Default: *
false

benchmark.spec.sut.afterActions[index].exec

↩ Parent

Specifies a command that gets executed within a Container of a Pod

Name Type Description Required
command []string The command to be executed as string array.
true
selector object The selector specifies which resource should be selected for the execution of the command.
true
timeoutSeconds integer Specifies the timeout (in seconds) for the specified command.
true

benchmark.spec.sut.afterActions[index].exec.selector

↩ Parent

The selector specifies which resource should be selected for the execution of the command.

Name Type Description Required
container string Specifies the container.

Default:
false
pod object Specifies the pod.
false

benchmark.spec.sut.afterActions[index].exec.selector.pod

↩ Parent

Specifies the pod.

Name Type Description Required
matchLabels map[string]string The matchLabels of the desired pod.

Default: map[]
false

benchmark.spec.sut.beforeActions[index]

↩ Parent

Name Type Description Required
delete object Specifies deletion of a resource.
false
exec object Specifies a command that gets executed within a Container of a Pod
false

benchmark.spec.sut.beforeActions[index].delete

↩ Parent

Specifies deletion of a resource.

Name Type Description Required
selector object Defines how to select the resource to delete.
true

benchmark.spec.sut.beforeActions[index].delete.selector

↩ Parent

Defines how to select the resource to delete.

Name Type Description Required
apiVersion string Specifies the api/version of the resource that should be deleted, e.g. 'kafka.strimzi.io/v1beta2'.
true
kind string Specifies the Kind of the resource that should be deleted, e.g. 'KafkaTopic'.
true
nameRegex string Specifies a regular expression that is matched with the metadata.name property of all resources with given api/version and Kind that should be deleted.

Default: *
false

benchmark.spec.sut.beforeActions[index].exec

↩ Parent

Specifies a command that gets executed within a Container of a Pod

Name Type Description Required
command []string The command to be executed as string array.
true
selector object The selector specifies which resource should be selected for the execution of the command.
true
timeoutSeconds integer Specifies the timeout (in seconds) for the specified command.
true

benchmark.spec.sut.beforeActions[index].exec.selector

↩ Parent

The selector specifies which resource should be selected for the execution of the command.

Name Type Description Required
container string Specifies the container.

Default:
false
pod object Specifies the pod.
false

benchmark.spec.sut.beforeActions[index].exec.selector.pod

↩ Parent

Specifies the pod.

Name Type Description Required
matchLabels map[string]string The matchLabels of the desired pod.

Default: map[]
false

benchmark.spec.sut.resources[index]

↩ Parent

Name Type Description Required
configMap object The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.
false
fileSystem object The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.
false

benchmark.spec.sut.resources[index].configMap

↩ Parent

The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.

Name Type Description Required
files []string (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
false
name string The name of the configMap
false

benchmark.spec.sut.resources[index].fileSystem

↩ Parent

The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.

Name Type Description Required
files []string (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
false
path string The path to the folder which contains the Kubernetes manifests files.
false

benchmark.spec.infrastructure

↩ Parent

(Optional) A list of file names that reference Kubernetes resources that are deployed on the cluster to create the required infrastructure.

Name Type Description Required
afterActions []object Infrastructure after actions are executed after the teardown of the infrastructure.

Default: []
false
beforeActions []object Infrastructure before actions are executed before the infrastructure is set up.

Default: []
false
resources []object

Default: []
false

benchmark.spec.infrastructure.afterActions[index]

↩ Parent

Name Type Description Required
delete object Specifies deletion of a resource.
false
exec object Specifies a command that gets executed within a Container of a Pod
false

benchmark.spec.infrastructure.afterActions[index].delete

↩ Parent

Specifies deletion of a resource.

Name Type Description Required
selector object Defines how to select the resource to delete.
true

benchmark.spec.infrastructure.afterActions[index].delete.selector

↩ Parent

Defines how to select the resource to delete.

Name Type Description Required
apiVersion string Specifies the api/version of the resource that should be deleted, e.g. 'kafka.strimzi.io/v1beta2'.
true
kind string Specifies the Kind of the resource that should be deleted, e.g. 'KafkaTopic'.
true
nameRegex string Specifies a regular expression that is matched with the metadata.name property of all resources with given api/version and Kind that should be deleted.

Default: *
false

benchmark.spec.infrastructure.afterActions[index].exec

↩ Parent

Specifies a command that gets executed within a Container of a Pod

Name Type Description Required
command []string The command to be executed as string array.
true
selector object The selector specifies which resource should be selected for the execution of the command.
true
timeoutSeconds integer Specifies the timeout (in seconds) for the specified command.
true

benchmark.spec.infrastructure.afterActions[index].exec.selector

↩ Parent

The selector specifies which resource should be selected for the execution of the command.

Name Type Description Required
container string Specifies the container.

Default:
false
pod object Specifies the pod.
false

benchmark.spec.infrastructure.afterActions[index].exec.selector.pod

↩ Parent

Specifies the pod.

Name Type Description Required
matchLabels map[string]string The matchLabels of the desired pod.

Default: map[]
false

benchmark.spec.infrastructure.beforeActions[index]

↩ Parent

Name Type Description Required
delete object Specifies deletion of a resource.
false
exec object Specifies a command that gets executed within a Container of a Pod
false

benchmark.spec.infrastructure.beforeActions[index].delete

↩ Parent

Specifies deletion of a resource.

Name Type Description Required
selector object Defines how to select the resource to delete.
true

benchmark.spec.infrastructure.beforeActions[index].delete.selector

↩ Parent

Defines how to select the resource to delete.

Name Type Description Required
apiVersion string Specifies the api/version of the resource that should be deleted, e.g. 'kafka.strimzi.io/v1beta2'.
true
kind string Specifies the Kind of the resource that should be deleted, e.g. 'KafkaTopic'.
true
nameRegex string Specifies a regular expression that is matched with the metadata.name property of all resources with given api/version and Kind that should be deleted.

Default: *
false

benchmark.spec.infrastructure.beforeActions[index].exec

↩ Parent

Specifies a command that gets executed within a Container of a Pod

Name Type Description Required
command []string The command to be executed as string array.
true
selector object The selector specifies which resource should be selected for the execution of the command.
true
timeoutSeconds integer Specifies the timeout (in seconds) for the specified command.
true

benchmark.spec.infrastructure.beforeActions[index].exec.selector

↩ Parent

The selector specifies which resource should be selected for the execution of the command.

Name Type Description Required
container string Specifies the container.

Default:
false
pod object Specifies the pod.
false

benchmark.spec.infrastructure.beforeActions[index].exec.selector.pod

↩ Parent

Specifies the pod.

Name Type Description Required
matchLabels map[string]string The matchLabels of the desired pod.

Default: map[]
false

benchmark.spec.infrastructure.resources[index]

↩ Parent

Name Type Description Required
configMap object The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.
false
fileSystem object The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.
false

benchmark.spec.infrastructure.resources[index].configMap

↩ Parent

The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.

Name Type Description Required
files []string (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
false
name string The name of the configMap
false

benchmark.spec.infrastructure.resources[index].fileSystem

↩ Parent

The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.

Name Type Description Required
files []string (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
false
path string The path to the folder which contains the Kubernetes manifests files.
false

benchmark.spec.kafkaConfig

↩ Parent

Contains the Kafka configuration.

Name Type Description Required
bootstrapServer string The bootstrap servers connection string.
true
topics []object List of topics to be created for each experiment. Alternative theodolite offers the possibility to remove certain topics after each experiment.
true

benchmark.spec.kafkaConfig.topics[index]

↩ Parent

Name Type Description Required
name string The name of the topic.

Default:
true
numPartitions integer The number of partitions of the topic.

Default: 0
false
removeOnly boolean Determines if this topic should only be deleted after each experiment. For removeOnly topics the name can be a RegEx describing the topic.

Default: false
false
replicationFactor integer The replication factor of the topic.

Default: 0
false

benchmark.status

↩ Parent

Name Type Description Required
resourceSetsState string The status of a Benchmark indicates whether all resources are available to start the benchmark or not.
false

execution

↩ Parent

Name Type Description Required
apiVersion string theodolite.rocks/v1beta1 true
kind string execution true
metadata object Refer to the Kubernetes API documentation for the fields of the `metadata` field. true
spec object
true
status object
false

execution.spec

↩ Parent

Name Type Description Required
benchmark string The name of the benchmark this execution is referring to.
true
execution object Defines the overall parameter for the execution.
true
load object Specifies the load values that are benchmarked.
true
resources object Specifies the scaling resource that is benchmarked.
true
configOverrides []object List of patchers that are used to override existing configurations.

Default: []
false
name string This field exists only for technical reasons and should not be set by the user. The value of the field will be overwritten.

Default:
false
slos []object List of SLOs with their properties, which differ from the benchmark definition.
false

execution.spec.execution

↩ Parent

Defines the overall parameter for the execution.

Name Type Description Required
duration integer Defines the duration of each experiment in seconds.
true
repetitions integer Number of repititions for each experiment.
true
strategy object Defines the used strategy for the execution, either 'LinearSearch', 'BinarySearch' or 'InitialGuessSearch'.
true
loadGenerationDelay integer Seconds to wait between the start of the SUT and the load generator.
false
metric string
false

execution.spec.execution.strategy

↩ Parent

Defines the used strategy for the execution, either ‘LinearSearch’, ‘BinarySearch’ or ‘InitialGuessSearch’.

Name Type Description Required
name string
true
guessStrategy string
false
restrictions []string List of restriction strategies used to delimit the search space.
false
searchStrategy string
false

execution.spec.load

↩ Parent

Specifies the load values that are benchmarked.

Name Type Description Required
loadType string The type of the load. It must match one of the load types specified in the referenced benchmark.
true
loadValues []integer List of load values for the specified load type.
true

execution.spec.resources

↩ Parent

Specifies the scaling resource that is benchmarked.

Name Type Description Required
resourceType string The type of the resource. It must match one of the resource types specified in the referenced benchmark.
true
resourceValues []integer List of resource values for the specified resource type.
true

execution.spec.configOverrides[index]

↩ Parent

Name Type Description Required
patcher object Patcher used to patch a resource
false
value string
false

execution.spec.configOverrides[index].patcher

↩ Parent

Patcher used to patch a resource

Name Type Description Required
resource string Specifies the Kubernetes resource to be patched.

Default:
true
type string Type of the Patcher.

Default:
true
properties map[string]string (Optional) Patcher specific additional arguments.

Default: map[]
false

execution.spec.slos[index]

↩ Parent

Name Type Description Required
name string The name of the SLO. It must match a SLO specified in the Benchmark.
true
properties map[string]string (Optional) SLO specific additional arguments.

Default: map[]
true

execution.status

↩ Parent

Name Type Description Required
completionTime string Time when this execution was stopped

Format: date-time
false
executionDuration string Duration of the execution
false
executionState string
false
startTime string Time this execution started

Format: date-time
false