Update secretsencrypt pagination

Make secretsencrypt page size and iteration consistent with other paginators

Signed-off-by: Brad Davidson <brad.davidson@rancher.com>
(cherry picked from commit 891e72f90f)
Signed-off-by: Brad Davidson <brad.davidson@rancher.com>
pull/10674/head
Brad Davidson 2024-07-15 23:51:16 +00:00 committed by Derek Nola
parent c936fc02d0
commit 4b0eb69d80
1 changed files with 21 additions and 25 deletions

View File

@ -2,6 +2,7 @@ package secretsencrypt
import ( import (
"context" "context"
"errors"
"fmt" "fmt"
"strings" "strings"
@ -12,7 +13,6 @@ import (
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors" apierrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
@ -29,6 +29,8 @@ const (
secretsProgressEvent string = "SecretsProgress" secretsProgressEvent string = "SecretsProgress"
secretsUpdateCompleteEvent string = "SecretsUpdateComplete" secretsUpdateCompleteEvent string = "SecretsUpdateComplete"
secretsUpdateErrorEvent string = "SecretsUpdateError" secretsUpdateErrorEvent string = "SecretsUpdateError"
secretListPageSize = 20
) )
type handler struct { type handler struct {
@ -106,7 +108,7 @@ func (h *handler) onChangeNode(nodeName string, node *corev1.Node) (*corev1.Node
return node, err return node, err
} }
if err := h.updateSecrets(node); err != nil { if err := h.updateSecrets(nodeRef); err != nil {
h.recorder.Event(nodeRef, corev1.EventTypeWarning, secretsUpdateErrorEvent, err.Error()) h.recorder.Event(nodeRef, corev1.EventTypeWarning, secretsUpdateErrorEvent, err.Error())
return node, err return node, err
} }
@ -206,36 +208,30 @@ func (h *handler) validateReencryptStage(node *corev1.Node, annotation string) (
return true, nil return true, nil
} }
func (h *handler) updateSecrets(node *corev1.Node) error { func (h *handler) updateSecrets(nodeRef *corev1.ObjectReference) error {
nodeRef := &corev1.ObjectReference{
Kind: "Node",
Name: node.Name,
UID: types.UID(node.Name),
Namespace: "",
}
secretPager := pager.New(pager.SimplePageFunc(func(opts metav1.ListOptions) (runtime.Object, error) { secretPager := pager.New(pager.SimplePageFunc(func(opts metav1.ListOptions) (runtime.Object, error) {
return h.secrets.List("", opts) return h.secrets.List(metav1.NamespaceAll, opts)
})) }))
secretsList, _, err := secretPager.List(h.ctx, metav1.ListOptions{}) secretPager.PageSize = secretListPageSize
if err != nil {
return err
}
i := 0 i := 0
err = meta.EachListItem(secretsList, func(obj runtime.Object) error { if err := secretPager.EachListItem(h.ctx, metav1.ListOptions{}, func(obj runtime.Object) error {
if secret, ok := obj.(*corev1.Secret); ok { secret, ok := obj.(*corev1.Secret)
if _, err := h.secrets.Update(secret); err != nil && !apierrors.IsConflict(err) { if !ok {
return fmt.Errorf("failed to update secret: %v", err) return errors.New("failed to convert object to Secret")
}
if i != 0 && i%10 == 0 {
h.recorder.Eventf(nodeRef, corev1.EventTypeNormal, secretsProgressEvent, "reencrypted %d secrets", i)
}
i++
} }
if _, err := h.secrets.Update(secret); err != nil && !apierrors.IsConflict(err) {
return fmt.Errorf("failed to update secret: %v", err)
}
if i != 0 && i%10 == 0 {
h.recorder.Eventf(nodeRef, corev1.EventTypeNormal, secretsProgressEvent, "reencrypted %d secrets", i)
}
i++
return nil return nil
}) }); err != nil {
if err != nil {
return err return err
} }
h.recorder.Eventf(nodeRef, corev1.EventTypeNormal, secretsUpdateCompleteEvent, "completed reencrypt of %d secrets", i) h.recorder.Eventf(nodeRef, corev1.EventTypeNormal, secretsUpdateCompleteEvent, "completed reencrypt of %d secrets", i)
return nil return nil
} }