...
1 package ktest
2
3 import (
4 "fmt"
5
6 "k8s.io/apimachinery/pkg/runtime"
7 "sigs.k8s.io/controller-runtime/pkg/manager"
8
9 "edge-infra.dev/pkg/k8s/runtime/controller"
10 "edge-infra.dev/test/f2/x/ktest/envtest"
11 )
12
13
14 type options struct {
15 konfigkonnector bool
16 certmgr bool
17 skipNamespaceCreation bool
18 skipNamespaceDeletion bool
19 metricsAddress string
20 mgrCreator func(...controller.Option) (manager.Manager, error)
21 gracefulTimeout string
22 envtestOpts []envtest.Option
23 clientScheme *runtime.Scheme
24 }
25
26
27
28 type Option func(*options)
29
30
31
32
33 func SkipNamespaceCreation() Option {
34 return func(o *options) {
35 o.skipNamespaceCreation = true
36 }
37 }
38
39
40
41 func SkipNamespaceDeletion() Option {
42 return func(o *options) {
43 o.skipNamespaceDeletion = true
44 }
45 }
46
47
48
49 func WithKonfigKonnector() Option {
50 return func(o *options) {
51 o.konfigkonnector = true
52 }
53 }
54
55
56 func WithCertManager() Option {
57 return func(o *options) {
58 o.certmgr = true
59 }
60 }
61
62
63 func WithCtrlManager(fn func(...controller.Option) (manager.Manager, error)) Option {
64 return func(o *options) {
65 o.mgrCreator = fn
66 }
67 }
68
69
70
71
72
73
74
75 func WithGracefulTimeout(timeout string) Option {
76 return func(o *options) {
77 o.gracefulTimeout = timeout
78 }
79 }
80
81 func WithEnvtestOptions(opts ...envtest.Option) Option {
82 return func(o *options) {
83 o.envtestOpts = opts
84 }
85 }
86
87
88
89
90
91 func WithMetricsAddress(addr int) Option {
92 return func(o *options) {
93 o.metricsAddress = fmt.Sprintf(":%d", addr)
94 }
95 }
96
97
98
99
100
101 func WithScheme(scheme *runtime.Scheme) Option {
102 return func(o *options) {
103 o.clientScheme = scheme
104 }
105 }
106
107 func makeOptions(opts ...Option) *options {
108 options := &options{}
109 for _, o := range opts {
110 o(options)
111 }
112 return options
113 }
114
View as plain text