From 18765be8a1590820f77eb1b7e5414bd7e3f9896a Mon Sep 17 00:00:00 2001 From: hiteshwani29 Date: Wed, 2 Aug 2023 15:46:55 +0530 Subject: [PATCH] Fix apiVersion and kind are missing in jaeger-operator generate output Signed-off-by: hiteshwani29 --- pkg/cronjob/es_index_cleaner.go | 8 +++++++ pkg/cronjob/es_index_cleaner_test.go | 33 ++++++++++++++++++++++++++ pkg/cronjob/es_rollover.go | 16 +++++++++++++ pkg/cronjob/es_rollover_test.go | 29 ++++++++++++++++++++++ pkg/cronjob/spark_dependencies.go | 8 +++++++ pkg/cronjob/spark_dependencies_test.go | 27 +++++++++++++++++++++ pkg/deployment/autoscale.go | 8 +++++++ 7 files changed, 129 insertions(+) diff --git a/pkg/cronjob/es_index_cleaner.go b/pkg/cronjob/es_index_cleaner.go index ae4fbac9c..fd7536a4a 100644 --- a/pkg/cronjob/es_index_cleaner.go +++ b/pkg/cronjob/es_index_cleaner.go @@ -106,6 +106,10 @@ func CreateEsIndexCleaner(jaeger *v1.Jaeger) runtime.Object { cronjobsVersion := viper.GetString(v1.FlagCronJobsVersion) if cronjobsVersion == v1.FlagCronJobsVersionBatchV1Beta1 { cj := &batchv1beta1.CronJob{ + TypeMeta: metav1.TypeMeta{ + Kind: "CronJob", + APIVersion: cronjobsVersion, + }, ObjectMeta: objectmeta, Spec: batchv1beta1.CronJobSpec{ Schedule: jaeger.Spec.Storage.EsIndexCleaner.Schedule, @@ -118,6 +122,10 @@ func CreateEsIndexCleaner(jaeger *v1.Jaeger) runtime.Object { o = cj } else { cj := &batchv1.CronJob{ + TypeMeta: metav1.TypeMeta{ + Kind: "CronJob", + APIVersion: cronjobsVersion, + }, ObjectMeta: objectmeta, Spec: batchv1.CronJobSpec{ Schedule: jaeger.Spec.Storage.EsIndexCleaner.Schedule, diff --git a/pkg/cronjob/es_index_cleaner_test.go b/pkg/cronjob/es_index_cleaner_test.go index 1eda61bea..0f8b190d5 100644 --- a/pkg/cronjob/es_index_cleaner_test.go +++ b/pkg/cronjob/es_index_cleaner_test.go @@ -9,6 +9,7 @@ import ( "github.com/stretchr/testify/assert" batchv1 "k8s.io/api/batch/v1" + batchv1beta1 "k8s.io/api/batch/v1beta1" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/types" @@ -39,6 +40,38 @@ func TestCreateEsIndexCleaner(t *testing.T) { assert.Equal(t, historyLimits, *cronJob.Spec.SuccessfulJobsHistoryLimit) } +func TestCreateEsIndexCleanerTypeMeta(t *testing.T) { + testData := []struct { + Name string + flag string + }{ + {Name: "Test batch/v1beta1", flag: v1.FlagCronJobsVersionBatchV1Beta1}, + {Name: "Test batch/v1", flag: v1.FlagCronJobsVersionBatchV1}, + } + + jaeger := &v1.Jaeger{Spec: v1.JaegerSpec{Storage: v1.JaegerStorageSpec{Options: v1.NewOptions( + map[string]interface{}{"es.index-prefix": "tenant1", "es.server-urls": "http://nowhere:666,foo"})}}} + days := 0 + jaeger.Spec.Storage.EsIndexCleaner.NumberOfDays = &days + historyLimits := int32(1) + jaeger.Spec.Storage.EsIndexCleaner.SuccessfulJobsHistoryLimit = &historyLimits + for _, td := range testData { + if td.flag == v1.FlagCronJobsVersionBatchV1Beta1 { + viper.SetDefault(v1.FlagCronJobsVersion, v1.FlagCronJobsVersionBatchV1Beta1) + } + cronJobs := CreateEsIndexCleaner(jaeger) + switch tt := cronJobs.(type) { + case *batchv1beta1.CronJob: + assert.Equal(t, tt.Kind, "CronJob") + assert.Equal(t, tt.APIVersion, v1.FlagCronJobsVersionBatchV1Beta1) + viper.SetDefault(v1.FlagCronJobsVersion, v1.FlagCronJobsVersionBatchV1) + case *batchv1.CronJob: + assert.Equal(t, tt.Kind, "CronJob") + assert.Equal(t, tt.APIVersion, v1.FlagCronJobsVersionBatchV1) + } + } +} + func TestEsIndexCleanerSecrets(t *testing.T) { jaeger := v1.NewJaeger(types.NamespacedName{Name: "TestEsIndexCleanerSecrets"}) secret := "mysecret" diff --git a/pkg/cronjob/es_rollover.go b/pkg/cronjob/es_rollover.go index c45b2dddc..3571df0e2 100644 --- a/pkg/cronjob/es_rollover.go +++ b/pkg/cronjob/es_rollover.go @@ -57,6 +57,10 @@ func rollover(jaeger *v1.Jaeger) runtime.Object { cronjobsVersion := viper.GetString(v1.FlagCronJobsVersion) if cronjobsVersion == v1.FlagCronJobsVersionBatchV1Beta1 { cj := &batchv1beta1.CronJob{ + TypeMeta: metav1.TypeMeta{ + Kind: "CronJob", + APIVersion: cronjobsVersion, + }, ObjectMeta: objectMeta, Spec: batchv1beta1.CronJobSpec{ ConcurrencyPolicy: batchv1beta1.ForbidConcurrent, @@ -70,6 +74,10 @@ func rollover(jaeger *v1.Jaeger) runtime.Object { o = cj } else { cj := &batchv1.CronJob{ + TypeMeta: metav1.TypeMeta{ + Kind: "CronJob", + APIVersion: cronjobsVersion, + }, ObjectMeta: objectMeta, Spec: batchv1.CronJobSpec{ ConcurrencyPolicy: batchv1.ForbidConcurrent, @@ -158,6 +166,10 @@ func lookback(jaeger *v1.Jaeger) runtime.Object { cronjobsVersion := viper.GetString(v1.FlagCronJobsVersion) if cronjobsVersion == v1.FlagCronJobsVersionBatchV1Beta1 { cj := &batchv1beta1.CronJob{ + TypeMeta: metav1.TypeMeta{ + Kind: "CronJob", + APIVersion: cronjobsVersion, + }, ObjectMeta: objectMeta, Spec: batchv1beta1.CronJobSpec{ ConcurrencyPolicy: batchv1beta1.ForbidConcurrent, @@ -174,6 +186,10 @@ func lookback(jaeger *v1.Jaeger) runtime.Object { o = cj } else { cj := &batchv1.CronJob{ + TypeMeta: metav1.TypeMeta{ + Kind: "CronJob", + APIVersion: cronjobsVersion, + }, ObjectMeta: objectMeta, Spec: batchv1.CronJobSpec{ ConcurrencyPolicy: batchv1.ForbidConcurrent, diff --git a/pkg/cronjob/es_rollover_test.go b/pkg/cronjob/es_rollover_test.go index eb0cdd02f..e54570cd0 100644 --- a/pkg/cronjob/es_rollover_test.go +++ b/pkg/cronjob/es_rollover_test.go @@ -5,6 +5,7 @@ import ( "time" batchv1 "k8s.io/api/batch/v1" + batchv1beta1 "k8s.io/api/batch/v1beta1" "github.com/jaegertracing/jaeger-operator/pkg/version" @@ -29,6 +30,34 @@ func TestCreateRollover(t *testing.T) { assert.Equal(t, 2, len(cj)) } +func TestCreateRolloverTypeMeta(t *testing.T) { + testData := []struct { + Name string + flag string + }{ + {Name: "Test batch/v1beta1", flag: v1.FlagCronJobsVersionBatchV1Beta1}, + {Name: "Test batch/v1", flag: v1.FlagCronJobsVersionBatchV1}, + } + for _, td := range testData { + if td.flag == v1.FlagCronJobsVersionBatchV1Beta1 { + viper.SetDefault(v1.FlagCronJobsVersion, v1.FlagCronJobsVersionBatchV1Beta1) + } + cjs := CreateRollover(v1.NewJaeger(types.NamespacedName{Name: "pikachu"})) + assert.Equal(t, 2, len(cjs)) + for _, cj := range cjs { + switch tt := cj.(type) { + case *batchv1beta1.CronJob: + assert.Equal(t, tt.Kind, "CronJob") + assert.Equal(t, tt.APIVersion, v1.FlagCronJobsVersionBatchV1Beta1) + viper.SetDefault(v1.FlagCronJobsVersion, v1.FlagCronJobsVersionBatchV1) + case *batchv1.CronJob: + assert.Equal(t, tt.Kind, "CronJob") + assert.Equal(t, tt.APIVersion, v1.FlagCronJobsVersionBatchV1) + } + } + } +} + func TestRollover(t *testing.T) { j := v1.NewJaeger(types.NamespacedName{Name: "eevee"}) j.Namespace = "kitchen" diff --git a/pkg/cronjob/spark_dependencies.go b/pkg/cronjob/spark_dependencies.go index 08c2dbdf0..b1e7fe478 100644 --- a/pkg/cronjob/spark_dependencies.go +++ b/pkg/cronjob/spark_dependencies.go @@ -116,6 +116,10 @@ func CreateSparkDependencies(jaeger *v1.Jaeger) runtime.Object { cronjobsVersion := viper.GetString(v1.FlagCronJobsVersion) if cronjobsVersion == v1.FlagCronJobsVersionBatchV1Beta1 { cj := &batchv1beta1.CronJob{ + TypeMeta: metav1.TypeMeta{ + Kind: "CronJob", + APIVersion: cronjobsVersion, + }, ObjectMeta: objectMeta, Spec: batchv1beta1.CronJobSpec{ ConcurrencyPolicy: batchv1beta1.ForbidConcurrent, @@ -130,6 +134,10 @@ func CreateSparkDependencies(jaeger *v1.Jaeger) runtime.Object { o = cj } else { cj := &batchv1.CronJob{ + TypeMeta: metav1.TypeMeta{ + Kind: "CronJob", + APIVersion: cronjobsVersion, + }, ObjectMeta: objectMeta, Spec: batchv1.CronJobSpec{ ConcurrencyPolicy: batchv1.ForbidConcurrent, diff --git a/pkg/cronjob/spark_dependencies_test.go b/pkg/cronjob/spark_dependencies_test.go index 825600723..5bdfc74b0 100644 --- a/pkg/cronjob/spark_dependencies_test.go +++ b/pkg/cronjob/spark_dependencies_test.go @@ -4,6 +4,7 @@ import ( "testing" batchv1 "k8s.io/api/batch/v1" + batchv1beta1 "k8s.io/api/batch/v1beta1" "github.com/spf13/viper" "github.com/stretchr/testify/assert" @@ -134,6 +135,32 @@ func TestCreate(t *testing.T) { assert.NotNil(t, CreateSparkDependencies(&v1.Jaeger{Spec: v1.JaegerSpec{Storage: v1.JaegerStorageSpec{Type: v1.JaegerESStorage}}})) } +func TestCreateTypeMeta(t *testing.T) { + testData := []struct { + Name string + flag string + }{ + {Name: "Test batch/v1beta1", flag: v1.FlagCronJobsVersionBatchV1Beta1}, + {Name: "Test batch/v1", flag: v1.FlagCronJobsVersionBatchV1}, + } + for _, td := range testData { + if td.flag == v1.FlagCronJobsVersionBatchV1Beta1 { + viper.SetDefault(v1.FlagCronJobsVersion, v1.FlagCronJobsVersionBatchV1Beta1) + } + sd := CreateSparkDependencies(&v1.Jaeger{Spec: v1.JaegerSpec{Storage: v1.JaegerStorageSpec{Type: v1.JaegerESStorage}}}) + assert.NotNil(t, sd) + switch tt := sd.(type) { + case *batchv1beta1.CronJob: + assert.Equal(t, tt.Kind, "CronJob") + assert.Equal(t, tt.APIVersion, v1.FlagCronJobsVersionBatchV1Beta1) + viper.SetDefault(v1.FlagCronJobsVersion, v1.FlagCronJobsVersionBatchV1) + case *batchv1.CronJob: + assert.Equal(t, tt.Kind, "CronJob") + assert.Equal(t, tt.APIVersion, v1.FlagCronJobsVersionBatchV1) + } + } +} + func TestSparkDependenciesSecrets(t *testing.T) { jaeger := v1.NewJaeger(types.NamespacedName{Name: "TestSparkDependenciesSecrets"}) secret := "mysecret" diff --git a/pkg/deployment/autoscale.go b/pkg/deployment/autoscale.go index 301532cdf..d335af514 100644 --- a/pkg/deployment/autoscale.go +++ b/pkg/deployment/autoscale.go @@ -69,6 +69,10 @@ func autoscalers(component component) []runtime.Object { if autoscalingVersion == v1.FlagAutoscalingVersionV2Beta2 { autoscaler := autoscalingv2beta2.HorizontalPodAutoscaler{ + TypeMeta: metav1.TypeMeta{ + Kind: "HorizontalPodAutoscaler", + APIVersion: autoscalingVersion, + }, ObjectMeta: metav1.ObjectMeta{ Name: component.name(), Namespace: jaeger.Namespace, @@ -119,6 +123,10 @@ func autoscalers(component component) []runtime.Object { result = append(result, &autoscaler) } else { autoscaler := autoscalingv2.HorizontalPodAutoscaler{ + TypeMeta: metav1.TypeMeta{ + Kind: "HorizontalPodAutoscaler", + APIVersion: autoscalingVersion, + }, ObjectMeta: metav1.ObjectMeta{ Name: component.name(), Namespace: jaeger.Namespace,