Skip to content

Commit c8fd6a6

Browse files
committed
chore: initContainers field
Signed-off-by: Anatolii Bazko <abazko@redhat.com>
1 parent 1bb1c73 commit c8fd6a6

File tree

1 file changed

+201
-0
lines changed

1 file changed

+201
-0
lines changed

pkg/deploy/dev-workspace-config/dev_workspace_config_test.go

Lines changed: 201 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3125,3 +3125,204 @@ func TestReconcileDevWorkspaceIgnoredUnrecoverableEvents(t *testing.T) {
31253125
})
31263126
}
31273127
}
3128+
3129+
func TestReconcileDevWorkspaceConfigForInitContainers(t *testing.T) {
3130+
type testCase struct {
3131+
name string
3132+
cheCluster *chev2.CheCluster
3133+
existedObjects []client.Object
3134+
expectedOperatorConfig *controllerv1alpha1.OperatorConfiguration
3135+
}
3136+
3137+
testCases := []testCase{
3138+
{
3139+
name: "Create DevWorkspaceOperatorConfig with InitContainers",
3140+
cheCluster: &chev2.CheCluster{
3141+
ObjectMeta: metav1.ObjectMeta{
3142+
Namespace: "eclipse-che",
3143+
Name: "eclipse-che",
3144+
},
3145+
Spec: chev2.CheClusterSpec{
3146+
DevEnvironments: chev2.CheClusterDevEnvironments{
3147+
InitContainers: []corev1.Container{
3148+
{
3149+
Name: "init-container-1",
3150+
Image: "init-image:latest",
3151+
Command: []string{
3152+
"/bin/sh",
3153+
"-c",
3154+
"echo 'Initializing workspace'",
3155+
},
3156+
},
3157+
{
3158+
Name: "init-container-2",
3159+
Image: "init-image-2:v1.0",
3160+
Env: []corev1.EnvVar{
3161+
{
3162+
Name: "INIT_VAR",
3163+
Value: "init-value",
3164+
},
3165+
},
3166+
},
3167+
},
3168+
},
3169+
},
3170+
},
3171+
expectedOperatorConfig: &controllerv1alpha1.OperatorConfiguration{
3172+
Workspace: &controllerv1alpha1.WorkspaceConfig{
3173+
InitContainers: []corev1.Container{
3174+
{
3175+
Name: "init-container-1",
3176+
Image: "init-image:latest",
3177+
Command: []string{
3178+
"/bin/sh",
3179+
"-c",
3180+
"echo 'Initializing workspace'",
3181+
},
3182+
},
3183+
{
3184+
Name: "init-container-2",
3185+
Image: "init-image-2:v1.0",
3186+
Env: []corev1.EnvVar{
3187+
{
3188+
Name: "INIT_VAR",
3189+
Value: "init-value",
3190+
},
3191+
},
3192+
},
3193+
},
3194+
},
3195+
},
3196+
},
3197+
{
3198+
name: "Create DevWorkspaceOperatorConfig without InitContainers",
3199+
cheCluster: &chev2.CheCluster{
3200+
ObjectMeta: metav1.ObjectMeta{
3201+
Namespace: "eclipse-che",
3202+
Name: "eclipse-che",
3203+
},
3204+
Spec: chev2.CheClusterSpec{
3205+
DevEnvironments: chev2.CheClusterDevEnvironments{},
3206+
},
3207+
},
3208+
expectedOperatorConfig: &controllerv1alpha1.OperatorConfiguration{
3209+
Workspace: &controllerv1alpha1.WorkspaceConfig{},
3210+
},
3211+
},
3212+
{
3213+
name: "Update DevWorkspaceOperatorConfig with InitContainers",
3214+
cheCluster: &chev2.CheCluster{
3215+
ObjectMeta: metav1.ObjectMeta{
3216+
Namespace: "eclipse-che",
3217+
Name: "eclipse-che",
3218+
},
3219+
Spec: chev2.CheClusterSpec{
3220+
DevEnvironments: chev2.CheClusterDevEnvironments{
3221+
InitContainers: []corev1.Container{
3222+
{
3223+
Name: "new-init-container",
3224+
Image: "new-init:v2.0",
3225+
VolumeMounts: []corev1.VolumeMount{
3226+
{
3227+
Name: "config-volume",
3228+
MountPath: "/etc/config",
3229+
},
3230+
},
3231+
},
3232+
},
3233+
},
3234+
},
3235+
},
3236+
existedObjects: []client.Object{
3237+
&controllerv1alpha1.DevWorkspaceOperatorConfig{
3238+
ObjectMeta: metav1.ObjectMeta{
3239+
Name: devWorkspaceConfigName,
3240+
Namespace: "eclipse-che",
3241+
},
3242+
TypeMeta: metav1.TypeMeta{
3243+
Kind: "DevWorkspaceOperatorConfig",
3244+
APIVersion: controllerv1alpha1.GroupVersion.String(),
3245+
},
3246+
Config: &controllerv1alpha1.OperatorConfiguration{
3247+
Workspace: &controllerv1alpha1.WorkspaceConfig{
3248+
InitContainers: []corev1.Container{
3249+
{
3250+
Name: "old-init-container",
3251+
Image: "old-init:v1.0",
3252+
},
3253+
},
3254+
},
3255+
},
3256+
},
3257+
},
3258+
expectedOperatorConfig: &controllerv1alpha1.OperatorConfiguration{
3259+
Workspace: &controllerv1alpha1.WorkspaceConfig{
3260+
InitContainers: []corev1.Container{
3261+
{
3262+
Name: "new-init-container",
3263+
Image: "new-init:v2.0",
3264+
VolumeMounts: []corev1.VolumeMount{
3265+
{
3266+
Name: "config-volume",
3267+
MountPath: "/etc/config",
3268+
},
3269+
},
3270+
},
3271+
},
3272+
},
3273+
},
3274+
},
3275+
{
3276+
name: "Clear InitContainers from DevWorkspaceOperatorConfig",
3277+
cheCluster: &chev2.CheCluster{
3278+
ObjectMeta: metav1.ObjectMeta{
3279+
Namespace: "eclipse-che",
3280+
Name: "eclipse-che",
3281+
},
3282+
Spec: chev2.CheClusterSpec{
3283+
DevEnvironments: chev2.CheClusterDevEnvironments{},
3284+
},
3285+
},
3286+
existedObjects: []client.Object{
3287+
&controllerv1alpha1.DevWorkspaceOperatorConfig{
3288+
ObjectMeta: metav1.ObjectMeta{
3289+
Name: devWorkspaceConfigName,
3290+
Namespace: "eclipse-che",
3291+
},
3292+
TypeMeta: metav1.TypeMeta{
3293+
Kind: "DevWorkspaceOperatorConfig",
3294+
APIVersion: controllerv1alpha1.GroupVersion.String(),
3295+
},
3296+
Config: &controllerv1alpha1.OperatorConfiguration{
3297+
Workspace: &controllerv1alpha1.WorkspaceConfig{
3298+
InitContainers: []corev1.Container{
3299+
{
3300+
Name: "init-to-remove",
3301+
Image: "init:v1.0",
3302+
},
3303+
},
3304+
},
3305+
},
3306+
},
3307+
},
3308+
expectedOperatorConfig: &controllerv1alpha1.OperatorConfiguration{
3309+
Workspace: &controllerv1alpha1.WorkspaceConfig{},
3310+
},
3311+
},
3312+
}
3313+
3314+
for _, testCase := range testCases {
3315+
t.Run(testCase.name, func(t *testing.T) {
3316+
deployContext := test.NewCtxBuilder().WithCheCluster(testCase.cheCluster).WithObjects(testCase.existedObjects...).Build()
3317+
3318+
devWorkspaceConfigReconciler := NewDevWorkspaceConfigReconciler()
3319+
test.EnsureReconcile(t, deployContext, devWorkspaceConfigReconciler.Reconcile)
3320+
3321+
dwoc := &controllerv1alpha1.DevWorkspaceOperatorConfig{}
3322+
err := deployContext.ClusterAPI.Client.Get(context.TODO(), types.NamespacedName{Name: devWorkspaceConfigName, Namespace: testCase.cheCluster.Namespace}, dwoc)
3323+
assert.NoError(t, err)
3324+
3325+
assert.Equal(t, testCase.expectedOperatorConfig.Workspace.InitContainers, dwoc.Config.Workspace.InitContainers)
3326+
})
3327+
}
3328+
}

0 commit comments

Comments
 (0)