rgw: user accounts implementation#54333
Conversation
3db7cf1 to
964203e
Compare
|
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
a6a85a8 to
d8b7122
Compare
d8b7122 to
c6c63fd
Compare
|
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
c6c63fd to
1b2359b
Compare
1b2359b to
a020826
Compare
|
This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved |
a020826 to
82a3e0c
Compare
42c6b16 to
635d1b5
Compare
2481ee8 to
5c6bbe6
Compare
Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
move the persistent queue removal into remove_topic() where we have access to the topic metadata. avoid trying to remove the queue if it isn't enabled Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
a bucket's notification configuration may refer to topics from several different tenants or accounts. when publishing to a given topic, look in the correct namespace for each topic instead of defaulting to the requesting user's tenant namespace Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
Signed-off-by: Casey Bodley <cbodley@redhat.com>
new sns test cases are using this for topic names, but the '.' is not
allowed there:
> api_params = {'Name': 'test-client.0-n3bdgre5el2jk8v-606'}
> botocore.exceptions.ClientError: An error occurred (InvalidArgument) when calling the CreateTopic operation: Name must be made up of only uppercase and lowercase ASCII letters, numbers, underscores, and hyphens
Signed-off-by: Casey Bodley <cbodley@redhat.com>
|
How is bucket quota managed for an account? For a non-accounted rgw user, we can set user and bucket level quotas and both are visible in However, for an account, we can only set account level quota: Shouldn't we also be able to set/view bucket quotas given an account? |
@BBoozmen you can set bucket quotas directly on the buckets, so this didn't seem useful to me. if you disagree, would you open a tracker issue with a feature request? i'm trying to get this pr merged for squid asap |
Sounds good. We can discuss this as a separate item. |
|
jenkins retest this please |
|
|
jenkins test make check |
…create buckets" This reverts commit 3cc27f0. Signed-off-by: Casey Bodley <cbodley@redhat.com>
…pics Signed-off-by: Casey Bodley <cbodley@redhat.com>
@yuvalif the new test_ps_s3_persistent_notification_http_account test case was failing after that. i had to add another commit to teach |
user account design document in #54045
this revives previous work from #46373 (which iself was based on Abhishek's #35726). that became too painful to faithfully rebase, so i've reimplemented parts of it instead; i'll be sure to credit Abhishek for his work in the final commits
TODO
Account metadata
struct RGWAccountInforgw::account::validate_id/name())rgw::sal::Driverinterfaces to read/writeUser metadata
RGWUserInfo::account_idmemberuser modifyto migrate existing legacy/non-account users into an account. account id can't change afterRole metadata
RGWRoleInfo::account_idmemberGroup metadata
struct RGWGroupInforgw::sal::Driverinterfaces to read/write/listTopic metadata
RadosStore
RadosStorecls_userto track stats in{account}.bucketsthe same way users do in{user}.bucketscls_userto track{account}.users,{account}.roles,{account}.groups(started in cls/user: add interfaces to index user account resources #54563)RGWBucketMetadataHandler: on change toRGWBucketEntryPoint::owner, update linkage in{user}.bucketsand/or{account}.bucketsobjects via cls_userRGWUserMetadataHandler: on change toRGWUserInfo::account_id, update linkage in{account}.usersvia cls_userACLs
IAM Policy
rgw::account::validate_id()RGWUserInfo::account_idinstead ofRGWUserInfo::user_id.tenantBucket Ownership
RGWBucketInfo::owneruses rgw_owner variant which can either be rgw_user or rgw_account_idRGWBucketInfo::ownerIAM APIs
Testing
Show available Jenkins commands
jenkins retest this pleasejenkins test classic perfjenkins test crimson perfjenkins test signedjenkins test make checkjenkins test make check arm64jenkins test submodulesjenkins test dashboardjenkins test dashboard cephadmjenkins test apijenkins test docsjenkins render docsjenkins test ceph-volume alljenkins test ceph-volume toxjenkins test windows