From 8416258ae5c841b396b8fcd8f9144d4038bc6411 Mon Sep 17 00:00:00 2001 From: Martin Schuppert Date: Wed, 25 Jun 2025 08:06:43 +0200 Subject: [PATCH] Check if OctaviaRsyslogImage is not nil OctaviaRsyslog was introduced in FR2 time frame. If there is an update with enabled octavia from before, the current targetVerion images won't have an OctaviaRsyslogImage which results in a nil ptr dereference error and the controller manage panics. This adds a check, like done in other places if the images is non nil and otherwise falls back to an empty string. Jira: OSPRH-17647 Signed-off-by: Martin Schuppert --- pkg/openstack/instanceha.go | 1 - pkg/openstack/octavia.go | 2 +- pkg/openstack/telemetry.go | 13 ++----------- pkg/openstack/test.go | 1 - pkg/openstack/version.go | 4 ++++ 5 files changed, 7 insertions(+), 14 deletions(-) diff --git a/pkg/openstack/instanceha.go b/pkg/openstack/instanceha.go index f72d78969a..6ee3ab2f79 100644 --- a/pkg/openstack/instanceha.go +++ b/pkg/openstack/instanceha.go @@ -18,7 +18,6 @@ const ( ) func ReconcileInstanceHa(ctx context.Context, instance *corev1beta1.OpenStackControlPlane, version *corev1beta1.OpenStackVersion, helper *helper.Helper) (ctrl.Result, error) { - missingImageDefault := "" customData := map[string]string{ InstanceHaImageKey: *getImg(version.Status.ContainerImages.OpenstackClientImage, &missingImageDefault), } diff --git a/pkg/openstack/octavia.go b/pkg/openstack/octavia.go index b056dc6cba..6c9b6f11a4 100644 --- a/pkg/openstack/octavia.go +++ b/pkg/openstack/octavia.go @@ -190,7 +190,7 @@ func ReconcileOctavia(ctx context.Context, instance *corev1beta1.OpenStackContro octavia.Spec.OctaviaHealthManager.ContainerImage = *version.Status.ContainerImages.OctaviaHealthmanagerImage octavia.Spec.OctaviaHousekeeping.ContainerImage = *version.Status.ContainerImages.OctaviaHousekeepingImage octavia.Spec.ApacheContainerImage = *version.Status.ContainerImages.OctaviaApacheImage - octavia.Spec.OctaviaRsyslog.ContainerImage = *version.Status.ContainerImages.OctaviaRsyslogImage + octavia.Spec.OctaviaRsyslog.ContainerImage = *getImg(version.Status.ContainerImages.OctaviaRsyslogImage, &missingImageDefault) octavia.Spec.OctaviaRsyslog.InitContainerImage = *version.Status.ContainerImages.OctaviaHealthmanagerImage if octavia.Spec.Secret == "" { diff --git a/pkg/openstack/telemetry.go b/pkg/openstack/telemetry.go index 40e857a43c..505fb47240 100644 --- a/pkg/openstack/telemetry.go +++ b/pkg/openstack/telemetry.go @@ -337,17 +337,8 @@ func ReconcileTelemetry(ctx context.Context, instance *corev1beta1.OpenStackCont telemetry.Spec.Autoscaling.AutoscalingSpec.Aodh.NotifierImage = *version.Status.ContainerImages.AodhNotifierImage telemetry.Spec.Autoscaling.AutoscalingSpec.Aodh.ListenerImage = *version.Status.ContainerImages.AodhListenerImage - if version.Status.ContainerImages.KsmImage != nil { - telemetry.Spec.Ceilometer.KSMImage = *version.Status.ContainerImages.KsmImage - } else { - telemetry.Spec.Ceilometer.KSMImage = "" - } - - if version.Status.ContainerImages.CeilometerMysqldExporterImage != nil { - telemetry.Spec.Ceilometer.MysqldExporterImage = *version.Status.ContainerImages.CeilometerMysqldExporterImage - } else { - telemetry.Spec.Ceilometer.MysqldExporterImage = "" - } + telemetry.Spec.Ceilometer.KSMImage = *getImg(version.Status.ContainerImages.KsmImage, &missingImageDefault) + telemetry.Spec.Ceilometer.MysqldExporterImage = *getImg(version.Status.ContainerImages.CeilometerMysqldExporterImage, &missingImageDefault) if telemetry.Spec.Ceilometer.Secret == "" { telemetry.Spec.Ceilometer.Secret = instance.Spec.Secret diff --git a/pkg/openstack/test.go b/pkg/openstack/test.go index 740fa2ea74..3de495f96e 100644 --- a/pkg/openstack/test.go +++ b/pkg/openstack/test.go @@ -25,7 +25,6 @@ const ( ) func ReconcileTest(ctx context.Context, instance *corev1beta1.OpenStackControlPlane, version *corev1beta1.OpenStackVersion, helper *helper.Helper) (ctrl.Result, error) { - missingImageDefault := "" customData := map[string]string{ TempestImageKey: *getImg(version.Status.ContainerImages.TestTempestImage, &missingImageDefault), TobikoImageKey: *getImg(version.Status.ContainerImages.TestTobikoImage, &missingImageDefault), diff --git a/pkg/openstack/version.go b/pkg/openstack/version.go index f6011431af..83a783969b 100644 --- a/pkg/openstack/version.go +++ b/pkg/openstack/version.go @@ -15,6 +15,10 @@ import ( "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" ) +var ( + missingImageDefault string +) + // InitializeOpenStackVersionImageDefaults - initializes OpenStackVersion CR with default container images func InitializeOpenStackVersionImageDefaults(ctx context.Context, envImages map[string]*string) *corev1beta1.ContainerDefaults { Log := GetLogger(ctx)