Skip to content

Commit

Permalink
rpk: decode adminapi error message in role creation
Browse files Browse the repository at this point in the history
  • Loading branch information
r-vasquez committed Nov 26, 2024
1 parent ffbd1d3 commit b6628fa
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
16 changes: 16 additions & 0 deletions src/go/rpk/pkg/adminapi/admin.go
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,22 @@ func NewHostClient(fs afero.Fs, p *config.RpkProfile, host string) (*rpadmin.Adm
return rpadmin.NewClient(addrs, tc, auth, p.FromCloud)
}

// TryDecodeMessageFromErr tries to decode the message if it's a
// rpadmin.HTTPResponseError and logs the full error. Otherwise, it returns
// the original error string.
func TryDecodeMessageFromErr(err error) string {
if err == nil {
return ""
}
if he := (*rpadmin.HTTPResponseError)(nil); errors.As(err, &he) {
zap.L().Sugar().Debugf("got admin API error: %v", strings.TrimSpace(err.Error()))
if body, err := he.DecodeGenericErrorBody(); err == nil {
return body.Message
}
}
return strings.TrimSpace(err.Error())
}

// licenseFeatureChecks checks if the user is talking to a cluster that has
// enterprise features enabled without a license and returns a message with a
// warning.
Expand Down
2 changes: 1 addition & 1 deletion src/go/rpk/pkg/cli/security/role/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ flag in the 'rpk security acl create' command.`,

roleName := args[0]
_, err = cl.CreateRole(cmd.Context(), roleName)
out.MaybeDie(err, "unable to create role %q: %v", roleName, err)
out.MaybeDie(err, "unable to create role %q: %v", roleName, adminapi.TryDecodeMessageFromErr(err))

if isText, _, s, err := f.Format(createResponse{[]string{roleName}}); !isText {
out.MaybeDie(err, "unable to print in the required format %q: %v", f.Kind, err)
Expand Down

0 comments on commit b6628fa

Please sign in to comment.