@@ -42,17 +42,17 @@ type TestTrigger struct {
42
42
// TestTriggerSpec defines the desired state of TestTrigger
43
43
type TestTriggerSpec struct {
44
44
// For which Resource do we monitor Event which triggers an Action on certain conditions
45
- Resource string `json:"resource"`
45
+ Resource TestTriggerResource `json:"resource"`
46
46
// ResourceSelector identifies which Kubernetes Objects should be watched
47
47
ResourceSelector TestTriggerSelector `json:"resourceSelector"`
48
48
// On which Event for a Resource should an Action be triggered
49
- Event string `json:"event"`
49
+ Event TestTriggerEvent `json:"event"`
50
50
// What resource conditions should be matched
51
51
ConditionSpec * TestTriggerConditionSpec `json:"conditionSpec,omitempty"`
52
52
// Action represents what needs to be executed for selected Execution
53
- Action string `json:"action"`
53
+ Action TestTriggerAction `json:"action"`
54
54
// Execution identifies for which test execution should an Action be executed
55
- Execution string `json:"execution"`
55
+ Execution TestTriggerExecution `json:"execution"`
56
56
// TestSelector identifies on which Testkube Kubernetes Objects an Action should be taken
57
57
TestSelector TestTriggerSelector `json:"testSelector"`
58
58
// Delay is a duration string which specifies how long should the test be delayed after a trigger is matched
@@ -61,6 +61,56 @@ type TestTriggerSpec struct {
61
61
Delay * metav1.Duration `json:"delay,omitempty"`
62
62
}
63
63
64
+ // TestTriggerResource defines resource for test triggers
65
+ // +kubebuilder:validation:Enum=pod;deployment;statefulset;daemonset;service;ingress;event;configmap
66
+ type TestTriggerResource string
67
+
68
+ // List of TestTriggerResources
69
+ const (
70
+ TestTriggerResourcePod TestTriggerResource = "pod"
71
+ TestTriggerResourceDeployment TestTriggerResource = "deployment"
72
+ TestTriggerResourceStatefulSet TestTriggerResource = "statefulset"
73
+ TestTriggerResourceDaemonSet TestTriggerResource = "daemonset"
74
+ TestTriggerResourceService TestTriggerResource = "service"
75
+ TestTriggerResourceIngress TestTriggerResource = "ingress"
76
+ TestTriggerResourceEvent TestTriggerResource = "event"
77
+ TestTriggerResourceConfigMap TestTriggerResource = "configmap"
78
+ )
79
+
80
+ // TestTriggerEvent defines event for test triggers
81
+ // +kubebuilder:validation:Enum=created;modified;deleted;deployment-scale-update;deployment-image-update;deployment-env-update;deployment-containers-modified
82
+ type TestTriggerEvent string
83
+
84
+ // List of TestTriggerEvents
85
+ const (
86
+ TestTriggerEventCreated TestTriggerEvent = "created"
87
+ TestTriggerEventModified TestTriggerEvent = "modified"
88
+ TestTriggerEventDeleted TestTriggerEvent = "deleted"
89
+ TestTriggerCauseDeploymentScaleUpdate TestTriggerEvent = "deployment-scale-update"
90
+ TestTriggerCauseDeploymentImageUpdate TestTriggerEvent = "deployment-image-update"
91
+ TestTriggerCauseDeploymentEnvUpdate TestTriggerEvent = "deployment-env-update"
92
+ TestTriggerCauseDeploymentContainersModified TestTriggerEvent = "deployment-containers-modified"
93
+ )
94
+
95
+ // TestTriggerAction defines action for test triggers
96
+ // +kubebuilder:validation:Enum=run
97
+ type TestTriggerAction string
98
+
99
+ // List of TestTriggerAction
100
+ const (
101
+ TestTriggerActionRun TestTriggerAction = "run"
102
+ )
103
+
104
+ // TestTriggerExecution defines execution for test triggers
105
+ // +kubebuilder:validation:Enum=test;testsuite
106
+ type TestTriggerExecution string
107
+
108
+ // List of TestTriggerExecution
109
+ const (
110
+ TestTriggerExecutionTest TestTriggerExecution = "test"
111
+ TestTriggerExecutionTestsuite TestTriggerExecution = "testsuite"
112
+ )
113
+
64
114
// TestTriggerSelector is used for selecting Kubernetes Objects
65
115
type TestTriggerSelector struct {
66
116
// Name selector is used to identify a Kubernetes Object based on the metadata name
0 commit comments