From f8c1af16667cccd690894f2887437cf1cab346e3 Mon Sep 17 00:00:00 2001 From: Serge Catudal Date: Fri, 21 Sep 2018 09:04:15 -0400 Subject: [PATCH] Add query ingress enable switch (#36) * Add query ingress enable switch Signed-off-by: Serge Catudal * Fix format for query tests Signed-off-by: Serge Catudal * Rename the Ingress Spec structure to 'JaegerIngressSpec' Signed-off-by: Serge Catudal --- pkg/apis/io/v1alpha1/types.go | 12 ++++-- pkg/apis/io/v1alpha1/zz_generated.deepcopy.go | 22 +++++++++++ pkg/deployment/query.go | 8 +++- pkg/deployment/query_test.go | 39 +++++++++++++++++-- 4 files changed, 72 insertions(+), 9 deletions(-) diff --git a/pkg/apis/io/v1alpha1/types.go b/pkg/apis/io/v1alpha1/types.go index 8635d91df..dce0e3c6a 100644 --- a/pkg/apis/io/v1alpha1/types.go +++ b/pkg/apis/io/v1alpha1/types.go @@ -40,9 +40,15 @@ type JaegerStatus struct { // JaegerQuerySpec defines the options to be used when deploying the query type JaegerQuerySpec struct { - Size int `json:"size"` - Image string `json:"image"` - Options Options `json:"options"` + Ingress JaegerIngressSpec `json:"ingress"` + Size int `json:"size"` + Image string `json:"image"` + Options Options `json:"options"` +} + +// JaegerIngressSpec defines the options to be used when deploying the query ingress +type JaegerIngressSpec struct { + Enabled *bool `json:"enabled"` } // JaegerAllInOneSpec defines the options to be used when deploying the query diff --git a/pkg/apis/io/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/io/v1alpha1/zz_generated.deepcopy.go index 1fbb768db..6fa6b22bf 100644 --- a/pkg/apis/io/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/io/v1alpha1/zz_generated.deepcopy.go @@ -86,6 +86,27 @@ func (in *JaegerCollectorSpec) DeepCopy() *JaegerCollectorSpec { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *JaegerIngressSpec) DeepCopyInto(out *JaegerIngressSpec) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = new(bool) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new JaegerIngressSpec. +func (in *JaegerIngressSpec) DeepCopy() *JaegerIngressSpec { + if in == nil { + return nil + } + out := new(JaegerIngressSpec) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *JaegerList) DeepCopyInto(out *JaegerList) { *out = *in @@ -122,6 +143,7 @@ func (in *JaegerList) DeepCopyObject() runtime.Object { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *JaegerQuerySpec) DeepCopyInto(out *JaegerQuerySpec) { *out = *in + in.Ingress.DeepCopyInto(&out.Ingress) in.Options.DeepCopyInto(&out.Options) return } diff --git a/pkg/deployment/query.go b/pkg/deployment/query.go index c3d55e49a..8055ae67b 100644 --- a/pkg/deployment/query.go +++ b/pkg/deployment/query.go @@ -117,9 +117,13 @@ func (q *Query) Services() []*v1.Service { // Ingresses returns a list of ingress rules to be deployed along with the all-in-one deployment func (q *Query) Ingresses() []*v1beta1.Ingress { - return []*v1beta1.Ingress{ - ingress.NewQueryIngress(q.jaeger), + if q.jaeger.Spec.Query.Ingress.Enabled == nil || *q.jaeger.Spec.Query.Ingress.Enabled == true { + return []*v1beta1.Ingress{ + ingress.NewQueryIngress(q.jaeger), + } } + + return []*v1beta1.Ingress{} } func (q *Query) selector() map[string]string { diff --git a/pkg/deployment/query_test.go b/pkg/deployment/query_test.go index 3fda3606e..2c54b3fe6 100644 --- a/pkg/deployment/query_test.go +++ b/pkg/deployment/query_test.go @@ -62,8 +62,39 @@ func TestQueryServices(t *testing.T) { } func TestQueryIngresses(t *testing.T) { - query := NewQuery(v1alpha1.NewJaeger("TestQueryIngresses")) - svcs := query.Ingresses() - - assert.Len(t, svcs, 1) + newBool := func(value bool) *bool { + return &value + } + + subTestCases := []struct { + name string + ingressSpec v1alpha1.JaegerIngressSpec + expectedIngressesCount int + }{ + { + name: "IngressEnabledDefault", + ingressSpec: v1alpha1.JaegerIngressSpec{}, + expectedIngressesCount: 1, + }, + { + name: "IngressEnabledFalse", + ingressSpec: v1alpha1.JaegerIngressSpec{Enabled: newBool(false)}, + expectedIngressesCount: 0, + }, + { + name: "IngressEnabledTrue", + ingressSpec: v1alpha1.JaegerIngressSpec{Enabled: newBool(true)}, + expectedIngressesCount: 1, + }, + } + + for _, stc := range subTestCases { + t.Run(stc.name, func(t *testing.T) { + query := NewQuery(v1alpha1.NewJaeger("TestQueryIngresses")) + query.jaeger.Spec.Query.Ingress = stc.ingressSpec + ingresses := query.Ingresses() + + assert.Len(t, ingresses, stc.expectedIngressesCount) + }) + } }