-
Notifications
You must be signed in to change notification settings - Fork 61
/
effectiveschedule_types.go
64 lines (54 loc) · 2.57 KB
/
effectiveschedule_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
package v1alpha1
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
type (
// +kubebuilder:object:root=true
// +kubebuilder:printcolumn:name="Schedule Namespace",type="string",JSONPath=`.spec.scheduleRefs[0].namespace`,description="Schedule Namespace"
// +kubebuilder:printcolumn:name="Schedule Name",type="string",JSONPath=`.spec.scheduleRefs[0].name`,description="Schedule Name"
// +kubebuilder:printcolumn:name="Generated Schedule",type="string",JSONPath=`.spec.generatedSchedule`,description="Generated Schedule"
// +kubebuilder:printcolumn:name="Job Type",type="string",JSONPath=`.spec.jobType`,description="Job Type"
// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
// EffectiveSchedule is the Schema to persist schedules generated from Randomized schedules.
EffectiveSchedule struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec EffectiveScheduleSpec `json:"spec,omitempty"`
}
// +kubebuilder:object:root=true
// EffectiveScheduleList contains a list of EffectiveSchedule
EffectiveScheduleList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []EffectiveSchedule `json:"items"`
}
// EffectiveScheduleSpec defines the desired state of EffectiveSchedule
EffectiveScheduleSpec struct {
// GeneratedSchedule is the effective schedule that is added to Cron
GeneratedSchedule ScheduleDefinition `json:"generatedSchedule,omitempty"`
// OriginalSchedule is the original user-defined schedule definition in the Schedule object.
OriginalSchedule ScheduleDefinition `json:"originalSchedule,omitempty"`
// JobType defines to which job type this schedule applies
JobType JobType `json:"jobType,omitempty"`
// ScheduleRefs holds a list of schedules for which the generated schedule applies to.
// The list may omit entries that aren't generated from smart schedules.
ScheduleRefs []ScheduleRef `json:"scheduleRefs,omitempty"`
}
// ScheduleRef represents a reference to a Schedule resource
ScheduleRef struct {
Name string `json:"name,omitempty"`
Namespace string `json:"namespace,omitempty"`
}
)
// AddScheduleRef adds the given newRef to the existing ScheduleRefs if not already existing.
func (in *EffectiveScheduleSpec) AddScheduleRef(newRef ScheduleRef) {
for _, ref := range in.ScheduleRefs {
if ref.Name == newRef.Name && ref.Namespace == newRef.Namespace {
return
}
}
in.ScheduleRefs = append(in.ScheduleRefs, newRef)
}
func init() {
SchemeBuilder.Register(&EffectiveSchedule{}, &EffectiveScheduleList{})
}