che-operator/api/checluster_conversion_from_...

567 lines
21 KiB
Go

//
// Copyright (c) 2019-2023 Red Hat, Inc.
// This program and the accompanying materials are made
// available under the terms of the Eclipse Public License 2.0
// which is available at https://www.eclipse.org/legal/epl-2.0/
//
// SPDX-License-Identifier: EPL-2.0
//
// Contributors:
// Red Hat, Inc. - initial API and implementation
//
package org
import (
"testing"
"k8s.io/apimachinery/pkg/api/resource"
devfile "github.com/devfile/api/v2/pkg/apis/workspaces/v1alpha2"
"github.com/devfile/devworkspace-operator/pkg/infrastructure"
chev1 "github.com/eclipse-che/che-operator/api/v1"
chev2 "github.com/eclipse-che/che-operator/api/v2"
"github.com/stretchr/testify/assert"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/utils/pointer"
)
func TestConvertFromEmptyCheCluster(t *testing.T) {
checlusterv1 := &chev1.CheCluster{}
checlusterv2 := &chev2.CheCluster{}
err := checlusterv1.ConvertFrom(checlusterv2)
assert.Nil(t, err)
}
func TestConvertFromIngressOnK8s(t *testing.T) {
infrastructure.InitializeForTesting(infrastructure.Kubernetes)
checlusterv2 := &chev2.CheCluster{
ObjectMeta: metav1.ObjectMeta{
Name: "eclipse-che",
Namespace: "eclipse-che",
},
Spec: chev2.CheClusterSpec{
Networking: chev2.CheClusterSpecNetworking{
Labels: map[string]string{"a": "b", "c": "d"},
Annotations: map[string]string{"a": "b", "c": "d", "kubernetes.io/ingress.class": "nginx"},
Domain: "Domain",
Hostname: "Hostname",
TlsSecretName: "tlsSecret",
},
},
}
checlusterv1 := &chev1.CheCluster{}
err := checlusterv1.ConvertFrom(checlusterv2)
assert.Nil(t, err)
assert.Equal(t, map[string]string{"a": "b", "c": "d"}, checlusterv1.Spec.Server.CheServerIngress.Annotations)
assert.Equal(t, "Domain", checlusterv1.Spec.K8s.IngressDomain)
assert.Equal(t, "nginx", checlusterv1.Spec.K8s.IngressClass)
assert.Equal(t, "Hostname", checlusterv1.Spec.Server.CheHost)
assert.Equal(t, "a=b,c=d", checlusterv1.Spec.Server.CheServerIngress.Labels)
assert.Equal(t, "tlsSecret", checlusterv1.Spec.K8s.TlsSecretName)
}
func TestConvertFromIngressOnOpenShift(t *testing.T) {
infrastructure.InitializeForTesting(infrastructure.OpenShiftv4)
checlusterv2 := &chev2.CheCluster{
ObjectMeta: metav1.ObjectMeta{
Name: "eclipse-che",
Namespace: "eclipse-che",
},
Spec: chev2.CheClusterSpec{
Networking: chev2.CheClusterSpecNetworking{
Labels: map[string]string{"a": "b", "c": "d"},
Annotations: map[string]string{"a": "b", "c": "d"},
Domain: "Domain",
Hostname: "Hostname",
TlsSecretName: "tlsSecret",
},
},
}
checlusterv1 := &chev1.CheCluster{}
err := checlusterv1.ConvertFrom(checlusterv2)
assert.Nil(t, err)
assert.Equal(t, map[string]string{"a": "b", "c": "d"}, checlusterv1.Spec.Server.CheServerRoute.Annotations)
assert.Equal(t, "Domain", checlusterv1.Spec.Server.CheServerRoute.Domain)
assert.Equal(t, "Hostname", checlusterv1.Spec.Server.CheHost)
assert.Equal(t, "a=b,c=d", checlusterv1.Spec.Server.CheServerRoute.Labels)
assert.Equal(t, "tlsSecret", checlusterv1.Spec.Server.CheHostTLSSecret)
}
func TestConvertFrom(t *testing.T) {
infrastructure.InitializeForTesting(infrastructure.Kubernetes)
memoryRequest := resource.MustParse("128Mi")
cpuRequest := resource.MustParse("1")
memoryLimit := resource.MustParse("228Mi")
cpuLimit := resource.MustParse("2")
checlusterv2 := &chev2.CheCluster{
ObjectMeta: metav1.ObjectMeta{
Name: "eclipse-che",
Namespace: "eclipse-che",
},
Spec: chev2.CheClusterSpec{
Components: chev2.CheClusterComponents{
Metrics: chev2.ServerMetrics{
Enable: true,
},
PluginRegistry: chev2.PluginRegistry{
Deployment: &chev2.Deployment{
Containers: []chev2.Container{
{
Image: "PluginRegistryImage",
ImagePullPolicy: corev1.PullAlways,
Resources: &chev2.ResourceRequirements{
Requests: &chev2.ResourceList{
Memory: &memoryRequest,
Cpu: &cpuRequest,
},
Limits: &chev2.ResourceList{
Memory: &memoryLimit,
Cpu: &cpuLimit,
},
},
Env: []corev1.EnvVar{
{
Name: "plugin-registry-name",
Value: "plugin-registry-value",
},
},
},
},
SecurityContext: &chev2.PodSecurityContext{
RunAsUser: pointer.Int64Ptr(64),
FsGroup: pointer.Int64Ptr(65),
},
},
DisableInternalRegistry: true,
ExternalPluginRegistries: []chev2.ExternalPluginRegistry{
{
Url: "ExternalPluginRegistries_1",
},
{
Url: "ExternalPluginRegistries_2",
},
},
OpenVSXURL: pointer.StringPtr("open-vsx-registry"),
},
DevfileRegistry: chev2.DevfileRegistry{
Deployment: &chev2.Deployment{
Containers: []chev2.Container{
{
Image: "DevfileRegistryImage",
ImagePullPolicy: corev1.PullAlways,
Resources: &chev2.ResourceRequirements{
Requests: &chev2.ResourceList{
Memory: &memoryRequest,
Cpu: &cpuRequest,
},
Limits: &chev2.ResourceList{
Memory: &memoryLimit,
Cpu: &cpuLimit,
}},
Env: []corev1.EnvVar{
{
Name: "devfile-registry-name",
Value: "devfile-registry-value",
},
},
},
},
SecurityContext: &chev2.PodSecurityContext{
RunAsUser: pointer.Int64Ptr(64),
FsGroup: pointer.Int64Ptr(65),
},
},
DisableInternalRegistry: true,
ExternalDevfileRegistries: []chev2.ExternalDevfileRegistry{
{
Url: "ExternalDevfileRegistries",
},
},
},
Dashboard: chev2.Dashboard{
Deployment: &chev2.Deployment{
Containers: []chev2.Container{
{
Image: "DashboardImage",
ImagePullPolicy: corev1.PullAlways,
Resources: &chev2.ResourceRequirements{
Requests: &chev2.ResourceList{
Memory: &memoryRequest,
Cpu: &cpuRequest,
},
Limits: &chev2.ResourceList{
Memory: &memoryLimit,
Cpu: &cpuLimit,
},
},
Env: []corev1.EnvVar{
{
Name: "dashboard-name",
Value: "dashboard-value",
},
},
},
},
SecurityContext: &chev2.PodSecurityContext{
RunAsUser: pointer.Int64Ptr(64),
FsGroup: pointer.Int64Ptr(65),
},
},
HeaderMessage: &chev2.DashboardHeaderMessage{
Show: true,
Text: "DashboardWarning",
},
},
ImagePuller: chev2.ImagePuller{
Enable: true,
},
CheServer: chev2.CheServer{
ExtraProperties: map[string]string{"a": "b", "c": "d"},
Deployment: &chev2.Deployment{
Containers: []chev2.Container{
{
Image: "ServerImage:ServerTag",
ImagePullPolicy: corev1.PullAlways,
Resources: &chev2.ResourceRequirements{
Requests: &chev2.ResourceList{
Memory: &memoryRequest,
Cpu: &cpuRequest,
},
Limits: &chev2.ResourceList{
Memory: &memoryLimit,
Cpu: &cpuLimit,
},
},
Env: []corev1.EnvVar{
{
Name: "che-server-name",
Value: "che-server-value",
},
}},
},
SecurityContext: &chev2.PodSecurityContext{
RunAsUser: pointer.Int64Ptr(64),
FsGroup: pointer.Int64Ptr(65),
},
},
LogLevel: "LogLevel",
Debug: pointer.BoolPtr(true),
ClusterRoles: []string{"ClusterRoles_1", "ClusterRoles_2"},
Proxy: &chev2.Proxy{
Url: "ProxyUrl",
Port: "ProxyPort",
NonProxyHosts: []string{"NonProxyHosts_1", "NonProxyHosts_2"},
CredentialsSecretName: "ProxyCredentialsSecretName",
},
},
},
Networking: chev2.CheClusterSpecNetworking{
Auth: chev2.Auth{
IdentityProviderURL: "IdentityProviderURL",
OAuthClientName: "OAuthClientName",
OAuthSecret: "OAuthSecret",
OAuthScope: "OAuthScope",
IdentityToken: "IdentityToken",
Gateway: chev2.Gateway{
Deployment: &chev2.Deployment{
Containers: []chev2.Container{
{
Name: "gateway",
Image: "GatewayImage",
Env: []corev1.EnvVar{
{
Name: "gateway-name",
Value: "gateway-value",
},
},
},
{
Name: "configbump",
Image: "ConfigSidecarImage",
Env: []corev1.EnvVar{
{
Name: "configbump-name",
Value: "configbump-value",
},
},
},
{
Name: "oauth-proxy",
Image: "AuthenticationSidecarImage",
Env: []corev1.EnvVar{
{
Name: "oauth-proxy-name",
Value: "oauth-proxy-value",
},
},
},
{
Name: "kube-rbac-proxy",
Image: "AuthorizationSidecarImage",
Env: []corev1.EnvVar{
{
Name: "kube-rbac-proxy-name",
Value: "kube-rbac-proxy-value",
},
},
},
},
},
ConfigLabels: map[string]string{"a": "b", "c": "d"},
},
},
},
DevEnvironments: chev2.CheClusterDevEnvironments{
DefaultNamespace: chev2.DefaultNamespace{
Template: "WorkspaceNamespaceName",
AutoProvision: pointer.BoolPtr(true),
},
TrustedCerts: &chev2.TrustedCerts{
GitTrustedCertsConfigMapName: "che-git-self-signed-cert",
},
Storage: chev2.WorkspaceStorage{
PerUserStrategyPvcConfig: &chev2.PVC{
ClaimSize: "StorageClaimSize",
StorageClass: "StorageClass",
},
PerWorkspaceStrategyPvcConfig: &chev2.PVC{
ClaimSize: "PerWorkspaceStorageClaimSize",
StorageClass: "PerWorkspaceStorageClass",
},
PvcStrategy: "PvcStrategy",
},
DefaultPlugins: []chev2.WorkspaceDefaultPlugins{
{
Editor: "Editor",
Plugins: []string{"Plugins_1", "Plugins_2"},
},
},
DefaultEditor: "DefaultEditor",
DefaultComponents: []devfile.Component{
{
Name: "universal-developer-image",
},
},
NodeSelector: map[string]string{"a": "b", "c": "d"},
Tolerations: []corev1.Toleration{{
Key: "Key",
Operator: "Operator",
Value: "Value",
Effect: "Effect",
}},
SecondsOfInactivityBeforeIdling: pointer.Int32Ptr(1800),
SecondsOfRunBeforeIdling: pointer.Int32Ptr(-1),
MaxNumberOfRunningWorkspacesPerUser: pointer.Int64Ptr(10),
User: &chev2.UserConfiguration{
ClusterRoles: []string{"ClusterRoles_1", "ClusterRoles_2"},
},
},
ContainerRegistry: chev2.CheClusterContainerRegistry{
Hostname: "AirGapContainerRegistryHostname",
Organization: "AirGapContainerRegistryOrganization",
},
GitServices: chev2.CheClusterGitServices{
GitHub: []chev2.GitHubService{
{
SecretName: "github-secret-name",
},
},
GitLab: []chev2.GitLabService{
{
SecretName: "gitlab-secret-name",
},
},
BitBucket: []chev2.BitBucketService{
{
SecretName: "bitbucket-secret-name",
},
},
},
},
Status: chev2.CheClusterStatus{
CheVersion: "CheVersion",
CheURL: "CheURL",
DevfileRegistryURL: "DevfileRegistryURL",
PluginRegistryURL: "PluginRegistryURL",
ChePhase: "Active",
Message: "Message",
Reason: "Reason",
},
}
checlusterv1 := &chev1.CheCluster{}
err := checlusterv1.ConvertFrom(checlusterv2)
assert.Nil(t, err)
assert.Equal(t, checlusterv1.ObjectMeta.Name, "eclipse-che")
assert.Equal(t, checlusterv1.ObjectMeta.Namespace, "eclipse-che")
assert.Equal(t, checlusterv1.Status.CheClusterRunning, "Available")
assert.Equal(t, checlusterv1.Status.CheURL, "CheURL")
assert.Equal(t, checlusterv1.Status.CheVersion, "CheVersion")
assert.Equal(t, checlusterv1.Status.DevfileRegistryURL, "DevfileRegistryURL")
assert.Equal(t, checlusterv1.Status.Message, "Message")
assert.Equal(t, checlusterv1.Status.PluginRegistryURL, "PluginRegistryURL")
assert.Equal(t, checlusterv1.Status.Reason, "Reason")
assert.Equal(t, checlusterv1.Status.GitServerTLSCertificateConfigMapName, "che-git-self-signed-cert")
assert.Equal(t, checlusterv1.Spec.Auth.GatewayAuthenticationSidecarImage, "AuthenticationSidecarImage")
assert.Equal(t, checlusterv1.Spec.Auth.GatewayAuthorizationSidecarImage, "AuthorizationSidecarImage")
assert.Equal(t, checlusterv1.Spec.Auth.IdentityProviderURL, "IdentityProviderURL")
assert.Equal(t, checlusterv1.Spec.Auth.OAuthClientName, "OAuthClientName")
assert.Equal(t, checlusterv1.Spec.Auth.OAuthSecret, "OAuthSecret")
assert.Equal(t, checlusterv1.Spec.Auth.OAuthScope, "OAuthScope")
assert.Equal(t, checlusterv1.Spec.Auth.IdentityToken, "IdentityToken")
assert.Equal(t, checlusterv1.Spec.Auth.GatewayEnv[0].Name, "gateway-name")
assert.Equal(t, checlusterv1.Spec.Auth.GatewayEnv[0].Value, "gateway-value")
assert.Equal(t, checlusterv1.Spec.Auth.GatewayKubeRbacProxyEnv[0].Name, "kube-rbac-proxy-name")
assert.Equal(t, checlusterv1.Spec.Auth.GatewayKubeRbacProxyEnv[0].Value, "kube-rbac-proxy-value")
assert.Equal(t, checlusterv1.Spec.Auth.GatewayOAuthProxyEnv[0].Name, "oauth-proxy-name")
assert.Equal(t, checlusterv1.Spec.Auth.GatewayOAuthProxyEnv[0].Value, "oauth-proxy-value")
assert.Equal(t, checlusterv1.Spec.Auth.GatewayConfigBumpEnv[0].Name, "configbump-name")
assert.Equal(t, checlusterv1.Spec.Auth.GatewayConfigBumpEnv[0].Value, "configbump-value")
assert.Equal(t, checlusterv1.Spec.DevWorkspace.RunningLimit, "10")
assert.Equal(t, checlusterv1.Spec.DevWorkspace.SecondsOfInactivityBeforeIdling, pointer.Int32Ptr(1800))
assert.Equal(t, checlusterv1.Spec.DevWorkspace.SecondsOfRunBeforeIdling, pointer.Int32Ptr(-1))
assert.True(t, checlusterv1.Spec.DevWorkspace.Enable)
assert.Equal(t, checlusterv1.Spec.Dashboard.Warning, "DashboardWarning")
assert.Equal(t, checlusterv1.Spec.ImagePuller.Enable, true)
assert.Equal(t, checlusterv1.Spec.Metrics.Enable, true)
assert.Equal(t, checlusterv1.Spec.Server.CheServerEnv[0].Name, "che-server-name")
assert.Equal(t, checlusterv1.Spec.Server.CheServerEnv[0].Value, "che-server-value")
assert.Equal(t, checlusterv1.Spec.Server.PluginRegistryEnv[0].Name, "plugin-registry-name")
assert.Equal(t, checlusterv1.Spec.Server.PluginRegistryEnv[0].Value, "plugin-registry-value")
assert.Equal(t, checlusterv1.Spec.Server.DevfileRegistryEnv[0].Name, "devfile-registry-name")
assert.Equal(t, checlusterv1.Spec.Server.DevfileRegistryEnv[0].Value, "devfile-registry-value")
assert.Equal(t, checlusterv1.Spec.Server.DashboardEnv[0].Name, "dashboard-name")
assert.Equal(t, checlusterv1.Spec.Server.DashboardEnv[0].Value, "dashboard-value")
assert.Equal(t, checlusterv1.Spec.Server.AirGapContainerRegistryHostname, "AirGapContainerRegistryHostname")
assert.Equal(t, checlusterv1.Spec.Server.AirGapContainerRegistryOrganization, "AirGapContainerRegistryOrganization")
assert.Equal(t, checlusterv1.Spec.Server.CheClusterRoles, "ClusterRoles_1,ClusterRoles_2")
assert.Equal(t, checlusterv1.Spec.Server.CheDebug, "true")
assert.Equal(t, checlusterv1.Spec.Server.CheImage, "ServerImage")
assert.Equal(t, checlusterv1.Spec.Server.CheImagePullPolicy, corev1.PullPolicy("Always"))
assert.Equal(t, checlusterv1.Spec.Server.CheImageTag, "ServerTag")
assert.Equal(t, checlusterv1.Spec.Server.CheLogLevel, "LogLevel")
assert.Equal(t, checlusterv1.Spec.Server.CustomCheProperties, map[string]string{"a": "b", "c": "d"})
assert.Equal(t, checlusterv1.Spec.Server.DashboardCpuLimit, "2")
assert.Equal(t, checlusterv1.Spec.Server.DashboardCpuRequest, "1")
assert.Equal(t, checlusterv1.Spec.Server.DashboardImage, "DashboardImage")
assert.Equal(t, checlusterv1.Spec.Server.DashboardImagePullPolicy, "Always")
assert.Equal(t, checlusterv1.Spec.Server.DashboardMemoryLimit, "228Mi")
assert.Equal(t, checlusterv1.Spec.Server.DashboardMemoryRequest, "128Mi")
assert.Equal(t, checlusterv1.Spec.Server.DevfileRegistryCpuLimit, "2")
assert.Equal(t, checlusterv1.Spec.Server.DevfileRegistryCpuRequest, "1")
assert.Equal(t, checlusterv1.Spec.Server.DevfileRegistryImage, "DevfileRegistryImage")
assert.Equal(t, checlusterv1.Spec.Server.DevfileRegistryMemoryLimit, "228Mi")
assert.Equal(t, checlusterv1.Spec.Server.DevfileRegistryMemoryRequest, "128Mi")
assert.Equal(t, checlusterv1.Spec.Server.DevfileRegistryPullPolicy, corev1.PullPolicy("Always"))
assert.Equal(t, checlusterv1.Spec.Server.ExternalDevfileRegistries, []chev1.ExternalDevfileRegistries{{Url: "ExternalDevfileRegistries"}})
assert.Equal(t, checlusterv1.Spec.Server.ExternalDevfileRegistry, true)
assert.Equal(t, checlusterv1.Spec.Server.ExternalPluginRegistry, true)
assert.Equal(t, checlusterv1.Spec.Server.GitSelfSignedCert, true)
assert.Equal(t, checlusterv1.Spec.Server.NonProxyHosts, "NonProxyHosts_1|NonProxyHosts_2")
assert.Equal(t, *checlusterv1.Spec.Server.OpenVSXRegistryURL, "open-vsx-registry")
assert.Equal(t, checlusterv1.Spec.Server.PluginRegistryCpuLimit, "2")
assert.Equal(t, checlusterv1.Spec.Server.PluginRegistryCpuRequest, "1")
assert.Equal(t, checlusterv1.Spec.Server.PluginRegistryImage, "PluginRegistryImage")
assert.Equal(t, checlusterv1.Spec.Server.PluginRegistryMemoryLimit, "228Mi")
assert.Equal(t, checlusterv1.Spec.Server.PluginRegistryMemoryRequest, "128Mi")
assert.Equal(t, checlusterv1.Spec.Server.PluginRegistryPullPolicy, corev1.PullPolicy("Always"))
assert.Equal(t, checlusterv1.Spec.Server.PluginRegistryUrl, "ExternalPluginRegistries_1")
assert.Equal(t, checlusterv1.Spec.Server.ProxyPort, "ProxyPort")
assert.Equal(t, checlusterv1.Spec.Server.ProxySecret, "ProxyCredentialsSecretName")
assert.Equal(t, checlusterv1.Spec.Server.ProxyURL, "ProxyUrl")
assert.Equal(t, checlusterv1.Spec.Server.ServerCpuLimit, "2")
assert.Equal(t, checlusterv1.Spec.Server.ServerCpuRequest, "1")
assert.Equal(t, checlusterv1.Spec.Server.ServerMemoryLimit, "228Mi")
assert.Equal(t, checlusterv1.Spec.Server.ServerMemoryRequest, "128Mi")
assert.Equal(t, checlusterv1.Spec.Server.SingleHostGatewayConfigMapLabels, labels.Set{"a": "b", "c": "d"})
assert.Equal(t, checlusterv1.Spec.Server.SingleHostGatewayConfigSidecarImage, "ConfigSidecarImage")
assert.Equal(t, checlusterv1.Spec.Server.SingleHostGatewayImage, "GatewayImage")
assert.Equal(t, checlusterv1.Spec.Server.WorkspaceNamespaceDefault, "WorkspaceNamespaceName")
assert.Equal(t, checlusterv1.Spec.Server.AllowAutoProvisionUserNamespace, pointer.BoolPtr(true))
assert.Equal(t, checlusterv1.Spec.Server.WorkspaceDefaultEditor, "DefaultEditor")
assert.Equal(t, checlusterv1.Spec.Server.WorkspaceDefaultComponents, []devfile.Component{{Name: "universal-developer-image"}})
assert.Equal(t, checlusterv1.Spec.Server.WorkspacePodNodeSelector, map[string]string{"a": "b", "c": "d"})
assert.Equal(t, checlusterv1.Spec.Server.WorkspacePodTolerations, []corev1.Toleration{
{
Key: "Key",
Operator: "Operator",
Value: "Value",
Effect: "Effect",
},
})
assert.Equal(t, checlusterv1.Spec.Server.WorkspacesDefaultPlugins, []chev1.WorkspacesDefaultPlugins{{Editor: "Editor", Plugins: []string{"Plugins_1", "Plugins_2"}}})
assert.Equal(t, checlusterv1.Spec.Server.CheWorkspaceClusterRole, "ClusterRoles_1,ClusterRoles_2")
assert.Equal(t, checlusterv1.Spec.Storage.PvcStrategy, "PvcStrategy")
assert.Equal(t, checlusterv1.Spec.Storage.PvcClaimSize, "StorageClaimSize")
assert.Equal(t, checlusterv1.Spec.Storage.WorkspacePVCStorageClassName, "StorageClass")
assert.Equal(t, checlusterv1.Spec.Storage.PerWorkspaceStrategyPvcClaimSize, "PerWorkspaceStorageClaimSize")
assert.Equal(t, checlusterv1.Spec.Storage.PerWorkspaceStrategyPVCStorageClassName, "PerWorkspaceStorageClass")
assert.Equal(t, checlusterv1.Spec.GitServices.GitHub[0].SecretName, "github-secret-name")
assert.Equal(t, checlusterv1.Spec.GitServices.GitLab[0].SecretName, "gitlab-secret-name")
assert.Equal(t, checlusterv1.Spec.GitServices.BitBucket[0].SecretName, "bitbucket-secret-name")
}
func TestShouldConvertFromWhenOnlyMemoryResourceSpecified(t *testing.T) {
infrastructure.InitializeForTesting(infrastructure.OpenShiftv4)
memoryRequest := resource.MustParse("128Mi")
memoryLimit := resource.MustParse("228Mi")
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: &memoryRequest,
},
Limits: &chev2.ResourceList{
Memory: &memoryLimit,
},
},
},
},
},
},
},
},
}
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")
}