From 72006cf50d8d908b1d75f2d46b4fac57601d9911 Mon Sep 17 00:00:00 2001
From: "stu126940@mail.uni-kiel.de" <stu126940@mail.uni-kiel.de>
Date: Mon, 22 Nov 2021 13:58:05 +0100
Subject: [PATCH] update crd schemata (renaming

---
 docs/crd-docu.md                              | 238 +++++++++---------
 .../uc1-flink-benchmark-operator.yaml         |   5 +-
 .../uc1-kstreams/uc1-benchmark-operator.yaml  |   5 +-
 .../uc1-benchmark-standalone.yaml             |   1 +
 .../uc2-flink-benchmark-operator.yaml         |   5 +-
 .../uc2-kstreams/uc2-benchmark-operator.yaml  |   5 +-
 .../uc2-benchmark-standalone.yaml             |   5 +-
 .../definitions/uc3-flink/test-exec.yaml      |  56 +++++
 .../uc3-flink-benchmark-operator.yaml         |   5 +-
 .../uc3-kstreams/uc3-benchmark-operator.yaml  |   5 +-
 .../uc3-benchmark-standalone.yaml             |   5 +-
 .../uc4-flink-benchmark-operator.yaml         |   5 +-
 .../uc4-kstreams/uc4-benchmark-operator.yaml  |   5 +-
 .../uc4-benchmark-standalone.yaml             |   5 +-
 theodolite/crd/crd-benchmark.yaml             | 202 +++++++--------
 .../examples/operator/example-benchmark.yaml  |  42 +---
 .../examples/operator/example-configmap.yaml  |  19 +-
 .../standalone/example-benchmark.yaml         |  23 +-
 .../benchmark/KubernetesBenchmark.kt          |   8 +-
 .../operator/TheodoliteController.kt          |   6 +-
 .../execution/operator/BenchmarkCRDummy.kt    |   4 +-
 21 files changed, 344 insertions(+), 310 deletions(-)
 create mode 100644 theodolite-benchmarks/definitions/uc3-flink/test-exec.yaml

diff --git a/docs/crd-docu.md b/docs/crd-docu.md
index 03b87f547..f97164a29 100644
--- a/docs/crd-docu.md
+++ b/docs/crd-docu.md
@@ -79,13 +79,6 @@ Resource Types:
         </tr>
     </thead>
     <tbody><tr>
-        <td><b><a href="#benchmarkspecinfrastructureindex">infrastructure</a></b></td>
-        <td>[]object</td>
-        <td>
-          A list of file names that reference Kubernetes resources that are deployed on the cluster to create the required infrastructure.<br/>
-        </td>
-        <td>false</td>
-      </tr><tr>
         <td><b>name</b></td>
         <td>string</td>
         <td>
@@ -93,10 +86,10 @@ Resource Types:
         </td>
         <td>false</td>
       </tr><tr>
-        <td><b><a href="#benchmarkspecappresourcesetsindex">appResourceSets</a></b></td>
+        <td><b><a href="#benchmarkspecinfrastructureindex">infrastructure</a></b></td>
         <td>[]object</td>
         <td>
-          The appResourceSets specifies all Kubernetes resources required to start the sut. A resourceSet can be either a configMap resourceSet or a fileSystem resourceSet.<br/>
+          A list of file names that reference Kubernetes resources that are deployed on the cluster to create the required infrastructure.<br/>
         </td>
         <td>true</td>
       </tr><tr>
@@ -107,7 +100,7 @@ Resource Types:
         </td>
         <td>true</td>
       </tr><tr>
-        <td><b><a href="#benchmarkspecloadgenresourcesetsindex">loadGenResourceSets</a></b></td>
+        <td><b><a href="#benchmarkspecloadgeneratorindex">loadGenerator</a></b></td>
         <td>[]object</td>
         <td>
           The loadGenResourceSets specifies all Kubernetes resources required to start the load generator. A resourceSet can be either a configMap resourceSet or a fileSystem resourceSet.<br/>
@@ -127,6 +120,13 @@ Resource Types:
           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.<br/>
         </td>
         <td>true</td>
+      </tr><tr>
+        <td><b><a href="#benchmarkspecsutindex">sut</a></b></td>
+        <td>[]object</td>
+        <td>
+          The appResourceSets specifies all Kubernetes resources required to start the sut. A resourceSet can be either a configMap resourceSet or a fileSystem resourceSet.<br/>
+        </td>
+        <td>true</td>
       </tr></tbody>
 </table>
 
@@ -204,108 +204,6 @@ The configMap resourceSet loads the Kubernetes manifests from an Kubernetes conf
 
 
 
-The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.
-
-<table>
-    <thead>
-        <tr>
-            <th>Name</th>
-            <th>Type</th>
-            <th>Description</th>
-            <th>Required</th>
-        </tr>
-    </thead>
-    <tbody><tr>
-        <td><b>files</b></td>
-        <td>[]string</td>
-        <td>
-          (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.<br/>
-        </td>
-        <td>false</td>
-      </tr><tr>
-        <td><b>path</b></td>
-        <td>string</td>
-        <td>
-          The path to the folder which contains the Kubernetes manifests files.<br/>
-        </td>
-        <td>false</td>
-      </tr></tbody>
-</table>
-
-
-### benchmark.spec.appResourceSets[index]
-<sup><sup>[↩ Parent](#benchmarkspec)</sup></sup>
-
-
-
-
-
-<table>
-    <thead>
-        <tr>
-            <th>Name</th>
-            <th>Type</th>
-            <th>Description</th>
-            <th>Required</th>
-        </tr>
-    </thead>
-    <tbody><tr>
-        <td><b><a href="#benchmarkspecappresourcesetsindexconfigmap">configMap</a></b></td>
-        <td>object</td>
-        <td>
-          The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.<br/>
-        </td>
-        <td>false</td>
-      </tr><tr>
-        <td><b><a href="#benchmarkspecappresourcesetsindexfilesystem">fileSystem</a></b></td>
-        <td>object</td>
-        <td>
-          The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.<br/>
-        </td>
-        <td>false</td>
-      </tr></tbody>
-</table>
-
-
-### benchmark.spec.appResourceSets[index].configMap
-<sup><sup>[↩ Parent](#benchmarkspecappresourcesetsindex)</sup></sup>
-
-
-
-The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.
-
-<table>
-    <thead>
-        <tr>
-            <th>Name</th>
-            <th>Type</th>
-            <th>Description</th>
-            <th>Required</th>
-        </tr>
-    </thead>
-    <tbody><tr>
-        <td><b>files</b></td>
-        <td>[]string</td>
-        <td>
-          (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.<br/>
-        </td>
-        <td>false</td>
-      </tr><tr>
-        <td><b>name</b></td>
-        <td>string</td>
-        <td>
-          The name of the configMap<br/>
-        </td>
-        <td>false</td>
-      </tr></tbody>
-</table>
-
-
-### benchmark.spec.appResourceSets[index].fileSystem
-<sup><sup>[↩ Parent](#benchmarkspecappresourcesetsindex)</sup></sup>
-
-
-
 The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.
 
 <table>
@@ -425,7 +323,7 @@ Contains the Kafka configuration.
 </table>
 
 
-### benchmark.spec.loadGenResourceSets[index]
+### benchmark.spec.loadGenerator[index]
 <sup><sup>[↩ Parent](#benchmarkspec)</sup></sup>
 
 
@@ -442,14 +340,14 @@ Contains the Kafka configuration.
         </tr>
     </thead>
     <tbody><tr>
-        <td><b><a href="#benchmarkspecloadgenresourcesetsindexconfigmap">configMap</a></b></td>
+        <td><b><a href="#benchmarkspecloadgeneratorindexconfigmap">configMap</a></b></td>
         <td>object</td>
         <td>
           The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.<br/>
         </td>
         <td>false</td>
       </tr><tr>
-        <td><b><a href="#benchmarkspecloadgenresourcesetsindexfilesystem">fileSystem</a></b></td>
+        <td><b><a href="#benchmarkspecloadgeneratorindexfilesystem">fileSystem</a></b></td>
         <td>object</td>
         <td>
           The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.<br/>
@@ -459,8 +357,8 @@ Contains the Kafka configuration.
 </table>
 
 
-### benchmark.spec.loadGenResourceSets[index].configMap
-<sup><sup>[↩ Parent](#benchmarkspecloadgenresourcesetsindex)</sup></sup>
+### benchmark.spec.loadGenerator[index].configMap
+<sup><sup>[↩ Parent](#benchmarkspecloadgeneratorindex)</sup></sup>
 
 
 
@@ -493,8 +391,8 @@ The configMap resourceSet loads the Kubernetes manifests from an Kubernetes conf
 </table>
 
 
-### benchmark.spec.loadGenResourceSets[index].fileSystem
-<sup><sup>[↩ Parent](#benchmarkspecloadgenresourcesetsindex)</sup></sup>
+### benchmark.spec.loadGenerator[index].fileSystem
+<sup><sup>[↩ Parent](#benchmarkspecloadgeneratorindex)</sup></sup>
 
 
 
@@ -688,6 +586,108 @@ The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.
       </tr></tbody>
 </table>
 
+
+### benchmark.spec.sut[index]
+<sup><sup>[↩ Parent](#benchmarkspec)</sup></sup>
+
+
+
+
+
+<table>
+    <thead>
+        <tr>
+            <th>Name</th>
+            <th>Type</th>
+            <th>Description</th>
+            <th>Required</th>
+        </tr>
+    </thead>
+    <tbody><tr>
+        <td><b><a href="#benchmarkspecsutindexconfigmap">configMap</a></b></td>
+        <td>object</td>
+        <td>
+          The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.<br/>
+        </td>
+        <td>false</td>
+      </tr><tr>
+        <td><b><a href="#benchmarkspecsutindexfilesystem">fileSystem</a></b></td>
+        <td>object</td>
+        <td>
+          The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.<br/>
+        </td>
+        <td>false</td>
+      </tr></tbody>
+</table>
+
+
+### benchmark.spec.sut[index].configMap
+<sup><sup>[↩ Parent](#benchmarkspecsutindex)</sup></sup>
+
+
+
+The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.
+
+<table>
+    <thead>
+        <tr>
+            <th>Name</th>
+            <th>Type</th>
+            <th>Description</th>
+            <th>Required</th>
+        </tr>
+    </thead>
+    <tbody><tr>
+        <td><b>files</b></td>
+        <td>[]string</td>
+        <td>
+          (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.<br/>
+        </td>
+        <td>false</td>
+      </tr><tr>
+        <td><b>name</b></td>
+        <td>string</td>
+        <td>
+          The name of the configMap<br/>
+        </td>
+        <td>false</td>
+      </tr></tbody>
+</table>
+
+
+### benchmark.spec.sut[index].fileSystem
+<sup><sup>[↩ Parent](#benchmarkspecsutindex)</sup></sup>
+
+
+
+The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.
+
+<table>
+    <thead>
+        <tr>
+            <th>Name</th>
+            <th>Type</th>
+            <th>Description</th>
+            <th>Required</th>
+        </tr>
+    </thead>
+    <tbody><tr>
+        <td><b>files</b></td>
+        <td>[]string</td>
+        <td>
+          (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.<br/>
+        </td>
+        <td>false</td>
+      </tr><tr>
+        <td><b>path</b></td>
+        <td>string</td>
+        <td>
+          The path to the folder which contains the Kubernetes manifests files.<br/>
+        </td>
+        <td>false</td>
+      </tr></tbody>
+</table>
+
 ## execution
 <sup><sup>[↩ Parent](#theodolitecomv1 )</sup></sup>
 
diff --git a/theodolite-benchmarks/definitions/uc1-flink/uc1-flink-benchmark-operator.yaml b/theodolite-benchmarks/definitions/uc1-flink/uc1-flink-benchmark-operator.yaml
index 070a2cd89..33c120371 100644
--- a/theodolite-benchmarks/definitions/uc1-flink/uc1-flink-benchmark-operator.yaml
+++ b/theodolite-benchmarks/definitions/uc1-flink/uc1-flink-benchmark-operator.yaml
@@ -3,7 +3,8 @@ kind: benchmark
 metadata:
   name: uc1-flink
 spec:
-  appResourceSets:
+  infrastructure: []
+  sut:
     - configMap:
         name: "benchmark-resources-uc1-flink"
         files:
@@ -14,7 +15,7 @@ spec:
         - "uc1-flink/jobmanager-service.yaml"
         - "uc1-flink/jobmanager-deployment.yaml"
         #- "uc1-flink/jobmanager-rest-service.yaml"
-  loadGenResourceSets:
+  loadGenerator:
     - configMap:
         name: "benchmark-resources-uc1-loadgen"
         files:
diff --git a/theodolite-benchmarks/definitions/uc1-kstreams/uc1-benchmark-operator.yaml b/theodolite-benchmarks/definitions/uc1-kstreams/uc1-benchmark-operator.yaml
index 283b3baa5..8dade1e1d 100644
--- a/theodolite-benchmarks/definitions/uc1-kstreams/uc1-benchmark-operator.yaml
+++ b/theodolite-benchmarks/definitions/uc1-kstreams/uc1-benchmark-operator.yaml
@@ -3,7 +3,8 @@ kind: benchmark
 metadata:
   name: uc1-kstreams
 spec:
-  appResourceSets:
+  infrastructure: []
+  sut:
     - configMap:
         name: "benchmark-resources-uc1-kstreams"
         files:
@@ -11,7 +12,7 @@ spec:
         - "uc1-kstreams/uc1-kstreams-service.yaml"
         - "uc1-kstreams/uc1-jmx-configmap.yaml"
         - "uc1-kstreams/uc1-service-monitor.yaml"
-  loadGenResourceSets:
+  loadGenerator:
     - configMap:
         name: "benchmark-resources-uc1-loadgen"
         files:
diff --git a/theodolite-benchmarks/definitions/uc1-kstreams/uc1-benchmark-standalone.yaml b/theodolite-benchmarks/definitions/uc1-kstreams/uc1-benchmark-standalone.yaml
index b90edf5e4..0b04e69f6 100644
--- a/theodolite-benchmarks/definitions/uc1-kstreams/uc1-benchmark-standalone.yaml
+++ b/theodolite-benchmarks/definitions/uc1-kstreams/uc1-benchmark-standalone.yaml
@@ -1,4 +1,5 @@
 name: "uc1-kstreams"
+infrastructure: []
 appResourceSet:
   - configMap:
       name: "benchmark-resources-uc1-kstreams"
diff --git a/theodolite-benchmarks/definitions/uc2-flink/uc2-flink-benchmark-operator.yaml b/theodolite-benchmarks/definitions/uc2-flink/uc2-flink-benchmark-operator.yaml
index dcbdf57ef..699053801 100644
--- a/theodolite-benchmarks/definitions/uc2-flink/uc2-flink-benchmark-operator.yaml
+++ b/theodolite-benchmarks/definitions/uc2-flink/uc2-flink-benchmark-operator.yaml
@@ -3,7 +3,8 @@ kind: benchmark
 metadata:
   name: uc2-flink
 spec:
-  appResourceSets:
+  infrastructure: []
+  sut:
     - configMap:
         name: "benchmark-resources-uc2-flink"
         files:
@@ -14,7 +15,7 @@ spec:
         - "uc2-flink/jobmanager-service.yaml"
         - "uc2-flink/jobmanager-deployment.yaml"
         #- "uc2-flink/jobmanager-rest-service.yaml"
-  loadGenResourceSets:
+  loadGenerator:
     - configMap:
         name: "benchmark-resources-uc2-loadgen"
         files:
diff --git a/theodolite-benchmarks/definitions/uc2-kstreams/uc2-benchmark-operator.yaml b/theodolite-benchmarks/definitions/uc2-kstreams/uc2-benchmark-operator.yaml
index aaf479ae8..b97902c07 100644
--- a/theodolite-benchmarks/definitions/uc2-kstreams/uc2-benchmark-operator.yaml
+++ b/theodolite-benchmarks/definitions/uc2-kstreams/uc2-benchmark-operator.yaml
@@ -3,7 +3,8 @@ kind: benchmark
 metadata:
   name: uc2-kstreams
 spec:
-  appResourceSets:
+  infrastructure: []
+  sut:
     - configMap:
         name: "benchmark-resources-uc2-kstreams"
         files:
@@ -11,7 +12,7 @@ spec:
           - "uc2-kstreams/uc2-kstreams-service.yaml"
           - "uc2-kstreams/uc2-jmx-configmap.yaml"
           - "uc2-kstreams/uc2-service-monitor.yaml"
-  loadGenResourceSets:
+  loadGenerator:
     - configMap:
         name: "benchmark-resources-uc2-loadgen"
         files:
diff --git a/theodolite-benchmarks/definitions/uc2-kstreams/uc2-benchmark-standalone.yaml b/theodolite-benchmarks/definitions/uc2-kstreams/uc2-benchmark-standalone.yaml
index b0dbd6bf2..9306b8839 100644
--- a/theodolite-benchmarks/definitions/uc2-kstreams/uc2-benchmark-standalone.yaml
+++ b/theodolite-benchmarks/definitions/uc2-kstreams/uc2-benchmark-standalone.yaml
@@ -1,5 +1,6 @@
 name: "uc2-kstreams"
-appResourceSets:
+infrastructure: []
+sut:
   - configMap:
       name: "benchmark-resources-uc2-kstreams"
       files:
@@ -7,7 +8,7 @@ appResourceSets:
         - "uc2-kstreams/uc2-kstreams-service.yaml"
         - "uc2-kstreams/uc2-jmx-configmap.yaml"
         - "uc2-kstreams/uc2-service-monitor.yaml"
-loadGenResourceSets:
+loadGenerator:
   - configMap:
       name: "benchmark-resources-uc2-loadgen"
       files:
diff --git a/theodolite-benchmarks/definitions/uc3-flink/test-exec.yaml b/theodolite-benchmarks/definitions/uc3-flink/test-exec.yaml
new file mode 100644
index 000000000..48151dc3c
--- /dev/null
+++ b/theodolite-benchmarks/definitions/uc3-flink/test-exec.yaml
@@ -0,0 +1,56 @@
+apiVersion: theodolite.com/v1
+kind: execution
+metadata:
+  name: uc3-flink-template
+spec:
+  benchmark: "uc3-flink"
+  load:
+    loadType: "NumSensors"
+    loadValues: [100]
+  resources:
+    resourceType: "Instances"
+    resourceValues: [1]
+  slos:
+    - sloType: "lag trend percent"
+      prometheusUrl: "http://prometheus-operated:9090"
+      offset: 0
+      properties:
+        percent: 0.05
+        externalSloUrl: "http://localhost:80/evaluate-slope"
+        warmup: 60 # in seconds
+  execution:
+    strategy: "LinearSearch"
+    duration: 300 # in seconds
+    repetitions: 1
+    loadGenerationDelay: 30 # in seconds
+    restrictions:
+      - "LowerBound"
+  configOverrides:
+    - patcher:
+        type: "ResourceLimitPatcher"
+        resource: "uc3-flink/jobmanager-deployment.yaml"
+        properties:
+          container: "jobmanager"
+          limitedResource: "cpu"
+      value: "200m"
+    - patcher:
+        type: "ResourceLimitPatcher"
+        resource: "uc3-flink/jobmanager-deployment.yaml"
+        properties:
+          container: "jobmanager"
+          limitedResource: "memory"
+      value: "1Gi"
+    - patcher:
+        type: "ResourceLimitPatcher"
+        resource: "uc3-flink/taskmanager-deployment.yaml"
+        properties:
+          container: "taskmanager"
+          limitedResource: "cpu"
+      value: "200m"
+    - patcher:
+        type: "ResourceLimitPatcher"
+        resource: "uc3-flink/taskmanager-deployment.yaml"
+        properties:
+          container: "taskmanager"
+          limitedResource: "memory"
+      value: "1Gi"
\ No newline at end of file
diff --git a/theodolite-benchmarks/definitions/uc3-flink/uc3-flink-benchmark-operator.yaml b/theodolite-benchmarks/definitions/uc3-flink/uc3-flink-benchmark-operator.yaml
index 7ba17f8e4..af126fe8b 100644
--- a/theodolite-benchmarks/definitions/uc3-flink/uc3-flink-benchmark-operator.yaml
+++ b/theodolite-benchmarks/definitions/uc3-flink/uc3-flink-benchmark-operator.yaml
@@ -3,7 +3,8 @@ kind: benchmark
 metadata:
   name: uc3-flink
 spec:
-  appResourceSets:
+  infrastructure: []
+  sut:
     - configMap:
         name: "benchmark-resources-uc3-flink"
         files:
@@ -14,7 +15,7 @@ spec:
           - "uc3-flink/jobmanager-service.yaml"
           - "uc3-flink/jobmanager-deployment.yaml"
           #- "uc3-flink/jobmanager-rest-service.yaml"
-  loadGenResourceSets:
+  loadGenerator:
     - configMap:
         name: "benchmark-resources-uc3-loadgen"
         files:
diff --git a/theodolite-benchmarks/definitions/uc3-kstreams/uc3-benchmark-operator.yaml b/theodolite-benchmarks/definitions/uc3-kstreams/uc3-benchmark-operator.yaml
index ef49aac8b..d51cc9a94 100644
--- a/theodolite-benchmarks/definitions/uc3-kstreams/uc3-benchmark-operator.yaml
+++ b/theodolite-benchmarks/definitions/uc3-kstreams/uc3-benchmark-operator.yaml
@@ -3,7 +3,8 @@ kind: benchmark
 metadata:
   name: uc3-kstreams
 spec:
-  appResourceSets:
+  infrastructure: []
+  sut:
     - configMap:
         name: "benchmark-resources-uc3-kstreams"
         files:
@@ -11,7 +12,7 @@ spec:
         - "uc3-kstreams/uc3-kstreams-service.yaml"
         - "uc3-kstreams/uc3-jmx-configmap.yaml"
         - "uc3-kstreams/uc3-service-monitor.yaml"
-  loadGenResourceSets:
+  loadGenerator:
     - configMap:
         name: "benchmark-resources-uc3-loadgen"
         files:
diff --git a/theodolite-benchmarks/definitions/uc3-kstreams/uc3-benchmark-standalone.yaml b/theodolite-benchmarks/definitions/uc3-kstreams/uc3-benchmark-standalone.yaml
index 8bb0b6733..13c499d63 100644
--- a/theodolite-benchmarks/definitions/uc3-kstreams/uc3-benchmark-standalone.yaml
+++ b/theodolite-benchmarks/definitions/uc3-kstreams/uc3-benchmark-standalone.yaml
@@ -1,5 +1,6 @@
 name: "uc3-kstreams"
-appResourceSets:
+infrastructure: []
+sut:
   - configMap:
       name: "benchmark-resources-uc3-kstreams"
       files:
@@ -7,7 +8,7 @@ appResourceSets:
       - "uc3-kstreams/uc3-kstreams-service.yaml"
       - "uc3-kstreams/uc3-jmx-configmap.yaml"
       - "uc3-kstreams/uc3-service-monitor.yaml"
-loadGenResourceSets:
+loadGenerator:
   - configMap:
       name: "benchmark-resources-uc3-loadgen"
       files:
diff --git a/theodolite-benchmarks/definitions/uc4-flink/uc4-flink-benchmark-operator.yaml b/theodolite-benchmarks/definitions/uc4-flink/uc4-flink-benchmark-operator.yaml
index a6e427af2..dd99cfebc 100644
--- a/theodolite-benchmarks/definitions/uc4-flink/uc4-flink-benchmark-operator.yaml
+++ b/theodolite-benchmarks/definitions/uc4-flink/uc4-flink-benchmark-operator.yaml
@@ -3,7 +3,8 @@ kind: benchmark
 metadata:
   name: uc4-flink
 spec:
-  appResourceSets:
+  infrastructure: []
+  sut:
     - configMap:
         name: "benchmark-resources-uc4-flink"
         files:
@@ -14,7 +15,7 @@ spec:
           - "uc4-flink/jobmanager-service.yaml"
           - "uc4-flink/jobmanager-deployment.yaml"
           #- "uc4-flink/jobmanager-rest-service.yaml"
-  loadGenResourceSets:
+  loadGenerator:
     - configMap:
         name: "benchmark-resources-uc4-loadgen"
         files:
diff --git a/theodolite-benchmarks/definitions/uc4-kstreams/uc4-benchmark-operator.yaml b/theodolite-benchmarks/definitions/uc4-kstreams/uc4-benchmark-operator.yaml
index 828ab9321..ab3b5f95f 100644
--- a/theodolite-benchmarks/definitions/uc4-kstreams/uc4-benchmark-operator.yaml
+++ b/theodolite-benchmarks/definitions/uc4-kstreams/uc4-benchmark-operator.yaml
@@ -3,7 +3,8 @@ kind: benchmark
 metadata:
   name: uc4-kstreams
 spec:
-  appResourceSets:
+  infrastructure: []
+  sut:
     - configMap:
         name: "benchmark-resources-uc4-kstreams"
         files:
@@ -11,7 +12,7 @@ spec:
           - "uc4-kstreams/uc4-kstreams-service.yaml"
           - "uc4-kstreams/uc4-jmx-configmap.yaml"
           - "uc4-kstreams/uc4-service-monitor.yaml"
-  loadGenResourceSets:
+  loadGenerator:
     - configMap:
         name: "benchmark-resources-uc4-loadgen"
         files:
diff --git a/theodolite-benchmarks/definitions/uc4-kstreams/uc4-benchmark-standalone.yaml b/theodolite-benchmarks/definitions/uc4-kstreams/uc4-benchmark-standalone.yaml
index ab112cdcb..76ca678d0 100644
--- a/theodolite-benchmarks/definitions/uc4-kstreams/uc4-benchmark-standalone.yaml
+++ b/theodolite-benchmarks/definitions/uc4-kstreams/uc4-benchmark-standalone.yaml
@@ -1,5 +1,6 @@
 name: "uc4-kstreams"
-appResourceSets:
+infrastructure: []
+sut:
   - configMap:
       name: "benchmark-resources-uc4-kstreams"
       files:
@@ -7,7 +8,7 @@ appResourceSets:
         - "uc4-kstreams/uc4-kstreams-service.yaml"
         - "uc4-kstreams/uc4-jmx-configmap.yaml"
         - "uc4-kstreams/uc4-service-monitor.yaml"
-loadGenResourceSets:
+loadGenerator:
   - configMap:
       name: "benchmark-resources-uc4-loadgen"
       files:
diff --git a/theodolite/crd/crd-benchmark.yaml b/theodolite/crd/crd-benchmark.yaml
index c08bb0a5c..c5d08e786 100644
--- a/theodolite/crd/crd-benchmark.yaml
+++ b/theodolite/crd/crd-benchmark.yaml
@@ -20,11 +20,110 @@ spec:
         properties:
           spec:
             type: object
-            required: ["appResourceSets", "loadGenResourceSets", "resourceTypes", "loadTypes", "kafkaConfig"]
+            required: ["infrastructure", "sut", "loadGenerator", "resourceTypes", "loadTypes", "kafkaConfig"]
             properties:
               name:
                 description: This field exists only for technical reasons and should not be set by the user. The value of the field will be overwritten.
-                type: string  
+                type: string
+              infrastructure:
+                description: A list of file names that reference Kubernetes resources that are deployed on the cluster to create the required infrastructure.
+                type: array
+                items:
+                  type: object
+                  oneOf:
+                    - required: [ configMap ]
+                    - required: [ fileSystem ]
+                  properties:
+                    configMap:
+                      description: The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.
+                      type: object
+                      properties:
+                        name:
+                          description: The name of the configMap
+                          type: string
+                        files:
+                          description: (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
+                          type: array
+                          items:
+                            type: string
+                    fileSystem:
+                      description: The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.
+                      type: object
+                      properties:
+                        path:
+                          description: The path to the folder which contains the Kubernetes manifests files.
+                          type: string
+                        files:
+                          description: (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
+                          type: array
+                          items:
+                            type: string
+              sut:
+                description: The appResourceSets specifies all Kubernetes resources required to start the sut. A resourceSet can be either a configMap resourceSet or a fileSystem resourceSet.
+                type: array
+                items:
+                  type: object
+                  oneOf:
+                    - required: [ configMap ]
+                    - required: [ fileSystem ]
+                  properties:
+                    configMap:
+                      description: The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.
+                      type: object
+                      properties:
+                        name:
+                          description: The name of the configMap
+                          type: string
+                        files:
+                          description: (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
+                          type: array
+                          items:
+                            type: string
+                    fileSystem:
+                      description: The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.
+                      type: object
+                      properties:
+                        path:
+                          description: The path to the folder which contains the Kubernetes manifests files.
+                          type: string
+                        files:
+                          description: (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
+                          type: array
+                          items:
+                            type: string
+              loadGenerator:
+                description: The loadGenResourceSets specifies all Kubernetes resources required to start the load generator. A resourceSet can be either a configMap resourceSet or a fileSystem resourceSet.
+                type: array
+                items:
+                  type: object
+                  oneOf:
+                    - required: [ configMap ]
+                    - required: [ fileSystem ]
+                  properties:
+                    configMap:
+                      description: The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.
+                      type: object
+                      properties:
+                        name:
+                          description: The name of the configMap
+                          type: string
+                        files:
+                          description: (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
+                          type: array
+                          items:
+                            type: string
+                    fileSystem:
+                      description: The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.
+                      type: object
+                      properties:
+                        path:
+                          description: The path to the folder which contains the Kubernetes manifests files.
+                          type: string
+                        files:
+                          description: (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
+                          type: array
+                          items:
+                            type: string
               resourceTypes:
                 description: 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.
                 type: array
@@ -123,105 +222,6 @@ spec:
                           description: Determines if this topic should only be deleted after each experiement. For removeOnly topics the name can be a RegEx describing the topic.
                           type: boolean
                           default: false
-              infrastructure:
-                description: A list of file names that reference Kubernetes resources that are deployed on the cluster to create the required infrastructure.
-                type: array
-                items:
-                  type: object
-                  oneOf:
-                    - required: [configMap]
-                    - required: [fileSystem]
-                  properties:
-                    configMap:
-                      description: The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.
-                      type: object
-                      properties:
-                        name:
-                          description: The name of the configMap
-                          type: string
-                        files:
-                          description: (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
-                          type: array
-                          items:
-                            type: string
-                    fileSystem:
-                      description: The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.
-                      type: object
-                      properties:
-                        path:
-                          description: The path to the folder which contains the Kubernetes manifests files.
-                          type: string
-                        files:
-                          description: (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
-                          type: array
-                          items:
-                            type: string
-              appResourceSets:
-                description: The appResourceSets specifies all Kubernetes resources required to start the sut. A resourceSet can be either a configMap resourceSet or a fileSystem resourceSet.
-                type: array
-                items:
-                  type: object
-                  oneOf:
-                    - required: [configMap]
-                    - required: [fileSystem]
-                  properties:
-                    configMap:
-                      description: The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.
-                      type: object
-                      properties:
-                        name:
-                          description: The name of the configMap
-                          type: string
-                        files:
-                          description: (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
-                          type: array
-                          items:
-                            type: string
-                    fileSystem:
-                      description: The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.
-                      type: object
-                      properties:
-                        path:
-                          description: The path to the folder which contains the Kubernetes manifests files.
-                          type: string
-                        files:
-                          description: (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
-                          type: array
-                          items:
-                            type: string
-              loadGenResourceSets:
-                description: The loadGenResourceSets specifies all Kubernetes resources required to start the load generator. A resourceSet can be either a configMap resourceSet or a fileSystem resourceSet.
-                type: array
-                items:
-                  type: object
-                  oneOf:
-                    - required: [configMap]
-                    - required: [fileSystem]
-                  properties:
-                    configMap:
-                      description: The configMap resourceSet loads the Kubernetes manifests from an Kubernetes configMap.
-                      type: object
-                      properties:
-                        name:
-                          description: The name of the configMap
-                          type: string
-                        files:
-                          description: (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
-                          type: array
-                          items:
-                            type: string
-                    fileSystem:
-                      description: The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.
-                      type: object
-                      properties:
-                        path:
-                          description: The path to the folder which contains the Kubernetes manifests files.
-                          type: string
-                        files:
-                          description: (Optional) Specifies which files from the configMap should be loaded. If this field is not set, all files are loaded.
-                          type: array
-                          items:
-                            type: string
     additionalPrinterColumns:
     - name: Age
       type: date
diff --git a/theodolite/examples/operator/example-benchmark.yaml b/theodolite/examples/operator/example-benchmark.yaml
index d28a0e5fd..e9c6b2f33 100644
--- a/theodolite/examples/operator/example-benchmark.yaml
+++ b/theodolite/examples/operator/example-benchmark.yaml
@@ -3,6 +3,18 @@ kind: benchmark
 metadata:
   name: uc1-kstreams
 spec:
+  infrastructure: []
+  sut:
+    - configMap:
+       name: "example-configmap"
+       files:
+         - "uc1-kstreams-deployment.yaml"
+  loadGenerator:
+    - configMap:
+       name: "example-configmap"
+       files:
+          - uc1-load-generator-service.yaml
+          - uc1-load-generator-deployment.yaml
   resourceTypes:
     - typeName: "Instances"
       patchers:
@@ -27,32 +39,4 @@ spec:
         numPartitions: 40
         replicationFactor: 1
       - name: "theodolite-.*"
-        removeOnly: True
-  infrastructure:
-    - configMap:
-        name: "example-configmap"
-        files:
-          - test-service.yaml
-  appResourceSets:
-    # - fileSystem:
-    #      path: ./../../../../../../config
-    #      files:
-    #        - "uc1-kstreams-deployment.yaml"
-    #        - "aggregation-service.yaml"
-    #        - "jmx-configmap.yaml"
-    #        - "uc1-service-monitor.yaml"
-    - configMap:
-       name: "example-configmap"
-       files:
-         - "uc1-kstreams-deployment.yaml"
-  loadGenResourceSets:
-    # - fileSystem:
-    #     path: ./../../../../../../config
-    #     files:
-    #       - uc1-load-generator-service.yaml
-    #       - uc1-load-generator-deployment.yaml
-    - configMap:
-       name: "example-configmap"
-       files:
-          - uc1-load-generator-service.yaml
-          - uc1-load-generator-deployment.yaml
+        removeOnly: True
\ No newline at end of file
diff --git a/theodolite/examples/operator/example-configmap.yaml b/theodolite/examples/operator/example-configmap.yaml
index 4e12df3c2..210ce32d3 100644
--- a/theodolite/examples/operator/example-configmap.yaml
+++ b/theodolite/examples/operator/example-configmap.yaml
@@ -84,21 +84,4 @@ data:
         - name: coordination
           port: 5701
           targetPort: 5701
-          protocol: TCP
-  test-service.yaml: |
-    apiVersion: v1
-    kind: Service
-    metadata:
-      name: test-service
-      labels:
-        app: test-service
-    spec:
-      type: ClusterIP
-      clusterIP: None
-      selector:
-        app: test
-      ports:
-        - name: coordination
-          port: 5701
-          targetPort: 5701
-          protocol: TCP
+          protocol: TCP
\ No newline at end of file
diff --git a/theodolite/examples/standalone/example-benchmark.yaml b/theodolite/examples/standalone/example-benchmark.yaml
index 9c00dd0fd..e9ec8fc15 100644
--- a/theodolite/examples/standalone/example-benchmark.yaml
+++ b/theodolite/examples/standalone/example-benchmark.yaml
@@ -1,15 +1,16 @@
 name: "uc1-kstreams"
-appResourceSets:
-  - configMap:
-      name: "example-configmap"
-      files:
-        - "uc1-kstreams-deployment.yaml"
-loadGenResourceSets:
-  - configMap:
-      name: "example-configmap"
-      files:
-        - uc1-load-generator-service.yaml
-        - uc1-load-generator-deployment.yaml
+  infrastructure: []
+  sut:
+    - configMap:
+       name: "example-configmap"
+       files:
+         - "uc1-kstreams-deployment.yaml"
+  loadGenerator:
+    - configMap:
+       name: "example-configmap"
+       files:
+          - uc1-load-generator-service.yaml
+          - uc1-load-generator-deployment.yaml
 resourceTypes:
   - typeName: "Instances"
     patchers:
diff --git a/theodolite/src/main/kotlin/theodolite/benchmark/KubernetesBenchmark.kt b/theodolite/src/main/kotlin/theodolite/benchmark/KubernetesBenchmark.kt
index 20ea477bc..b6eb1d149 100644
--- a/theodolite/src/main/kotlin/theodolite/benchmark/KubernetesBenchmark.kt
+++ b/theodolite/src/main/kotlin/theodolite/benchmark/KubernetesBenchmark.kt
@@ -41,8 +41,8 @@ class KubernetesBenchmark : KubernetesResource, Benchmark {
     lateinit var loadTypes: List<TypeName>
     lateinit var kafkaConfig: KafkaConfig
     lateinit var infrastructure: List<ResourceSets>
-    lateinit var appResourceSets: List<ResourceSets>
-    lateinit var loadGenResourceSets: List<ResourceSets>
+    lateinit var sut: List<ResourceSets>
+    lateinit var loadGenerator: List<ResourceSets>
     var namespace = System.getenv("NAMESPACE") ?: DEFAULT_NAMESPACE
 
     @Transient
@@ -89,8 +89,8 @@ class KubernetesBenchmark : KubernetesResource, Benchmark {
     ): BenchmarkDeployment {
         logger.info { "Using $namespace as namespace." }
 
-        val appResources = loadKubernetesResources(this.appResourceSets)
-        val loadGenResources = loadKubernetesResources(this.loadGenResourceSets)
+        val appResources = loadKubernetesResources(this.sut)
+        val loadGenResources = loadKubernetesResources(this.loadGenerator)
 
         val patcherFactory = PatcherFactory()
 
diff --git a/theodolite/src/main/kotlin/theodolite/execution/operator/TheodoliteController.kt b/theodolite/src/main/kotlin/theodolite/execution/operator/TheodoliteController.kt
index 9058f1f31..4f5430eb6 100644
--- a/theodolite/src/main/kotlin/theodolite/execution/operator/TheodoliteController.kt
+++ b/theodolite/src/main/kotlin/theodolite/execution/operator/TheodoliteController.kt
@@ -5,11 +5,9 @@ import io.fabric8.kubernetes.client.dsl.Resource
 import mu.KotlinLogging
 import theodolite.benchmark.BenchmarkExecution
 import theodolite.benchmark.KubernetesBenchmark
-import theodolite.execution.ExecutionModes
 import theodolite.execution.TheodoliteExecutor
 import theodolite.model.crd.*
 import theodolite.patcher.ConfigOverrideModifier
-import theodolite.util.ExecutionFailedException
 import theodolite.util.ExecutionStateComparator
 import java.lang.Thread.sleep
 
@@ -70,8 +68,8 @@ class TheodoliteController(
         try {
             val modifier = ConfigOverrideModifier(
             execution = execution,
-            resources = benchmark.loadKubernetesResources(benchmark.appResourceSets).map { it.first }
-                    + benchmark.loadKubernetesResources(benchmark.loadGenResourceSets).map { it.first }
+            resources = benchmark.loadKubernetesResources(benchmark.sut).map { it.first }
+                    + benchmark.loadKubernetesResources(benchmark.loadGenerator).map { it.first }
         )
         modifier.setAdditionalLabels(
             labelValue = execution.name,
diff --git a/theodolite/src/test/kotlin/theodolite/execution/operator/BenchmarkCRDummy.kt b/theodolite/src/test/kotlin/theodolite/execution/operator/BenchmarkCRDummy.kt
index dabc42d69..a5955e83b 100644
--- a/theodolite/src/test/kotlin/theodolite/execution/operator/BenchmarkCRDummy.kt
+++ b/theodolite/src/test/kotlin/theodolite/execution/operator/BenchmarkCRDummy.kt
@@ -25,8 +25,8 @@ class BenchmarkCRDummy(name: String) {
         benchmarkCR.apiVersion = "v1"
 
         benchmark.infrastructure = emptyList()
-        benchmark.appResourceSets = emptyList()
-        benchmark.loadGenResourceSets = emptyList()
+        benchmark.sut = emptyList()
+        benchmark.loadGenerator = emptyList()
 
         benchmark.resourceTypes = emptyList()
         benchmark.loadTypes = emptyList()
-- 
GitLab