1
16
17 package controller_test
18
19 import (
20 "context"
21 "os"
22
23 corev1 "k8s.io/api/core/v1"
24 "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
25 "k8s.io/apimachinery/pkg/runtime/schema"
26 "sigs.k8s.io/controller-runtime/pkg/controller"
27 "sigs.k8s.io/controller-runtime/pkg/handler"
28 logf "sigs.k8s.io/controller-runtime/pkg/log"
29 "sigs.k8s.io/controller-runtime/pkg/manager"
30 "sigs.k8s.io/controller-runtime/pkg/manager/signals"
31 "sigs.k8s.io/controller-runtime/pkg/reconcile"
32 "sigs.k8s.io/controller-runtime/pkg/source"
33 )
34
35 var (
36 mgr manager.Manager
37
38 log = logf.Log.WithName("controller-examples")
39 )
40
41
42
43 func ExampleNew() {
44 _, err := controller.New("pod-controller", mgr, controller.Options{
45 Reconciler: reconcile.Func(func(context.Context, reconcile.Request) (reconcile.Result, error) {
46
47 return reconcile.Result{}, nil
48 }),
49 })
50 if err != nil {
51 log.Error(err, "unable to create pod-controller")
52 os.Exit(1)
53 }
54 }
55
56
57 func ExampleController() {
58
59
60
61
62 c, err := controller.New("pod-controller", mgr, controller.Options{
63 Reconciler: reconcile.Func(func(context.Context, reconcile.Request) (reconcile.Result, error) {
64
65 return reconcile.Result{}, nil
66 }),
67 })
68 if err != nil {
69 log.Error(err, "unable to create pod-controller")
70 os.Exit(1)
71 }
72
73
74 err = c.Watch(source.Kind(mgr.GetCache(), &corev1.Pod{}, &handler.TypedEnqueueRequestForObject[*corev1.Pod]{}))
75 if err != nil {
76 log.Error(err, "unable to watch pods")
77 os.Exit(1)
78 }
79
80
81 if err := mgr.Start(signals.SetupSignalHandler()); err != nil {
82 log.Error(err, "unable to continue running manager")
83 os.Exit(1)
84 }
85 }
86
87
88 func ExampleController_unstructured() {
89
90
91
92
93 c, err := controller.New("pod-controller", mgr, controller.Options{
94 Reconciler: reconcile.Func(func(context.Context, reconcile.Request) (reconcile.Result, error) {
95
96 return reconcile.Result{}, nil
97 }),
98 })
99 if err != nil {
100 log.Error(err, "unable to create pod-controller")
101 os.Exit(1)
102 }
103
104 u := &unstructured.Unstructured{}
105 u.SetGroupVersionKind(schema.GroupVersionKind{
106 Kind: "Pod",
107 Group: "",
108 Version: "v1",
109 })
110
111 err = c.Watch(source.Kind(mgr.GetCache(), u, &handler.TypedEnqueueRequestForObject[*unstructured.Unstructured]{}))
112 if err != nil {
113 log.Error(err, "unable to watch pods")
114 os.Exit(1)
115 }
116
117
118 if err := mgr.Start(signals.SetupSignalHandler()); err != nil {
119 log.Error(err, "unable to continue running manager")
120 os.Exit(1)
121 }
122 }
123
124
125
126
127 func ExampleNewUnmanaged() {
128
129
130
131
132 c, err := controller.NewUnmanaged("pod-controller", mgr, controller.Options{
133 Reconciler: reconcile.Func(func(context.Context, reconcile.Request) (reconcile.Result, error) {
134 return reconcile.Result{}, nil
135 }),
136 })
137 if err != nil {
138 log.Error(err, "unable to create pod-controller")
139 os.Exit(1)
140 }
141
142 if err := c.Watch(source.Kind(mgr.GetCache(), &corev1.Pod{}, &handler.TypedEnqueueRequestForObject[*corev1.Pod]{})); err != nil {
143 log.Error(err, "unable to watch pods")
144 os.Exit(1)
145 }
146
147 ctx, cancel := context.WithCancel(context.Background())
148
149
150 go func() {
151
152
153
154 <-mgr.Elected()
155
156
157
158 if err := c.Start(ctx); err != nil {
159 log.Error(err, "cannot run experiment controller")
160 }
161 }()
162
163
164 cancel()
165 }
166
View as plain text