The error message if you try and create an S3 user with an email
address that is already associated with another S3 account is very
confusing; this patch makes it much clearer
To reproduce:
radosgw-admin user create --uid=foo --display-name="Foo test" --email=bar@domain.invalid
radosgw-admin user create --uid=test --display-name="AN test" --email=bar@domain.invalid
could not create user: unable to parse parameters, user id mismatch, operation id: foo does not match: test
With this patch:
radosgw-admin user create --uid=test --display-name="AN test" --email=bar@domain.invalid
could not create user: unable to create user test because user id foo already exists with email bar@domain.invalid
Fixes: https://tracker.ceph.com/issues/49137
Fixes: https://tracker.ceph.com/issues/19411
Signed-off-by: Matthew Vernon <mv3@sanger.ac.uk>
(cherry picked from commit
05318d6f71e45a42a46518a0ef17047dfab83990)
ret = check_op(op_state, &subprocess_msg);
if (ret < 0) {
- set_err_msg(err_msg, "unable to parse parameters, " + subprocess_msg);
+ if (is_populated() && (user_id.compare(op_state.get_user_id()) != 0)) {
+ set_err_msg(err_msg, "unable to create user " + user_id.to_str()
+ + " because user id " + op_state.get_user_id().to_str()
+ + " already exists with email "
+ + op_state.get_user_email());
+ } else {
+ set_err_msg(err_msg, "unable to parse parameters, " + subprocess_msg);
+ }
return ret;
}