fix: conversion when only one resource (cpu or memory) is specified f… (#1516)
* fix: conversion when only one resource (cpu or memory) is specified for component Signed-off-by: Anatolii Bazko <abazko@redhat.com>pull/1519/head
parent
0bafc5ec5c
commit
23c5dadd01
|
|
@ -594,3 +594,43 @@ func TestConvertFrom(t *testing.T) {
|
|||
assert.Equal(t, checlusterv1.Spec.GitServices.BitBucket[0].SecretName, "bitbucket-secret-name")
|
||||
assert.Equal(t, checlusterv1.Spec.GitServices.BitBucket[0].Endpoint, "bitbucket-endpoint")
|
||||
}
|
||||
|
||||
func TestShouldConvertFromWhenOnlyMemoryResourceSpecified(t *testing.T) {
|
||||
infrastructure.InitializeForTesting(infrastructure.OpenShiftv4)
|
||||
|
||||
checlusterv2 := &chev2.CheCluster{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "eclipse-che",
|
||||
Namespace: "eclipse-che",
|
||||
},
|
||||
Spec: chev2.CheClusterSpec{
|
||||
Components: chev2.CheClusterComponents{
|
||||
CheServer: chev2.CheServer{
|
||||
Deployment: &chev2.Deployment{
|
||||
Containers: []chev2.Container{
|
||||
{
|
||||
Resources: &chev2.ResourceRequirements{
|
||||
Requests: &chev2.ResourceList{
|
||||
Memory: resource.MustParse("128Mi"),
|
||||
},
|
||||
Limits: &chev2.ResourceList{
|
||||
Memory: resource.MustParse("228Mi"),
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
checlusterv1 := &chev1.CheCluster{}
|
||||
err := checlusterv1.ConvertFrom(checlusterv2)
|
||||
assert.Nil(t, err)
|
||||
|
||||
assert.Empty(t, checlusterv1.Spec.Server.ServerCpuLimit)
|
||||
assert.Empty(t, checlusterv1.Spec.Server.ServerCpuRequest)
|
||||
assert.Equal(t, checlusterv1.Spec.Server.ServerMemoryLimit, "228Mi")
|
||||
assert.Equal(t, checlusterv1.Spec.Server.ServerMemoryRequest, "128Mi")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -543,3 +543,29 @@ func TestConvertTo(t *testing.T) {
|
|||
assert.Equal(t, checlusterv2.Spec.GitServices.BitBucket[0].SecretName, "bitbucket-secret-name")
|
||||
assert.Equal(t, checlusterv2.Spec.GitServices.BitBucket[0].Endpoint, "bitbucket-endpoint")
|
||||
}
|
||||
|
||||
func TestShouldConvertToWhenOnlyMemoryResourceSpecified(t *testing.T) {
|
||||
infrastructure.InitializeForTesting(infrastructure.Kubernetes)
|
||||
|
||||
checlusterv1 := &chev1.CheCluster{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "eclipse-che",
|
||||
Namespace: "eclipse-che",
|
||||
},
|
||||
Spec: chev1.CheClusterSpec{
|
||||
Server: chev1.CheClusterSpecServer{
|
||||
ServerMemoryLimit: "10Gi",
|
||||
ServerMemoryRequest: "5Gi",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
checlusterv2 := &chev2.CheCluster{}
|
||||
err := checlusterv1.ConvertTo(checlusterv2)
|
||||
assert.Nil(t, err)
|
||||
|
||||
assert.True(t, checlusterv2.Spec.Components.CheServer.Deployment.Containers[0].Resources.Limits.Cpu.IsZero())
|
||||
assert.Equal(t, checlusterv2.Spec.Components.CheServer.Deployment.Containers[0].Resources.Limits.Memory, resource.MustParse("10Gi"))
|
||||
assert.True(t, checlusterv2.Spec.Components.CheServer.Deployment.Containers[0].Resources.Requests.Cpu.IsZero())
|
||||
assert.Equal(t, checlusterv2.Spec.Components.CheServer.Deployment.Containers[0].Resources.Requests.Memory, resource.MustParse("5Gi"))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@ import (
|
|||
"strconv"
|
||||
"strings"
|
||||
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
|
||||
"github.com/eclipse-che/che-operator/pkg/common/utils"
|
||||
|
||||
"github.com/devfile/devworkspace-operator/pkg/infrastructure"
|
||||
|
|
@ -153,12 +155,12 @@ func (dst *CheCluster) convertFrom_Server(src *chev2.CheCluster) error {
|
|||
|
||||
if src.Spec.Components.CheServer.Deployment.Containers[0].Resources != nil {
|
||||
if src.Spec.Components.CheServer.Deployment.Containers[0].Resources.Requests != nil {
|
||||
dst.Spec.Server.ServerMemoryRequest = src.Spec.Components.CheServer.Deployment.Containers[0].Resources.Requests.Memory.String()
|
||||
dst.Spec.Server.ServerCpuRequest = src.Spec.Components.CheServer.Deployment.Containers[0].Resources.Requests.Cpu.String()
|
||||
dst.Spec.Server.ServerMemoryRequest = resource2String(src.Spec.Components.CheServer.Deployment.Containers[0].Resources.Requests.Memory)
|
||||
dst.Spec.Server.ServerCpuRequest = resource2String(src.Spec.Components.CheServer.Deployment.Containers[0].Resources.Requests.Cpu)
|
||||
}
|
||||
if src.Spec.Components.CheServer.Deployment.Containers[0].Resources.Limits != nil {
|
||||
dst.Spec.Server.ServerMemoryLimit = src.Spec.Components.CheServer.Deployment.Containers[0].Resources.Limits.Memory.String()
|
||||
dst.Spec.Server.ServerCpuLimit = src.Spec.Components.CheServer.Deployment.Containers[0].Resources.Limits.Cpu.String()
|
||||
dst.Spec.Server.ServerMemoryLimit = resource2String(src.Spec.Components.CheServer.Deployment.Containers[0].Resources.Limits.Memory)
|
||||
dst.Spec.Server.ServerCpuLimit = resource2String(src.Spec.Components.CheServer.Deployment.Containers[0].Resources.Limits.Cpu)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -234,12 +236,12 @@ func (dst *CheCluster) convertFrom_Server_PluginRegistry(src *chev2.CheCluster)
|
|||
|
||||
if src.Spec.Components.PluginRegistry.Deployment.Containers[0].Resources != nil {
|
||||
if src.Spec.Components.PluginRegistry.Deployment.Containers[0].Resources.Requests != nil {
|
||||
dst.Spec.Server.PluginRegistryMemoryRequest = src.Spec.Components.PluginRegistry.Deployment.Containers[0].Resources.Requests.Memory.String()
|
||||
dst.Spec.Server.PluginRegistryCpuRequest = src.Spec.Components.PluginRegistry.Deployment.Containers[0].Resources.Requests.Cpu.String()
|
||||
dst.Spec.Server.PluginRegistryMemoryRequest = resource2String(src.Spec.Components.PluginRegistry.Deployment.Containers[0].Resources.Requests.Memory)
|
||||
dst.Spec.Server.PluginRegistryCpuRequest = resource2String(src.Spec.Components.PluginRegistry.Deployment.Containers[0].Resources.Requests.Cpu)
|
||||
}
|
||||
if src.Spec.Components.PluginRegistry.Deployment.Containers[0].Resources.Limits != nil {
|
||||
dst.Spec.Server.PluginRegistryMemoryLimit = src.Spec.Components.PluginRegistry.Deployment.Containers[0].Resources.Limits.Memory.String()
|
||||
dst.Spec.Server.PluginRegistryCpuLimit = src.Spec.Components.PluginRegistry.Deployment.Containers[0].Resources.Limits.Cpu.String()
|
||||
dst.Spec.Server.PluginRegistryMemoryLimit = resource2String(src.Spec.Components.PluginRegistry.Deployment.Containers[0].Resources.Limits.Memory)
|
||||
dst.Spec.Server.PluginRegistryCpuLimit = resource2String(src.Spec.Components.PluginRegistry.Deployment.Containers[0].Resources.Limits.Cpu)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -266,12 +268,12 @@ func (dst *CheCluster) convertFrom_Server_DevfileRegistry(src *chev2.CheCluster)
|
|||
|
||||
if src.Spec.Components.DevfileRegistry.Deployment.Containers[0].Resources != nil {
|
||||
if src.Spec.Components.DevfileRegistry.Deployment.Containers[0].Resources.Requests != nil {
|
||||
dst.Spec.Server.DevfileRegistryMemoryRequest = src.Spec.Components.DevfileRegistry.Deployment.Containers[0].Resources.Requests.Memory.String()
|
||||
dst.Spec.Server.DevfileRegistryCpuRequest = src.Spec.Components.DevfileRegistry.Deployment.Containers[0].Resources.Requests.Cpu.String()
|
||||
dst.Spec.Server.DevfileRegistryMemoryRequest = resource2String(src.Spec.Components.DevfileRegistry.Deployment.Containers[0].Resources.Requests.Memory)
|
||||
dst.Spec.Server.DevfileRegistryCpuRequest = resource2String(src.Spec.Components.DevfileRegistry.Deployment.Containers[0].Resources.Requests.Cpu)
|
||||
}
|
||||
if src.Spec.Components.DevfileRegistry.Deployment.Containers[0].Resources.Limits != nil {
|
||||
dst.Spec.Server.DevfileRegistryMemoryLimit = src.Spec.Components.DevfileRegistry.Deployment.Containers[0].Resources.Limits.Memory.String()
|
||||
dst.Spec.Server.DevfileRegistryCpuLimit = src.Spec.Components.DevfileRegistry.Deployment.Containers[0].Resources.Limits.Cpu.String()
|
||||
dst.Spec.Server.DevfileRegistryMemoryLimit = resource2String(src.Spec.Components.DevfileRegistry.Deployment.Containers[0].Resources.Limits.Memory)
|
||||
dst.Spec.Server.DevfileRegistryCpuLimit = resource2String(src.Spec.Components.DevfileRegistry.Deployment.Containers[0].Resources.Limits.Cpu)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -288,12 +290,12 @@ func (dst *CheCluster) convertFrom_Server_Dashboard(src *chev2.CheCluster) error
|
|||
dst.Spec.Server.DashboardImagePullPolicy = string(src.Spec.Components.Dashboard.Deployment.Containers[0].ImagePullPolicy)
|
||||
if src.Spec.Components.Dashboard.Deployment.Containers[0].Resources != nil {
|
||||
if src.Spec.Components.Dashboard.Deployment.Containers[0].Resources.Requests != nil {
|
||||
dst.Spec.Server.DashboardMemoryRequest = src.Spec.Components.Dashboard.Deployment.Containers[0].Resources.Requests.Memory.String()
|
||||
dst.Spec.Server.DashboardCpuRequest = src.Spec.Components.Dashboard.Deployment.Containers[0].Resources.Requests.Cpu.String()
|
||||
dst.Spec.Server.DashboardMemoryRequest = resource2String(src.Spec.Components.Dashboard.Deployment.Containers[0].Resources.Requests.Memory)
|
||||
dst.Spec.Server.DashboardCpuRequest = resource2String(src.Spec.Components.Dashboard.Deployment.Containers[0].Resources.Requests.Cpu)
|
||||
}
|
||||
if src.Spec.Components.Dashboard.Deployment.Containers[0].Resources.Limits != nil {
|
||||
dst.Spec.Server.DashboardMemoryLimit = src.Spec.Components.Dashboard.Deployment.Containers[0].Resources.Limits.Memory.String()
|
||||
dst.Spec.Server.DashboardCpuLimit = src.Spec.Components.Dashboard.Deployment.Containers[0].Resources.Limits.Cpu.String()
|
||||
dst.Spec.Server.DashboardMemoryLimit = resource2String(src.Spec.Components.Dashboard.Deployment.Containers[0].Resources.Limits.Memory)
|
||||
dst.Spec.Server.DashboardCpuLimit = resource2String(src.Spec.Components.Dashboard.Deployment.Containers[0].Resources.Limits.Cpu)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -368,12 +370,12 @@ func (dst *CheCluster) convertFrom_Database(src *chev2.CheCluster) error {
|
|||
dst.Spec.Database.PostgresImagePullPolicy = src.Spec.Components.Database.Deployment.Containers[0].ImagePullPolicy
|
||||
if src.Spec.Components.Database.Deployment.Containers[0].Resources != nil {
|
||||
if src.Spec.Components.Database.Deployment.Containers[0].Resources.Requests != nil {
|
||||
dst.Spec.Database.ChePostgresContainerResources.Requests.Memory = src.Spec.Components.Database.Deployment.Containers[0].Resources.Requests.Memory.String()
|
||||
dst.Spec.Database.ChePostgresContainerResources.Requests.Cpu = src.Spec.Components.Database.Deployment.Containers[0].Resources.Requests.Cpu.String()
|
||||
dst.Spec.Database.ChePostgresContainerResources.Requests.Memory = resource2String(src.Spec.Components.Database.Deployment.Containers[0].Resources.Requests.Memory)
|
||||
dst.Spec.Database.ChePostgresContainerResources.Requests.Cpu = resource2String(src.Spec.Components.Database.Deployment.Containers[0].Resources.Requests.Cpu)
|
||||
}
|
||||
if src.Spec.Components.Database.Deployment.Containers[0].Resources.Limits != nil {
|
||||
dst.Spec.Database.ChePostgresContainerResources.Limits.Memory = src.Spec.Components.Database.Deployment.Containers[0].Resources.Limits.Memory.String()
|
||||
dst.Spec.Database.ChePostgresContainerResources.Limits.Cpu = src.Spec.Components.Database.Deployment.Containers[0].Resources.Limits.Cpu.String()
|
||||
dst.Spec.Database.ChePostgresContainerResources.Limits.Memory = resource2String(src.Spec.Components.Database.Deployment.Containers[0].Resources.Limits.Memory)
|
||||
dst.Spec.Database.ChePostgresContainerResources.Limits.Cpu = resource2String(src.Spec.Components.Database.Deployment.Containers[0].Resources.Limits.Cpu)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -479,3 +481,10 @@ func findTrustStoreConfigMap(namespace string) (string, error) {
|
|||
|
||||
return "", nil
|
||||
}
|
||||
|
||||
func resource2String(resource resource.Quantity) string {
|
||||
if resource.IsZero() {
|
||||
return ""
|
||||
}
|
||||
return resource.String()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -669,11 +669,16 @@ func toCheV2Deployment(
|
|||
}
|
||||
|
||||
if memoryRequest != "" || cpuRequest != "" {
|
||||
resources = &chev2.ResourceRequirements{
|
||||
Requests: &chev2.ResourceList{
|
||||
Memory: resource.MustParse(memoryRequest),
|
||||
Cpu: resource.MustParse(cpuRequest),
|
||||
},
|
||||
if resources == nil {
|
||||
resources = &chev2.ResourceRequirements{}
|
||||
}
|
||||
resources.Requests = &chev2.ResourceList{}
|
||||
|
||||
if memoryRequest != "" {
|
||||
resources.Requests.Memory = resource.MustParse(memoryRequest)
|
||||
}
|
||||
if cpuRequest != "" {
|
||||
resources.Requests.Cpu = resource.MustParse(cpuRequest)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -681,10 +686,13 @@ func toCheV2Deployment(
|
|||
if resources == nil {
|
||||
resources = &chev2.ResourceRequirements{}
|
||||
}
|
||||
resources.Limits = &chev2.ResourceList{}
|
||||
|
||||
resources.Limits = &chev2.ResourceList{
|
||||
Memory: resource.MustParse(memoryLimit),
|
||||
Cpu: resource.MustParse(cpuLimit),
|
||||
if memoryLimit != "" {
|
||||
resources.Limits.Memory = resource.MustParse(memoryLimit)
|
||||
}
|
||||
if cpuLimit != "" {
|
||||
resources.Limits.Cpu = resource.MustParse(cpuLimit)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue