Op 12/12/2023 om 04:45 schreef Rohit Yadav:
Hi Wido,

I think when the minio object storage plugin was written we didn’t have the 
limitations or foresight on how to structure the code, I would agree in 
refactoring the interface enough to allow what you’re trying to achieve.

Typically to a plugin you don’t want to pass database objects (Dao or VO) but a 
transform them as transfer object (TO) that doesn’t introduce dao or schema pkg 
dependencies to the plugin and TOs are kept as simple Java object. In the TO 
you can introduce fields and getters that suit your use cases.


Got it, thanks for the feedback! I'll work on this in two different commits.

Wido

Regards.

Regards.
________________________________
From: Wido den Hollander <w...@widodh.nl.INVALID>
Sent: Tuesday, December 12, 2023 1:28:56 AM
To: dev@cloudstack.apache.org <dev@cloudstack.apache.org>; kis...@apache.org 
<kis...@apache.org>
Subject: Question about ObjectStoreDriver for implementing Ceph driver

Hi (Kishan),

I am making a first attempt [0] to implement a Ceph RGW [1] Object Store
Driver for CloudStack and I have a few questions about the code.

While implementing the Ceph RGW driver I have noticed that some methods
are provided the bucket's name (as a String) as an argument, but I'd
rather have a 'Bucket' object, for example:

public AccessControlList getBucketAcl(String bucketName, long storeId)
public boolean setBucketEncryption(String bucketName, long storeId)

In Ceph's case it would be better if these methods would get a Bucket
object, like:


public AccessControlList getBucketAcl(Bucket bucket, long storeId)

The reason is that I need to access the Account the bucket belongs to.
With Minio there is an 'Admin' client which allows you to do all these
operations as an Admin, but with Ceph there isn't. With Ceph you are
supposed to obtain the credentials (access + secret) via an Admin API
[2] and then execute these commands as the user.

Now, we have the access + secret key from the account recorded under the
account and we can access that from the Bucket object:

bucket.getAccessKey()
bucket.getSecretKey()

My proposal would be to change the signature of these methods, but
before I do so, is there any particular reason the String was passed and
not the whole Bucket object?

Thanks,

Wido

[0]: https://github.com/wido/cloudstack/commits/ceph-object-store
[1]: https://ceph.io/en/discover/technology/#object
[2]:
https://www.javadoc.io/doc/io.github.twonote/radosgw-admin4j/latest/org/twonote/rgwadmin4j/RgwAdmin.html


Reply via email to