Skip to content

Commit 05ffb12

Browse files
sebrandon1praveenkumar
authored andcommitted
fix: use %w for error wrapping and lowercase error messages
Replace %v/%s with %w in fmt.Errorf calls across 18 files to preserve error chains for errors.Is()/errors.As(). Lowercase error message prefixes per Go conventions. Also fix misleading error messages, add os.O_TRUNC to CopyFileContents, and wrap user.Current() errors.
1 parent eb4c822 commit 05ffb12

32 files changed

Lines changed: 135 additions & 136 deletions

cmd/crc-embedder/cmd/embed.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,13 @@ func embedFiles(executablePath string, filenames []string) error {
8888
logging.Debugf("Embedding %s in %s", filename, executablePath)
8989
f, err := os.Open(filename) // #nosec G304
9090
if err != nil {
91-
return fmt.Errorf("Failed to open %s: %v", filename, err)
91+
return fmt.Errorf("failed to open %s: %w", filename, err)
9292
}
9393
defer f.Close()
9494

9595
err = appender.AppendStreamReader(path.Base(filename), f, false)
9696
if err != nil {
97-
return fmt.Errorf("Failed to append %s to %s: %v", filename, executablePath, err)
97+
return fmt.Errorf("failed to append %s to %s: %w", filename, executablePath, err)
9898
}
9999
}
100100

