From 98deec94aae0424c64a1651b932bcf563b2789bd Mon Sep 17 00:00:00 2001 From: Gary Brown Date: Tue, 3 Sep 2019 13:02:38 +0100 Subject: [PATCH] Add common spec to dependencies (#637) Signed-off-by: Gary Brown --- pkg/account/const.go | 5 ++- pkg/apis/jaegertracing/v1/jaeger_types.go | 2 +- .../jaegertracing/v1/zz_generated.deepcopy.go | 2 +- pkg/cronjob/spark_dependencies.go | 29 +++++++++---- pkg/cronjob/spark_dependencies_test.go | 43 ++++++++++++++++++- 5 files changed, 68 insertions(+), 13 deletions(-) diff --git a/pkg/account/const.go b/pkg/account/const.go index ee5ce2f41..b62a407bc 100644 --- a/pkg/account/const.go +++ b/pkg/account/const.go @@ -16,6 +16,9 @@ const ( // AllInOneComponent represents the value for the Component type for Jaeger All-In-One AllInOneComponent Component = "all-in-one" - // AgentComponent epresents the value for the Component type for Jaeger Agent + // AgentComponent represents the value for the Component type for Jaeger Agent AgentComponent Component = "agent" + + // DependenciesComponent represents the value for the Component type for Jaeger Dependencies CronJob + DependenciesComponent Component = "dependencies" ) diff --git a/pkg/apis/jaegertracing/v1/jaeger_types.go b/pkg/apis/jaegertracing/v1/jaeger_types.go index b46e03b0f..41f4107f4 100644 --- a/pkg/apis/jaegertracing/v1/jaeger_types.go +++ b/pkg/apis/jaegertracing/v1/jaeger_types.go @@ -378,7 +378,7 @@ type JaegerDependenciesSpec struct { TTLSecondsAfterFinished *int32 `json:"ttlSecondsAfterFinished,omitempty"` // +optional - Resources v1.ResourceRequirements `json:"resources,omitempty"` + JaegerCommonSpec `json:",inline,omitempty"` } // JaegerEsIndexCleanerSpec holds the options related to es-index-cleaner diff --git a/pkg/apis/jaegertracing/v1/zz_generated.deepcopy.go b/pkg/apis/jaegertracing/v1/zz_generated.deepcopy.go index 535d8ee20..87f07261f 100644 --- a/pkg/apis/jaegertracing/v1/zz_generated.deepcopy.go +++ b/pkg/apis/jaegertracing/v1/zz_generated.deepcopy.go @@ -247,7 +247,7 @@ func (in *JaegerDependenciesSpec) DeepCopyInto(out *JaegerDependenciesSpec) { *out = new(int32) **out = **in } - in.Resources.DeepCopyInto(&out.Resources) + in.JaegerCommonSpec.DeepCopyInto(&out.JaegerCommonSpec) return } diff --git a/pkg/cronjob/spark_dependencies.go b/pkg/cronjob/spark_dependencies.go index 18c155ea5..c19ea053f 100644 --- a/pkg/cronjob/spark_dependencies.go +++ b/pkg/cronjob/spark_dependencies.go @@ -10,6 +10,7 @@ import ( corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "github.com/jaegertracing/jaeger-operator/pkg/account" v1 "github.com/jaegertracing/jaeger-operator/pkg/apis/jaegertracing/v1" "github.com/jaegertracing/jaeger-operator/pkg/storage" "github.com/jaegertracing/jaeger-operator/pkg/util" @@ -34,8 +35,17 @@ func CreateSparkDependencies(jaeger *v1.Jaeger) *batchv1beta1.CronJob { trueVar := true one := int32(1) name := fmt.Sprintf("%s-spark-dependencies", jaeger.Name) - resources := jaeger.Spec.Storage.Dependencies.Resources - util.MergeResources(&resources, jaeger.Spec.Resources) + + baseCommonSpec := v1.JaegerCommonSpec{ + Annotations: map[string]string{ + "prometheus.io/scrape": "false", + "sidecar.istio.io/inject": "false", + "linkerd.io/inject": "disabled", + }, + } + + commonSpec := util.Merge([]v1.JaegerCommonSpec{jaeger.Spec.Storage.Dependencies.JaegerCommonSpec, jaeger.Spec.JaegerCommonSpec, baseCommonSpec}) + return &batchv1beta1.CronJob{ ObjectMeta: metav1.ObjectMeta{ Name: name, @@ -72,17 +82,18 @@ func CreateSparkDependencies(jaeger *v1.Jaeger) *batchv1beta1.CronJob { Name: name, // let spark job use its default values Env: removeEmptyVars(envVars), - Resources: resources, + Resources: commonSpec.Resources, }, }, - RestartPolicy: corev1.RestartPolicyNever, + RestartPolicy: corev1.RestartPolicyNever, + Affinity: commonSpec.Affinity, + Tolerations: commonSpec.Tolerations, + SecurityContext: commonSpec.SecurityContext, + ServiceAccountName: account.JaegerServiceAccountFor(jaeger, account.DependenciesComponent), }, ObjectMeta: metav1.ObjectMeta{ - Annotations: map[string]string{ - "prometheus.io/scrape": "false", - "sidecar.istio.io/inject": "false", - "linkerd.io/inject": "disabled", - }, + Labels: commonSpec.Labels, + Annotations: commonSpec.Annotations, }, }, }, diff --git a/pkg/cronjob/spark_dependencies_test.go b/pkg/cronjob/spark_dependencies_test.go index 3614c607f..dd22c212e 100644 --- a/pkg/cronjob/spark_dependencies_test.go +++ b/pkg/cronjob/spark_dependencies_test.go @@ -6,6 +6,7 @@ import ( "github.com/stretchr/testify/assert" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" + "k8s.io/apimachinery/pkg/types" v1 "github.com/jaegertracing/jaeger-operator/pkg/apis/jaegertracing/v1" ) @@ -85,6 +86,44 @@ func TestSparkDependencies(t *testing.T) { assert.Equal(t, j.Namespace, cjob.Namespace) } +func TestDependenciesAnnotations(t *testing.T) { + jaeger := v1.NewJaeger(types.NamespacedName{Name: "TestDependenciesAnnotations"}) + jaeger.Spec.Annotations = map[string]string{ + "name": "operator", + "hello": "jaeger", + } + jaeger.Spec.Storage.Dependencies.Annotations = map[string]string{ + "hello": "world", // Override top level annotation + "prometheus.io/scrape": "false", // Override implicit value + } + + cjob := CreateSparkDependencies(jaeger) + + assert.Equal(t, "operator", cjob.Spec.JobTemplate.Spec.Template.Annotations["name"]) + assert.Equal(t, "false", cjob.Spec.JobTemplate.Spec.Template.Annotations["sidecar.istio.io/inject"]) + assert.Equal(t, "world", cjob.Spec.JobTemplate.Spec.Template.Annotations["hello"]) + assert.Equal(t, "false", cjob.Spec.JobTemplate.Spec.Template.Annotations["prometheus.io/scrape"]) + assert.Equal(t, "disabled", cjob.Spec.JobTemplate.Spec.Template.Annotations["linkerd.io/inject"]) +} + +func TestDependenciesLabels(t *testing.T) { + jaeger := v1.NewJaeger(types.NamespacedName{Name: "TestDependenciesLabels"}) + jaeger.Spec.Labels = map[string]string{ + "name": "operator", + "hello": "jaeger", + } + jaeger.Spec.Storage.Dependencies.Labels = map[string]string{ + "hello": "world", // Override top level label + "another": "false", + } + + cjob := CreateSparkDependencies(jaeger) + + assert.Equal(t, "operator", cjob.Spec.JobTemplate.Spec.Template.Labels["name"]) + assert.Equal(t, "world", cjob.Spec.JobTemplate.Spec.Template.Labels["hello"]) + assert.Equal(t, "false", cjob.Spec.JobTemplate.Spec.Template.Labels["another"]) +} + func TestSparkDependenciesResources(t *testing.T) { parentResources := corev1.ResourceRequirements{ @@ -131,7 +170,9 @@ func TestSparkDependenciesResources(t *testing.T) { Storage: v1.JaegerStorageSpec{ Type: "elasticsearch", Dependencies: v1.JaegerDependenciesSpec{ - Resources: dependencyResources, + JaegerCommonSpec: v1.JaegerCommonSpec{ + Resources: dependencyResources, + }, }, }, JaegerCommonSpec: v1.JaegerCommonSpec{