-
Notifications
You must be signed in to change notification settings - Fork 109
/
keptnevaluation_types.go
104 lines (90 loc) · 3.62 KB
/
keptnevaluation_types.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/*
Copyright 2022.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package v1alpha1
import (
"github.com/keptn/lifecycle-toolkit/lifecycle-operator/apis/lifecycle/v1alpha1/common"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// KeptnEvaluationSpec defines the desired state of KeptnEvaluation
type KeptnEvaluationSpec struct {
// +optional
Workload string `json:"workload,omitempty"`
WorkloadVersion string `json:"workloadVersion"`
// +optional
AppName string `json:"appName,omitempty"`
// +optional
AppVersion string `json:"appVersion,omitempty"`
EvaluationDefinition string `json:"evaluationDefinition"`
// +kubebuilder:default:=10
// +optional
Retries int `json:"retries,omitempty"`
// +optional
// +kubebuilder:default:="5s"
// +kubebuilder:validation:Pattern="^0|([0-9]+(\\.[0-9]+)?(ns|us|µs|ms|s|m|h))+$"
// +kubebuilder:validation:Type:=string
// +optional
RetryInterval metav1.Duration `json:"retryInterval,omitempty"`
// +optional
FailAction string `json:"failAction,omitempty"`
// +optional
Type common.CheckType `json:"checkType,omitempty"`
}
// KeptnEvaluationStatus defines the observed state of KeptnEvaluation
type KeptnEvaluationStatus struct {
// +kubebuilder:default:=0
RetryCount int `json:"retryCount"`
EvaluationStatus map[string]EvaluationStatusItem `json:"evaluationStatus"`
// +kubebuilder:default:=Pending
OverallStatus common.KeptnState `json:"overallStatus"`
// +optional
StartTime metav1.Time `json:"startTime,omitempty"`
// +optional
EndTime metav1.Time `json:"endTime,omitempty"`
}
type EvaluationStatusItem struct {
Value string `json:"value"`
Status common.KeptnState `json:"status"`
// +optional
Message string `json:"message,omitempty"`
}
// +kubebuilder:object:root=true
// +kubebuilder:subresource:status
// +kubebuilder:resource:path=keptnevaluations,shortName=ke
// +kubebuilder:printcolumn:name="AppName",type=string,JSONPath=`.spec.appName`
// +kubebuilder:printcolumn:name="AppVersion",type=string,JSONPath=`.spec.appVersion`
// +kubebuilder:printcolumn:name="WorkloadName",type=string,JSONPath=`.spec.workload`
// +kubebuilder:printcolumn:name="WorkloadVersion",type=string,JSONPath=`.spec.workloadVersion`
// +kubebuilder:printcolumn:name="RetryCount",type=string,JSONPath=`.status.retryCount`
// +kubebuilder:printcolumn:name="EvaluationStatus",type=string,JSONPath=`.status.evaluationStatus`
// +kubebuilder:printcolumn:name="OverallStatus",type=string,JSONPath=`.status.overallStatus`
// KeptnEvaluation is the Schema for the keptnevaluations API
type KeptnEvaluation struct {
metav1.TypeMeta `json:",inline"`
// +optional
metav1.ObjectMeta `json:"metadata,omitempty"`
// +optional
Spec KeptnEvaluationSpec `json:"spec,omitempty"`
// +optional
Status KeptnEvaluationStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
// KeptnEvaluationList contains a list of KeptnEvaluation
type KeptnEvaluationList struct {
metav1.TypeMeta `json:",inline"`
// +optional
metav1.ListMeta `json:"metadata,omitempty"`
Items []KeptnEvaluation `json:"items"`
}
func init() {
SchemeBuilder.Register(&KeptnEvaluation{}, &KeptnEvaluationList{})
}