/
keptnapp_types.go
105 lines (91 loc) · 4.01 KB
/
keptnapp_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
105
/*
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 v1alpha3
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// KeptnAppSpec defines the desired state of KeptnApp
type KeptnAppSpec struct {
// Version defines the version of the application. For automatically created KeptnApps,
// the version is a function of all KeptnWorkloads that are part of the KeptnApp.
Version string `json:"version"`
// Revision can be modified to trigger another deployment of a KeptnApp of the same version.
// This can be used for restarting a KeptnApp which failed to deploy,
// e.g. due to a failed preDeploymentEvaluation/preDeploymentTask.
// +kubebuilder:default:=1
// +optional
Revision uint `json:"revision,omitempty"`
// Workloads is a list of all KeptnWorkloads that are part of the KeptnApp.
// +optional
Workloads []KeptnWorkloadRef `json:"workloads,omitempty"`
// PreDeploymentTasks is a list of all tasks to be performed during the pre-deployment phase of the KeptnApp.
// The items of this list refer to the names of KeptnTaskDefinitions
// located in the same namespace as the KeptnApp, or in the Keptn namespace.
// +optional
PreDeploymentTasks []string `json:"preDeploymentTasks,omitempty"`
// PostDeploymentTasks is a list of all tasks to be performed during the post-deployment phase of the KeptnApp.
// The items of this list refer to the names of KeptnTaskDefinitions
// located in the same namespace as the KeptnApp, or in the Keptn namespace.
// +optional
PostDeploymentTasks []string `json:"postDeploymentTasks,omitempty"`
// PreDeploymentEvaluations is a list of all evaluations to be performed
// during the pre-deployment phase of the KeptnApp.
// The items of this list refer to the names of KeptnEvaluationDefinitions
// located in the same namespace as the KeptnApp, or in the Keptn namespace.
// +optional
PreDeploymentEvaluations []string `json:"preDeploymentEvaluations,omitempty"`
// PostDeploymentEvaluations is a list of all evaluations to be performed
// during the post-deployment phase of the KeptnApp.
// The items of this list refer to the names of KeptnEvaluationDefinitions
// located in the same namespace as the KeptnApp, or in the Keptn namespace.
// +optional
PostDeploymentEvaluations []string `json:"postDeploymentEvaluations,omitempty"`
}
// KeptnAppStatus defines the observed state of KeptnApp
type KeptnAppStatus struct {
// CurrentVersion indicates the version that is currently deployed or being reconciled.
// +optional
CurrentVersion string `json:"currentVersion,omitempty"`
}
// KeptnWorkloadRef refers to a KeptnWorkload that is part of a KeptnApp
type KeptnWorkloadRef struct {
// Name is the name of the KeptnWorkload.
Name string `json:"name"`
// Version is the version of the KeptnWorkload.
Version string `json:"version"`
}
// +kubebuilder:object:root=true
// +kubebuilder:subresource:status
// KeptnApp is the Schema for the keptnapps API
type KeptnApp struct {
metav1.TypeMeta `json:",inline"`
// +optional
metav1.ObjectMeta `json:"metadata,omitempty"`
// Spec describes the desired state of the KeptnApp.
// +optional
Spec KeptnAppSpec `json:"spec,omitempty"`
// Status describes the current state of the KeptnApp.
// +optional
Status KeptnAppStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
// KeptnAppList contains a list of KeptnApp
type KeptnAppList struct {
metav1.TypeMeta `json:",inline"`
// +optional
metav1.ListMeta `json:"metadata,omitempty"`
Items []KeptnApp `json:"items"`
}
func init() {
SchemeBuilder.Register(&KeptnApp{}, &KeptnAppList{})
}