cmd/crc/cmd/generate_kubeconfig.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func runGenerateKubeconfig() error {
3737

3838
data, err := os.ReadFile(constants.KubeconfigFilePath)
3939
if err != nil {
40-
return fmt.Errorf("Error reading kubeconfig: %v", err)
40+
return fmt.Errorf("error reading kubeconfig: %w", err)
4141
}
4242
fmt.Print(string(data))
4343
return nil

pkg/crc/cluster/cert_renewal.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ func approvePendingCSRs(ctx context.Context, ocConfig oc.Config, expectedSignerN
3232
logging.Debugf("Approving csr %s (signerName: %s)", csr.Name, expectedSignerName)
3333
_, stderr, err := ocConfig.RunOcCommand("adm", "certificate", "approve", csr.Name)
3434
if err != nil {
35-
return fmt.Errorf("Not able to approve csr (%v : %s)", err, stderr)
35+
return fmt.Errorf("not able to approve csr: %s: %w", stderr, err)
3636
}
3737
csrsApproved = true
3838
}

pkg/crc/cluster/cluster.go

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ func EnsureSSHKeyPresentInTheCluster(ctx context.Context, ocConfig oc.Config, ss
168168
}
169169
stdout, stderr, err := ocConfig.RunOcCommand("get", "machineconfigs", "99-master-ssh", "-o", `jsonpath='{.spec.config.passwd.users[0].sshAuthorizedKeys[0]}'`)
170170
if err != nil {
171-
return fmt.Errorf("Failed to get machine configs %v: %s", err, stderr)
171+
return fmt.Errorf("failed to get machine configs: %s: %w", stderr, err)
172172
}
173173
if stdout == string(sshPublicKey) {
174174
return nil
@@ -179,7 +179,7 @@ func EnsureSSHKeyPresentInTheCluster(ctx context.Context, ocConfig oc.Config, ss
179179
"--type", "merge"}
180180
_, stderr, err = ocConfig.RunOcCommand(cmdArgs...)
181181
if err != nil {
182-
return fmt.Errorf("Failed to update ssh key %v: %s", err, stderr)
182+
return fmt.Errorf("failed to update ssh key: %s: %w", stderr, err)
183183
}
184184
return nil
185185
}
@@ -191,7 +191,7 @@ func EnsurePullSecretPresentInTheCluster(ctx context.Context, ocConfig oc.Config
191191

192192
stdout, stderr, err := ocConfig.RunOcCommandPrivate("get", "secret", "pull-secret", "-n", "openshift-config", "-o", `jsonpath="{['data']['\.dockerconfigjson']}"`)
193193
if err != nil {
194-
return fmt.Errorf("Failed to get pull secret %v: %s", err, stderr)
194+
return fmt.Errorf("failed to get pull secret: %s: %w", stderr, err)
195195
}
196196
decoded, err := base64.StdEncoding.DecodeString(stdout)
197197
if err != nil {
@@ -213,7 +213,7 @@ func EnsurePullSecretPresentInTheCluster(ctx context.Context, ocConfig oc.Config
213213

214214
_, stderr, err = ocConfig.RunOcCommandPrivate(cmdArgs...)
215215
if err != nil {
216-
return fmt.Errorf("Failed to add Pull secret %v: %s", err, stderr)
216+
return fmt.Errorf("failed to add pull secret: %s: %w", stderr, err)
217217
}
218218
return nil
219219
}
@@ -225,7 +225,7 @@ func EnsureGeneratedClientCAPresentInTheCluster(ctx context.Context, ocConfig oc
225225
}
226226
clusterClientCA, stderr, err := ocConfig.RunOcCommand("get", "configmaps", "admin-kubeconfig-client-ca", "-n", "openshift-config", "-o", `jsonpath="{.data.ca-bundle\.crt}"`)
227227
if err != nil {
228-
return fmt.Errorf("Failed to get config map %v: %s", err, stderr)
228+
return fmt.Errorf("failed to get config map: %s: %w", stderr, err)
229229
}
230230

231231
ok, err := crctls.VerifyCertificateAgainstRootCA(clusterClientCA, adminCert)
@@ -242,10 +242,10 @@ func EnsureGeneratedClientCAPresentInTheCluster(ctx context.Context, ocConfig oc
242242
"-n", "openshift-config", "--patch", jsonPath}
243243
_, stderr, err = ocConfig.RunOcCommand(cmdArgs...)
244244
if err != nil {
245-
return fmt.Errorf("Failed to patch admin-kubeconfig-client-ca config map with new CA` %v: %s", err, stderr)
245+
return fmt.Errorf("failed to patch admin-kubeconfig-client-ca config map with new CA: %s: %w", stderr, err)
246246
}
247247
if err := sshRunner.CopyFile(constants.KubeconfigFilePath, ocConfig.KubeconfigPath, 0644); err != nil {
248-
return fmt.Errorf("Failed to copy generated kubeconfig file to VM: %v", err)
248+
return fmt.Errorf("failed to copy generated kubeconfig file to VM: %w", err)
249249
}
250250

251251
return nil
@@ -259,7 +259,7 @@ func RemovePullSecretFromCluster(ctx context.Context, ocConfig oc.Config, sshRun
259259

260260
_, stderr, err := ocConfig.RunOcCommand(cmdArgs...)
261261
if err != nil {
262-
return fmt.Errorf("Failed to remove Pull secret %w: %s", err, stderr)
262+
return fmt.Errorf("failed to remove pull secret: %s: %w", stderr, err)
263263
}
264264
return waitForPullSecretRemovedFromInstanceDisk(ctx, sshRunner)
265265
}
@@ -269,7 +269,7 @@ func waitForPullSecretRemovedFromInstanceDisk(ctx context.Context, sshRunner *ss
269269
pullSecretPresentFunc := func() error {
270270
stdout, stderr, err := sshRunner.RunPrivate(fmt.Sprintf("sudo cat %s", vmPullSecretPath))
271271
if err != nil {
272-
return &errors.RetriableError{Err: fmt.Errorf("failed to read %s file: %v: %s", vmPullSecretPath, err, stderr)}
272+
return &errors.RetriableError{Err: fmt.Errorf("failed to read %s file: %s: %w", vmPullSecretPath, stderr, err)}
273273
}
274274
if err := validation.ImagePullSecret(stdout); err == nil {
275275
return &errors.RetriableError{Err: fmt.Errorf("pull secret is still present on the instance disk")}
@@ -286,7 +286,7 @@ func RemoveOldRenderedMachineConfig(ocConfig oc.Config) error {
286286
// For 4.8 we don't disable mco and it does contain the machineconfigs.
287287
stdout, stderr, err := ocConfig.RunOcCommand("get mc --sort-by=.metadata.creationTimestamp --no-headers -oname")
288288
if err != nil {
289-
return fmt.Errorf("failed to get machineconfig resource %w: %s", err, stderr)
289+
return fmt.Errorf("failed to get machineconfig resource: %s: %w", stderr, err)
290290
}
291291
sortedMachineConfigsWithTime := strings.Split(stdout, "\n")
292292
if len(sortedMachineConfigsWithTime) == 0 {
@@ -318,7 +318,7 @@ func RemoveOldRenderedMachineConfig(ocConfig oc.Config) error {
318318
if deleteRenderedMachineConfig != "" {
319319
_, stderr, err = ocConfig.RunOcCommand(fmt.Sprintf("delete %s", deleteRenderedMachineConfig))
320320
if err != nil {
321-
return fmt.Errorf("Failed to remove machineconfigpools %w: %s", err, stderr)
321+
return fmt.Errorf("failed to remove machineconfigpools: %s: %w", stderr, err)
322322
}
323323
}
324324
return nil
@@ -331,7 +331,7 @@ func EnsureClusterIDIsNotEmpty(ctx context.Context, ocConfig oc.Config) error {
331331

332332
stdout, stderr, err := ocConfig.RunOcCommand("get", "clusterversion", "version", "-o", `jsonpath="{['spec']['clusterID']}"`)
333333
if err != nil {
334-
return fmt.Errorf("Failed to get clusterversion %v: %s", err, stderr)
334+
return fmt.Errorf("failed to get clusterversion: %s: %w", stderr, err)
335335
}
336336
if strings.TrimSpace(stdout) != "" {
337337
return nil
@@ -344,7 +344,7 @@ func EnsureClusterIDIsNotEmpty(ctx context.Context, ocConfig oc.Config) error {
344344

345345
_, stderr, err = ocConfig.RunOcCommand(cmdArgs...)
346346
if err != nil {
347-
return fmt.Errorf("Failed to update cluster ID %v: %s", err, stderr)
347+
return fmt.Errorf("failed to update cluster ID: %s: %w", stderr, err)
348348
}
349349

350350
return nil
@@ -389,13 +389,13 @@ func AddProxyConfigToCluster(ctx context.Context, sshRunner *ssh.Runner, ocConfi
389389

390390
patchEncode, err := json.Marshal(patch)
391391
if err != nil {
392-
return fmt.Errorf("Failed to encode to json: %v", err)
392+
return fmt.Errorf("failed to encode to json: %w", err)
393393
}
394394
logging.Debugf("Patch string %s", string(patchEncode))
395395

396396
cmdArgs := []string{"patch", "proxy", "cluster", "-p", fmt.Sprintf("'%s'", string(patchEncode)), "--type", "merge"}
397397
if _, stderr, err := ocConfig.RunOcCommandPrivate(cmdArgs...); err != nil {
398-
return fmt.Errorf("Failed to add proxy details %v: %s", err, stderr)
398+
return fmt.Errorf("failed to add proxy details: %s: %w", stderr, err)
399399
}
400400
return nil
401401
}
@@ -423,7 +423,7 @@ func addProxyCACertToCluster(sshRunner *ssh.Runner, ocConfig oc.Config, proxy *h
423423
}
424424
cmdArgs := []string{"apply", "-f", proxyConfigMapFileName}
425425
if _, stderr, err := ocConfig.RunOcCommandPrivate(cmdArgs...); err != nil {
426-
return fmt.Errorf("Failed to add proxy cert details %v: %s", err, stderr)
426+
return fmt.Errorf("failed to add proxy cert details: %s: %w", stderr, err)
427427
}
428428
return nil
429429
}
@@ -452,7 +452,7 @@ func WaitForPullSecretPresentOnInstanceDisk(ctx context.Context, sshRunner *ssh.
452452
}
453453
stdout, stderr, err := sshRunner.RunPrivate(fmt.Sprintf("sudo cat %s", vmPullSecretPath))
454454
if err != nil {
455-
return fmt.Errorf("failed to read %s file: %v: %s", vmPullSecretPath, err, stderr)
455+
return fmt.Errorf("failed to read %s file: %s: %w", vmPullSecretPath, stderr, err)
456456
}
457457
if err := validation.ImagePullSecret(stdout); err != nil {
458458
return &errors.RetriableError{Err: fmt.Errorf("pull secret not updated to disk")}

pkg/crc/cluster/csr.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func getCSRList(ctx context.Context, ocConfig oc.Config, expectedSignerName stri
3333
}
3434
output, stderr, err := ocConfig.WithFailFast().RunOcCommand("get", "csr", "-ojson")
3535
if err != nil {
36-
return nil, fmt.Errorf("Failed to get all certificate signing requests: %v %s", err, stderr)
36+
return nil, fmt.Errorf("failed to get all certificate signing requests: %s: %w", stderr, err)
3737
}
3838
err = json.Unmarshal([]byte(output), &csrs)
3939
if err != nil {

pkg/crc/cluster/kubeadmin_password.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func UpdateUserPasswords(ctx context.Context, ocConfig oc.Config, newKubeAdminPa
4040

4141
given, stderr, err := ocConfig.RunOcCommandPrivate("get", "secret", "htpass-secret", "-n", "openshift-config", "-o", `jsonpath="{.data.htpasswd}"`)
4242
if err != nil {
43-
return fmt.Errorf("%s:%v", stderr, err)
43+
return fmt.Errorf("%s: %w", stderr, err)
4444
}
4545
ok, externals, err := compareHtpasswd(given, credentials)
4646
if err != nil {
@@ -60,7 +60,7 @@ func UpdateUserPasswords(ctx context.Context, ocConfig oc.Config, newKubeAdminPa
6060
"-n", "openshift-config", "--type", "merge"}
6161
_, stderr, err = ocConfig.RunOcCommandPrivate(cmdArgs...)
6262
if err != nil {
63-
return fmt.Errorf("failed to update user passwords %v: %s", err, stderr)
63+
return fmt.Errorf("failed to update user passwords: %s: %w", stderr, err)
6464
}
6565
return nil
6666
}

pkg/crc/config/viper_config.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ func (c *ViperStorage) viperInstance() (*viper.Viper, error) {
4343
v.AutomaticEnv()
4444
v.SetTypeByDefaultValue(true)
4545
if err := v.ReadInConfig(); err != nil {
46-
return nil, fmt.Errorf("error reading configuration file '%s': %v", c.configFile, err)
46+
return nil, fmt.Errorf("error reading configuration file '%s': %w", c.configFile, err)
4747
}
4848
if c.flagSet == nil {
4949
return v, nil

pkg/crc/gpg/gpg.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ func Verify(filePath, signatureFilePath string) error {
2929

3030
keyring, err := openpgp.ReadArmoredKeyRing(bytes.NewBufferString(constants.CrcOrgPublicKey))
3131
if err != nil {
32-
return fmt.Errorf("failed to parse public key: %s", err)
32+
return fmt.Errorf("failed to parse public key: %w", err)
3333
}
3434

3535
if _, err = openpgp.CheckArmoredDetachedSignature(keyring, data, signature, nil); err != nil {
36-
return fmt.Errorf("failed to check signature: %s", err)
36+
return fmt.Errorf("failed to check signature: %w", err)
3737
}
3838
return nil
3939
}

pkg/crc/machine/bundle/metadata.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -435,7 +435,7 @@ func FetchLatestReleaseInfo() (*ReleaseInfo, error) {
435435

436436
var releaseInfo ReleaseInfo
437437
if err := json.Unmarshal(releaseMetaData, &releaseInfo); err != nil {
438-
return nil, fmt.Errorf("Error unmarshaling JSON metadata: %v", err)
438+
return nil, fmt.Errorf("error unmarshaling JSON metadata: %w", err)
439439
}
440440

441441
return &releaseInfo, nil

pkg/crc/machine/exists.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ func (client *client) Exists() (bool, error) {
1111
defer cleanup()
1212
exists, err := libMachineAPIClient.Exists(client.name)
1313
if err != nil {
14-
return false, fmt.Errorf("Error checking if the host exists: %s", err)
14+
return false, fmt.Errorf("error checking if the host exists: %w", err)
1515
}
1616
return exists, nil
1717
}

0 commit comments

Comments
 (0)