-
Notifications
You must be signed in to change notification settings - Fork 2
/
cronjobsource_types.go
85 lines (66 loc) · 2.65 KB
/
cronjobsource_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
/*
Copyright 2019 The Knative Authors.
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 (
batchv1beta1 "k8s.io/api/batch/v1beta1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"knative.dev/pkg/apis"
apisv1alpha1 "knative.dev/pkg/apis/v1alpha1"
"knative.dev/pkg/kmeta"
)
// +genclient
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// CronJobSource is a CronJob with a Sink.
type CronJobSource struct {
metav1.TypeMeta `json:",inline"`
// +optional
metav1.ObjectMeta `json:"metadata,omitempty"`
// Spec holds the desired state of the CronJobSource (from the client).
// +required
Spec CronJobSourceSpec `json:"spec,omitempty"`
// Status communicates the observed state of the CronJobSource (from the controller).
// +optional
Status CronJobSourceStatus `json:"status,omitempty"`
}
// Check that CronJobSource can be validated and defaulted.
var _ apis.Validatable = (*CronJobSource)(nil)
var _ apis.Defaultable = (*CronJobSource)(nil)
var _ kmeta.OwnerRefable = (*CronJobSource)(nil)
// CronJobSourceSpec holds the desired state of the CronJobSource (from the client).
type CronJobSourceSpec struct {
BaseSourceSpec `json:",inline"`
batchv1beta1.CronJobSpec `json:",inline"`
}
// CronJobSourceStatus communicates the observed state of the CronJobSource (from the controller).
type CronJobSourceStatus struct {
BaseSourceStatus `json:",inline"`
batchv1beta1.CronJobStatus `json:",inline"`
// ActiveCount stores the length of the CronJobStatus.Active array.
// This allows the controller to compute the length which can then be easily
// parsed by kubectl, etc. K8s has special sauce to do this automatically
// when getting resources, but we have to do it manually.
ActiveCount int `json:"activeCount"`
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// CronJobSourceList is a list of CronJobSource resources
type CronJobSourceList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata"`
Items []CronJobSource `json:"items"`
}
func (s *CronJobSource) GetSink() apisv1alpha1.Destination {
return s.Spec.Sink
}
func (s *CronJobSource) GetStatus() SourceStatus {
return &s.Status
}