RE: Question about ObjectStoreDriver for implementing Ceph driver
Yes Rohit. TO is the correct way to send details to Resource layer. @Wido Looking forward to the commits. Let me know if you have any questions. -Original Message- From: Wido den Hollander Sent: Tuesday, December 12, 2023 2:28 PM To: dev@cloudstack.apache.org; Rohit Yadav ; kis...@apache.org Subject: Re: Question about ObjectStoreDriver for implementing Ceph driver 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 > Sent: Tuesday, December 12, 2023 1:28:56 AM > To: dev@cloudstack.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/or > g/twonote/rgwadmin4j/RgwAdmin.html > > > >
Re: Question about ObjectStoreDriver for implementing Ceph driver
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 Sent: Tuesday, December 12, 2023 1:28:56 AM To: dev@cloudstack.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
Re: Question about ObjectStoreDriver for implementing Ceph driver
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. Regards. Regards. From: Wido den Hollander Sent: Tuesday, December 12, 2023 1:28:56 AM To: dev@cloudstack.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
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