On Fri, Feb 9, 2024 at 9:38 AM Ronald Feicht <ronald.fei...@scsynergy.com> wrote: > > Hi, > > > >> The Huawei Object Storage Java SDK does not yet support bucket > >> encryption. What should I return in the corresponding methods > >> "setBucketEncryption" and "deleteBucketEncryption" - true, false or > >> throw an exception? > > > This is a design decision that the code should already be clear on (in > > for instance the minio plugin) . Strangely, the DeleteBucketCmd always > > creates a success response, while the CreateBucketCmd handles > > exceptions as expected. I think there is a bug in DeleteBucketCmd in > > that respect. > > > Actually, looking at the MinIO or simulator plugin, the design decision is > not clear at all: > > "setBucketEncryption" and "deleteBucketEncryption" both have a boolean as > return value, but only ever return true or throw an exception, yet, never > return false. So, it boils down to "Everything went well unless an exception > is thrown." Normally in Java this kind of behavior is achieved by a "void" > return value. Therefore I naturally wondered when my methods should return > false. The intention behind the boolean might have been: > > true -- the method set / deleted the bucket encryption, respectively > > exception -- the method should have completed but some unforeseen > out-of-the-ordinary error occurred, e. g. network connection error > > false -- the device was purchased without a license for bucket-level > encryption; unless a valid encryption license is installed into the device, > this method will always continue to return false
That sounds reasonable to me. I think you should stick to it. > > I gues your PR is https://github.com/apache/cloudstack/pull/8359. You > > can look at the ./deps/install-non-oss.sh or at > > > https://github.com/shapeblue/cloudstack-nonoss/blob/main/install-non-oss.sh > > to see how these situations are handled. This method would require you > > to hide your sub-project behind the -Dnoredist flag. which is an > > inconvenience but is the only way to deal with those > > non-redistributables. If Huawei allows, we can add the jar in that > > repo. > > > It seems to me like this will not work, because an Object Storage Plugin has > to be added to client/pom.xml and the provider's name into > ui/src/views/infra/AddObjectStorage.vue? Hardcoding my plugin into those > places would result in the client/pom.xml not building and my provider to be > available in the UI's dropdown selection even though the corresponding plugin > is not present on the classpath? I know some other components are also conditionally coded in the UI, like vmware. That should be taken care of. > Or is there some dynamic dependency injection class scanning going on at > runtime which detects all plugin provider beans at runtime and sends their > ObjectStoreProvider instance variable "providerName" property to the UI to > populate the dropdown selection? When a plugin is selected in the UI this > would then trigger the client/pom.xml project to do a dynamic bean lookup to > find the correct ObjectStoreProvider class by "providerName"? If this dynamic > bean discovery is actually being done I would not have to add my project to > client/pom.xml or into the "AddObjectStorage.vue" file? So, I guess dynamic > bean discovery is NOT done? I am not sure of all these question, but the client does [listCapabilities](https://cloudstack.apache.org/api/apidocs-4.19/apis/listCapabilities.html) and [listApis](https://cloudstack.apache.org/api/apidocs-4.19/apis/listApis.html) calls to retrieve whatever information it needs to prepare the proper UI components. (I am not saying no design issues may have been introduced in the object storage plugins) > I have next to no experience with the Spring (Boot) framework, only with Java > SE / Jakarta EE and CDI / Weld, so maybe I just overlooked something very > important in the code base, but from what information I was able to gather it > seems like I should not be contributing my plugin upstream unless I can add > the JAR library in question via Maven coordinates. > > > And judging from the fact that Huawei has still not answered my request to > publish the OBS SDK with Maven coordinates, I assume that this is the > "chinese way" of saying "Nope, not going to happen!". sounds so :( > > > Mit freundlichen Grüßen > R. Feicht > > sc synergy GmbH > Hilgestrasse 14 | 55294 Bodenheim | Deutschland > Fon: +49 6135 71691 - 000 | Fax: +49 6135 71691 - 299 > http://www.scsynergy.com | ronald.fei...@scsynergy.com > Sitz der Gesellschaft Bodenheim, HRB 8830, Amtsgericht Mainz, > Geschäftsführer: Christian Reichert > > > ________________________________ > From: Daan Hoogland <daan.hoogl...@gmail.com> > Sent: Wednesday, January 31, 2024 10:49 > To: dev@cloudstack.apache.org > Subject: Re: Adding Huawei Object Storage: 3 questions > > Ronald, > > On Wed, Jan 31, 2024 at 10:02 AM Ronald Feicht > <ronald.fei...@scsynergy.de> wrote: > > > > Hi, > > > > I have only lately found out, that I cannot use the publicly available > > Java SDK for Huawei Object Storage (which has Maven coordinates) as this > > SDK only works for the public Huawei Cloud, not for local non-cloud > > devices. Instead, all I have is a JAR file under the Apache License 2.0 > > sent to me via email. I integrated that JAR file as a local repository > > inside plugins/storage/object/huawei-obs/local-huawei-sdk/. This is a > > quite ugly and frustrating "solution" as I have no influence on getting > > the right Java SDK published to maven central. I have opened a support > > ticket with Huawei asking whether I may include the JAR into the > > Cloudstack source code or better yet if they would be so kind as to > > publish it via maven central - but have not received an answer, yet. > > What is the official way for integrating local-only JAR files under the > > Apache License 2.0 into Cloudstack? > > I gues your PR is https://github.com/apache/cloudstack/pull/8359. You > can look at the ./deps/install-non-oss.sh or at > https://github.com/shapeblue/cloudstack-nonoss/blob/main/install-non-oss.sh > to see how these situations are handled. This method would require you > to hide your sub-project behind the -Dnoredist flag. which is an > inconvenience but is the only way to deal with those > non-redistributables. If Huawei allows, we can add the jar in that > repo. > > > The Huawei Object Storage Java SDK does not yet support bucket > > encryption. What should I return in the corresponding methods > > "setBucketEncryption" and "deleteBucketEncryption" - true, false or > > throw an exception? > > This is a design decision that the code should already be clear on (in > for instance the minio plugin) . Strangely, the DeleteBucketCmd always > creates a success response, while the CreateBucketCmd handles > exceptions as expected. I think there is a bug in DeleteBucketCmd in > that respect. > > > My assumption: The "createUser" method gets called via the UI by an > > account wishing to create a simple non-privileged user which may then > > use the created buckets of that account, but not create, modify or > > delete buckets themselves? Is this assumption correct? > > Users log into accounts and get their rights based on the account. For > all users in an account the rights are the same. > sorry, I might not have gotten it but I no better answer on that (see > the code ;) > > > > > Best regards, > > Ronald > > -- > > *sc synergy GmbH* > > Hilgestrasse 14 | 55294 Bodenheim | Deutschland > > Fon: +49 6135 71691 - 000 | Fax: +49 6135 71691 - 299 > > http://www.scsynergy.com | ronald.fei...@scsynergy.com > > Sitz der Gesellschaft Bodenheim, HRB 8830, Amtsgericht Mainz, > > Geschäftsführer: Christian Reichert > > > > -- > Daan > -- Daan