-
Notifications
You must be signed in to change notification settings - Fork 94
/
backend_options.go
129 lines (113 loc) · 4.1 KB
/
backend_options.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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package component
import (
oprand "github.com/3scale/3scale-operator/pkg/crypto/rand"
"github.com/go-playground/validator/v10"
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
)
type BackendOptions struct {
ServiceEndpoint string `validate:"required"`
RouteEndpoint string `validate:"required"`
StorageURL string `validate:"required"`
QueuesURL string `validate:"required"`
StorageSentinelHosts string
StorageSentinelRole string
QueuesSentinelHosts string
QueuesSentinelRole string
ImageTag string `validate:"required"`
ListenerResourceRequirements v1.ResourceRequirements `validate:"-"`
WorkerResourceRequirements v1.ResourceRequirements `validate:"-"`
CronResourceRequirements v1.ResourceRequirements `validate:"-"`
ListenerReplicas int32
WorkerReplicas int32
CronReplicas int32
SystemBackendUsername string `validate:"required"`
SystemBackendPassword string `validate:"required"`
TenantName string `validate:"required"`
WildcardDomain string `validate:"required"`
ListenerAffinity *v1.Affinity `validate:"-"`
ListenerTolerations []v1.Toleration `validate:"-"`
WorkerAffinity *v1.Affinity `validate:"-"`
WorkerTolerations []v1.Toleration `validate:"-"`
CronAffinity *v1.Affinity `validate:"-"`
CronTolerations []v1.Toleration `validate:"-"`
CommonLabels map[string]string `validate:"required"`
CommonListenerLabels map[string]string `validate:"required"`
CommonWorkerLabels map[string]string `validate:"required"`
CommonCronLabels map[string]string `validate:"required"`
ListenerPodTemplateLabels map[string]string `validate:"required"`
WorkerPodTemplateLabels map[string]string `validate:"required"`
CronPodTemplateLabels map[string]string `validate:"required"`
WorkerMetrics bool
ListenerMetrics bool
}
func NewBackendOptions() *BackendOptions {
return &BackendOptions{}
}
func (b *BackendOptions) Validate() error {
validate := validator.New()
return validate.Struct(b)
}
func DefaultBackendServiceEndpoint() string {
return "http://backend-listener:3000"
}
func DefaultBackendRedisStorageURL() string {
return "redis://backend-redis:6379/0"
}
func DefaultBackendRedisQueuesURL() string {
return "redis://backend-redis:6379/1"
}
func DefaultBackendListenerResourceRequirements() v1.ResourceRequirements {
return v1.ResourceRequirements{
Limits: v1.ResourceList{
v1.ResourceCPU: resource.MustParse("1000m"),
v1.ResourceMemory: resource.MustParse("700Mi"),
},
Requests: v1.ResourceList{
v1.ResourceCPU: resource.MustParse("500m"),
v1.ResourceMemory: resource.MustParse("550Mi"),
},
}
}
func DefaultBackendWorkerResourceRequirements() v1.ResourceRequirements {
return v1.ResourceRequirements{
Limits: v1.ResourceList{
v1.ResourceCPU: resource.MustParse("1000m"),
v1.ResourceMemory: resource.MustParse("300Mi"),
},
Requests: v1.ResourceList{
v1.ResourceCPU: resource.MustParse("150m"),
v1.ResourceMemory: resource.MustParse("50Mi"),
},
}
}
func DefaultCronResourceRequirements() v1.ResourceRequirements {
return v1.ResourceRequirements{
Limits: v1.ResourceList{
v1.ResourceCPU: resource.MustParse("150m"),
v1.ResourceMemory: resource.MustParse("80Mi"),
},
Requests: v1.ResourceList{
v1.ResourceCPU: resource.MustParse("50m"),
v1.ResourceMemory: resource.MustParse("40Mi"),
},
}
}
func DefaultSystemBackendUsername() string {
return "3scale_api_user"
}
func DefaultSystemBackendPassword() string {
return oprand.String(8)
}
func DefaultBackendStorageSentinelHosts() string {
return ""
}
func DefaultBackendStorageSentinelRole() string {
return ""
}
func DefaultBackendQueuesSentinelHosts() string {
return ""
}
func DefaultBackendQueuesSentinelRole() string {
return ""
}