Skip to content

Commit 46ae646

Browse files
committed
Replace assertNoError with must and need
The former is identical and the latter uses generics to return a single value.
1 parent da337c8 commit 46ae646

File tree

1 file changed

+24
-33
lines changed

1 file changed

+24
-33
lines changed

cmd/postgres-operator/main.go

Lines changed: 24 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,13 @@ import (
4040
"github.com/crunchydata/postgres-operator/pkg/apis/postgres-operator.crunchydata.com/v1beta1"
4141
)
4242

43-
// assertNoError panics when err is not nil.
44-
func assertNoError(err error) {
43+
// must panics when err is not nil.
44+
func must(err error) { need(0, err) }
45+
func need[V any](v V, err error) V {
4546
if err != nil {
4647
panic(err)
4748
}
49+
return v
4850
}
4951

5052
func initLogging() {
@@ -173,7 +175,7 @@ func main() {
173175
}
174176

175177
features := feature.NewGate()
176-
assertNoError(features.Set(os.Getenv("PGO_FEATURE_GATES")))
178+
must(features.Set(os.Getenv("PGO_FEATURE_GATES")))
177179

178180
running = feature.NewContext(running, features)
179181
log.Info("feature gates",
@@ -183,15 +185,12 @@ func main() {
183185
"enabled", feature.ShowEnabled(running))
184186

185187
// Initialize OpenTelemetry and flush data when there is a panic.
186-
otelFinish, err := initOpenTelemetry(running)
187-
assertNoError(err)
188+
otelFinish := need(initOpenTelemetry(running))
188189
defer func(ctx context.Context) { _ = otelFinish(ctx) }(running)
189190

190191
tracing.SetDefaultTracer(tracing.New("github.com/CrunchyData/postgres-operator"))
191192

192-
cfg, err := runtime.GetConfig()
193-
assertNoError(err)
194-
193+
cfg := need(runtime.GetConfig())
195194
cfg.UserAgent = userAgent
196195
cfg.Wrap(otelTransportWrapper())
197196

@@ -201,14 +200,12 @@ func main() {
201200
// deprecation warnings when using an older version of a resource for backwards compatibility).
202201
rest.SetDefaultWarningHandler(rest.NoWarnings{})
203202

204-
k8s, err := kubernetes.NewDiscoveryRunner(cfg)
205-
assertNoError(err)
206-
assertNoError(k8s.Read(running))
203+
k8s := need(kubernetes.NewDiscoveryRunner(cfg))
204+
must(k8s.Read(running))
207205

208206
log.Info("connected to Kubernetes", "api", k8s.Version().String(), "openshift", k8s.IsOpenShift())
209207

210-
options, err := initManager(running)
211-
assertNoError(err)
208+
options := need(initManager(running))
212209

213210
// Add to the Context that Manager passes to Reconciler.Start, Runnable.Start,
214211
// and eventually Reconciler.Reconcile.
@@ -219,51 +216,44 @@ func main() {
219216
return ctx
220217
}
221218

222-
mgr, err := runtime.NewManager(cfg, options)
223-
assertNoError(err)
224-
assertNoError(mgr.Add(k8s))
219+
manager := need(runtime.NewManager(cfg, options))
220+
must(manager.Add(k8s))
225221

226-
registrar, err := registration.NewRunner(os.Getenv("RSA_KEY"), os.Getenv("TOKEN_PATH"), stopRunning)
227-
assertNoError(err)
228-
assertNoError(mgr.Add(registrar))
222+
registrar := need(registration.NewRunner(os.Getenv("RSA_KEY"), os.Getenv("TOKEN_PATH"), stopRunning))
223+
must(manager.Add(registrar))
229224
token, _ := registrar.CheckToken()
230225

231226
// add all PostgreSQL Operator controllers to the runtime manager
232-
addControllersToManager(mgr, log, registrar)
227+
addControllersToManager(manager, log, registrar)
233228

234229
if features.Enabled(feature.BridgeIdentifiers) {
230+
url := os.Getenv("PGO_BRIDGE_URL")
235231
constructor := func() *bridge.Client {
236-
client := bridge.NewClient(os.Getenv("PGO_BRIDGE_URL"), versionString)
232+
client := bridge.NewClient(url, versionString)
237233
client.Transport = otelTransportWrapper()(http.DefaultTransport)
238234
return client
239235
}
240236

241-
assertNoError(bridge.ManagedInstallationReconciler(mgr, constructor))
237+
must(bridge.ManagedInstallationReconciler(manager, constructor))
242238
}
243239

244240
// Enable upgrade checking
245241
upgradeCheckingDisabled := strings.EqualFold(os.Getenv("CHECK_FOR_UPGRADES"), "false")
246242
if !upgradeCheckingDisabled {
247243
log.Info("upgrade checking enabled")
248-
// get the URL for the check for upgrades endpoint if set in the env
249-
assertNoError(
250-
upgradecheck.ManagedScheduler(
251-
mgr,
252-
os.Getenv("CHECK_FOR_UPGRADES_URL"),
253-
versionString,
254-
token,
255-
))
244+
url := os.Getenv("CHECK_FOR_UPGRADES_URL")
245+
must(upgradecheck.ManagedScheduler(manager, url, versionString, token))
256246
} else {
257247
log.Info("upgrade checking disabled")
258248
}
259249

260250
// Enable health probes
261-
assertNoError(mgr.AddHealthzCheck("health", healthz.Ping))
262-
assertNoError(mgr.AddReadyzCheck("check", healthz.Ping))
251+
must(manager.AddHealthzCheck("health", healthz.Ping))
252+
must(manager.AddReadyzCheck("check", healthz.Ping))
263253

264254
// Start the manager and wait for its context to be canceled.
265255
stopped := make(chan error, 1)
266-
go func() { stopped <- mgr.Start(running) }()
256+
go func() { stopped <- manager.Start(running) }()
267257
<-running.Done()
268258

269259
// Set a deadline for graceful termination.
@@ -272,6 +262,7 @@ func main() {
272262
defer cancel()
273263

274264
// Wait for the manager to return or the deadline to pass.
265+
var err error
275266
select {
276267
case err = <-stopped:
277268
case <-stopping.Done():

0 commit comments

Comments
 (0)