Skip to content

Commit e2a851a

Browse files
author
Ivan Ivic
authored
Handler errors (#5)
* Do not return error in handlers that is not an error in controller * Do not return errors in user provisioning that are not controller errors
1 parent 80ebd2e commit e2a851a

File tree

5 files changed

+18
-19
lines changed

5 files changed

+18
-19
lines changed

controllers/handler.go

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
88
"github.com/doodlescheduling/k8sdb-controller/api/v1beta1"
99
infrav1beta1 "github.com/doodlescheduling/k8sdb-controller/api/v1beta1"
1010
"github.com/doodlescheduling/k8sdb-controller/common/db"
11-
"github.com/go-logr/logr"
1211
corev1 "k8s.io/api/core/v1"
1312
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1413
"k8s.io/apimachinery/pkg/runtime"
@@ -71,7 +70,7 @@ func extractCredentials(credentials *infrav1beta1.SecretReference, secret *corev
7170
return user, pw, nil
7271
}
7372

74-
func reconcileDatabase(ctx context.Context, c client.Client, pool *db.ClientPool, invoke db.Invoke, database database, logger logr.Logger, recorder record.EventRecorder) (database, ctrl.Result, error) {
73+
func reconcileDatabase(c client.Client, pool *db.ClientPool, invoke db.Invoke, database database, recorder record.EventRecorder) (database, ctrl.Result, error) {
7574
// Fetch referencing root secret
7675
secret := &corev1.Secret{}
7776
secretName := types.NamespacedName{
@@ -85,7 +84,7 @@ func reconcileDatabase(ctx context.Context, c client.Client, pool *db.ClientPool
8584
msg := fmt.Sprintf("Referencing root secret was not found: %s", err.Error())
8685
recorder.Event(database, "Normal", "error", msg)
8786
infrav1beta1.DatabaseNotReadyCondition(database, v1beta1.SecretNotFoundReason, msg)
88-
return database, ctrl.Result{Requeue: true}, err
87+
return database, ctrl.Result{Requeue: true}, nil
8988
}
9089

9190
usr, pw, err := extractCredentials(database.GetRootSecret(), secret)
@@ -94,32 +93,32 @@ func reconcileDatabase(ctx context.Context, c client.Client, pool *db.ClientPool
9493
msg := fmt.Sprintf("Credentials field not found in referenced rootSecret: %s", err.Error())
9594
recorder.Event(database, "Normal", "error", msg)
9695
infrav1beta1.DatabaseNotReadyCondition(database, infrav1beta1.CredentialsNotFoundReason, msg)
97-
return database, ctrl.Result{Requeue: true}, err
96+
return database, ctrl.Result{Requeue: true}, nil
9897
}
9998

10099
dbHandler, err := pool.FromURI(context.TODO(), invoke, database.GetAddress(), usr, pw)
101100
if err != nil {
102101
msg := fmt.Sprintf("Failed to setup connection to database server: %s", err.Error())
103102
recorder.Event(database, "Normal", "error", msg)
104103
infrav1beta1.DatabaseNotReadyCondition(database, infrav1beta1.ConnectionFailedReason, msg)
105-
return database, ctrl.Result{Requeue: true}, err
104+
return database, ctrl.Result{Requeue: true}, nil
106105
}
107106

108107
err = dbHandler.CreateDatabaseIfNotExists(database.GetDatabaseName())
109108
if err != nil {
110109
msg := fmt.Sprintf("Failed to provision database: %s", err.Error())
111110
recorder.Event(database, "Normal", "error", msg)
112111
infrav1beta1.DatabaseNotReadyCondition(database, infrav1beta1.CreateDatabaseFailedReason, msg)
113-
return database, ctrl.Result{Requeue: true}, err
112+
return database, ctrl.Result{Requeue: true}, nil
114113
}
115114

116115
msg := "Database successfully provisioned"
117116
recorder.Event(database, "Normal", "info", msg)
118117
v1beta1.DatabaseReadyCondition(database, v1beta1.DatabaseProvisiningSuccessfulReason, msg)
119-
return database, ctrl.Result{}, err
118+
return database, ctrl.Result{}, nil
120119
}
121120

122-
func reconcileUser(ctx context.Context, database database, c client.Client, pool *db.ClientPool, invoke db.Invoke, user user, logger logr.Logger, recorder record.EventRecorder) (user, ctrl.Result, error) {
121+
func reconcileUser(database database, c client.Client, pool *db.ClientPool, invoke db.Invoke, user user, recorder record.EventRecorder) (user, ctrl.Result, error) {
123122
// Fetch referencing database
124123
databaseName := types.NamespacedName{
125124
Namespace: user.GetNamespace(),
@@ -132,7 +131,7 @@ func reconcileUser(ctx context.Context, database database, c client.Client, pool
132131
msg := fmt.Sprintf("Referencing database was not found: %s", err.Error())
133132
recorder.Event(user, "Normal", "error", msg)
134133
infrav1beta1.DatabaseNotReadyCondition(user, v1beta1.DatabaseNotFoundReason, msg)
135-
return user, ctrl.Result{Requeue: true}, err
134+
return user, ctrl.Result{Requeue: true}, nil
136135
}
137136

138137
// Fetch referencing root secret
@@ -148,7 +147,7 @@ func reconcileUser(ctx context.Context, database database, c client.Client, pool
148147
msg := fmt.Sprintf("Referencing root secret was not found: %s", err.Error())
149148
recorder.Event(user, "Normal", "error", msg)
150149
infrav1beta1.DatabaseNotReadyCondition(user, v1beta1.SecretNotFoundReason, msg)
151-
return user, ctrl.Result{Requeue: true}, err
150+
return user, ctrl.Result{Requeue: true}, nil
152151
}
153152

154153
usr, pw, err := extractCredentials(database.GetRootSecret(), secret)
@@ -157,7 +156,7 @@ func reconcileUser(ctx context.Context, database database, c client.Client, pool
157156
msg := fmt.Sprintf("Credentials field not found in referenced rootSecret: %s", err.Error())
158157
recorder.Event(user, "Normal", "error", msg)
159158
infrav1beta1.DatabaseNotReadyCondition(user, infrav1beta1.CredentialsNotFoundReason, msg)
160-
return user, ctrl.Result{Requeue: true}, err
159+
return user, ctrl.Result{Requeue: true}, nil
161160
}
162161

163162
dbHandler, err := pool.FromURI(context.TODO(), invoke, database.GetAddress(), usr, pw)
@@ -166,7 +165,7 @@ func reconcileUser(ctx context.Context, database database, c client.Client, pool
166165
msg := fmt.Sprintf("Failed to setup connection to database server: %s", err.Error())
167166
recorder.Event(user, "Normal", "error", msg)
168167
infrav1beta1.DatabaseNotReadyCondition(user, infrav1beta1.ConnectionFailedReason, msg)
169-
return user, ctrl.Result{Requeue: true}, err
168+
return user, ctrl.Result{Requeue: true}, nil
170169
}
171170

172171
// Fetch referencing credentials secret
@@ -183,19 +182,19 @@ func reconcileUser(ctx context.Context, database database, c client.Client, pool
183182
msg := fmt.Sprintf("No credentials found to provision user account: %s", err.Error())
184183
recorder.Event(user, "Normal", "error", msg)
185184
infrav1beta1.UserNotReadyCondition(user, infrav1beta1.CredentialsNotFoundReason, msg)
186-
return user, ctrl.Result{Requeue: true}, err
185+
return user, ctrl.Result{Requeue: true}, nil
187186
}
188187

189188
err = dbHandler.SetupUser(database.GetDatabaseName(), usr, pw)
190189
if err != nil {
191190
msg := fmt.Sprintf("Failed to provison user account: %s", err.Error())
192191
recorder.Event(user, "Normal", "error", msg)
193192
infrav1beta1.UserNotReadyCondition(user, infrav1beta1.ConnectionFailedReason, msg)
194-
return user, ctrl.Result{Requeue: true}, err
193+
return user, ctrl.Result{Requeue: true}, nil
195194
}
196195

197196
msg := "User successfully provisioned"
198197
recorder.Event(user, "Normal", "info", msg)
199198
v1beta1.UserReadyCondition(user, v1beta1.UserProvisioningSuccessfulReason, msg)
200-
return user, ctrl.Result{}, err
199+
return user, ctrl.Result{}, nil
201200
}

controllers/mongodbdatabase_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ func (r *MongoDBDatabaseReconciler) Reconcile(ctx context.Context, req ctrl.Requ
130130
return reconcile.Result{}, nil
131131
}
132132

133-
_, result, reconcileErr := reconcileDatabase(ctx, r.Client, r.ClientPool, db.NewMongoDBServer, &database, logger, r.Recorder)
133+
_, result, reconcileErr := reconcileDatabase(r.Client, r.ClientPool, db.NewMongoDBServer, &database, r.Recorder)
134134

135135
// Update status after reconciliation.
136136
if err := r.patchStatus(ctx, &database); err != nil {

controllers/mongodbuser_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ func (r *MongoDBUserReconciler) Reconcile(ctx context.Context, req ctrl.Request)
177177
}*/
178178

179179
var database infrav1beta1.MongoDBDatabase
180-
_, result, reconcileErr := reconcileUser(ctx, &database, r.Client, r.ClientPool, db.NewMongoDBServer, &user, logger, r.Recorder)
180+
_, result, reconcileErr := reconcileUser(&database, r.Client, r.ClientPool, db.NewMongoDBServer, &user, r.Recorder)
181181

182182
// Update status after reconciliation.
183183
if err := r.patchStatus(ctx, &user); err != nil {

controllers/postgresqldatabase_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ func (r *PostgreSQLDatabaseReconciler) Reconcile(ctx context.Context, req ctrl.R
130130
return reconcile.Result{}, nil
131131
}
132132

133-
_, result, reconcileErr := reconcileDatabase(ctx, r.Client, r.ClientPool, db.NewPostgreSQLServer, &database, logger, r.Recorder)
133+
_, result, reconcileErr := reconcileDatabase(r.Client, r.ClientPool, db.NewPostgreSQLServer, &database, r.Recorder)
134134

135135
// Update status after reconciliation.
136136
if err := r.patchStatus(ctx, &database); err != nil {

controllers/postgresqluser_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ func (r *PostgreSQLUserReconciler) Reconcile(ctx context.Context, req ctrl.Reque
177177
}*/
178178

179179
var database infrav1beta1.PostgreSQLDatabase
180-
_, result, reconcileErr := reconcileUser(ctx, &database, r.Client, r.ClientPool, db.NewPostgreSQLServer, &user, logger, r.Recorder)
180+
_, result, reconcileErr := reconcileUser(&database, r.Client, r.ClientPool, db.NewPostgreSQLServer, &user, r.Recorder)
181181

182182
// Update status after reconciliation.
183183
if err := r.patchStatus(ctx, &user); err != nil {

0 commit comments

Comments
 (0)