Skip to content

Commit 1cbf859

Browse files
authored
Merge pull request #127 from estroz/deps/c-r-v0.7.0
deps: bump to controller-runtime v0.7.0-alpha.5
2 parents 045672b + 730cbae commit 1cbf859

File tree

9 files changed

+298
-81
lines changed

9 files changed

+298
-81
lines changed

go.mod

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,23 @@ go 1.13
44

55
require (
66
github.com/blang/semver v3.5.0+incompatible
7-
github.com/evanphx/json-patch v4.5.0+incompatible
7+
github.com/evanphx/json-patch v4.9.0+incompatible
88
github.com/go-git/go-git/v5 v5.1.0
9+
github.com/go-logr/logr v0.2.1
910
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b
1011
github.com/pkg/errors v0.9.1
11-
github.com/prometheus/client_golang v1.0.0
12+
github.com/prometheus/client_golang v1.7.1
1213
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9
1314
golang.org/x/tools v0.0.0-20200714190737-9048b464a08d
1415
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543
15-
k8s.io/api v0.18.4
16-
k8s.io/apimachinery v0.18.4
17-
k8s.io/cli-runtime v0.18.4
18-
k8s.io/client-go v0.18.4
16+
k8s.io/api v0.19.2
17+
k8s.io/apimachinery v0.19.2
18+
k8s.io/cli-runtime v0.19.2
19+
k8s.io/client-go v0.19.2
1920
k8s.io/klog v1.0.0
20-
k8s.io/kubectl v0.18.4
21+
k8s.io/kubectl v0.19.2
2122
sigs.k8s.io/cli-utils v0.16.0
22-
sigs.k8s.io/controller-runtime v0.6.0
23+
sigs.k8s.io/controller-runtime v0.7.0-alpha.5
2324
sigs.k8s.io/kustomize/api v0.3.2
2425
sigs.k8s.io/yaml v1.2.0
2526
)

go.sum

Lines changed: 235 additions & 44 deletions
Large diffs are not rendered by default.

pkg/patterns/declarative/metrics.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package declarative
1818

1919
import (
20+
"context"
2021
"sync"
2122
"time"
2223

@@ -242,7 +243,8 @@ func (ot *ObjectTracker) addIfNotPresent(objects []*manifest.Object, defaultName
242243

243244
// addIfNotPresent is called at Reconcler.reconcileExists,
244245
// so Controller & Manager is already running
245-
ot.trackedGVK[gvk].start()
246+
ctx := context.TODO()
247+
ot.trackedGVK[gvk].start(ctx)
246248
}
247249

248250
return errors.NewAggregate(errs)
@@ -335,8 +337,8 @@ func (gvkt *gvkTracker) deleteMetricsIfNeeded(metricsDuration int) {
335337
}
336338
}
337339

