Skip to content

Commit 4cd1d8f

Browse files
authored
Merge pull request #331 from yuwenma/no-kubectl
feat: avoid importing kubectl deps when using ApplysetApplier
2 parents c3c2bb8 + dd60946 commit 4cd1d8f

File tree

12 files changed

+78
-36
lines changed

12 files changed

+78
-36
lines changed

dev/test

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,12 @@ pushd applylib
3535
CGO_ENABLED=0 go test -count=1 -v ./...
3636
popd
3737

38+
# default, test direct kubectl applier
3839
CGO_ENABLED=0 go test -count=1 -v ./...
40+
# test applyset applier, without kubectl direct and exec dependencies
41+
CGO_ENABLED=0 go test -tags without_exec_applier,without_direct_applier -count=1 -v ./...
42+
# test exec kubectl applier, without direct_applier dependencies
43+
CGO_ENABLED=0 go test -tags without_direct_applier -count=1 -v ./...
3944

4045
pushd examples/guestbook-operator
4146
CGO_ENABLED=0 go test -count=1 -v ./...

pkg/patterns/declarative/metrics_test.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -543,9 +543,7 @@ func TestAddIfNotPresent(t *testing.T) {
543543
t.Fatalf("failed to get restmapping for parent: %v", err)
544544
}
545545
options.ParentRef = applyset.NewParentRef(parent, "kdp-test", "default", restmapping)
546-
applier := applier.NewApplySetApplier(
547-
metav1.PatchOptions{FieldManager: "kdp-test"}, metav1.DeleteOptions{}, applier.ApplysetOptions{})
548-
546+
applier := applier.DefaultApplier
549547
if err := applier.Apply(ctx, options); err != nil {
550548
t.Fatalf("failed to apply objects: %v", err)
551549
}

pkg/patterns/declarative/pkg/applier/direct.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
//go:build !without_exec_applier || !without_direct_applier
2+
// +build !without_exec_applier !without_direct_applier
3+
14
package applier
25

36
import (
@@ -6,8 +9,6 @@ import (
69
"os"
710
"strings"
811

9-
"k8s.io/kubectl/pkg/util/prune"
10-
1112
"k8s.io/apimachinery/pkg/api/meta"
1213
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1314
utilerrors "k8s.io/apimachinery/pkg/util/errors"
@@ -20,6 +21,7 @@ import (
2021
"k8s.io/kubectl/pkg/cmd/apply"
2122
cmdDelete "k8s.io/kubectl/pkg/cmd/delete"
2223
cmdutil "k8s.io/kubectl/pkg/cmd/util"
24+
"k8s.io/kubectl/pkg/util/prune"
2325
"sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/declarative/pkg/manifest"
2426
)
2527

pkg/patterns/declarative/pkg/applier/direct_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
//go:build !without_exec_applier || !without_direct_applier
2+
// +build !without_exec_applier !without_direct_applier
3+
14
/*
25
Copyright 2022 The Kubernetes Authors.
36

pkg/patterns/declarative/pkg/applier/exec.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
//go:build !without_exec_applier
2+
// +build !without_exec_applier
3+
14
/*
25
Copyright 2018 The Kubernetes Authors.
36

pkg/patterns/declarative/pkg/applier/exec_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
//go:build !without_exec_applier
2+
// +build !without_exec_applier
3+
14
/*
25
Copyright 2019 The Kubernetes Authors.
36
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
//go:build !without_exec_applier || !without_direct_applier
2+
// +build !without_exec_applier !without_direct_applier
3+
4+
package applier
5+
6+
var DefaultApplier = NewDirectApplier()
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//go:build without_exec_applier && without_direct_applier
2+
// +build without_exec_applier,without_direct_applier
3+
4+
package applier
5+
6+
import (
7+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
8+
)
9+
10+
var DefaultApplier = NewApplySetApplier(metav1.PatchOptions{}, metav1.DeleteOptions{}, ApplysetOptions{})

pkg/patterns/declarative/reconciler.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ func (e *ErrorResult) Error() string {
9595
}
9696

9797
// For mocking
98-
var defaultApplier = applier.NewDirectApplier()
98+
var defaultApplier = applier.DefaultApplier
9999

100100
func (r *Reconciler) Init(mgr manager.Manager, prototype DeclarativeObject, opts ...ReconcilerOption) error {
101101
r.prototype = prototype

pkg/test/testreconciler/simpletest/controller_test.go

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,9 @@ import (
44
"context"
55
"net/http"
66
"path/filepath"
7-
"testing"
87
"time"
98

109
"k8s.io/apimachinery/pkg/api/meta"
11-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1210
"k8s.io/apimachinery/pkg/runtime"
1311
"k8s.io/apimachinery/pkg/runtime/schema"
1412
"k8s.io/client-go/rest"
@@ -19,7 +17,6 @@ import (
1917

2018
"sigs.k8s.io/kubebuilder-declarative-pattern/mockkubeapiserver"
2119
"sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/addon/pkg/loaders"
22-
"sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/addon/pkg/status"
2320
"sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/declarative"
2421
"sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/declarative/pkg/applier"
2522
"sigs.k8s.io/kubebuilder-declarative-pattern/pkg/test/httprecorder"
@@ -28,33 +25,6 @@ import (
2825
api "sigs.k8s.io/kubebuilder-declarative-pattern/pkg/test/testreconciler/simpletest/v1alpha1"
2926
)
3027

31-
func TestSimpleReconciler(t *testing.T) {
32-
appliers := []struct {
33-
Key string
34-
Applier applier.Applier
35-
Status declarative.Status
36-
}{
37-
{
38-
Key: "direct",
39-
Applier: applier.NewDirectApplier(),
40-
Status: status.NewBasic(nil),
41-
},
42-
{
43-
Key: "ssa",
44-
Applier: applier.NewApplySetApplier(
45-
metav1.PatchOptions{FieldManager: "kdp-test"}, metav1.DeleteOptions{}, applier.ApplysetOptions{}),
46-
Status: status.NewKstatusCheck(nil, nil),
47-
},
48-
}
49-
for _, applier := range appliers {
50-
t.Run(applier.Key, func(t *testing.T) {
51-
testharness.RunGoldenTests(t, "testdata/reconcile/"+applier.Key+"/", func(h *testharness.Harness, testdir string) {
52-
testSimpleReconciler(h, testdir, applier.Applier, applier.Status)
53-
})
54-
})
55-
}
56-
}
57-
5828
func testSimpleReconciler(h *testharness.Harness, testdir string, applier applier.Applier, status declarative.Status) {
5929
ctx := context.Background()
6030

0 commit comments

Comments
 (0)