feat: 初始化 controller 状态机
Lint / Run on Ubuntu (pull_request) Successful in 4m59s
E2E Tests / Run on Ubuntu (pull_request) Failing after 54s
Tests / Run on Ubuntu (pull_request) Successful in 4m18s

This commit is contained in:
2026-09-10 08:44:39 +00:00
parent 60b63100b2
commit ed564d411f
6 changed files with 148 additions and 8 deletions
@@ -18,7 +18,9 @@ package controller
import (
"context"
"reflect"
apierrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/runtime"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -47,9 +49,30 @@ type PostgreSQLInstanceReconciler struct {
// For more details, check Reconcile and its Result here:
// - https://pkg.go.dev/sigs.k8s.io/[email protected]/pkg/reconcile
func (r *PostgreSQLInstanceReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
_ = logf.FromContext(ctx)
logger := logf.FromContext(ctx)
instance := &databasev1alpha1.PostgreSQLInstance{}
if err := r.Get(ctx, req.NamespacedName, instance); err != nil {
return ctrl.Result{}, client.IgnoreNotFound(err)
}
// TODO(user): your logic here
before := instance.DeepCopy()
if !instance.DeletionTimestamp.IsZero() {
instance.Status.Phase = databasev1alpha1.PostgreSQLInstancePhaseDeleting
setReconcilingCondition(&instance.Status.Conditions, instance.Generation, "instance deletion is reconciling")
} else if instance.Status.Phase == "" {
instance.Status.Phase = databasev1alpha1.PostgreSQLInstancePhaseValidating
setReconcilingCondition(&instance.Status.Conditions, instance.Generation, "instance dependencies are being validated")
}
if !reflect.DeepEqual(before.Status, instance.Status) {
if err := r.Status().Patch(ctx, instance, client.MergeFrom(before)); err != nil {
if apierrors.IsConflict(err) {
logger.V(1).Info("instance status changed concurrently; retrying")
}
return ctrl.Result{}, err
}
}
return ctrl.Result{}, nil
}