-
Notifications
You must be signed in to change notification settings - Fork 0
/
registryjob_types.go
106 lines (82 loc) · 3.24 KB
/
registryjob_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
106
/*
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 v1
import (
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// RegistryJobState is a state of the RegistryJob
type RegistryJobState string
// RegistryJobType is a job type name
type RegistryJobType string
// RegistryJob's states
const (
RegistryJobStatePending = RegistryJobState("Pending")
RegistryJobStateRunning = RegistryJobState("Running")
RegistryJobStateCompleted = RegistryJobState("Completed")
RegistryJobStateFailed = RegistryJobState("Failed")
JobTypeSynchronizeExtReg = RegistryJobType("SynchronizeExtReg")
JobTypeImageReplicate = RegistryJobType("ImageReplicate")
)
// RegistryJobClaim is a claim of registry job
type RegistryJobClaim struct {
// +kubebuilder:validation:Enum=SynchronizeExtReg;ImageReplicate
// Type of job to work
JobType RegistryJobType `json:"jobType"`
// HandleObject refers to the HandleObject
HandleObject corev1.LocalObjectReference `json:"handleObject"`
}
// RegistryJobSpec defines the desired state of RegistryJob
type RegistryJobSpec struct {
// TTL is a time-to-live (in seconds)
// If 0, it is deleted immediately
// If -1, it is not deleted
// If ttl > 0, it is deleted after ttl seconds
TTL int `json:"ttl"`
// Priority is an integer value, greater or equal to 0
Priority int `json:"priority,omitempty"`
// Claim is a claim that need to be handled
Claim *RegistryJobClaim `json:"claim,omitempty"`
}
// RegistryJobStatus defines the observed state of RegistryJob
type RegistryJobStatus struct {
// State is a state of the RegistryJob
State RegistryJobState `json:"state"`
// Message is a message for the RegistryJob (normally an error string)
Message string `json:"message,omitempty"`
// StartTime is actual time the task started
StartTime *metav1.Time `json:"startTime,omitempty"`
// CompletionTime is a time when the job is completed
CompletionTime *metav1.Time `json:"completionTime,omitempty"`
}
// +kubebuilder:object:root=true
// +kubebuilder:subresource:status
// +kubebuilder:resource:shortName=rj
// +kubebuilder:printcolumn:name="State",type=string,JSONPath=`.status.state`
// +kubebuilder:printcolumn:name="Age",type=date,JSONPath=`.metadata.creationTimestamp`
// RegistryJob is the Schema for the jobs
type RegistryJob struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec RegistryJobSpec `json:"spec,omitempty"`
Status RegistryJobStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
// RegistryJobList contains a list of RegistryJob
type RegistryJobList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []RegistryJob `json:"items"`
}
func init() {
SchemeBuilder.Register(&RegistryJob{}, &RegistryJobList{})
}