-
Notifications
You must be signed in to change notification settings - Fork 16
/
rediscluster_types.go
96 lines (73 loc) · 2.81 KB
/
rediscluster_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
/*
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"
)
// RedisClusterSpec defines the desired state of RedisCluster.
type RedisClusterSpec struct {
// +kubebuilder:validation:Minimum=3
// The number of leader instances to run.
LeaderCount int `json:"leaderCount,omitempty"`
// +optional
// +kubebuilder:validation:Minimum=0
// The number of followers that each leader will have.
LeaderFollowersCount int `json:"leaderFollowersCount,omitempty"`
// +optional
// Flag that toggles the default affinity rules added by the operator.
// Default is true.
EnableDefaultAffinity bool `json:"enableDefaultAffinity,omitempty"`
// +optional
// Annotations for the Redis pods.
Annotations map[string]string `json:"annotations,omitempty"`
// Labels used by the operator to get the pods that it manages. Added by default
// to the list of labels of the Redis pod.
PodLabelSelector map[string]string `json:"podLabelSelector"`
// +optional
// Labels for the Redis pods.
Labels map[string]string `json:"labels,omitempty"`
// PodSpec for Redis pods.
RedisPodSpec corev1.PodSpec `json:"redisPodSpec"`
}
// RedisClusterStatus defines the observed state of RedisCluster
type RedisClusterStatus struct {
// A list of pointers to currently running pods.
// +optional
Pods []corev1.ObjectReference `json:"active,omitempty"`
// The current state of the cluster.
// +optional
ClusterState string `json:"clusterState,omitempty"`
// The total expected pod number when the cluster is ready and stable.
// +optional
TotalExpectedPods int `json:"totalExpectedPods,omitempty"`
}
// +kubebuilder:object:root=true
// +kubebuilder:subresource:status
// +kubebuilder:resource:shortName=rdc
// RedisCluster is the Schema for the redisclusters API.
type RedisCluster struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec RedisClusterSpec `json:"spec,omitempty"`
Status RedisClusterStatus `json:"status,omitempty"`
}
// +kubebuilder:object:root=true
// RedisClusterList contains a list of RedisCluster
type RedisClusterList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []RedisCluster `json:"items"`
}
func init() {
SchemeBuilder.Register(&RedisCluster{}, &RedisClusterList{})
}