338-
func (gvkt *gvkTracker) start() {
339-
gvkt.src.Start(gvkt.eventHandler, dummyQueue{}, gvkt.predicate)
340+
func (gvkt *gvkTracker) start(ctx context.Context) {
341+
gvkt.src.Start(ctx, gvkt.eventHandler, dummyQueue{}, gvkt.predicate)
340342
}
341343

342344
func newGVKTracker(mgr manager.Manager, obj *unstructured.Unstructured, namespaced bool) (gvkt *gvkTracker) {
@@ -532,7 +534,7 @@ type recordTrigger struct {
532534
}
533535

534536
func (rt recordTrigger) Create(ev event.CreateEvent, _ workqueue.RateLimitingInterface) {
535-
ns, name := ev.Meta.GetNamespace(), ev.Meta.GetName()
537+
ns, name := ev.Object.GetNamespace(), ev.Object.GetName()
536538

537539
if rt.namespaced {
538540
if len(ns) == 0 {
@@ -549,8 +551,8 @@ func (rt recordTrigger) Create(ev event.CreateEvent, _ workqueue.RateLimitingInt
549551

550552
func (rt recordTrigger) Update(ev event.UpdateEvent, _ workqueue.RateLimitingInterface) {
551553
var nsnp nsnPairs = make(map[string][]string)
552-
ons, oname := ev.MetaOld.GetNamespace(), ev.MetaOld.GetName()
553-
nns, nname := ev.MetaNew.GetNamespace(), ev.MetaNew.GetName()
554+
ons, oname := ev.ObjectOld.GetNamespace(), ev.ObjectOld.GetName()
555+
nns, nname := ev.ObjectNew.GetNamespace(), ev.ObjectNew.GetName()
554556

555557
if rt.namespaced {
556558
if len(ons) == 0 {
@@ -582,7 +584,7 @@ func (rt recordTrigger) Update(ev event.UpdateEvent, _ workqueue.RateLimitingInt
582584
}
583585

584586
func (rt recordTrigger) Delete(ev event.DeleteEvent, _ workqueue.RateLimitingInterface) {
585-
ns, name := ev.Meta.GetNamespace(), ev.Meta.GetName()
587+
ns, name := ev.Object.GetNamespace(), ev.Object.GetName()
586588

587589
if rt.namespaced {
588590
if len(ns) == 0 {

pkg/patterns/declarative/metrics_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package declarative
1818

1919
import (
2020
"bytes"
21+
"context"
2122
"errors"
2223
"os"
2324
"os/exec"
@@ -262,9 +263,9 @@ func TestAddIfNotPresent(t *testing.T) {
262263
t.Error(err)
263264
}
264265

265-
stopC := make(chan struct{})
266+
ctx := context.TODO()
266267
go func() {
267-
_ = mgr.GetCache().Start(stopC)
268+
_ = mgr.GetCache().Start(ctx)
268269
}()
269270

270271
// Set up kubectl command
@@ -557,7 +558,7 @@ func TestAddIfNotPresent(t *testing.T) {
557558
// Wait for reflector sees K8s object change in K8s API server & adds it to DeltaFIFO
558559
// then controller pops it and eventhandler updates metrics
559560
// If we ommit it, there is a chance call of testutil.CollectAndCompare is too fast & fails.
560-
_ = mgr.GetCache().WaitForCacheSync(stopC)
561+
_ = mgr.GetCache().WaitForCacheSync(ctx)
561562
time.Sleep(time.Second * 10)
562563

563564
// Check for metrics

pkg/patterns/declarative/pkg/watch/dynamic.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,11 @@ import (
2323

2424
"k8s.io/apimachinery/pkg/api/meta"
2525
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
26+
"k8s.io/apimachinery/pkg/runtime"
2627
"k8s.io/apimachinery/pkg/runtime/schema"
2728
"k8s.io/client-go/dynamic"
2829
"k8s.io/client-go/rest"
30+
"sigs.k8s.io/controller-runtime/pkg/client"
2931
"sigs.k8s.io/controller-runtime/pkg/client/apiutil"
3032
"sigs.k8s.io/controller-runtime/pkg/event"
3133
"sigs.k8s.io/controller-runtime/pkg/log"
@@ -86,6 +88,14 @@ func (dw *dynamicWatch) Add(trigger schema.GroupVersionKind, options metav1.List
8688
return nil
8789
}
8890

91+
var _ client.Object = clientObject{}
92+
93+
// clientObject is a concrete client.Object to pass to watch events.
94+
type clientObject struct {
95+
runtime.Object
96+
*metav1.ObjectMeta
97+
}
98+
8999
// A Watch will be closed when the pod loses connection to the API server.
90100
// If a Watch is opened with no ResourceVersion then we will recieve an 'ADDED'
91101
// event for all Watch objects[1]. This will result in 'overnotification'
@@ -109,7 +119,7 @@ func (dw *dynamicWatch) watchUntilClosed(client dynamic.ResourceInterface, trigg
109119

110120
for clientEvent := range events.ResultChan() {
111121
log.WithValues("type", clientEvent.Type).WithValues("kind", trigger.String()).Info("broadcasting event")
112-
dw.events <- event.GenericEvent{Object: clientEvent.Object, Meta: &target}
122+
dw.events <- event.GenericEvent{Object: clientObject{Object: clientEvent.Object, ObjectMeta: &target}}
113123
}
114124

115125
log.WithValues("kind", trigger.String()).WithValues("namespace", target.Namespace).WithValues("labels", options.LabelSelector).Info("watch closed")

pkg/patterns/declarative/reconciler.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,7 @@ func (r *Reconciler) Init(mgr manager.Manager, prototype DeclarativeObject, opts
122122
}
123123

124124
// +rbac:groups=apps,resources=deployments,verbs=get;list;watch;create;update;patch;delete
125-
func (r *Reconciler) Reconcile(request reconcile.Request) (result reconcile.Result, err error) {
126-
ctx := context.TODO()
125+
func (r *Reconciler) Reconcile(ctx context.Context, request reconcile.Request) (result reconcile.Result, err error) {
127126
log := log.Log
128127
defer r.collectMetrics(request, result, err)
129128

pkg/test/mocks/cache.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"context"
55

66
"k8s.io/apimachinery/pkg/api/errors"
7-
"k8s.io/apimachinery/pkg/runtime"
87
"k8s.io/apimachinery/pkg/runtime/schema"
98
toolscache "sigs.k8s.io/controller-runtime/pkg/cache"
109
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -13,30 +12,30 @@ import (
1312
type FakeCache struct {
1413
}
1514

16-
func (FakeCache) Get(ctx context.Context, key client.ObjectKey, obj runtime.Object) error {
15+
func (FakeCache) Get(ctx context.Context, key client.ObjectKey, obj client.Object) error {
1716
return errors.NewNotFound(schema.GroupResource{}, "")
1817
}
1918

20-
func (FakeCache) List(ctx context.Context, list runtime.Object, opts ...client.ListOption) error {
19+
func (FakeCache) List(ctx context.Context, list client.ObjectList, opts ...client.ListOption) error {
2120
panic("implement me")
2221
}
2322

24-
func (FakeCache) GetInformer(ctx context.Context, obj runtime.Object) (toolscache.Informer, error) {
23+
func (FakeCache) GetInformer(ctx context.Context, obj client.Object) (toolscache.Informer, error) {
2524
panic("implement me")
2625
}
2726

2827
func (FakeCache) GetInformerForKind(gctx context.Context, vk schema.GroupVersionKind) (toolscache.Informer, error) {
2928
panic("implement me")
3029
}
3130

32-
func (FakeCache) Start(stopCh <-chan struct{}) error {
31+
func (FakeCache) Start(ctx context.Context) error {
3332
panic("implement me")
3433
}
3534

36-
func (FakeCache) WaitForCacheSync(stop <-chan struct{}) bool {
35+
func (FakeCache) WaitForCacheSync(ctx context.Context) bool {
3736
panic("implement me")
3837
}
3938

40-
func (FakeCache) IndexField(ctx context.Context, obj runtime.Object, field string, extractValue client.IndexerFunc) error {
39+
func (FakeCache) IndexField(ctx context.Context, obj client.Object, field string, extractValue client.IndexerFunc) error {
4140
panic("implement me")
4241
}

pkg/test/mocks/client.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ func NewClient(clientScheme *runtime.Scheme) FakeClient {
3030
}
3131
}
3232

33-
func (f FakeClient) Get(ctx context.Context, key client.ObjectKey, out runtime.Object) error {
33+
func (f FakeClient) Get(ctx context.Context, key client.ObjectKey, out client.Object) error {
3434
gvr, err := getGVRFromObject(out, f.scheme)
3535
if err != nil {
3636
return err
@@ -54,11 +54,11 @@ func (f FakeClient) Get(ctx context.Context, key client.ObjectKey, out runtime.O
5454
return err
5555
}
5656

57-
func (FakeClient) List(ctx context.Context, list runtime.Object, opts ...client.ListOption) error {
57+
func (FakeClient) List(ctx context.Context, list client.ObjectList, opts ...client.ListOption) error {
5858
panic("not implemented")
5959
}
6060

61-
func (f FakeClient) Create(ctx context.Context, obj runtime.Object, opts ...client.CreateOption) error {
61+
func (f FakeClient) Create(ctx context.Context, obj client.Object, opts ...client.CreateOption) error {
6262
createOptions := &client.CreateOptions{}
6363
createOptions.ApplyOptions(opts)
6464

@@ -79,27 +79,35 @@ func (f FakeClient) Create(ctx context.Context, obj runtime.Object, opts ...clie
7979
return f.tracker.Create(gvr, obj, accessor.GetNamespace())
8080
}
8181

82-
func (FakeClient) Delete(ctx context.Context, obj runtime.Object, opts ...client.DeleteOption) error {
82+
func (FakeClient) Delete(ctx context.Context, obj client.Object, opts ...client.DeleteOption) error {
8383
return nil
8484
}
8585

86-
func (FakeClient) DeleteAllOf(ctx context.Context, obj runtime.Object, opts ...client.DeleteAllOfOption) error {
86+
func (FakeClient) DeleteAllOf(ctx context.Context, obj client.Object, opts ...client.DeleteAllOfOption) error {
8787
return nil
8888
}
8989

90-
func (FakeClient) Patch(ctx context.Context, obj runtime.Object, patch client.Patch, opts ...client.PatchOption) error {
90+
func (FakeClient) Patch(ctx context.Context, obj client.Object, patch client.Patch, opts ...client.PatchOption) error {
9191
return nil
9292
}
9393

94-
func (FakeClient) Update(ctx context.Context, obj runtime.Object, opts ...client.UpdateOption) error {
94+
func (FakeClient) Update(ctx context.Context, obj client.Object, opts ...client.UpdateOption) error {
9595
return nil
9696
}
9797

9898
func (FakeClient) Status() client.StatusWriter {
9999
panic("not implemented")
100100
}
101101

102-
func getGVRFromObject(obj runtime.Object, scheme *runtime.Scheme) (schema.GroupVersionResource, error) {
102+
func (FakeClient) RESTMapper() meta.RESTMapper {
103+
return nil
104+
}
105+
106+
func (FakeClient) Scheme() *runtime.Scheme {
107+
return scheme.Scheme
108+
}
109+
110+
func getGVRFromObject(obj client.Object, scheme *runtime.Scheme) (schema.GroupVersionResource, error) {
103111
gvk, err := apiutil.GVKForObject(obj, scheme)
104112
if err != nil {
105113
return schema.GroupVersionResource{}, err

pkg/test/mocks/manager.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@ limitations under the License.
1717
package mocks
1818

1919
import (
20+
"context"
2021
"net/http"
2122

23+
"github.com/go-logr/logr"
2224
"k8s.io/apimachinery/pkg/api/meta"
2325
"k8s.io/apimachinery/pkg/runtime"
2426
"k8s.io/client-go/rest"
@@ -57,7 +59,7 @@ func (Manager) SetFields(interface{}) error {
5759
panic("implement me")
5860
}
5961

60-
func (Manager) Start(<-chan struct{}) error {
62+
func (Manager) Start(context.Context) error {
6163
panic("implement me")
6264
}
6365

@@ -122,3 +124,7 @@ func (Manager) AddMetricsExtraHandler(path string, handler http.Handler) error {
122124
func (Manager) Elected() <-chan struct{} {
123125
panic("implement me")
124126
}
127+
128+
func (Manager) GetLogger() logr.Logger {
129+
panic("implement me")
130+
}

0 commit comments

Comments
 (0)