Skip to content

Commit fab35fb

Browse files
committed
Update context
1 parent 819dfd3 commit fab35fb

File tree

2 files changed

+60
-47
lines changed

2 files changed

+60
-47
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
Copyright 2020 The cert-manager Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package test
18+
19+
import (
20+
"context"
21+
22+
kubeinformers "k8s.io/client-go/informers"
23+
"k8s.io/client-go/kubernetes"
24+
"k8s.io/client-go/rest"
25+
"k8s.io/client-go/tools/record"
26+
"k8s.io/utils/clock"
27+
28+
clientset "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned"
29+
informers "github.com/cert-manager/cert-manager/pkg/client/informers/externalversions"
30+
)
31+
32+
// Context contains various types that are used by controller implementations.
33+
type Context struct {
34+
// RootContext is the root context for the controller
35+
RootContext context.Context
36+
37+
StopCh <-chan struct{}
38+
// RESTConfig is the loaded Kubernetes apiserver rest client configuration
39+
RESTConfig *rest.Config
40+
Client kubernetes.Interface
41+
CMClient clientset.Interface
42+
43+
Recorder record.EventRecorder
44+
45+
KubeSharedInformerFactory kubeinformers.SharedInformerFactory
46+
SharedInformerFactory informers.SharedInformerFactory
47+
48+
ContextOptions
49+
}
50+
51+
// ContextOptions are static Controller Context options.
52+
type ContextOptions struct {
53+
Kubeconfig string
54+
Namespace string
55+
Clock clock.Clock
56+
}

internal/certmanager/test_files/context_builder.go

Lines changed: 4 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -24,26 +24,20 @@ import (
2424
"testing"
2525
"time"
2626

27-
networkingv1 "k8s.io/api/networking/v1"
2827
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2928
"k8s.io/apimachinery/pkg/runtime"
3029
utilerrors "k8s.io/apimachinery/pkg/util/errors"
3130
kubeinformers "k8s.io/client-go/informers"
3231
kubefake "k8s.io/client-go/kubernetes/fake"
3332
"k8s.io/client-go/rest"
3433
coretesting "k8s.io/client-go/testing"
35-
"k8s.io/client-go/tools/cache"
3634
"k8s.io/utils/clock"
3735
fakeclock "k8s.io/utils/clock/testing"
3836

3937
apiutil "github.com/cert-manager/cert-manager/pkg/api/util"
4038
cmfake "github.com/cert-manager/cert-manager/pkg/client/clientset/versioned/fake"
4139
informers "github.com/cert-manager/cert-manager/pkg/client/informers/externalversions"
42-
"github.com/cert-manager/cert-manager/pkg/controller"
43-
"github.com/cert-manager/cert-manager/pkg/logs"
44-
"github.com/cert-manager/cert-manager/pkg/metrics"
4540
"github.com/cert-manager/cert-manager/pkg/util"
46-
discoveryfake "github.com/cert-manager/cert-manager/test/unit/discovery"
4741
k8s_nginx "github.com/nginxinc/kubernetes-ingress/pkg/client/clientset/versioned"
4842
vsfake "github.com/nginxinc/kubernetes-ingress/pkg/client/clientset/versioned/fake"
4943
vsinformers "github.com/nginxinc/kubernetes-ingress/pkg/client/informers/externalversions"
@@ -77,11 +71,10 @@ type Builder struct {
7771
// test).
7872
CheckFn func(*Builder, ...interface{})
7973

80-
stopCh chan struct{}
81-
requiredReactors map[string]bool
82-
additionalSyncFuncs []cache.InformerSynced
74+
stopCh chan struct{}
75+
requiredReactors map[string]bool
8376

84-
*controller.Context
77+
*Context
8578
}
8679

8780
func (b *Builder) generateNameReactor(action coretesting.Action) (handled bool, ret runtime.Object, err error) {
@@ -100,7 +93,7 @@ const informerResyncPeriod = time.Millisecond * 10
10093
// for any unset fields.
10194
func (b *Builder) Init() {
10295
if b.Context == nil {
103-
b.Context = &controller.Context{
96+
b.Context = &Context{
10497
RootContext: context.Background(),
10598
}
10699
}
@@ -111,29 +104,6 @@ func (b *Builder) Init() {
111104
b.Client = kubefake.NewSimpleClientset(b.KubeObjects...)
112105
b.CMClient = cmfake.NewSimpleClientset(b.CertManagerObjects...)
113106
b.VSClient = vsfake.NewSimpleClientset(b.VSObjects...)
114-
b.DiscoveryClient = discoveryfake.NewDiscovery().WithServerResourcesForGroupVersion(func(groupVersion string) (*metav1.APIResourceList, error) {
115-
if groupVersion == networkingv1.SchemeGroupVersion.String() {
116-
return &metav1.APIResourceList{
117-
TypeMeta: metav1.TypeMeta{},
118-
GroupVersion: networkingv1.SchemeGroupVersion.String(),
119-
APIResources: []metav1.APIResource{
120-
{
121-
Name: "ingresses",
122-
SingularName: "Ingress",
123-
Namespaced: true,
124-
Group: networkingv1.GroupName,
125-
Version: networkingv1.SchemeGroupVersion.Version,
126-
Kind: networkingv1.SchemeGroupVersion.WithKind("Ingress").Kind,
127-
Verbs: metav1.Verbs{"get", "list", "watch", "create", "update", "patch", "delete", "deletecollection"},
128-
ShortNames: []string{"ing"},
129-
Categories: []string{"all"},
130-
StorageVersionHash: "testing",
131-
},
132-
},
133-
}, nil
134-
}
135-
return &metav1.APIResourceList{}, nil
136-
})
137107
b.Recorder = new(FakeRecorder)
138108
b.FakeKubeClient().PrependReactor("create", "*", b.generateNameReactor)
139109
b.FakeCMClient().PrependReactor("create", "*", b.generateNameReactor)
@@ -142,7 +112,6 @@ func (b *Builder) Init() {
142112
b.SharedInformerFactory = informers.NewSharedInformerFactory(b.CMClient, informerResyncPeriod)
143113
b.VsSharedInformerFactory = vsinformers.NewSharedInformerFactory(b.VSClient, informerResyncPeriod)
144114
b.stopCh = make(chan struct{})
145-
b.Metrics = metrics.New(logs.Log, clock.RealClock{})
146115

147116
// set the Clock on the context
148117
if b.Clock == nil {
@@ -328,21 +297,9 @@ func (b *Builder) Sync() {
328297
if err := mustAllSync(b.VsSharedInformerFactory.WaitForCacheSync(b.stopCh)); err != nil {
329298
panic("Error waiting for VSShared to sync: " + err.Error())
330299
}
331-
if b.additionalSyncFuncs != nil {
332-
cache.WaitForCacheSync(b.stopCh, b.additionalSyncFuncs...)
333-
}
334300
time.Sleep(informerResyncPeriod * 3)
335301
}
336302

337-
// RegisterAdditionalSyncFuncs registers an additional InformerSynced function
338-
// with the builder.
339-
// When the Sync method is called, the builder will also wait for the given
340-
// listers to be synced as well as the listers that were registered with the
341-
// informer factories that the builder provides.
342-
func (b *Builder) RegisterAdditionalSyncFuncs(fns ...cache.InformerSynced) {
343-
b.additionalSyncFuncs = append(b.additionalSyncFuncs, fns...)
344-
}
345-
346303
func (b *Builder) Events() []string {
347304
if e, ok := b.Recorder.(*FakeRecorder); ok {
348305
return e.Events

0 commit comments

Comments
 (0)