diff --git a/api/testtriggers/v1/testtrigger_types.go b/api/testtriggers/v1/testtrigger_types.go index e346c655..378e9fec 100644 --- a/api/testtriggers/v1/testtrigger_types.go +++ b/api/testtriggers/v1/testtrigger_types.go @@ -52,7 +52,8 @@ type TestTriggerSpec struct { // What resource probes should be matched ProbeSpec *TestTriggerProbeSpec `json:"probeSpec,omitempty"` // Action represents what needs to be executed for selected Execution - Action TestTriggerAction `json:"action"` + Action TestTriggerAction `json:"action"` + ActionParameters *TestTriggerActionParameters `json:"actionParameters,omitempty"` // Execution identifies for which test execution should an Action be executed Execution TestTriggerExecution `json:"execution"` // TestSelector identifies on which Testkube Kubernetes Objects an Action should be taken @@ -157,6 +158,8 @@ type TestTriggerSelector struct { NameRegex string `json:"nameRegex,omitempty"` // Namespace of the Kubernetes object Namespace string `json:"namespace,omitempty"` + // kubernetes resource namespace regex + NamespaceRegex string `json:"namespaceRegex,omitempty"` // LabelSelector is used to identify a group of Kubernetes Objects based on their metadata labels LabelSelector *metav1.LabelSelector `json:"labelSelector,omitempty"` } @@ -223,6 +226,14 @@ type TestTriggerProbeSpec struct { Delay int32 `json:"delay,omitempty"` } +// supported action parameters for test triggers +type TestTriggerActionParameters struct { + // configuration to pass for the workflow + Config map[string]string `json:"config,omitempty"` + // test workflow execution tags + Tags map[string]string `json:"tags,omitempty"` +} + //+kubebuilder:object:root=true // TestTriggerList contains a list of TestTrigger diff --git a/api/testtriggers/v1/zz_generated.deepcopy.go b/api/testtriggers/v1/zz_generated.deepcopy.go index 76229606..11e9b041 100644 --- a/api/testtriggers/v1/zz_generated.deepcopy.go +++ b/api/testtriggers/v1/zz_generated.deepcopy.go @@ -52,6 +52,35 @@ func (in *TestTrigger) DeepCopyObject() runtime.Object { return nil } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TestTriggerActionParameters) DeepCopyInto(out *TestTriggerActionParameters) { + *out = *in + if in.Config != nil { + in, out := &in.Config, &out.Config + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TestTriggerActionParameters. +func (in *TestTriggerActionParameters) DeepCopy() *TestTriggerActionParameters { + if in == nil { + return nil + } + out := new(TestTriggerActionParameters) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *TestTriggerCondition) DeepCopyInto(out *TestTriggerCondition) { *out = *in @@ -204,6 +233,11 @@ func (in *TestTriggerSpec) DeepCopyInto(out *TestTriggerSpec) { *out = new(TestTriggerProbeSpec) (*in).DeepCopyInto(*out) } + if in.ActionParameters != nil { + in, out := &in.ActionParameters, &out.ActionParameters + *out = new(TestTriggerActionParameters) + (*in).DeepCopyInto(*out) + } in.TestSelector.DeepCopyInto(&out.TestSelector) if in.Delay != nil { in, out := &in.Delay, &out.Delay diff --git a/config/crd/bases/tests.testkube.io_testtriggers.yaml b/config/crd/bases/tests.testkube.io_testtriggers.yaml index 05a9a28b..dfd36daf 100644 --- a/config/crd/bases/tests.testkube.io_testtriggers.yaml +++ b/config/crd/bases/tests.testkube.io_testtriggers.yaml @@ -58,6 +58,20 @@ spec: enum: - run type: string + actionParameters: + description: supported action parameters for test triggers + properties: + config: + additionalProperties: + type: string + description: configuration to pass for the workflow + type: object + tags: + additionalProperties: + type: string + description: test workflow execution tags + type: object + type: object concurrencyPolicy: description: ConcurrencyPolicy defines concurrency policy for selected Execution @@ -272,6 +286,9 @@ spec: namespace: description: Namespace of the Kubernetes object type: string + namespaceRegex: + description: kubernetes resource namespace regex + type: string type: object testSelector: description: TestSelector identifies on which Testkube Kubernetes @@ -332,6 +349,9 @@ spec: namespace: description: Namespace of the Kubernetes object type: string + namespaceRegex: + description: kubernetes resource namespace regex + type: string type: object required: - action