@@ -304,6 +304,14 @@ def _set_tags(self, bucket_name, tags, daemon_name, owner):
304304 rgw_client = RgwClient .instance (owner , daemon_name )
305305 return rgw_client .set_tags (bucket_name , tags )
306306
307+ def _get_acl (self , bucket_name , daemon_name , owner ):
308+ rgw_client = RgwClient .instance (owner , daemon_name )
309+ return str (rgw_client .get_acl (bucket_name ))
310+
311+ def _set_acl (self , bucket_name : str , acl : str , owner , daemon_name ):
312+ rgw_client = RgwClient .instance (owner , daemon_name )
313+ return rgw_client .set_acl (bucket_name , acl )
314+
307315 @staticmethod
308316 def strip_tenant_from_bucket_name (bucket_name ):
309317 # type (str) -> str
@@ -357,6 +365,7 @@ def get(self, bucket, daemon_name=None):
357365 result ['versioning' ] = versioning ['Status' ]
358366 result ['mfa_delete' ] = versioning ['MfaDelete' ]
359367 result ['bucket_policy' ] = self ._get_policy (bucket_name )
368+ result ['acl' ] = self ._get_acl (bucket_name , daemon_name , result ['owner' ])
360369
361370 # Append the locking configuration.
362371 locking = self ._get_locking (result ['owner' ], daemon_name , bucket_name )
@@ -370,7 +379,7 @@ def create(self, bucket, uid, zonegroup=None, placement_target=None,
370379 lock_retention_period_days = None ,
371380 lock_retention_period_years = None , encryption_state = 'false' ,
372381 encryption_type = None , key_id = None , tags = None ,
373- bucket_policy = None , daemon_name = None ):
382+ bucket_policy = None , canned_acl = None , daemon_name = None ):
374383 lock_enabled = str_to_bool (lock_enabled )
375384 encryption_state = str_to_bool (encryption_state )
376385 try :
@@ -392,6 +401,9 @@ def create(self, bucket, uid, zonegroup=None, placement_target=None,
392401 if bucket_policy :
393402 self ._set_policy (bucket , bucket_policy , daemon_name , uid )
394403
404+ if canned_acl :
405+ self ._set_acl (bucket , canned_acl , uid , daemon_name )
406+
395407 return result
396408 except RequestException as e : # pragma: no cover - handling is too obvious
397409 raise DashboardException (e , http_status_code = 500 , component = 'rgw' )
@@ -401,7 +413,8 @@ def set(self, bucket, bucket_id, uid, versioning_state=None,
401413 encryption_state = 'false' , encryption_type = None , key_id = None ,
402414 mfa_delete = None , mfa_token_serial = None , mfa_token_pin = None ,
403415 lock_mode = None , lock_retention_period_days = None ,
404- lock_retention_period_years = None , tags = None , bucket_policy = None , daemon_name = None ):
416+ lock_retention_period_years = None , tags = None , bucket_policy = None ,
417+ canned_acl = None , daemon_name = None ):
405418 encryption_state = str_to_bool (encryption_state )
406419 # When linking a non-tenant-user owned bucket to a tenanted user, we
407420 # need to prefix bucket name with '/'. e.g. photos -> /photos
@@ -444,7 +457,9 @@ def set(self, bucket, bucket_id, uid, versioning_state=None,
444457 if tags :
445458 self ._set_tags (bucket_name , tags , daemon_name , uid )
446459 if bucket_policy :
447- self ._set_policy (bucket , bucket_policy , daemon_name , uid )
460+ self ._set_policy (bucket_name , bucket_policy , daemon_name , uid )
461+ if canned_acl :
462+ self ._set_acl (bucket_name , canned_acl , uid , daemon_name )
448463 return self ._append_bid (result )
449464
450465 def delete (self , bucket , purge_objects = 'true' , daemon_name = None ):
0 commit comments