rgw: Fix subuser harder with tenants
We have several ways to set the tenant and user in the operation
state now:
radosgw-admin --uid=user <command> # default empty tenant
radosgw-admin --tenant=ten --uid=user <command>
radosgw-admin --uid='ten$user' <command>
radosgw-admin --subuser='ten$user:sub' <command>
The previous commit
a51fbf2d fixed some of these but broke the others.
The root of the difficulty is that rgw_op.set_subuser() has a magical
side effect of setting rgw_op.user_id, but the code pretends that it's
one of many other setters.
Unfortunately, getting rid of the side effect is not easy here.
It is exactly what we want for historic compatibility, so killing
the magic requires a pile of code elsewhere, or worse, implicit
ordering requirements (invoke set_subuser before set_user or else).
For now we doubled down on the magic. This way at least it is all
in one place and you do not have to flip pages of code to understand
what is going on.
Signed-off-by: Pete Zaitcev <zaitcev@redhat.com>