Use Patch instead of Update (#4533)
This commit is contained in:
parent
2fa72b510f
commit
368e2f28b8
|
|
@ -163,22 +163,21 @@ func (r *AutoscalingListenerReconciler) Reconcile(ctx context.Context, req ctrl.
|
||||||
return ctrl.Result{}, err
|
return ctrl.Result{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
updatedServiceAccount := serviceAccount.DeepCopy()
|
|
||||||
var shouldUpdate bool
|
|
||||||
desiredLabels := r.filterAndMergeLabels(serviceAccount.Labels, desiredServiceAccount.Labels)
|
desiredLabels := r.filterAndMergeLabels(serviceAccount.Labels, desiredServiceAccount.Labels)
|
||||||
if !maps.Equal(serviceAccount.Labels, desiredLabels) {
|
labelsModified := !maps.Equal(serviceAccount.Labels, desiredLabels)
|
||||||
updatedServiceAccount.Labels = desiredLabels
|
|
||||||
shouldUpdate = true
|
|
||||||
}
|
|
||||||
desiredAnnotations := r.mergeAnnotations(serviceAccount.Annotations, desiredServiceAccount.Annotations)
|
desiredAnnotations := r.mergeAnnotations(serviceAccount.Annotations, desiredServiceAccount.Annotations)
|
||||||
if !maps.Equal(serviceAccount.Annotations, desiredAnnotations) {
|
annotationsModified := !maps.Equal(serviceAccount.Annotations, desiredAnnotations)
|
||||||
updatedServiceAccount.Annotations = desiredAnnotations
|
if labelsModified || annotationsModified {
|
||||||
shouldUpdate = true
|
updatedServiceAccount := serviceAccount.DeepCopy()
|
||||||
}
|
if labelsModified {
|
||||||
if shouldUpdate {
|
updatedServiceAccount.Labels = desiredLabels
|
||||||
|
}
|
||||||
|
if annotationsModified {
|
||||||
|
updatedServiceAccount.Annotations = desiredAnnotations
|
||||||
|
}
|
||||||
log.Info("Updating listener service account")
|
log.Info("Updating listener service account")
|
||||||
|
|
||||||
if err := r.Update(ctx, updatedServiceAccount); err != nil {
|
if err := r.Patch(ctx, updatedServiceAccount, client.MergeFrom(&serviceAccount)); err != nil {
|
||||||
log.Error(err, "Failed to update listener service account")
|
log.Error(err, "Failed to update listener service account")
|
||||||
return ctrl.Result{}, err
|
return ctrl.Result{}, err
|
||||||
}
|
}
|
||||||
|
|
@ -207,25 +206,24 @@ func (r *AutoscalingListenerReconciler) Reconcile(ctx context.Context, req ctrl.
|
||||||
switch {
|
switch {
|
||||||
case err == nil:
|
case err == nil:
|
||||||
desiredRole := r.newScaleSetListenerRole(&autoscalingListener)
|
desiredRole := r.newScaleSetListenerRole(&autoscalingListener)
|
||||||
updatedRole := listenerRole.DeepCopy()
|
|
||||||
var shouldUpdate bool
|
|
||||||
desiredLabels := r.filterAndMergeLabels(listenerRole.Labels, desiredRole.Labels)
|
desiredLabels := r.filterAndMergeLabels(listenerRole.Labels, desiredRole.Labels)
|
||||||
if !maps.Equal(listenerRole.Labels, desiredLabels) {
|
labelsModified := !maps.Equal(listenerRole.Labels, desiredLabels)
|
||||||
updatedRole.Labels = desiredLabels
|
|
||||||
shouldUpdate = true
|
|
||||||
}
|
|
||||||
desiredAnnotations := r.mergeAnnotations(listenerRole.Annotations, desiredRole.Annotations)
|
desiredAnnotations := r.mergeAnnotations(listenerRole.Annotations, desiredRole.Annotations)
|
||||||
if !maps.Equal(listenerRole.Annotations, desiredAnnotations) {
|
annotationsModified := !maps.Equal(listenerRole.Annotations, desiredAnnotations)
|
||||||
updatedRole.Annotations = desiredAnnotations
|
rulesModified := !reflect.DeepEqual(listenerRole.Rules, desiredRole.Rules)
|
||||||
shouldUpdate = true
|
if labelsModified || annotationsModified || rulesModified {
|
||||||
}
|
updatedRole := listenerRole.DeepCopy()
|
||||||
if !reflect.DeepEqual(listenerRole.Rules, desiredRole.Rules) {
|
if labelsModified {
|
||||||
updatedRole.Rules = desiredRole.Rules
|
updatedRole.Labels = desiredLabels
|
||||||
shouldUpdate = true
|
}
|
||||||
}
|
if annotationsModified {
|
||||||
if shouldUpdate {
|
updatedRole.Annotations = desiredAnnotations
|
||||||
|
}
|
||||||
|
if rulesModified {
|
||||||
|
updatedRole.Rules = desiredRole.Rules
|
||||||
|
}
|
||||||
log.Info("Updating listener role")
|
log.Info("Updating listener role")
|
||||||
if err := r.Update(ctx, updatedRole); err != nil {
|
if err := r.Patch(ctx, updatedRole, client.MergeFrom(&listenerRole)); err != nil {
|
||||||
log.Error(err, "Failed to update listener role")
|
log.Error(err, "Failed to update listener role")
|
||||||
return ctrl.Result{}, err
|
return ctrl.Result{}, err
|
||||||
}
|
}
|
||||||
|
|
@ -250,21 +248,20 @@ func (r *AutoscalingListenerReconciler) Reconcile(ctx context.Context, req ctrl.
|
||||||
&listenerRole,
|
&listenerRole,
|
||||||
&serviceAccount,
|
&serviceAccount,
|
||||||
)
|
)
|
||||||
updatedRoleBinding := listenerRoleBinding.DeepCopy()
|
|
||||||
var shouldUpdate bool
|
|
||||||
desiredLabels := r.filterAndMergeLabels(listenerRoleBinding.Labels, desiredRoleBinding.Labels)
|
desiredLabels := r.filterAndMergeLabels(listenerRoleBinding.Labels, desiredRoleBinding.Labels)
|
||||||
if !maps.Equal(listenerRoleBinding.Labels, desiredLabels) {
|
labelsModified := !maps.Equal(listenerRoleBinding.Labels, desiredLabels)
|
||||||
updatedRoleBinding.Labels = desiredLabels
|
|
||||||
shouldUpdate = true
|
|
||||||
}
|
|
||||||
desiredAnnotations := r.mergeAnnotations(listenerRoleBinding.Annotations, desiredRoleBinding.Annotations)
|
desiredAnnotations := r.mergeAnnotations(listenerRoleBinding.Annotations, desiredRoleBinding.Annotations)
|
||||||
if !maps.Equal(listenerRoleBinding.Annotations, desiredAnnotations) {
|
annotationsModified := !maps.Equal(listenerRoleBinding.Annotations, desiredAnnotations)
|
||||||
updatedRoleBinding.Annotations = desiredAnnotations
|
if labelsModified || annotationsModified {
|
||||||
shouldUpdate = true
|
updatedRoleBinding := listenerRoleBinding.DeepCopy()
|
||||||
}
|
if labelsModified {
|
||||||
if shouldUpdate {
|
updatedRoleBinding.Labels = desiredLabels
|
||||||
|
}
|
||||||
|
if annotationsModified {
|
||||||
|
updatedRoleBinding.Annotations = desiredAnnotations
|
||||||
|
}
|
||||||
log.Info("Updating listener role binding")
|
log.Info("Updating listener role binding")
|
||||||
if err := r.Update(ctx, updatedRoleBinding); err != nil {
|
if err := r.Patch(ctx, updatedRoleBinding, client.MergeFrom(&listenerRoleBinding)); err != nil {
|
||||||
log.Error(err, "Failed to update listener role binding")
|
log.Error(err, "Failed to update listener role binding")
|
||||||
return ctrl.Result{}, err
|
return ctrl.Result{}, err
|
||||||
}
|
}
|
||||||
|
|
@ -306,21 +303,20 @@ func (r *AutoscalingListenerReconciler) Reconcile(ctx context.Context, req ctrl.
|
||||||
log.Error(err, "Failed to build desired listener proxy secret")
|
log.Error(err, "Failed to build desired listener proxy secret")
|
||||||
return ctrl.Result{}, err
|
return ctrl.Result{}, err
|
||||||
}
|
}
|
||||||
updatedProxySecret := proxySecret.DeepCopy()
|
|
||||||
var shouldUpdate bool
|
|
||||||
desiredLabels := r.filterAndMergeLabels(proxySecret.Labels, desiredListenerProxy.Labels)
|
desiredLabels := r.filterAndMergeLabels(proxySecret.Labels, desiredListenerProxy.Labels)
|
||||||
if !maps.Equal(proxySecret.Labels, desiredLabels) {
|
labelsModified := !maps.Equal(proxySecret.Labels, desiredLabels)
|
||||||
updatedProxySecret.Labels = desiredLabels
|
|
||||||
shouldUpdate = true
|
|
||||||
}
|
|
||||||
desiredAnnotations := r.mergeAnnotations(proxySecret.Annotations, desiredListenerProxy.Annotations)
|
desiredAnnotations := r.mergeAnnotations(proxySecret.Annotations, desiredListenerProxy.Annotations)
|
||||||
if !maps.Equal(proxySecret.Annotations, desiredAnnotations) {
|
annotationsModified := !maps.Equal(proxySecret.Annotations, desiredAnnotations)
|
||||||
updatedProxySecret.Annotations = desiredAnnotations
|
if labelsModified || annotationsModified {
|
||||||
shouldUpdate = true
|
updatedProxySecret := proxySecret.DeepCopy()
|
||||||
}
|
if labelsModified {
|
||||||
if shouldUpdate {
|
updatedProxySecret.Labels = desiredLabels
|
||||||
|
}
|
||||||
|
if annotationsModified {
|
||||||
|
updatedProxySecret.Annotations = desiredAnnotations
|
||||||
|
}
|
||||||
log.Info("Updating listener proxy secret")
|
log.Info("Updating listener proxy secret")
|
||||||
if err := r.Update(ctx, updatedProxySecret); err != nil {
|
if err := r.Patch(ctx, updatedProxySecret, client.MergeFrom(&proxySecret)); err != nil {
|
||||||
log.Error(err, "Failed to update listener proxy secret")
|
log.Error(err, "Failed to update listener proxy secret")
|
||||||
return ctrl.Result{}, err
|
return ctrl.Result{}, err
|
||||||
}
|
}
|
||||||
|
|
@ -393,22 +389,21 @@ func (r *AutoscalingListenerReconciler) Reconcile(ctx context.Context, req ctrl.
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ctrl.Result{}, fmt.Errorf("failed to build listener config secret: %w", err)
|
return ctrl.Result{}, fmt.Errorf("failed to build listener config secret: %w", err)
|
||||||
}
|
}
|
||||||
updatedSecret := listenerConfigSecret.DeepCopy()
|
|
||||||
var shouldUpdate bool
|
|
||||||
desiredLabels := r.filterAndMergeLabels(listenerConfigSecret.Labels, desiredSecret.Labels)
|
desiredLabels := r.filterAndMergeLabels(listenerConfigSecret.Labels, desiredSecret.Labels)
|
||||||
if !maps.Equal(listenerConfigSecret.Labels, desiredLabels) {
|
labelsModified := !maps.Equal(listenerConfigSecret.Labels, desiredLabels)
|
||||||
updatedSecret.Labels = desiredLabels
|
|
||||||
shouldUpdate = true
|
|
||||||
}
|
|
||||||
desiredAnnotations := r.mergeAnnotations(listenerConfigSecret.Annotations, desiredSecret.Annotations)
|
desiredAnnotations := r.mergeAnnotations(listenerConfigSecret.Annotations, desiredSecret.Annotations)
|
||||||
if !maps.Equal(listenerConfigSecret.Annotations, desiredAnnotations) {
|
annotationsModified := !maps.Equal(listenerConfigSecret.Annotations, desiredAnnotations)
|
||||||
updatedSecret.Annotations = desiredAnnotations
|
|
||||||
shouldUpdate = true
|
|
||||||
}
|
|
||||||
|
|
||||||
if shouldUpdate {
|
if labelsModified || annotationsModified {
|
||||||
|
updatedSecret := listenerConfigSecret.DeepCopy()
|
||||||
|
if labelsModified {
|
||||||
|
updatedSecret.Labels = desiredLabels
|
||||||
|
}
|
||||||
|
if annotationsModified {
|
||||||
|
updatedSecret.Annotations = desiredAnnotations
|
||||||
|
}
|
||||||
log.Info("Updating listener config secret", "namespace", updatedSecret.Namespace, "name", updatedSecret.Name)
|
log.Info("Updating listener config secret", "namespace", updatedSecret.Namespace, "name", updatedSecret.Name)
|
||||||
if err := r.Update(ctx, updatedSecret); err != nil {
|
if err := r.Patch(ctx, updatedSecret, client.MergeFrom(&listenerConfigSecret)); err != nil {
|
||||||
return ctrl.Result{}, fmt.Errorf("failed to update listener config secret: %w", err)
|
return ctrl.Result{}, fmt.Errorf("failed to update listener config secret: %w", err)
|
||||||
}
|
}
|
||||||
return ctrl.Result{Requeue: true}, nil
|
return ctrl.Result{Requeue: true}, nil
|
||||||
|
|
@ -478,22 +473,21 @@ func (r *AutoscalingListenerReconciler) Reconcile(ctx context.Context, req ctrl.
|
||||||
return ctrl.Result{}, nil
|
return ctrl.Result{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
updatedPod := listenerPod.DeepCopy()
|
|
||||||
var shouldUpdate bool
|
|
||||||
desiredLabels := r.filterAndMergeLabels(listenerPod.Labels, desiredPod.Labels)
|
desiredLabels := r.filterAndMergeLabels(listenerPod.Labels, desiredPod.Labels)
|
||||||
if !maps.Equal(listenerPod.Labels, desiredLabels) {
|
labelsModified := !maps.Equal(listenerPod.Labels, desiredLabels)
|
||||||
updatedPod.Labels = desiredLabels
|
|
||||||
shouldUpdate = true
|
|
||||||
}
|
|
||||||
desiredAnnotations := r.mergeAnnotations(listenerPod.Annotations, desiredPod.Annotations)
|
desiredAnnotations := r.mergeAnnotations(listenerPod.Annotations, desiredPod.Annotations)
|
||||||
if !maps.Equal(listenerPod.Annotations, desiredAnnotations) {
|
annotationsModified := !maps.Equal(listenerPod.Annotations, desiredAnnotations)
|
||||||
updatedPod.Annotations = desiredAnnotations
|
|
||||||
shouldUpdate = true
|
|
||||||
}
|
|
||||||
|
|
||||||
if shouldUpdate {
|
if labelsModified || annotationsModified {
|
||||||
|
updatedPod := listenerPod.DeepCopy()
|
||||||
|
if labelsModified {
|
||||||
|
updatedPod.Labels = desiredLabels
|
||||||
|
}
|
||||||
|
if annotationsModified {
|
||||||
|
updatedPod.Annotations = desiredAnnotations
|
||||||
|
}
|
||||||
log.Info("Updating listener pod", "namespace", updatedPod.Namespace, "name", updatedPod.Name)
|
log.Info("Updating listener pod", "namespace", updatedPod.Namespace, "name", updatedPod.Name)
|
||||||
if err := r.Update(ctx, updatedPod); err != nil {
|
if err := r.Patch(ctx, updatedPod, client.MergeFrom(&listenerPod)); err != nil {
|
||||||
log.Error(err, "Unable to update listener pod", "namespace", updatedPod.Namespace, "name", updatedPod.Name)
|
log.Error(err, "Unable to update listener pod", "namespace", updatedPod.Namespace, "name", updatedPod.Name)
|
||||||
return ctrl.Result{}, err
|
return ctrl.Result{}, err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -496,25 +496,24 @@ func (r *EphemeralRunnerSetReconciler) reconcileEphemeralRunnerSetProxySecret(ct
|
||||||
return nil, false, fmt.Errorf("failed to build desired ephemeralRunnerSet proxy secret: %w", err)
|
return nil, false, fmt.Errorf("failed to build desired ephemeralRunnerSet proxy secret: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
updatedProxySecret := proxySecret.DeepCopy()
|
dataModified := !maps.EqualFunc(proxySecret.Data, desiredRunnerSetProxy.Data, bytes.Equal)
|
||||||
var shouldUpdate bool
|
|
||||||
if !maps.EqualFunc(proxySecret.Data, desiredRunnerSetProxy.Data, bytes.Equal) {
|
|
||||||
updatedProxySecret.Data = desiredRunnerSetProxy.Data
|
|
||||||
shouldUpdate = true
|
|
||||||
}
|
|
||||||
desiredLabels := r.filterAndMergeLabels(proxySecret.Labels, desiredRunnerSetProxy.Labels)
|
desiredLabels := r.filterAndMergeLabels(proxySecret.Labels, desiredRunnerSetProxy.Labels)
|
||||||
if !maps.Equal(proxySecret.Labels, desiredLabels) {
|
labelsModified := !maps.Equal(proxySecret.Labels, desiredLabels)
|
||||||
updatedProxySecret.Labels = desiredLabels
|
|
||||||
shouldUpdate = true
|
|
||||||
}
|
|
||||||
desiredAnnotations := r.mergeAnnotations(proxySecret.Annotations, desiredRunnerSetProxy.Annotations)
|
desiredAnnotations := r.mergeAnnotations(proxySecret.Annotations, desiredRunnerSetProxy.Annotations)
|
||||||
if !maps.Equal(proxySecret.Annotations, desiredAnnotations) {
|
annotationsModified := !maps.Equal(proxySecret.Annotations, desiredAnnotations)
|
||||||
updatedProxySecret.Annotations = desiredAnnotations
|
if dataModified || labelsModified || annotationsModified {
|
||||||
shouldUpdate = true
|
updatedProxySecret := proxySecret.DeepCopy()
|
||||||
}
|
if dataModified {
|
||||||
if shouldUpdate {
|
updatedProxySecret.Data = desiredRunnerSetProxy.Data
|
||||||
|
}
|
||||||
|
if labelsModified {
|
||||||
|
updatedProxySecret.Labels = desiredLabels
|
||||||
|
}
|
||||||
|
if annotationsModified {
|
||||||
|
updatedProxySecret.Annotations = desiredAnnotations
|
||||||
|
}
|
||||||
log.Info("Updating ephemeralRunnerSet proxy secret")
|
log.Info("Updating ephemeralRunnerSet proxy secret")
|
||||||
if err := r.Update(ctx, updatedProxySecret); err != nil {
|
if err := r.Patch(ctx, updatedProxySecret, client.MergeFrom(&proxySecret)); err != nil {
|
||||||
return nil, false, fmt.Errorf("failed to update ephemeralRunnerSet proxy secret: %w", err)
|
return nil, false, fmt.Errorf("failed to update ephemeralRunnerSet proxy secret: %w", err)
|
||||||
}
|
}
|
||||||
return updatedProxySecret, true, nil
|
return updatedProxySecret, true, nil
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue