From 8d17d286ebedf93b49009a79c6d1aad189092187 Mon Sep 17 00:00:00 2001 From: Teo Date: Sun, 21 Apr 2024 11:43:30 -0600 Subject: [PATCH 1/4] fix runtime panic when storage param is empty Signed-off-by: Teo --- k8sutils/redis-cluster.go | 78 ++++++++++++++++++++++----------------- 1 file changed, 45 insertions(+), 33 deletions(-) diff --git a/k8sutils/redis-cluster.go b/k8sutils/redis-cluster.go index 8c182a20d..0295281dd 100644 --- a/k8sutils/redis-cluster.go +++ b/k8sutils/redis-cluster.go @@ -33,42 +33,54 @@ type RedisClusterService struct { } // generateRedisClusterParams generates Redis cluster information + func generateRedisClusterParams(cr *redisv1beta2.RedisCluster, replicas int32, externalConfig *string, params RedisClusterSTS) statefulSetParameters { - res := statefulSetParameters{ - Replicas: &replicas, - ClusterMode: true, - ClusterVersion: cr.Spec.ClusterVersion, - NodeConfVolume: cr.Spec.Storage.NodeConfVolume, - NodeSelector: params.NodeSelector, - PodSecurityContext: cr.Spec.PodSecurityContext, - PriorityClassName: cr.Spec.PriorityClassName, - Affinity: params.Affinity, - TerminationGracePeriodSeconds: params.TerminationGracePeriodSeconds, - Tolerations: params.Tolerations, - ServiceAccountName: cr.Spec.ServiceAccountName, - UpdateStrategy: cr.Spec.KubernetesConfig.UpdateStrategy, - IgnoreAnnotations: cr.Spec.KubernetesConfig.IgnoreAnnotations, - HostNetwork: cr.Spec.HostNetwork, - } - if cr.Spec.RedisExporter != nil { - res.EnableMetrics = cr.Spec.RedisExporter.Enabled - } - if cr.Spec.KubernetesConfig.ImagePullSecrets != nil { - res.ImagePullSecrets = cr.Spec.KubernetesConfig.ImagePullSecrets - } - if cr.Spec.Storage != nil { - res.PersistentVolumeClaim = cr.Spec.Storage.VolumeClaimTemplate - res.NodeConfPersistentVolumeClaim = cr.Spec.Storage.NodeConfVolumeClaimTemplate - } - if externalConfig != nil { - res.ExternalConfig = externalConfig - } - if _, found := cr.ObjectMeta.GetAnnotations()[AnnotationKeyRecreateStatefulset]; found { - res.RecreateStatefulSet = true - } - return res + if cr == nil { + panic("RedisCluster is empty") + } + if cr.Spec == nil { + panic("RedisCluster.Spec cannot be empty") + } + if cr.Spec.Storage == nil { + cr.Spec.Storage = &redisv1beta2.Storage{} + } + + res := statefulSetParameters{ + Replicas: &replicas, + ClusterMode: true, + ClusterVersion: cr.Spec.ClusterVersion, + NodeConfVolume: cr.Spec.Storage.NodeConfVolume, + NodeSelector: params.NodeSelector, + PodSecurityContext: cr.Spec.PodSecurityContext, + PriorityClassName: cr.Spec.PriorityClassName, + Affinity: params.Affinity, + TerminationGracePeriodSeconds: params.TerminationGracePeriodSeconds, + Tolerations: params.Tolerations, + ServiceAccountName: cr.Spec.ServiceAccountName, + UpdateStrategy: cr.Spec.KubernetesConfig.UpdateStrategy, + IgnoreAnnotations: cr.Spec.KubernetesConfig.IgnoreAnnotations, + HostNetwork: cr.Spec.HostNetwork, + } + if cr.Spec.RedisExporter != nil { + res.EnableMetrics = cr.Spec.RedisExporter.Enabled + } + if cr.Spec.KubernetesConfig.ImagePullSecrets != nil { + res.ImagePullSecrets = cr.Spec.KubernetesConfig.ImagePullSecrets + } + if cr.Spec.Storage != nil { + res.PersistentVolumeClaim = cr.Spec.Storage.VolumeClaimTemplate + res.NodeConfPersistentVolumeClaim = cr.Spec.Storage.NodeConfVolumeClaimTemplate + } + if externalConfig != nil { + res.ExternalConfig = externalConfig + } + if _, found := cr.ObjectMeta.GetAnnotations()[AnnotationKeyRecreateStatefulset]; found { + res.RecreateStatefulSet = true + } + return res } + func generateRedisClusterInitContainerParams(cr *redisv1beta2.RedisCluster) initContainerParameters { trueProperty := true initcontainerProp := initContainerParameters{} From fb71c1a077fb7f5febda0a2ce5471110ab13bf34 Mon Sep 17 00:00:00 2001 From: yangw Date: Tue, 7 May 2024 11:10:11 +0800 Subject: [PATCH 2/4] Update redis-cluster.go --- k8sutils/redis-cluster.go | 76 +++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 43 deletions(-) diff --git a/k8sutils/redis-cluster.go b/k8sutils/redis-cluster.go index 0295281dd..d3142d865 100644 --- a/k8sutils/redis-cluster.go +++ b/k8sutils/redis-cluster.go @@ -35,49 +35,39 @@ type RedisClusterService struct { // generateRedisClusterParams generates Redis cluster information func generateRedisClusterParams(cr *redisv1beta2.RedisCluster, replicas int32, externalConfig *string, params RedisClusterSTS) statefulSetParameters { - if cr == nil { - panic("RedisCluster is empty") - } - if cr.Spec == nil { - panic("RedisCluster.Spec cannot be empty") - } - if cr.Spec.Storage == nil { - cr.Spec.Storage = &redisv1beta2.Storage{} - } - - res := statefulSetParameters{ - Replicas: &replicas, - ClusterMode: true, - ClusterVersion: cr.Spec.ClusterVersion, - NodeConfVolume: cr.Spec.Storage.NodeConfVolume, - NodeSelector: params.NodeSelector, - PodSecurityContext: cr.Spec.PodSecurityContext, - PriorityClassName: cr.Spec.PriorityClassName, - Affinity: params.Affinity, - TerminationGracePeriodSeconds: params.TerminationGracePeriodSeconds, - Tolerations: params.Tolerations, - ServiceAccountName: cr.Spec.ServiceAccountName, - UpdateStrategy: cr.Spec.KubernetesConfig.UpdateStrategy, - IgnoreAnnotations: cr.Spec.KubernetesConfig.IgnoreAnnotations, - HostNetwork: cr.Spec.HostNetwork, - } - if cr.Spec.RedisExporter != nil { - res.EnableMetrics = cr.Spec.RedisExporter.Enabled - } - if cr.Spec.KubernetesConfig.ImagePullSecrets != nil { - res.ImagePullSecrets = cr.Spec.KubernetesConfig.ImagePullSecrets - } - if cr.Spec.Storage != nil { - res.PersistentVolumeClaim = cr.Spec.Storage.VolumeClaimTemplate - res.NodeConfPersistentVolumeClaim = cr.Spec.Storage.NodeConfVolumeClaimTemplate - } - if externalConfig != nil { - res.ExternalConfig = externalConfig - } - if _, found := cr.ObjectMeta.GetAnnotations()[AnnotationKeyRecreateStatefulset]; found { - res.RecreateStatefulSet = true - } - return res + res := statefulSetParameters{ + Replicas: &replicas, + ClusterMode: true, + ClusterVersion: cr.Spec.ClusterVersion, + NodeSelector: params.NodeSelector, + PodSecurityContext: cr.Spec.PodSecurityContext, + PriorityClassName: cr.Spec.PriorityClassName, + Affinity: params.Affinity, + TerminationGracePeriodSeconds: params.TerminationGracePeriodSeconds, + Tolerations: params.Tolerations, + ServiceAccountName: cr.Spec.ServiceAccountName, + UpdateStrategy: cr.Spec.KubernetesConfig.UpdateStrategy, + IgnoreAnnotations: cr.Spec.KubernetesConfig.IgnoreAnnotations, + HostNetwork: cr.Spec.HostNetwork, + } + if cr.Spec.RedisExporter != nil { + res.EnableMetrics = cr.Spec.RedisExporter.Enabled + } + if cr.Spec.KubernetesConfig.ImagePullSecrets != nil { + res.ImagePullSecrets = cr.Spec.KubernetesConfig.ImagePullSecrets + } + if cr.Spec.Storage != nil { + res.PersistentVolumeClaim = cr.Spec.Storage.VolumeClaimTemplate + res.NodeConfVolume = cr.Spec.Storage.NodeConfVolume + res.NodeConfPersistentVolumeClaim = cr.Spec.Storage.NodeConfVolumeClaimTemplate + } + if externalConfig != nil { + res.ExternalConfig = externalConfig + } + if _, found := cr.ObjectMeta.GetAnnotations()[AnnotationKeyRecreateStatefulset]; found { + res.RecreateStatefulSet = true + } + return res } From be1233fe58e1ad7fdc16753ea86043f283cb004b Mon Sep 17 00:00:00 2001 From: yangw Date: Tue, 7 May 2024 11:12:01 +0800 Subject: [PATCH 3/4] remove blank --- k8sutils/redis-cluster.go | 1 - 1 file changed, 1 deletion(-) diff --git a/k8sutils/redis-cluster.go b/k8sutils/redis-cluster.go index d3142d865..4a999bb14 100644 --- a/k8sutils/redis-cluster.go +++ b/k8sutils/redis-cluster.go @@ -33,7 +33,6 @@ type RedisClusterService struct { } // generateRedisClusterParams generates Redis cluster information - func generateRedisClusterParams(cr *redisv1beta2.RedisCluster, replicas int32, externalConfig *string, params RedisClusterSTS) statefulSetParameters { res := statefulSetParameters{ Replicas: &replicas, From f2b29b7a26050debed8d6204eee2b2920476310e Mon Sep 17 00:00:00 2001 From: yangw Date: Tue, 7 May 2024 11:19:14 +0800 Subject: [PATCH 4/4] Update redis-cluster.go --- k8sutils/redis-cluster.go | 1 - 1 file changed, 1 deletion(-) diff --git a/k8sutils/redis-cluster.go b/k8sutils/redis-cluster.go index 4a999bb14..d16b9308c 100644 --- a/k8sutils/redis-cluster.go +++ b/k8sutils/redis-cluster.go @@ -69,7 +69,6 @@ func generateRedisClusterParams(cr *redisv1beta2.RedisCluster, replicas int32, e return res } - func generateRedisClusterInitContainerParams(cr *redisv1beta2.RedisCluster) initContainerParameters { trueProperty := true initcontainerProp := initContainerParameters{}