Skip to content

Move definition of SLOs to Benchmark

Currently, SLOs are defined as part of the Execution resource. According to our proposed data model (see image below), a list of SLOs should be defined by the Benchmark, but can be restricted by an Execution. This simplifies Theodolites usability as in most cases, Benchmarkers would not need to know how SLO checkers work internally.

theodolite-data-model

The possible outcome could look similar to:

Benchmark YAML:

slos:
  - name: "lag trend"
    sloType: "lag trend"
    prometheusUrl: "http://prometheus-operated:9090"
    offset: 0
    properties:
      threshold: 2000 # default value
      externalSloUrl: "http://localhost:80/evaluate-slope"
      warmup: 60 # default value, in seconds
  - ...

Execution YAML:

slos: # if not defined, use all of benchmark
  - name: "lag trend" # refer to the "lag trend" SLO from the benchmark
    properties: # optional overrides
      threshold: 4000
      warmup: 120 # in seconds
  - ...

This involves modifications to the following CRD schemata: Benchmark, Execution

Edited by Sören Henning