From: afreen23 Date: Tue, 25 Feb 2025 12:35:32 +0000 (+0530) Subject: Merge pull request #61319 from rhcs-dashboard/gklm-kmip X-Git-Tag: testing/wip-pdonnell-testing-20250225.133217-debug~10 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=bb8114fe38a484fd0172b931a2cf1502f8f77af3;p=ceph-ci.git Merge pull request #61319 from rhcs-dashboard/gklm-kmip Reviewed-by: Afreen Misbah --- bb8114fe38a484fd0172b931a2cf1502f8f77af3 diff --cc src/pybind/mgr/dashboard/controllers/rgw.py index 3f922a4212d,23321a94308..d2c5e085ce3 --- a/src/pybind/mgr/dashboard/controllers/rgw.py +++ b/src/pybind/mgr/dashboard/controllers/rgw.py @@@ -678,29 -665,34 +669,41 @@@ class RgwBucket(RgwRESTController) self._delete_lifecycle(bucket_name, daemon_name, uid) return self._append_bid(result) if result else None - def delete(self, bucket, purge_objects='true', daemon_name=None): - return self.proxy(daemon_name, 'DELETE', 'bucket', { - 'bucket': bucket, - 'purge-objects': purge_objects - }, json_response=False) + def delete(self, bucket, daemon_name=None): + try: + bucket_info = self.proxy(daemon_name, 'GET', 'bucket', {'bucket': bucket}) + num_objects = bucket_info.get('usage', {}).get('rgw.main', {}).get('num_objects', 0) + if num_objects > 0: + raise DashboardException(msg='Unable to delete bucket"{}" - Bucket is not empty. ' + 'Remove all objects before deletion.'.format(bucket)) + return self.proxy(daemon_name, 'DELETE', 'bucket', { + 'bucket': bucket + }, json_response=False) + except (DashboardException, RequestException) as e: # pragma: no cover + raise DashboardException(e, component='rgw') @RESTController.Collection(method='PUT', path='/setEncryptionConfig') - @allow_empty_body - def set_encryption_config(self, encryption_type=None, kms_provider=None, auth_method=None, - secret_engine=None, secret_path='', namespace='', address=None, - token=None, daemon_name=None, owner=None, ssl_cert=None, - client_cert=None, client_key=None): - return self._set_encryption_config(encryption_type, kms_provider, auth_method, - secret_engine, secret_path, namespace, - address, token, daemon_name, owner, ssl_cert, - client_cert, client_key) + def set_encryption_config(self, encryption_type: Optional[str] = None, + kms_provider: Optional[str] = None, + config: Optional[Union[VaultConfig, KmipConfig]] = None, + daemon_name: Optional[str] = None): + if encryption_type is None or daemon_name is None: + raise ValueError("Both 'encryption_type' and 'daemon_name' must be provided.") + + if kms_provider == KmsProviders.VAULT.value: + config = config if config else VaultConfig( + addr="", auth="", prefix="", secret_engine="" + ) + elif kms_provider == KmsProviders.KMIP.value: + config = config if config else KmipConfig( + addr="" + ) + else: + raise ValueError("Invalid KMS provider specified.") + + return CephService.set_encryption_config( + encryption_type, kms_provider, config, daemon_name + ) @RESTController.Collection(method='GET', path='/getEncryption') @allow_empty_body diff --cc src/pybind/mgr/dashboard/openapi.yaml index 2033da0c1de,a5e603ec49a..fca527eb06a mode 100755,100644..100755 --- a/src/pybind/mgr/dashboard/openapi.yaml +++ b/src/pybind/mgr/dashboard/openapi.yaml