From e335c7f35b1ac4f00b62f86f666787f6b89c0637 Mon Sep 17 00:00:00 2001 From: Vittorio Rigamonti Date: Tue, 7 Nov 2023 10:11:59 +0100 Subject: [PATCH] Reconcile when changing from Cache to DataGrid type. Fixes #1886 --- .../handler/manage/statefulset_updates.go | 3 +-- .../infinispan/handler/provision/pods.go | 1 - test/e2e/infinispan/spec_update_test.go | 25 +++++++++++++++++++ 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/pkg/reconcile/pipeline/infinispan/handler/manage/statefulset_updates.go b/pkg/reconcile/pipeline/infinispan/handler/manage/statefulset_updates.go index 214cc3f2d..8a683aae0 100644 --- a/pkg/reconcile/pipeline/infinispan/handler/manage/statefulset_updates.go +++ b/pkg/reconcile/pipeline/infinispan/handler/manage/statefulset_updates.go @@ -160,8 +160,7 @@ func StatefulSetRollingUpgrade(i *ispnv1.Infinispan, ctx pipeline.Context) { } // Validate extra Java options changes - if updateStatefulSetEnv(container, statefulSet, "EXTRA_JAVA_OPTIONS", ispnContr.ExtraJvmOpts) { - updateStatefulSetEnv(container, statefulSet, "JAVA_OPTIONS", i.GetJavaOptions()) + if updateStatefulSetEnv(container, statefulSet, "JAVA_OPTIONS", i.GetJavaOptions()) { updateNeeded = true } if updateStatefulSetEnv(container, statefulSet, "CLI_JAVA_OPTIONS", ispnContr.CliExtraJvmOpts) { diff --git a/pkg/reconcile/pipeline/infinispan/handler/provision/pods.go b/pkg/reconcile/pipeline/infinispan/handler/provision/pods.go index 337439a8c..ed5508c3e 100644 --- a/pkg/reconcile/pipeline/infinispan/handler/provision/pods.go +++ b/pkg/reconcile/pipeline/infinispan/handler/provision/pods.go @@ -123,7 +123,6 @@ func PodEnv(i *ispnv1.Infinispan, systemEnv *[]corev1.EnvVar) []corev1.EnvVar { // Prevent the image from generating a user if authentication disabled {Name: "MANAGED_ENV", Value: "TRUE"}, {Name: "JAVA_OPTIONS", Value: i.GetJavaOptions()}, - {Name: "EXTRA_JAVA_OPTIONS", Value: i.Spec.Container.ExtraJvmOpts}, {Name: "CLI_JAVA_OPTIONS", Value: i.Spec.Container.CliExtraJvmOpts}, } diff --git a/test/e2e/infinispan/spec_update_test.go b/test/e2e/infinispan/spec_update_test.go index b22bbc539..a33377efb 100644 --- a/test/e2e/infinispan/spec_update_test.go +++ b/test/e2e/infinispan/spec_update_test.go @@ -77,6 +77,31 @@ func TestContainerJavaOptsUpdate(t *testing.T) { genericTestForContainerUpdated(*spec, modifier, verifier) } +func TestInfinispanMigrateFromCacheToDatagrid(t *testing.T) { + t.Parallel() + defer testKube.CleanNamespaceAndLogOnPanic(t, tutils.Namespace) + + var modifier = func(ispn *ispnv1.Infinispan) { + ispn.Spec.Service.Type = ispnv1.ServiceTypeDataGrid + } + var verifier = func(ispn *ispnv1.Infinispan, ss *appsv1.StatefulSet) { + env := ss.Spec.Template.Spec.Containers[0].Env + for _, value := range env { + if value.Name == "JAVA_OPTIONS" { + if value.Value != "" { + panic("Expected empty JAVA_OPTIONS. Migration failed?") + } else { + return + } + } + } + panic("JAVA_OPTIONS not found") + } + spec := tutils.DefaultSpec(t, testKube, nil) + spec.Spec.Service.Type = ispnv1.ServiceTypeCache + genericTestForContainerUpdated(*spec, modifier, verifier) +} + func genericTestForContainerUpdated(ispn ispnv1.Infinispan, modifier func(*ispnv1.Infinispan), verifier func(*ispnv1.Infinispan, *appsv1.StatefulSet)) { testKube.CreateInfinispan(&ispn, tutils.Namespace) testKube.WaitForInfinispanPods(int(ispn.Spec.Replicas), tutils.SinglePodTimeout, ispn.Name, tutils.Namespace)