mirror of
https://github.com/zalando/postgres-operator.git
synced 2026-10-19 00:49:23 +02:00
allow empty resources when defaults are empty (#2524)
* allow empty resources when defaults are empty * update codegen * add more unit tests and remove internal resources defaults * a unit test for min limit and raising to request * uncomment defaults in example configmap * simplifying pooler pod generation unit test
This commit is contained in:
@@ -161,8 +161,8 @@ func TestStatefulSetAnnotations(t *testing.T) {
|
||||
spec := acidv1.PostgresSpec{
|
||||
TeamID: "myapp", NumberOfInstances: 1,
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "1", Memory: "10"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "1", Memory: "10"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
},
|
||||
Volume: acidv1.Volume{
|
||||
Size: "1G",
|
||||
@@ -184,8 +184,8 @@ func TestStatefulSetUpdateWithEnv(t *testing.T) {
|
||||
oldSpec := &acidv1.PostgresSpec{
|
||||
TeamID: "myapp", NumberOfInstances: 1,
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "1", Memory: "10"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "1", Memory: "10"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
},
|
||||
Volume: acidv1.Volume{
|
||||
Size: "1G",
|
||||
|
||||
@@ -821,12 +821,12 @@ func (c *Cluster) needSyncConnectionPoolerDefaults(Config *Config, spec *acidv1.
|
||||
func makeDefaultConnectionPoolerResources(config *config.Config) acidv1.Resources {
|
||||
|
||||
defaultRequests := acidv1.ResourceDescription{
|
||||
CPU: config.ConnectionPooler.ConnectionPoolerDefaultCPURequest,
|
||||
Memory: config.ConnectionPooler.ConnectionPoolerDefaultMemoryRequest,
|
||||
CPU: &config.ConnectionPooler.ConnectionPoolerDefaultCPURequest,
|
||||
Memory: &config.ConnectionPooler.ConnectionPoolerDefaultMemoryRequest,
|
||||
}
|
||||
defaultLimits := acidv1.ResourceDescription{
|
||||
CPU: config.ConnectionPooler.ConnectionPoolerDefaultCPULimit,
|
||||
Memory: config.ConnectionPooler.ConnectionPoolerDefaultMemoryLimit,
|
||||
CPU: &config.ConnectionPooler.ConnectionPoolerDefaultCPULimit,
|
||||
Memory: &config.ConnectionPooler.ConnectionPoolerDefaultMemoryLimit,
|
||||
}
|
||||
|
||||
return acidv1.Resources{
|
||||
|
||||
@@ -2,7 +2,6 @@ package cluster
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
"testing"
|
||||
@@ -711,47 +710,42 @@ func TestConnectionPoolerPodSpec(t *testing.T) {
|
||||
noCheck := func(cluster *Cluster, podSpec *v1.PodTemplateSpec, role PostgresRole) error { return nil }
|
||||
|
||||
tests := []struct {
|
||||
subTest string
|
||||
spec *acidv1.PostgresSpec
|
||||
expected error
|
||||
cluster *Cluster
|
||||
check func(cluster *Cluster, podSpec *v1.PodTemplateSpec, role PostgresRole) error
|
||||
subTest string
|
||||
spec *acidv1.PostgresSpec
|
||||
cluster *Cluster
|
||||
check func(cluster *Cluster, podSpec *v1.PodTemplateSpec, role PostgresRole) error
|
||||
}{
|
||||
{
|
||||
subTest: "default configuration",
|
||||
spec: &acidv1.PostgresSpec{
|
||||
ConnectionPooler: &acidv1.ConnectionPooler{},
|
||||
},
|
||||
expected: nil,
|
||||
cluster: cluster,
|
||||
check: noCheck,
|
||||
cluster: cluster,
|
||||
check: noCheck,
|
||||
},
|
||||
{
|
||||
subTest: "pooler uses pod service account",
|
||||
spec: &acidv1.PostgresSpec{
|
||||
ConnectionPooler: &acidv1.ConnectionPooler{},
|
||||
},
|
||||
expected: nil,
|
||||
cluster: cluster,
|
||||
check: testServiceAccount,
|
||||
cluster: cluster,
|
||||
check: testServiceAccount,
|
||||
},
|
||||
{
|
||||
subTest: "no default resources",
|
||||
spec: &acidv1.PostgresSpec{
|
||||
ConnectionPooler: &acidv1.ConnectionPooler{},
|
||||
},
|
||||
expected: errors.New(`could not generate resource requirements: could not fill resource requests: could not parse default CPU quantity: quantities must match the regular expression '^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$'`),
|
||||
cluster: clusterNoDefaultRes,
|
||||
check: noCheck,
|
||||
cluster: clusterNoDefaultRes,
|
||||
check: noCheck,
|
||||
},
|
||||
{
|
||||
subTest: "default resources are set",
|
||||
spec: &acidv1.PostgresSpec{
|
||||
ConnectionPooler: &acidv1.ConnectionPooler{},
|
||||
},
|
||||
expected: nil,
|
||||
cluster: cluster,
|
||||
check: testResources,
|
||||
cluster: cluster,
|
||||
check: testResources,
|
||||
},
|
||||
{
|
||||
subTest: "labels for service",
|
||||
@@ -759,30 +753,23 @@ func TestConnectionPoolerPodSpec(t *testing.T) {
|
||||
ConnectionPooler: &acidv1.ConnectionPooler{},
|
||||
EnableReplicaConnectionPooler: boolToPointer(true),
|
||||
},
|
||||
expected: nil,
|
||||
cluster: cluster,
|
||||
check: testLabels,
|
||||
cluster: cluster,
|
||||
check: testLabels,
|
||||
},
|
||||
{
|
||||
subTest: "required envs",
|
||||
spec: &acidv1.PostgresSpec{
|
||||
ConnectionPooler: &acidv1.ConnectionPooler{},
|
||||
},
|
||||
expected: nil,
|
||||
cluster: cluster,
|
||||
check: testEnvs,
|
||||
cluster: cluster,
|
||||
check: testEnvs,
|
||||
},
|
||||
}
|
||||
for _, role := range [2]PostgresRole{Master, Replica} {
|
||||
for _, tt := range tests {
|
||||
podSpec, err := tt.cluster.generateConnectionPoolerPodTemplate(role)
|
||||
podSpec, _ := tt.cluster.generateConnectionPoolerPodTemplate(role)
|
||||
|
||||
if err != tt.expected && err.Error() != tt.expected.Error() {
|
||||
t.Errorf("%s [%s]: Could not generate pod template,\n %+v, expected\n %+v",
|
||||
testName, tt.subTest, err, tt.expected)
|
||||
}
|
||||
|
||||
err = tt.check(cluster, podSpec, role)
|
||||
err := tt.check(cluster, podSpec, role)
|
||||
if err != nil {
|
||||
t.Errorf("%s [%s]: Pod spec is incorrect, %+v",
|
||||
testName, tt.subTest, err)
|
||||
@@ -973,8 +960,8 @@ func TestPoolerTLS(t *testing.T) {
|
||||
TeamID: "myapp", NumberOfInstances: 1,
|
||||
EnableConnectionPooler: util.True(),
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "1", Memory: "10"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "1", Memory: "10"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
},
|
||||
Volume: acidv1.Volume{
|
||||
Size: "1G",
|
||||
|
||||
+56
-24
@@ -21,6 +21,7 @@ import (
|
||||
"k8s.io/apimachinery/pkg/util/intstr"
|
||||
|
||||
"golang.org/x/exp/maps"
|
||||
"golang.org/x/exp/slices"
|
||||
batchv1 "k8s.io/api/batch/v1"
|
||||
"k8s.io/apimachinery/pkg/labels"
|
||||
|
||||
@@ -126,12 +127,12 @@ func (c *Cluster) podDisruptionBudgetName() string {
|
||||
func makeDefaultResources(config *config.Config) acidv1.Resources {
|
||||
|
||||
defaultRequests := acidv1.ResourceDescription{
|
||||
CPU: config.Resources.DefaultCPURequest,
|
||||
Memory: config.Resources.DefaultMemoryRequest,
|
||||
CPU: &config.Resources.DefaultCPURequest,
|
||||
Memory: &config.Resources.DefaultMemoryRequest,
|
||||
}
|
||||
defaultLimits := acidv1.ResourceDescription{
|
||||
CPU: config.Resources.DefaultCPULimit,
|
||||
Memory: config.Resources.DefaultMemoryLimit,
|
||||
CPU: &config.Resources.DefaultCPULimit,
|
||||
Memory: &config.Resources.DefaultMemoryLimit,
|
||||
}
|
||||
|
||||
return acidv1.Resources{
|
||||
@@ -143,12 +144,12 @@ func makeDefaultResources(config *config.Config) acidv1.Resources {
|
||||
func makeLogicalBackupResources(config *config.Config) acidv1.Resources {
|
||||
|
||||
logicalBackupResourceRequests := acidv1.ResourceDescription{
|
||||
CPU: config.LogicalBackup.LogicalBackupCPURequest,
|
||||
Memory: config.LogicalBackup.LogicalBackupMemoryRequest,
|
||||
CPU: &config.LogicalBackup.LogicalBackupCPURequest,
|
||||
Memory: &config.LogicalBackup.LogicalBackupMemoryRequest,
|
||||
}
|
||||
logicalBackupResourceLimits := acidv1.ResourceDescription{
|
||||
CPU: config.LogicalBackup.LogicalBackupCPULimit,
|
||||
Memory: config.LogicalBackup.LogicalBackupMemoryLimit,
|
||||
CPU: &config.LogicalBackup.LogicalBackupCPULimit,
|
||||
Memory: &config.LogicalBackup.LogicalBackupMemoryLimit,
|
||||
}
|
||||
|
||||
return acidv1.Resources{
|
||||
@@ -214,7 +215,9 @@ func (c *Cluster) enforceMaxResourceRequests(resources *v1.ResourceRequirements)
|
||||
return fmt.Errorf("could not compare defined CPU request %s for %q container with configured maximum value %s: %v",
|
||||
cpuRequest.String(), constants.PostgresContainerName, maxCPURequest, err)
|
||||
}
|
||||
resources.Requests[v1.ResourceCPU] = maxCPU
|
||||
if !maxCPU.IsZero() {
|
||||
resources.Requests[v1.ResourceCPU] = maxCPU
|
||||
}
|
||||
|
||||
memoryRequest := resources.Requests[v1.ResourceMemory]
|
||||
maxMemoryRequest := c.OpConfig.MaxMemoryRequest
|
||||
@@ -223,7 +226,9 @@ func (c *Cluster) enforceMaxResourceRequests(resources *v1.ResourceRequirements)
|
||||
return fmt.Errorf("could not compare defined memory request %s for %q container with configured maximum value %s: %v",
|
||||
memoryRequest.String(), constants.PostgresContainerName, maxMemoryRequest, err)
|
||||
}
|
||||
resources.Requests[v1.ResourceMemory] = maxMemory
|
||||
if !maxMemory.IsZero() {
|
||||
resources.Requests[v1.ResourceMemory] = maxMemory
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -240,30 +245,53 @@ func setMemoryRequestToLimit(resources *v1.ResourceRequirements, containerName s
|
||||
}
|
||||
}
|
||||
|
||||
func matchLimitsWithRequestsIfSmaller(resources *v1.ResourceRequirements, containerName string, logger *logrus.Entry) {
|
||||
requests := resources.Requests
|
||||
limits := resources.Limits
|
||||
requestCPU, cpuRequestsExists := requests[v1.ResourceCPU]
|
||||
limitCPU, cpuLimitExists := limits[v1.ResourceCPU]
|
||||
if cpuRequestsExists && cpuLimitExists && limitCPU.Cmp(requestCPU) == -1 {
|
||||
logger.Warningf("CPU limit of %s for %q container is increased to match CPU requests of %s", limitCPU.String(), containerName, requestCPU.String())
|
||||
resources.Limits[v1.ResourceCPU] = requestCPU
|
||||
}
|
||||
|
||||
requestMemory, memoryRequestsExists := requests[v1.ResourceMemory]
|
||||
limitMemory, memoryLimitExists := limits[v1.ResourceMemory]
|
||||
if memoryRequestsExists && memoryLimitExists && limitMemory.Cmp(requestMemory) == -1 {
|
||||
logger.Warningf("memory limit of %s for %q container is increased to match memory requests of %s", limitMemory.String(), containerName, requestMemory.String())
|
||||
resources.Limits[v1.ResourceMemory] = requestMemory
|
||||
}
|
||||
}
|
||||
|
||||
func fillResourceList(spec acidv1.ResourceDescription, defaults acidv1.ResourceDescription) (v1.ResourceList, error) {
|
||||
var err error
|
||||
requests := v1.ResourceList{}
|
||||
emptyResourceExamples := []string{"", "0", "null"}
|
||||
|
||||
if spec.CPU != "" {
|
||||
requests[v1.ResourceCPU], err = resource.ParseQuantity(spec.CPU)
|
||||
if spec.CPU != nil && !slices.Contains(emptyResourceExamples, *spec.CPU) {
|
||||
requests[v1.ResourceCPU], err = resource.ParseQuantity(*spec.CPU)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not parse CPU quantity: %v", err)
|
||||
}
|
||||
} else {
|
||||
requests[v1.ResourceCPU], err = resource.ParseQuantity(defaults.CPU)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not parse default CPU quantity: %v", err)
|
||||
if defaults.CPU != nil && !slices.Contains(emptyResourceExamples, *defaults.CPU) {
|
||||
requests[v1.ResourceCPU], err = resource.ParseQuantity(*defaults.CPU)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not parse default CPU quantity: %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
if spec.Memory != "" {
|
||||
requests[v1.ResourceMemory], err = resource.ParseQuantity(spec.Memory)
|
||||
if spec.Memory != nil && !slices.Contains(emptyResourceExamples, *spec.Memory) {
|
||||
requests[v1.ResourceMemory], err = resource.ParseQuantity(*spec.Memory)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not parse memory quantity: %v", err)
|
||||
}
|
||||
} else {
|
||||
requests[v1.ResourceMemory], err = resource.ParseQuantity(defaults.Memory)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not parse default memory quantity: %v", err)
|
||||
if defaults.Memory != nil && !slices.Contains(emptyResourceExamples, *defaults.Memory) {
|
||||
requests[v1.ResourceMemory], err = resource.ParseQuantity(*defaults.Memory)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("could not parse default memory quantity: %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -314,6 +342,10 @@ func (c *Cluster) generateResourceRequirements(
|
||||
}
|
||||
}
|
||||
|
||||
// make sure after reflecting default and enforcing min limit values we don't have requests > limits
|
||||
matchLimitsWithRequestsIfSmaller(&result, containerName, c.logger)
|
||||
|
||||
// vice versa set memory requests to limit if option is enabled
|
||||
if c.OpConfig.SetMemoryRequestToLimit {
|
||||
setMemoryRequestToLimit(&result, containerName, c.logger)
|
||||
}
|
||||
@@ -1208,12 +1240,12 @@ func getBucketScopeSuffix(uid string) string {
|
||||
func makeResources(cpuRequest, memoryRequest, cpuLimit, memoryLimit string) acidv1.Resources {
|
||||
return acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{
|
||||
CPU: cpuRequest,
|
||||
Memory: memoryRequest,
|
||||
CPU: &cpuRequest,
|
||||
Memory: &memoryRequest,
|
||||
},
|
||||
ResourceLimits: acidv1.ResourceDescription{
|
||||
CPU: cpuLimit,
|
||||
Memory: memoryLimit,
|
||||
CPU: &cpuLimit,
|
||||
Memory: &memoryLimit,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
+174
-85
@@ -1421,8 +1421,8 @@ func TestNodeAffinity(t *testing.T) {
|
||||
return acidv1.PostgresSpec{
|
||||
TeamID: "myapp", NumberOfInstances: 1,
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "1", Memory: "10"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "1", Memory: "10"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
},
|
||||
Volume: acidv1.Volume{
|
||||
Size: "1G",
|
||||
@@ -1514,8 +1514,8 @@ func TestPodAffinity(t *testing.T) {
|
||||
Spec: acidv1.PostgresSpec{
|
||||
NumberOfInstances: 1,
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "1", Memory: "10"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "1", Memory: "10"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
},
|
||||
Volume: acidv1.Volume{
|
||||
Size: "1G",
|
||||
@@ -1658,8 +1658,8 @@ func TestTLS(t *testing.T) {
|
||||
Spec: acidv1.PostgresSpec{
|
||||
TeamID: "myapp", NumberOfInstances: 1,
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "1", Memory: "10"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "1", Memory: "10"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
},
|
||||
Volume: acidv1.Volume{
|
||||
Size: "1G",
|
||||
@@ -1899,8 +1899,8 @@ func TestAdditionalVolume(t *testing.T) {
|
||||
Spec: acidv1.PostgresSpec{
|
||||
TeamID: "myapp", NumberOfInstances: 1,
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "1", Memory: "10"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "1", Memory: "10"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
},
|
||||
Volume: acidv1.Volume{
|
||||
Size: "1G",
|
||||
@@ -1975,8 +1975,8 @@ func TestVolumeSelector(t *testing.T) {
|
||||
TeamID: "myapp",
|
||||
NumberOfInstances: 0,
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "1", Memory: "10"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "1", Memory: "10"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
},
|
||||
Volume: volume,
|
||||
}
|
||||
@@ -2107,8 +2107,8 @@ func TestSidecars(t *testing.T) {
|
||||
},
|
||||
TeamID: "myapp", NumberOfInstances: 1,
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "1", Memory: "10"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "1", Memory: "10"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
},
|
||||
Volume: acidv1.Volume{
|
||||
Size: "1G",
|
||||
@@ -2120,8 +2120,8 @@ func TestSidecars(t *testing.T) {
|
||||
acidv1.Sidecar{
|
||||
Name: "cluster-specific-sidecar-with-resources",
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "210m", Memory: "0.8Gi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "510m", Memory: "1.4Gi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("210m"), Memory: k8sutil.StringToPointer("0.8Gi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("510m"), Memory: k8sutil.StringToPointer("1.4Gi")},
|
||||
},
|
||||
},
|
||||
acidv1.Sidecar{
|
||||
@@ -2419,8 +2419,8 @@ func TestGenerateService(t *testing.T) {
|
||||
spec = acidv1.PostgresSpec{
|
||||
TeamID: "myapp", NumberOfInstances: 1,
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "1", Memory: "10"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "1", Memory: "10"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
},
|
||||
Volume: acidv1.Volume{
|
||||
Size: "1G",
|
||||
@@ -2432,8 +2432,8 @@ func TestGenerateService(t *testing.T) {
|
||||
acidv1.Sidecar{
|
||||
Name: "cluster-specific-sidecar-with-resources",
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "210m", Memory: "0.8Gi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "510m", Memory: "1.4Gi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("210m"), Memory: k8sutil.StringToPointer("0.8Gi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("510m"), Memory: k8sutil.StringToPointer("1.4Gi")},
|
||||
},
|
||||
},
|
||||
acidv1.Sidecar{
|
||||
@@ -2646,8 +2646,8 @@ func TestEnableLoadBalancers(t *testing.T) {
|
||||
EnableReplicaPoolerLoadBalancer: util.False(),
|
||||
NumberOfInstances: 1,
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "1", Memory: "10"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "1", Memory: "10"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
},
|
||||
TeamID: "acid",
|
||||
Volume: acidv1.Volume{
|
||||
@@ -2693,8 +2693,8 @@ func TestEnableLoadBalancers(t *testing.T) {
|
||||
EnableReplicaPoolerLoadBalancer: util.True(),
|
||||
NumberOfInstances: 1,
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "1", Memory: "10"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "1", Memory: "10"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("10")},
|
||||
},
|
||||
TeamID: "acid",
|
||||
Volume: acidv1.Volume{
|
||||
@@ -2786,8 +2786,8 @@ func TestGenerateResourceRequirements(t *testing.T) {
|
||||
},
|
||||
},
|
||||
expectedResources: acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "100m", Memory: "100Mi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "1", Memory: "500Mi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("100m"), Memory: k8sutil.StringToPointer("100Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("500Mi")},
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -2815,8 +2815,8 @@ func TestGenerateResourceRequirements(t *testing.T) {
|
||||
},
|
||||
},
|
||||
expectedResources: acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "100m", Memory: "100Mi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "1", Memory: "500Mi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("100m"), Memory: k8sutil.StringToPointer("100Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("500Mi")},
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -2833,7 +2833,7 @@ func TestGenerateResourceRequirements(t *testing.T) {
|
||||
},
|
||||
Spec: acidv1.PostgresSpec{
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "50m", Memory: "50Mi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("50m"), Memory: k8sutil.StringToPointer("50Mi")},
|
||||
},
|
||||
TeamID: "acid",
|
||||
Volume: acidv1.Volume{
|
||||
@@ -2842,8 +2842,8 @@ func TestGenerateResourceRequirements(t *testing.T) {
|
||||
},
|
||||
},
|
||||
expectedResources: acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "50m", Memory: "50Mi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "1", Memory: "500Mi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("50m"), Memory: k8sutil.StringToPointer("50Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("500Mi")},
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -2860,8 +2860,8 @@ func TestGenerateResourceRequirements(t *testing.T) {
|
||||
},
|
||||
Spec: acidv1.PostgresSpec{
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{Memory: "100Mi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{Memory: "1Gi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{Memory: k8sutil.StringToPointer("100Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{Memory: k8sutil.StringToPointer("1Gi")},
|
||||
},
|
||||
TeamID: "acid",
|
||||
Volume: acidv1.Volume{
|
||||
@@ -2870,8 +2870,97 @@ func TestGenerateResourceRequirements(t *testing.T) {
|
||||
},
|
||||
},
|
||||
expectedResources: acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "100m", Memory: "100Mi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "1", Memory: "1Gi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("100m"), Memory: k8sutil.StringToPointer("100Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("1Gi")},
|
||||
},
|
||||
},
|
||||
{
|
||||
subTest: "test generation of resources when default is not defined",
|
||||
config: config.Config{
|
||||
Resources: config.Resources{
|
||||
ClusterLabels: map[string]string{"application": "spilo"},
|
||||
ClusterNameLabel: clusterNameLabel,
|
||||
DefaultCPURequest: "100m",
|
||||
DefaultMemoryRequest: "100Mi",
|
||||
PodRoleLabel: "spilo-role",
|
||||
},
|
||||
PodManagementPolicy: "ordered_ready",
|
||||
SetMemoryRequestToLimit: false,
|
||||
},
|
||||
pgSpec: acidv1.Postgresql{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: clusterName,
|
||||
Namespace: namespace,
|
||||
},
|
||||
Spec: acidv1.PostgresSpec{
|
||||
TeamID: "acid",
|
||||
Volume: acidv1.Volume{
|
||||
Size: "1G",
|
||||
},
|
||||
},
|
||||
},
|
||||
expectedResources: acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("100m"), Memory: k8sutil.StringToPointer("100Mi")},
|
||||
},
|
||||
},
|
||||
{
|
||||
subTest: "test matchLimitsWithRequestsIfSmaller",
|
||||
config: config.Config{
|
||||
Resources: configResources,
|
||||
PodManagementPolicy: "ordered_ready",
|
||||
SetMemoryRequestToLimit: false,
|
||||
},
|
||||
pgSpec: acidv1.Postgresql{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: clusterName,
|
||||
Namespace: namespace,
|
||||
},
|
||||
Spec: acidv1.PostgresSpec{
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{Memory: k8sutil.StringToPointer("750Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{Memory: k8sutil.StringToPointer("300Mi")},
|
||||
},
|
||||
TeamID: "acid",
|
||||
Volume: acidv1.Volume{
|
||||
Size: "1G",
|
||||
},
|
||||
},
|
||||
},
|
||||
expectedResources: acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("100m"), Memory: k8sutil.StringToPointer("750Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("750Mi")},
|
||||
},
|
||||
},
|
||||
{
|
||||
subTest: "defaults are not defined but minimum limit is",
|
||||
config: config.Config{
|
||||
Resources: config.Resources{
|
||||
ClusterLabels: map[string]string{"application": "spilo"},
|
||||
ClusterNameLabel: clusterNameLabel,
|
||||
MinMemoryLimit: "250Mi",
|
||||
PodRoleLabel: "spilo-role",
|
||||
},
|
||||
PodManagementPolicy: "ordered_ready",
|
||||
SetMemoryRequestToLimit: false,
|
||||
},
|
||||
pgSpec: acidv1.Postgresql{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: clusterName,
|
||||
Namespace: namespace,
|
||||
},
|
||||
Spec: acidv1.PostgresSpec{
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{Memory: k8sutil.StringToPointer("500Mi")},
|
||||
},
|
||||
TeamID: "acid",
|
||||
Volume: acidv1.Volume{
|
||||
Size: "1G",
|
||||
},
|
||||
},
|
||||
},
|
||||
expectedResources: acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{Memory: k8sutil.StringToPointer("500Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{Memory: k8sutil.StringToPointer("500Mi")},
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -2888,8 +2977,8 @@ func TestGenerateResourceRequirements(t *testing.T) {
|
||||
},
|
||||
Spec: acidv1.PostgresSpec{
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{Memory: "200Mi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{Memory: "300Mi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{Memory: k8sutil.StringToPointer("200Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{Memory: k8sutil.StringToPointer("300Mi")},
|
||||
},
|
||||
TeamID: "acid",
|
||||
Volume: acidv1.Volume{
|
||||
@@ -2898,8 +2987,8 @@ func TestGenerateResourceRequirements(t *testing.T) {
|
||||
},
|
||||
},
|
||||
expectedResources: acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "100m", Memory: "300Mi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "1", Memory: "300Mi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("100m"), Memory: k8sutil.StringToPointer("300Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("300Mi")},
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -2919,8 +3008,8 @@ func TestGenerateResourceRequirements(t *testing.T) {
|
||||
acidv1.Sidecar{
|
||||
Name: sidecarName,
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "10m", Memory: "10Mi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "100m", Memory: "100Mi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("10m"), Memory: k8sutil.StringToPointer("10Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("100m"), Memory: k8sutil.StringToPointer("100Mi")},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -2931,8 +3020,8 @@ func TestGenerateResourceRequirements(t *testing.T) {
|
||||
},
|
||||
},
|
||||
expectedResources: acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "10m", Memory: "100Mi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "100m", Memory: "100Mi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("10m"), Memory: k8sutil.StringToPointer("100Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("100m"), Memory: k8sutil.StringToPointer("100Mi")},
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -2949,8 +3038,8 @@ func TestGenerateResourceRequirements(t *testing.T) {
|
||||
},
|
||||
Spec: acidv1.PostgresSpec{
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "10m", Memory: "250Mi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "400m", Memory: "800Mi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("10m"), Memory: k8sutil.StringToPointer("250Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("400m"), Memory: k8sutil.StringToPointer("800Mi")},
|
||||
},
|
||||
TeamID: "acid",
|
||||
Volume: acidv1.Volume{
|
||||
@@ -2959,8 +3048,8 @@ func TestGenerateResourceRequirements(t *testing.T) {
|
||||
},
|
||||
},
|
||||
expectedResources: acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "10m", Memory: "250Mi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "400m", Memory: "800Mi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("10m"), Memory: k8sutil.StringToPointer("250Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("400m"), Memory: k8sutil.StringToPointer("800Mi")},
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -2977,8 +3066,8 @@ func TestGenerateResourceRequirements(t *testing.T) {
|
||||
},
|
||||
Spec: acidv1.PostgresSpec{
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "100m", Memory: "100Mi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "200m", Memory: "200Mi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("100m"), Memory: k8sutil.StringToPointer("100Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("200m"), Memory: k8sutil.StringToPointer("200Mi")},
|
||||
},
|
||||
TeamID: "acid",
|
||||
Volume: acidv1.Volume{
|
||||
@@ -2987,8 +3076,8 @@ func TestGenerateResourceRequirements(t *testing.T) {
|
||||
},
|
||||
},
|
||||
expectedResources: acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "100m", Memory: "100Mi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "250m", Memory: "250Mi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("100m"), Memory: k8sutil.StringToPointer("100Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("250m"), Memory: k8sutil.StringToPointer("250Mi")},
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -3008,8 +3097,8 @@ func TestGenerateResourceRequirements(t *testing.T) {
|
||||
acidv1.Sidecar{
|
||||
Name: sidecarName,
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "10m", Memory: "10Mi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "100m", Memory: "100Mi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("10m"), Memory: k8sutil.StringToPointer("10Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("100m"), Memory: k8sutil.StringToPointer("100Mi")},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -3020,8 +3109,8 @@ func TestGenerateResourceRequirements(t *testing.T) {
|
||||
},
|
||||
},
|
||||
expectedResources: acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "10m", Memory: "10Mi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "100m", Memory: "100Mi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("10m"), Memory: k8sutil.StringToPointer("10Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("100m"), Memory: k8sutil.StringToPointer("100Mi")},
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -3038,8 +3127,8 @@ func TestGenerateResourceRequirements(t *testing.T) {
|
||||
},
|
||||
Spec: acidv1.PostgresSpec{
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "1", Memory: "2Gi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "2", Memory: "4Gi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("2Gi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("2"), Memory: k8sutil.StringToPointer("4Gi")},
|
||||
},
|
||||
TeamID: "acid",
|
||||
Volume: acidv1.Volume{
|
||||
@@ -3048,8 +3137,8 @@ func TestGenerateResourceRequirements(t *testing.T) {
|
||||
},
|
||||
},
|
||||
expectedResources: acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "500m", Memory: "1Gi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "2", Memory: "4Gi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("500m"), Memory: k8sutil.StringToPointer("1Gi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("2"), Memory: k8sutil.StringToPointer("4Gi")},
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -3066,8 +3155,8 @@ func TestGenerateResourceRequirements(t *testing.T) {
|
||||
},
|
||||
Spec: acidv1.PostgresSpec{
|
||||
Resources: &acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{Memory: "500Mi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{Memory: "2Gi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{Memory: k8sutil.StringToPointer("500Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{Memory: k8sutil.StringToPointer("2Gi")},
|
||||
},
|
||||
TeamID: "acid",
|
||||
Volume: acidv1.Volume{
|
||||
@@ -3076,8 +3165,8 @@ func TestGenerateResourceRequirements(t *testing.T) {
|
||||
},
|
||||
},
|
||||
expectedResources: acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "100m", Memory: "1Gi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "1", Memory: "2Gi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("100m"), Memory: k8sutil.StringToPointer("1Gi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("2Gi")},
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -3104,12 +3193,12 @@ func TestGenerateResourceRequirements(t *testing.T) {
|
||||
},
|
||||
expectedResources: acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{
|
||||
CPU: "100m",
|
||||
Memory: "100Mi",
|
||||
CPU: k8sutil.StringToPointer("100m"),
|
||||
Memory: k8sutil.StringToPointer("100Mi"),
|
||||
},
|
||||
ResourceLimits: acidv1.ResourceDescription{
|
||||
CPU: "1",
|
||||
Memory: "500Mi",
|
||||
CPU: k8sutil.StringToPointer("1"),
|
||||
Memory: k8sutil.StringToPointer("500Mi"),
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -3143,14 +3232,14 @@ func TestGenerateResourceRequirements(t *testing.T) {
|
||||
},
|
||||
expectedResources: acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{
|
||||
CPU: "100m",
|
||||
Memory: "100Mi",
|
||||
CPU: k8sutil.StringToPointer("100m"),
|
||||
Memory: k8sutil.StringToPointer("100Mi"),
|
||||
HugePages2Mi: k8sutil.StringToPointer("128Mi"),
|
||||
HugePages1Gi: k8sutil.StringToPointer("1Gi"),
|
||||
},
|
||||
ResourceLimits: acidv1.ResourceDescription{
|
||||
CPU: "1",
|
||||
Memory: "500Mi",
|
||||
CPU: k8sutil.StringToPointer("1"),
|
||||
Memory: k8sutil.StringToPointer("500Mi"),
|
||||
HugePages2Mi: k8sutil.StringToPointer("256Mi"),
|
||||
HugePages1Gi: k8sutil.StringToPointer("2Gi"),
|
||||
},
|
||||
@@ -3192,14 +3281,14 @@ func TestGenerateResourceRequirements(t *testing.T) {
|
||||
},
|
||||
expectedResources: acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{
|
||||
CPU: "100m",
|
||||
Memory: "100Mi",
|
||||
CPU: k8sutil.StringToPointer("100m"),
|
||||
Memory: k8sutil.StringToPointer("100Mi"),
|
||||
HugePages2Mi: k8sutil.StringToPointer("128Mi"),
|
||||
HugePages1Gi: k8sutil.StringToPointer("1Gi"),
|
||||
},
|
||||
ResourceLimits: acidv1.ResourceDescription{
|
||||
CPU: "1",
|
||||
Memory: "500Mi",
|
||||
CPU: k8sutil.StringToPointer("1"),
|
||||
Memory: k8sutil.StringToPointer("500Mi"),
|
||||
HugePages2Mi: k8sutil.StringToPointer("256Mi"),
|
||||
HugePages1Gi: k8sutil.StringToPointer("2Gi"),
|
||||
},
|
||||
@@ -3269,8 +3358,8 @@ func TestGenerateLogicalBackupJob(t *testing.T) {
|
||||
expectedSchedule: "30 00 * * *",
|
||||
expectedJobName: "logical-backup-acid-test-cluster",
|
||||
expectedResources: acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "100m", Memory: "100Mi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "1", Memory: "500Mi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("100m"), Memory: k8sutil.StringToPointer("100Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("500Mi")},
|
||||
},
|
||||
expectedLabel: map[string]string{configResources.ClusterNameLabel: clusterName, "team": teamId},
|
||||
expectedAnnotation: nil,
|
||||
@@ -3294,8 +3383,8 @@ func TestGenerateLogicalBackupJob(t *testing.T) {
|
||||
expectedSchedule: "30 00 * * 7",
|
||||
expectedJobName: "lb-acid-test-cluster",
|
||||
expectedResources: acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "10m", Memory: "50Mi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "300m", Memory: "300Mi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("10m"), Memory: k8sutil.StringToPointer("50Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("300m"), Memory: k8sutil.StringToPointer("300Mi")},
|
||||
},
|
||||
expectedLabel: map[string]string{configResources.ClusterNameLabel: clusterName, "team": teamId},
|
||||
expectedAnnotation: nil,
|
||||
@@ -3317,8 +3406,8 @@ func TestGenerateLogicalBackupJob(t *testing.T) {
|
||||
expectedSchedule: "30 00 * * *",
|
||||
expectedJobName: "acid-test-cluster",
|
||||
expectedResources: acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "50m", Memory: "100Mi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "250m", Memory: "500Mi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("50m"), Memory: k8sutil.StringToPointer("100Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("250m"), Memory: k8sutil.StringToPointer("500Mi")},
|
||||
},
|
||||
expectedLabel: map[string]string{configResources.ClusterNameLabel: clusterName, "team": teamId},
|
||||
expectedAnnotation: nil,
|
||||
@@ -3340,8 +3429,8 @@ func TestGenerateLogicalBackupJob(t *testing.T) {
|
||||
expectedSchedule: "30 00 * * *",
|
||||
expectedJobName: "test-long-prefix-so-name-must-be-trimmed-acid-test-c",
|
||||
expectedResources: acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "100m", Memory: "200Mi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "1", Memory: "200Mi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("100m"), Memory: k8sutil.StringToPointer("200Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("200Mi")},
|
||||
},
|
||||
expectedLabel: map[string]string{configResources.ClusterNameLabel: clusterName, "team": teamId},
|
||||
expectedAnnotation: nil,
|
||||
@@ -3362,8 +3451,8 @@ func TestGenerateLogicalBackupJob(t *testing.T) {
|
||||
expectedJobName: "acid-test-cluster",
|
||||
expectedSchedule: "",
|
||||
expectedResources: acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "100m", Memory: "100Mi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "1", Memory: "500Mi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("100m"), Memory: k8sutil.StringToPointer("100Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("500Mi")},
|
||||
},
|
||||
expectedLabel: map[string]string{"labelKey": "labelValue", "cluster-name": clusterName, "team": teamId},
|
||||
expectedAnnotation: nil,
|
||||
@@ -3384,8 +3473,8 @@ func TestGenerateLogicalBackupJob(t *testing.T) {
|
||||
expectedJobName: "acid-test-cluster",
|
||||
expectedSchedule: "",
|
||||
expectedResources: acidv1.Resources{
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: "100m", Memory: "100Mi"},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: "1", Memory: "500Mi"},
|
||||
ResourceRequests: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("100m"), Memory: k8sutil.StringToPointer("100Mi")},
|
||||
ResourceLimits: acidv1.ResourceDescription{CPU: k8sutil.StringToPointer("1"), Memory: k8sutil.StringToPointer("500Mi")},
|
||||
},
|
||||
expectedLabel: map[string]string{configResources.ClusterNameLabel: clusterName, "team": teamId},
|
||||
expectedAnnotation: map[string]string{"annotationKey": "annotationValue"},
|
||||
|
||||
Reference in New Issue
Block a user