Skip to content

Commit 6f94d24

Browse files
committed
feat: test trigger types
1 parent 4e39dae commit 6f94d24

File tree

2 files changed

+63
-5
lines changed

2 files changed

+63
-5
lines changed

apis/executor/v1/executor_types.go

+9-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ type ExecutorSpec struct {
3333

3434
// ExecutorType one of "rest" for rest openapi based executors or "job" which will be default runners for testkube
3535
// or "container" for container executors
36-
ExecutorType string `json:"executor_type,omitempty"`
36+
ExecutorType ExecutorType `json:"executor_type,omitempty"`
3737

3838
// URI for rest based executors
3939
URI string `json:"uri,omitempty"`
@@ -68,6 +68,14 @@ const (
6868
FeatureJUnitReport Feature = "junit-report"
6969
)
7070

71+
// +kubebuilder:validation:Enum=job;conrainer
72+
type ExecutorType string
73+
74+
const (
75+
ExecutorTypeJob ExecutorType = "job"
76+
ExecutorTypeContainer ExecutorType = "container"
77+
)
78+
7179
// +kubebuilder:validation:Enum=string;file-uri;git-file;git-dir;git
7280
type ScriptContentType string
7381

apis/testtriggers/v1/testtrigger_types.go

+54-4
Original file line numberDiff line numberDiff line change
@@ -42,17 +42,17 @@ type TestTrigger struct {
4242
// TestTriggerSpec defines the desired state of TestTrigger
4343
type TestTriggerSpec struct {
4444
// For which Resource do we monitor Event which triggers an Action on certain conditions
45-
Resource string `json:"resource"`
45+
Resource TestTriggerResource `json:"resource"`
4646
// ResourceSelector identifies which Kubernetes Objects should be watched
4747
ResourceSelector TestTriggerSelector `json:"resourceSelector"`
4848
// On which Event for a Resource should an Action be triggered
49-
Event string `json:"event"`
49+
Event TestTriggerEvent `json:"event"`
5050
// What resource conditions should be matched
5151
ConditionSpec *TestTriggerConditionSpec `json:"conditionSpec,omitempty"`
5252
// Action represents what needs to be executed for selected Execution
53-
Action string `json:"action"`
53+
Action TestTriggerAction `json:"action"`
5454
// Execution identifies for which test execution should an Action be executed
55-
Execution string `json:"execution"`
55+
Execution TestTriggerExecution `json:"execution"`
5656
// TestSelector identifies on which Testkube Kubernetes Objects an Action should be taken
5757
TestSelector TestTriggerSelector `json:"testSelector"`
5858
// 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 {
6161
Delay *metav1.Duration `json:"delay,omitempty"`
6262
}
6363

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+
64114
// TestTriggerSelector is used for selecting Kubernetes Objects
65115
type TestTriggerSelector struct {
66116
// Name selector is used to identify a Kubernetes Object based on the metadata name

0 commit comments

Comments
 (0)