-
-
Notifications
You must be signed in to change notification settings - Fork 7
/
ratelimitservice_types.go
77 lines (60 loc) · 2.35 KB
/
ratelimitservice_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
/*
Copyright 2021.
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 (
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// RateLimitServiceSpec defines the desired state of RateLimitService
type RateLimitServiceSpec struct {
Kubernetes *RateLimitServiceSpec_Kubernetes `json:"kubernetes,omitempty"`
Backend *RateLimitServiceSpec_Backend `json:"backend,omitempty"`
}
type RateLimitServiceSpec_Kubernetes struct {
ReplicaCount *int32 `json:"replica_count,omitempty"`
Resources *corev1.ResourceRequirements `json:"resources,omitempty"`
AutoScaling *RateLimitServiceSpec_Kubernetes_AutoScaling `json:"auto_scaling,omitempty"`
}
type RateLimitServiceSpec_Kubernetes_AutoScaling struct {
MaxReplica *int32 `json:"max_replicas,omitempty"`
MinReplica *int32 `json:"min_replicas,omitempty"`
}
type RateLimitServiceSpec_Backend struct {
Redis *RateLimitService_RedisBackend `json:"redis,omitempty"`
}
type RateLimitService_RedisBackend struct {
Type string `json:"type,omitempty"`
URL string `json:"url,omitempty"`
Auth string `json:"auth,omitempty"`
}
type RateLimitServiceStatus struct {
}
//+kubebuilder:object:root=true
//+kubebuilder:subresource:status
// RateLimitService is the Schema for the ratelimitservices API
type RateLimitService struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec RateLimitServiceSpec `json:"spec,omitempty"`
Status RateLimitServiceStatus `json:"status,omitempty"`
}
//+kubebuilder:object:root=true
// RateLimitServiceList contains a list of RateLimitService
type RateLimitServiceList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []RateLimitService `json:"items"`
}
func init() {
SchemeBuilder.Register(&RateLimitService{}, &RateLimitServiceList{})
}