Skip to content

Commit

Permalink
refactor: move webhook interface validation to test file (#2795)
Browse files Browse the repository at this point in the history
Moved the webhook interface validation code from `jaeger_webhook.go` to `jaeger_webhook_test.go` to ensure the Jaeger structure still fulfills the webhook interfaces. This change allows external projects to import the `jaeger-operator/apis/v1` package with `sigs.k8s.io/controller-runtime` library version v0.20.0, as the deprecated webhook interfaces were removed in this version.

Signed-off-by: Serge Catudal <[email protected]>
  • Loading branch information
secat authored Jan 26, 2025
1 parent 77c2ee4 commit 7a6c0b7
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 12 deletions.
5 changes: 0 additions & 5 deletions apis/v1/jaeger_webhook.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import (
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
logf "sigs.k8s.io/controller-runtime/pkg/log"
"sigs.k8s.io/controller-runtime/pkg/webhook"
"sigs.k8s.io/controller-runtime/pkg/webhook/admission"
)

Expand All @@ -36,8 +35,6 @@ func (j *Jaeger) SetupWebhookWithManager(mgr ctrl.Manager) error {

//+kubebuilder:webhook:path=/mutate-jaegertracing-io-v1-jaeger,mutating=true,failurePolicy=fail,sideEffects=None,groups=jaegertracing.io,resources=jaegers,verbs=create;update,versions=v1,name=mjaeger.kb.io,admissionReviewVersions={v1}

var _ webhook.Defaulter = &Jaeger{}

func (j *Jaeger) objsWithOptions() []*Options {
return []*Options{
&j.Spec.AllInOne.Options, &j.Spec.Query.Options, &j.Spec.Collector.Options,
Expand Down Expand Up @@ -85,8 +82,6 @@ func (j *Jaeger) Default() {
// TODO(user): change verbs to "verbs=create;update;delete" if you want to enable deletion validation.
//+kubebuilder:webhook:path=/validate-jaegertracing-io-v1-jaeger,mutating=false,failurePolicy=fail,sideEffects=None,groups=jaegertracing.io,resources=jaegers,verbs=create;update,versions=v1,name=vjaeger.kb.io,admissionReviewVersions={v1}

var _ webhook.Validator = &Jaeger{}

// ValidateCreate implements webhook.Validator so a webhook will be registered for the type
func (j *Jaeger) ValidateCreate() (admission.Warnings, error) {
jaegerlog.Info("validate create", "name", j.Name)
Expand Down
19 changes: 12 additions & 7 deletions apis/v1/jaeger_webhook_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,21 @@ import (
"fmt"
"testing"

"github.com/google/go-cmp/cmp"
esv1 "github.com/openshift/elasticsearch-operator/apis/logging/v1"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/kubernetes/scheme"
"sigs.k8s.io/controller-runtime/pkg/client/fake"
"sigs.k8s.io/controller-runtime/pkg/webhook"
)

"github.com/google/go-cmp/cmp"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
var (
_ webhook.Defaulter = &Jaeger{}
_ webhook.Validator = &Jaeger{}
)

func TestDefault(t *testing.T) {
Expand Down Expand Up @@ -166,8 +171,8 @@ func TestDefault(t *testing.T) {

for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
esv1.AddToScheme(scheme.Scheme)
AddToScheme(scheme.Scheme)
require.NoError(t, esv1.AddToScheme(scheme.Scheme))
require.NoError(t, AddToScheme(scheme.Scheme))
fakeCl := fake.NewClientBuilder().WithRuntimeObjects(test.objs...).Build()
cl = fakeCl

Expand Down Expand Up @@ -273,8 +278,8 @@ func TestValidate(t *testing.T) {

for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
esv1.AddToScheme(scheme.Scheme)
AddToScheme(scheme.Scheme)
require.NoError(t, esv1.AddToScheme(scheme.Scheme))
require.NoError(t, AddToScheme(scheme.Scheme))
fakeCl := fake.NewClientBuilder().WithRuntimeObjects(test.objsToCreate...).Build()
cl = fakeCl

Expand Down

0 comments on commit 7a6c0b7

Please sign in to comment.