Skip to content

Commit 057efee

Browse files
committed
fix linter
1 parent a3e9303 commit 057efee

File tree

5 files changed

+86
-72
lines changed

5 files changed

+86
-72
lines changed

internal/controllers/remotedatabasenodeset/controller_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -974,9 +974,9 @@ func deleteAll(env *envtest.Environment, k8sClient client.Client, objs ...client
974974
serviceList := corev1.ServiceList{}
975975
err = k8sClient.List(ctx, &serviceList, client.InNamespace(ns.Name))
976976
Expect(err).ShouldNot(HaveOccurred())
977-
for _, svc := range serviceList.Items {
977+
for idx := range serviceList.Items {
978978
policy := metav1.DeletePropagationForeground
979-
err = k8sClient.Delete(ctx, &svc, &client.DeleteOptions{PropagationPolicy: &policy})
979+
err = k8sClient.Delete(ctx, &serviceList.Items[idx], &client.DeleteOptions{PropagationPolicy: &policy})
980980
Expect(err).ShouldNot(HaveOccurred())
981981
}
982982

internal/controllers/remotedatabasenodeset/remote_objects.go

+40-32
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ func (r *Reconciler) syncRemoteObjects(
9292
remoteObjects []client.Object,
9393
) (bool, ctrl.Result, error) {
9494
r.Log.Info("running step syncRemoteObjects")
95+
9596
for _, remoteObj := range remoteObjects {
9697
// Determine actual GVK for generic client.Object
9798
remoteObjGVK, err := apiutil.GVKForObject(remoteObj, r.Scheme)
@@ -111,6 +112,7 @@ func (r *Reconciler) syncRemoteObjects(
111112
Namespace: remoteObj.GetNamespace(),
112113
}, remoteObj)
113114
if err != nil {
115+
// Resource not found on remote cluster but we should retry
114116
if apierrors.IsNotFound(err) {
115117
r.Recorder.Event(
116118
remoteDatabaseNodeSet,
@@ -144,13 +146,13 @@ func (r *Reconciler) syncRemoteObjects(
144146
// Create client.Object from api.RemoteResource struct
145147
localObj := resources.CreateResource(remoteObj)
146148
remoteDatabaseNodeSet.SetPrimaryResourceAnnotations(localObj)
149+
147150
// Check object existence in local cluster
148-
err = r.Client.Get(ctx, types.NamespacedName{
151+
objExist := false
152+
if err = r.Client.Get(ctx, types.NamespacedName{
149153
Name: remoteObj.GetName(),
150154
Namespace: remoteObj.GetNamespace(),
151-
}, localObj)
152-
//nolint:nestif
153-
if err != nil {
155+
}, localObj); err != nil {
154156
if !apierrors.IsNotFound(err) {
155157
r.Recorder.Event(
156158
remoteDatabaseNodeSet,
@@ -160,30 +162,16 @@ func (r *Reconciler) syncRemoteObjects(
160162
)
161163
return Stop, ctrl.Result{RequeueAfter: DefaultRequeueDelay}, err
162164
}
163-
// Object does not exist in local cluster
164-
// Try to create resource in remote cluster
165-
if err := r.Client.Create(ctx, localObj); err != nil {
166-
r.Recorder.Event(
167-
remoteDatabaseNodeSet,
168-
corev1.EventTypeWarning,
169-
"ControllerError",
170-
fmt.Sprintf("Failed to create resource %s with name %s: %s", remoteObjGVK.Kind, remoteObj.GetName(), err),
171-
)
172-
return Stop, ctrl.Result{RequeueAfter: DefaultRequeueDelay}, nil
173-
}
174-
r.Recorder.Event(
175-
remoteDatabaseNodeSet,
176-
corev1.EventTypeNormal,
177-
"Provisioning",
178-
fmt.Sprintf("RemoteSync CREATE resource %s with name %s", remoteObjGVK.Kind, remoteObj.GetName()),
179-
)
180-
} else {
165+
objExist = true
166+
}
167+
168+
if objExist {
181169
// Update client.Object for local object with spec from remote object
182170
updatedObj := resources.UpdateResource(localObj, remoteObj)
183171
remoteDatabaseNodeSet.SetPrimaryResourceAnnotations(updatedObj)
184172
// Remote object existing in local cluster, сheck the need for an update
185173
// Get diff resources and compare bytes by k8s-objectmatcher PatchMaker
186-
updated, err := r.patchObject(ctx, localObj, updatedObj)
174+
patched, err := r.patchObject(ctx, localObj, updatedObj)
187175
if err != nil {
188176
r.Recorder.Event(
189177
remoteDatabaseNodeSet,
@@ -192,19 +180,38 @@ func (r *Reconciler) syncRemoteObjects(
192180
fmt.Sprintf("Failed to patch resource %s with name %s: %s", remoteObjGVK.Kind, remoteObj.GetName(), err),
193181
)
194182
}
195-
// Send event with information about updated resource
196-
if updated {
183+
if patched {
197184
r.Recorder.Event(
198185
remoteDatabaseNodeSet,
199186
corev1.EventTypeNormal,
200187
"Provisioning",
201188
fmt.Sprintf("RemoteSync UPDATE resource %s with name %s resourceVersion %s", remoteObjGVK.Kind, remoteObj.GetName(), remoteObj.GetResourceVersion()),
202189
)
203190
}
191+
} else {
192+
// Object does not exist in local cluster
193+
// Try to create resource in remote cluster
194+
if err := r.Client.Create(ctx, localObj); err != nil {
195+
r.Recorder.Event(
196+
remoteDatabaseNodeSet,
197+
corev1.EventTypeWarning,
198+
"ControllerError",
199+
fmt.Sprintf("Failed to create resource %s with name %s: %s", remoteObjGVK.Kind, remoteObj.GetName(), err),
200+
)
201+
return Stop, ctrl.Result{RequeueAfter: DefaultRequeueDelay}, nil
202+
}
203+
r.Recorder.Event(
204+
remoteDatabaseNodeSet,
205+
corev1.EventTypeNormal,
206+
"Provisioning",
207+
fmt.Sprintf("RemoteSync CREATE resource %s with name %s", remoteObjGVK.Kind, remoteObj.GetName()),
208+
)
204209
}
205-
// Set status for remote resource in RemoteDatabaseNodeSet object
210+
211+
// Update status for remote resource in RemoteStorageNodeSet object
206212
remoteDatabaseNodeSet.SetRemoteResourceStatus(localObj, remoteObjGVK)
207213
}
214+
208215
return r.updateRemoteResourcesStatus(ctx, remoteDatabaseNodeSet)
209216
}
210217

@@ -214,13 +221,13 @@ func (r *Reconciler) removeUnusedRemoteObjects(
214221
remoteObjects []client.Object,
215222
) (bool, ctrl.Result, error) {
216223
r.Log.Info("running step removeUnusedRemoteObjects")
217-
218224
// We should check every remote resource to need existence in cluster
225+
// Get processed remote resources from object Status
219226
candidatesToDelete := []v1alpha1.RemoteResource{}
220227

221228
// Check RemoteResource usage in local DatabaseNodeSet object
222229
for _, remoteResource := range remoteDatabaseNodeSet.Status.RemoteResources {
223-
exist, err := r.checkRemoteResourceUsage(remoteDatabaseNodeSet, &remoteResource, remoteObjects)
230+
exist, err := r.checkRemoteResourceUsage(remoteDatabaseNodeSet, remoteResource, remoteObjects)
224231
if err != nil {
225232
r.Recorder.Event(
226233
remoteDatabaseNodeSet,
@@ -236,6 +243,7 @@ func (r *Reconciler) removeUnusedRemoteObjects(
236243
}
237244

238245
// Сhecking to avoid unnecessary List request
246+
//nolint:nestif
239247
if len(candidatesToDelete) > 0 {
240248
// Get remote objects from another DatabaseNodeSet spec
241249
remoteObjectsFromAnother, err := r.getRemoteObjectsFromAnother(ctx, remoteDatabaseNodeSet)
@@ -277,7 +285,7 @@ func (r *Reconciler) removeUnusedRemoteObjects(
277285
return Stop, ctrl.Result{RequeueAfter: DefaultRequeueDelay}, err
278286
}
279287

280-
existInDatabase, err := r.checkRemoteResourceUsage(remoteDatabaseNodeSet, &remoteResource, remoteObjectsFromAnother)
288+
existInDatabase, err := r.checkRemoteResourceUsage(remoteDatabaseNodeSet, remoteResource, remoteObjectsFromAnother)
281289
if err != nil {
282290
r.Recorder.Event(
283291
remoteDatabaseNodeSet,
@@ -361,7 +369,7 @@ func (r *Reconciler) updateRemoteResourcesStatus(
361369
remoteDatabaseNodeSet,
362370
corev1.EventTypeWarning,
363371
"ControllerError",
364-
fmt.Sprintf("Failed fetching RemoteDatabaseNodeSet before status update: %s", err),
372+
fmt.Sprintf("Failed to update status for remote resources: %s", err),
365373
)
366374
return Stop, ctrl.Result{RequeueAfter: DefaultRequeueDelay}, err
367375
}
@@ -385,7 +393,7 @@ func (r *Reconciler) updateRemoteResourcesStatus(
385393

386394
func (r *Reconciler) checkRemoteResourceUsage(
387395
remoteDatabaseNodeSet *resources.RemoteDatabaseNodeSetResource,
388-
remoteResource *v1alpha1.RemoteResource,
396+
remoteResource v1alpha1.RemoteResource,
389397
remoteObjects []client.Object,
390398
) (bool, error) {
391399
for _, remoteObj := range remoteObjects {
@@ -394,7 +402,7 @@ func (r *Reconciler) checkRemoteResourceUsage(
394402
return false, err
395403
}
396404
if resources.EqualRemoteResourceWithObject(
397-
remoteResource,
405+
&remoteResource,
398406
remoteDatabaseNodeSet.Namespace,
399407
remoteObj,
400408
remoteObjGVK,

internal/controllers/remotestoragenodeset/controller_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -680,9 +680,9 @@ func deleteAll(env *envtest.Environment, k8sClient client.Client, objs ...client
680680
serviceList := corev1.ServiceList{}
681681
err = k8sClient.List(ctx, &serviceList, client.InNamespace(ns.Name))
682682
Expect(err).ShouldNot(HaveOccurred())
683-
for _, svc := range serviceList.Items {
683+
for idx := range serviceList.Items {
684684
policy := metav1.DeletePropagationForeground
685-
err = k8sClient.Delete(ctx, &svc, &client.DeleteOptions{PropagationPolicy: &policy})
685+
err = k8sClient.Delete(ctx, &serviceList.Items[idx], &client.DeleteOptions{PropagationPolicy: &policy})
686686
Expect(err).ShouldNot(HaveOccurred())
687687
}
688688

internal/controllers/remotestoragenodeset/remote_objects.go

+40-32
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ func (r *Reconciler) syncRemoteObjects(
9191
remoteObjects []client.Object,
9292
) (bool, ctrl.Result, error) {
9393
r.Log.Info("running step syncRemoteObjects")
94+
9495
for _, remoteObj := range remoteObjects {
9596
// Determine actual GVK for generic client.Object
9697
remoteObjGVK, err := apiutil.GVKForObject(remoteObj, r.Scheme)
@@ -110,6 +111,7 @@ func (r *Reconciler) syncRemoteObjects(
110111
Namespace: remoteObj.GetNamespace(),
111112
}, remoteObj)
112113
if err != nil {
114+
// Resource not found on remote cluster but we should retry
113115
if apierrors.IsNotFound(err) {
114116
r.Recorder.Event(
115117
remoteStorageNodeSet,
@@ -143,13 +145,13 @@ func (r *Reconciler) syncRemoteObjects(
143145
// Create client.Object from api.RemoteResource struct
144146
localObj := resources.CreateResource(remoteObj)
145147
remoteStorageNodeSet.SetPrimaryResourceAnnotations(localObj)
148+
146149
// Check object existence in local cluster
147-
err = r.Client.Get(ctx, types.NamespacedName{
150+
objExist := false
151+
if err = r.Client.Get(ctx, types.NamespacedName{
148152
Name: remoteObj.GetName(),
149153
Namespace: remoteObj.GetNamespace(),
150-
}, localObj)
151-
//nolint:nestif
152-
if err != nil {
154+
}, localObj); err != nil {
153155
if !apierrors.IsNotFound(err) {
154156
r.Recorder.Event(
155157
remoteStorageNodeSet,
@@ -159,30 +161,16 @@ func (r *Reconciler) syncRemoteObjects(
159161
)
160162
return Stop, ctrl.Result{RequeueAfter: DefaultRequeueDelay}, err
161163
}
162-
// Object does not exist in local cluster
163-
// Try to create resource in remote cluster
164-
if err := r.Client.Create(ctx, localObj); err != nil {
165-
r.Recorder.Event(
166-
remoteStorageNodeSet,
167-
corev1.EventTypeWarning,
168-
"ControllerError",
169-
fmt.Sprintf("Failed to create resource %s with name %s: %s", remoteObjGVK.Kind, remoteObj.GetName(), err),
170-
)
171-
return Stop, ctrl.Result{RequeueAfter: DefaultRequeueDelay}, nil
172-
}
173-
r.Recorder.Event(
174-
remoteStorageNodeSet,
175-
corev1.EventTypeNormal,
176-
"Provisioning",
177-
fmt.Sprintf("RemoteSync CREATE resource %s with name %s", remoteObjGVK.Kind, remoteObj.GetName()),
178-
)
179-
} else {
164+
objExist = true
165+
}
166+
167+
if objExist {
180168
// Update client.Object for local object with spec from remote object
181169
updatedObj := resources.UpdateResource(localObj, remoteObj)
182170
remoteStorageNodeSet.SetPrimaryResourceAnnotations(updatedObj)
183171
// Remote object existing in local cluster, сheck the need for an update
184172
// Get diff resources and compare bytes by k8s-objectmatcher PatchMaker
185-
updated, err := r.patchObject(ctx, localObj, updatedObj)
173+
patched, err := r.patchObject(ctx, localObj, updatedObj)
186174
if err != nil {
187175
r.Recorder.Event(
188176
remoteStorageNodeSet,
@@ -191,19 +179,38 @@ func (r *Reconciler) syncRemoteObjects(
191179
fmt.Sprintf("Failed to patch resource %s with name %s: %s", remoteObjGVK.Kind, remoteObj.GetName(), err),
192180
)
193181
}
194-
// Send event with information about updated resource
195-
if updated {
182+
if patched {
196183
r.Recorder.Event(
197184
remoteStorageNodeSet,
198185
corev1.EventTypeNormal,
199186
"Provisioning",
200187
fmt.Sprintf("RemoteSync UPDATE resource %s with name %s resourceVersion %s", remoteObjGVK.Kind, remoteObj.GetName(), remoteObj.GetResourceVersion()),
201188
)
202189
}
190+
} else {
191+
// Object does not exist in local cluster
192+
// Try to create resource in remote cluster
193+
if err := r.Client.Create(ctx, localObj); err != nil {
194+
r.Recorder.Event(
195+
remoteStorageNodeSet,
196+
corev1.EventTypeWarning,
197+
"ControllerError",
198+
fmt.Sprintf("Failed to create resource %s with name %s: %s", remoteObjGVK.Kind, remoteObj.GetName(), err),
199+
)
200+
return Stop, ctrl.Result{RequeueAfter: DefaultRequeueDelay}, nil
201+
}
202+
r.Recorder.Event(
203+
remoteStorageNodeSet,
204+
corev1.EventTypeNormal,
205+
"Provisioning",
206+
fmt.Sprintf("RemoteSync CREATE resource %s with name %s", remoteObjGVK.Kind, remoteObj.GetName()),
207+
)
203208
}
204-
// Set status for remote resource in RemoteStorageNodeSet object
209+
210+
// Update status for remote resource in RemoteStorageNodeSet object
205211
remoteStorageNodeSet.SetRemoteResourceStatus(localObj, remoteObjGVK)
206212
}
213+
207214
return r.updateRemoteResourcesStatus(ctx, remoteStorageNodeSet)
208215
}
209216

@@ -213,13 +220,13 @@ func (r *Reconciler) removeUnusedRemoteObjects(
213220
remoteObjects []client.Object,
214221
) (bool, ctrl.Result, error) {
215222
r.Log.Info("running step removeUnusedRemoteObjects")
216-
217223
// We should check every remote resource to need existence in cluster
224+
// Get processed remote resources from object Status
218225
candidatesToDelete := []v1alpha1.RemoteResource{}
219226

220227
// Check RemoteResource usage in local StorageNodeSet object
221228
for _, remoteResource := range remoteStorageNodeSet.Status.RemoteResources {
222-
exist, err := r.checkRemoteResourceUsage(remoteStorageNodeSet, &remoteResource, remoteObjects)
229+
exist, err := r.checkRemoteResourceUsage(remoteStorageNodeSet, remoteResource, remoteObjects)
223230
if err != nil {
224231
r.Recorder.Event(
225232
remoteStorageNodeSet,
@@ -235,6 +242,7 @@ func (r *Reconciler) removeUnusedRemoteObjects(
235242
}
236243

237244
// Сhecking to avoid unnecessary List request
245+
//nolint:nestif
238246
if len(candidatesToDelete) > 0 {
239247
// Get remote objects from another StorageNodeSet spec
240248
remoteObjectsFromAnother, err := r.getRemoteObjectsFromAnother(ctx, remoteStorageNodeSet)
@@ -276,7 +284,7 @@ func (r *Reconciler) removeUnusedRemoteObjects(
276284
return Stop, ctrl.Result{RequeueAfter: DefaultRequeueDelay}, err
277285
}
278286

279-
existInStorage, err := r.checkRemoteResourceUsage(remoteStorageNodeSet, &remoteResource, remoteObjectsFromAnother)
287+
existInStorage, err := r.checkRemoteResourceUsage(remoteStorageNodeSet, remoteResource, remoteObjectsFromAnother)
280288
if err != nil {
281289
r.Recorder.Event(
282290
remoteStorageNodeSet,
@@ -360,7 +368,7 @@ func (r *Reconciler) updateRemoteResourcesStatus(
360368
remoteStorageNodeSet,
361369
corev1.EventTypeWarning,
362370
"ControllerError",
363-
fmt.Sprintf("Failed fetching RemoteStorageNodeSet before status update: %s", err),
371+
fmt.Sprintf("Failed to update status for remote resources: %s", err),
364372
)
365373
return Stop, ctrl.Result{RequeueAfter: DefaultRequeueDelay}, err
366374
}
@@ -384,7 +392,7 @@ func (r *Reconciler) updateRemoteResourcesStatus(
384392

385393
func (r *Reconciler) checkRemoteResourceUsage(
386394
remoteStorageNodeSet *resources.RemoteStorageNodeSetResource,
387-
remoteResource *v1alpha1.RemoteResource,
395+
remoteResource v1alpha1.RemoteResource,
388396
remoteObjects []client.Object,
389397
) (bool, error) {
390398
for _, remoteObj := range remoteObjects {
@@ -393,7 +401,7 @@ func (r *Reconciler) checkRemoteResourceUsage(
393401
return false, err
394402
}
395403
if resources.EqualRemoteResourceWithObject(
396-
remoteResource,
404+
&remoteResource,
397405
remoteStorageNodeSet.Namespace,
398406
remoteObj,
399407
remoteObjGVK,

internal/resources/resource.go

+2-4
Original file line numberDiff line numberDiff line change
@@ -214,10 +214,8 @@ func CreateResource(obj client.Object) client.Object {
214214
svc.Spec.ClusterIPs = nil
215215
}
216216

217-
// Set remote resourceVersion annotation
218-
annotations := CopyDict(createdObj.GetAnnotations())
219-
annotations[ydbannotations.RemoteResourceVersionAnnotation] = obj.GetResourceVersion()
220-
createdObj.SetAnnotations(annotations)
217+
// Set remoteResourceVersion annotation
218+
SetRemoteResourceVersionAnnotation(createdObj, obj.GetResourceVersion())
221219

222220
return createdObj
223221
}

0 commit comments

Comments
 (0)