@@ -60,18 +60,14 @@ type BinocularsReconciler struct {
60
60
// For more details, check Reconcile and its Result here:
61
61
// - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.13.0/pkg/reconcile
62
62
func (r * BinocularsReconciler ) Reconcile (ctx context.Context , req ctrl.Request ) (ctrl.Result , error ) {
63
- logger := log .FromContext (ctx ).WithValues ("namespace" , req .Namespace , "name" , req .Name )
63
+ logger := log .FromContext (ctx ).WithValues ("kind" , "Binoculars" , "namespace" , req .Namespace , "name" , req .Name )
64
+
64
65
started := time .Now ()
65
- logger .Info ("Reconciling Binoculars object" )
66
66
67
- logger .Info ("Fetching Binoculars object from cache " )
67
+ logger .Info ("Reconciling Binoculars object" )
68
68
69
69
var binoculars installv1alpha1.Binoculars
70
- if err := r .Client .Get (ctx , req .NamespacedName , & binoculars ); err != nil {
71
- if k8serrors .IsNotFound (err ) {
72
- logger .Info ("Binoculars not found in cache, ending reconcile..." , "namespace" , req .Namespace , "name" , req .Name )
73
- return ctrl.Result {}, nil
74
- }
70
+ if miss , err := getObjectFromCache (ctx , r .Client , & binoculars , req .NamespacedName , logger ); err != nil || miss {
75
71
return ctrl.Result {}, err
76
72
}
77
73
@@ -87,41 +83,12 @@ func (r *BinocularsReconciler) Reconcile(ctx context.Context, req ctrl.Request)
87
83
return ctrl.Result {}, err
88
84
}
89
85
90
- deletionTimestamp := binoculars .ObjectMeta .DeletionTimestamp
91
- // examine DeletionTimestamp to determine if object is under deletion
92
- if deletionTimestamp .IsZero () {
93
- // The object is not being deleted, so if it does not have our finalizer,
94
- // then lets add the finalizer and update the object. This is equivalent
95
- // registering our finalizer.
96
- if ! controllerutil .ContainsFinalizer (& binoculars , operatorFinalizer ) {
97
- logger .Info ("Attaching finalizer to Binoculars object" , "finalizer" , operatorFinalizer )
98
- controllerutil .AddFinalizer (& binoculars , operatorFinalizer )
99
- if err := r .Update (ctx , & binoculars ); err != nil {
100
- return ctrl.Result {}, err
101
- }
102
- }
103
- } else {
104
- logger .Info ("Binoculars object is being deleted" , "finalizer" , operatorFinalizer )
105
- // The object is being deleted
106
- if controllerutil .ContainsFinalizer (& binoculars , operatorFinalizer ) {
107
- // our finalizer is present, so lets handle any external dependency
108
- logger .Info ("Running cleanup function for Binoculars object" , "finalizer" , operatorFinalizer )
109
- if err := r .deleteExternalResources (ctx , components ); err != nil {
110
- // if fail to delete the external dependency here, return with error
111
- // so that it can be retried
112
- return ctrl.Result {}, err
113
- }
114
-
115
- // remove our finalizer from the list and update it.
116
- logger .Info ("Removing finalizer from Binoculars object" , "finalizer" , operatorFinalizer )
117
- controllerutil .RemoveFinalizer (& binoculars , operatorFinalizer )
118
- if err := r .Update (ctx , & binoculars ); err != nil {
119
- return ctrl.Result {}, err
120
- }
121
- }
122
-
123
- // Stop reconciliation as the item is being deleted
124
- return ctrl.Result {}, nil
86
+ cleanupF := func (ctx context.Context ) error {
87
+ return r .deleteExternalResources (ctx , components )
88
+ }
89
+ finish , err := checkAndHandleResourceDeletion (ctx , r .Client , & binoculars , operatorFinalizer , cleanupF , logger )
90
+ if err != nil || finish {
91
+ return ctrl.Result {}, err
125
92
}
126
93
127
94
componentsCopy := components .DeepCopy ()
@@ -131,58 +98,40 @@ func (r *BinocularsReconciler) Reconcile(ctx context.Context, req ctrl.Request)
131
98
return nil
132
99
}
133
100
134
- if components .ServiceAccount != nil {
135
- logger .Info ("Upserting Binoculars ServiceAccount object" )
136
- if _ , err := controllerutil .CreateOrUpdate (ctx , r .Client , components .ServiceAccount , mutateFn ); err != nil {
137
- return ctrl.Result {}, err
138
- }
101
+ if err := upsertObject (ctx , r .Client , components .ServiceAccount , binoculars .Kind , mutateFn , logger ); err != nil {
102
+ return ctrl.Result {}, err
139
103
}
140
104
141
- if components .ClusterRole != nil {
142
- logger .Info ("Upserting Binoculars ClusterRole object" )
143
- if _ , err := controllerutil .CreateOrUpdate (ctx , r .Client , components .ClusterRole , mutateFn ); err != nil {
144
- return ctrl.Result {}, err
145
- }
105
+ if err := upsertObject (ctx , r .Client , components .ClusterRole , binoculars .Kind , mutateFn , logger ); err != nil {
106
+ return ctrl.Result {}, err
146
107
}
147
108
148
- if components .ClusterRoleBindings != nil && len (components .ClusterRoleBindings ) > 0 {
149
- logger .Info ("Upserting Binoculars ClusterRoleBinding object" )
150
- if _ , err := controllerutil .CreateOrUpdate (ctx , r .Client , components .ClusterRoleBindings [0 ], mutateFn ); err != nil {
151
- return ctrl.Result {}, err
109
+ if len (components .ClusterRoleBindings ) > 0 {
110
+ for _ , crb := range components .ClusterRoleBindings {
111
+ if err := upsertObject (ctx , r .Client , crb , binoculars .Kind , mutateFn , logger ); err != nil {
112
+ return ctrl.Result {}, err
113
+ }
152
114
}
153
115
}
154
116
155
- if components .Secret != nil {
156
- logger .Info ("Upserting Binoculars Secret object" )
157
- if _ , err := controllerutil .CreateOrUpdate (ctx , r .Client , components .Secret , mutateFn ); err != nil {
158
- return ctrl.Result {}, err
159
- }
117
+ if err := upsertObject (ctx , r .Client , components .Secret , binoculars .Kind , mutateFn , logger ); err != nil {
118
+ return ctrl.Result {}, err
160
119
}
161
120
162
- if components .Deployment != nil {
163
- logger .Info ("Upserting Binoculars Deployment object" )
164
- if _ , err := controllerutil .CreateOrUpdate (ctx , r .Client , components .Deployment , mutateFn ); err != nil {
165
- return ctrl.Result {}, err
166
- }
121
+ if err := upsertObject (ctx , r .Client , components .Deployment , binoculars .Kind , mutateFn , logger ); err != nil {
122
+ return ctrl.Result {}, err
167
123
}
168
124
169
- if components .Service != nil {
170
- logger .Info ("Upserting Binoculars Service object" )
171
- if _ , err := controllerutil .CreateOrUpdate (ctx , r .Client , components .Service , mutateFn ); err != nil {
172
- return ctrl.Result {}, err
173
- }
125
+ if err := upsertObject (ctx , r .Client , components .Service , binoculars .Kind , mutateFn , logger ); err != nil {
126
+ return ctrl.Result {}, err
174
127
}
175
- if components .IngressGrpc != nil {
176
- logger .Info ("Upserting GRPC Ingress object" )
177
- if _ , err := controllerutil .CreateOrUpdate (ctx , r .Client , components .IngressGrpc , mutateFn ); err != nil {
178
- return ctrl.Result {}, err
179
- }
128
+
129
+ if err := upsertObject (ctx , r .Client , components .IngressGrpc , binoculars .Kind , mutateFn , logger ); err != nil {
130
+ return ctrl.Result {}, err
180
131
}
181
- if components .IngressHttp != nil {
182
- logger .Info ("Upserting REST Ingress object" )
183
- if _ , err := controllerutil .CreateOrUpdate (ctx , r .Client , components .IngressHttp , mutateFn ); err != nil {
184
- return ctrl.Result {}, err
185
- }
132
+
133
+ if err := upsertObject (ctx , r .Client , components .IngressHttp , binoculars .Kind , mutateFn , logger ); err != nil {
134
+ return ctrl.Result {}, err
186
135
}
187
136
188
137
logger .Info ("Successfully reconciled Binoculars object" , "durationMillis" , time .Since (started ).Milliseconds ())
0 commit comments