Re: New Object Storage - Huawei OBS

2024-01-08 Thread Ronald Feicht

Hello Kishan,

sorry for taking so long to answer - I was on holiday. Your solution 
works and I can now continue with implementing the Huawei object store.

BIG THANKS to ALL for your help!

Regards,
Ronald

On 12/15/23 19:29, Kishan Kavala wrote:

Hi Ronald,
  Here is what I found from the logs:

Error:
WARN  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet] (main:null) (logid:) Failed to 
start module [root-ca] due to: [Failed to start bean 'cloudStackLifeCycle'; 
nested exception is java.lang.LinkageError: loader constraint violation: when 
resolving method 'org.bouncycastle.cert.X509v3CertificateBuilder 
org.bouncycastle.cert.X509v3CertificateBuilder.addExtension(org.bouncycastle.asn1.ASN1ObjectIdentifier,
 boolean, org.bouncycastle.asn1.ASN1Encodable)' the class loader 
org.eclipse.jetty.webapp.WebAppClassLoader @1d9295e2 of the current class, 
org/apache/cloudstack/utils/security/CertUtils, and the class loader 
org.codehaus.plexus.classworlds.realm.ClassRealm @7fecc26f for the method's 
defining class, org/bouncycastle/cert/X509v3CertificateBuilder, have different 
Class objects for the type org/bouncycastle/asn1/ASN1ObjectIdentifier used in 
the signature (org.apache.cloudstack.utils.security.CertUtils is in unnamed 
module of loader org.eclipse.jetty.webapp.WebAppClassLoader @1d9295e2, parent 
loader org.codehaus.plexus.classworlds.realm.ClassRealm @7fecc26f; 
org.bouncycastle.cert.X509v3CertificateBuilder is in unnamed module of loader 
org.codehaus.plexus.classworlds.realm.ClassRealm @7fecc26f, parent loader 
'bootstrap')].

Reason:
ASN1ObjectIdentifier has different versions in the dependencies of root-ca and 
Huawei OBS(huaweicloud-sdk-iam) packages. java.lang.LinkageError happens when 
code is compiled with dependency version say v1 and then is running with 
dependency version say v2.

Solution:

Add provided scope to huaweicloud-sdk-iam dependency in Huawei OBS project. 
This will mark dependencies that should be provided at runtime.


com.huaweicloud.sdk
huaweicloud-sdk-iam
3.1.69
  provided


Regards,
Kishan


  



-Original Message-
From: Kishan Kavala  
Sent: Friday, December 15, 2023 6:42 PM

To:dev@cloudstack.apache.org
Subject: RE: New Object Storage - Huawei OBS

Ronald,
  The error is coming from rootca project after adding Huawei OBS plugin.

 
 org.apache.cloudstack
 cloud-plugin-ca-rootca
 ${project.version}
 

After removing the above from client/pom.xml, Huawei OBS plugin was loaded.

On the other hand, if I remove Huawei OBS plugin and keep rootca project, I see 
no issues.

I'm investigating further, in the meantime removing rootca project can unblock 
your development.

Regards,
Kishan

  



-Original Message-
From: Ronald Feicht
Sent: Friday, December 15, 2023 2:12 PM
To:dev@cloudstack.apache.org
Subject: Re: New Object Storage - Huawei OBS

Hi Kishan,


when I add my module to client/pom.xml I get the following error 
andhttp://192.168.17.252:8080/client/  returns "HTTP ERROR 503 Service 
Unavailable" because of the following exception:

[WARNING] Failed startup of context 
o.e.j.m.p.JettyWebAppContext@1df8ea34{/client,file:///opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/,UNAVAILABLE}{file:///opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/}
java.lang.NullPointerException
 at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet$1.with
 (DefaultModuleDefinitionSet.java:104)
 at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:263)
 at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
 at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
 at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
 at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
 at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
 at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:251)
 at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.startContexts
 (DefaultModuleDefinitionSet.java:96)
 at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.load 
(DefaultModuleDefinitionSet.java:79)
 at 
org.apache.cloudstack.spring.module.factory.ModuleBasedContextFactory.loadModules
 (ModuleBasedContextFactory.java:37)
 at 
org.apache.cloudstack.spring.module.factory.CloudStackSpringContext.init 
(CloudStackSpringConte

Re: New Object Storage - Huawei OBS

2023-12-20 Thread Wido den Hollander
t   87 Dec 15 08:59 ..
[root@cloudstack-centos cloudstack-huawei-obs]# ll



/opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/WEB-INF/

total 4
-rw-r--r--. 1 root root 2694 Dec 15 08:59 web.xml
drwxr-xr-x. 2 root root   21 Dec 15 08:59 .
drwxr-xr-x. 3 root root   39 Dec 15 08:59 ..

I have compared my plugin code to that of Minio and

https://github.com/wido/cloudstack/commits/ceph-object-store but fail

to

see what I have done wrong. The only significant thing I can make out

is my

choice for the directory name
"/opt/cloudstack-huawei-obs/plugins/storage/object/huawei-obs".

In plugins/pom.xml all object storage plugins have only a simple name

without the character "-" in it.

storage/object/minio
storage/object/simulator
storage/object/huawei-obs
But surely that cannot be the source of the error?



My code doesn't work either, just running it now:

"com.cloud.exception.InvalidParameterValueException: can't find object
store provider: Ceph RGW"

But the module was loaded:

2023-12-15 12:24:39,440 INFO  
[o.a.c.s.m.m.i.DefaultModuleDefinitionSet]

(main:null) (logid:) Loading module context [storage-object-ceph] from
URL



[jar:file:/usr/share/cloudstack-management/lib/cloudstack-4.19.0.0-SNAPSHOT.jar!/META-INF/cloudstack/bootstrap/spring-bootstrap-context-inheritable.xml]
2023-12-15 12:24:39,496 INFO  
[o.a.c.s.m.m.i.DefaultModuleDefinitionSet]

(main:null) (logid:) Loaded module context [storage-object-ceph] in 56

ms


Trying to figure out what is happening.

Wido


My fork is located here
https://github.com/scsynergy/cloudstack-huawei-obs and I created a 
Pull

Request for you.



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: Kishan Kavala 
Sent: Friday, December 15, 2023 06:35
To: dev@cloudstack.apache.org
Subject: RE: New Object Storage - Huawei OBS

Hi Ronald,
    You need to add module to client/pom.xml and add the plugin 
folder

to

plugins/pom.xml.

Looks like your implementation of ObjectStoreProvider is not getting

registered as a ObjectStoreProvider.


If you can share a draft PR, I can review and suggest what is 
missing.


Regards,
Kishan




-Original Message-
From: Ronald Feicht 
Sent: Thursday, December 14, 2023 5:01 PM
To: dev@cloudstack.apache.org
Subject: Re: New Object Storage - Huawei OBS

Hi,


I had added the module to client/pom.xml, but then

http://192.168.17.252:8080/client/ retuns "HTTP ERROR 503 Service
Unavailable" because of the following exception:


[WARNING] Failed startup of context

o.e.j.m.p.JettyWebAppContext@1df8ea34



{/client,file:///opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/,UNAVAILABLE}{file:///opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/}

java.lang.NullPointerException
   at



org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet$1.with

(DefaultModuleDefinitionSet.java:104)

   at



org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule

(DefaultModuleDefinitionSet.java:263)

   at



org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule

(DefaultModuleDefinitionSet.java:268)

   at



org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule

(DefaultModuleDefinitionSet.java:268)

   at



org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule

(DefaultModuleDefinitionSet.java:268)

   at



org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule

(DefaultModuleDefinitionSet.java:268)

   at



org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule

(DefaultModuleDefinitionSet.java:268)

   at



org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule

(DefaultModuleDefinitionSet.java:251)

   at



org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.startContexts

(DefaultModuleDefinitionSet.java:96)

   at



org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.load

(DefaultModuleDefinitionSet.java:79)

   at



org.apache.cloudstack.spring.module.factory.ModuleBasedContextFactory.loadModules

(ModuleBasedContextFactory.java:37)

   at

org.apache.cloudstack.spring.module.factory.CloudStackSpringContext.init
(CloudStackSpringContext.java:70)

   at



org.apache.cloudstack.spring.module.factory.CloudStackSpringContext.

(CloudStackSpringContext.java:57)

   at



org.apache.cloudstack.spring.module.factory.CloudStackSpringContext.

(CloudStackSpringContext.java:61)

   at



org.apache.cloudstack.spring.module.web.

Re: New Object Storage - Huawei OBS

2023-12-19 Thread Wido den Hollander




Op 14/12/2023 om 10:51 schreef Ronald Feicht:

Hi,

I am trying to write an Object Storage plugin for Huawei OBS using Minio as example. I 
added my plugin code to the plugins/storage/object/ directory, added my plugin into 
plugins/pom.xml and added the string 'Huawei OBS' to AddObjectStorage.vue for the 
dropdown in the UI. But when I select that dropdown entry and click "Save" in 
the UI the following exception is thrown:


Great to see! I'm working on the Ceph plugin: 
https://github.com/wido/cloudstack/commits/ceph-object-store


I will be changing something to the framework where a BucketTO is added 
and passed, not just a String containing the bucket's name.


My PR will go out next week or after Christmas I think.

Wido


com.cloud.exception.InvalidParameterValueException: can't find object store 
provider: Huawei OBS
 at 
com.cloud.storage.StorageManagerImpl.discoverObjectStore(StorageManagerImpl.java:3743)
 at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.base/java.lang.reflect.Method.invoke(Method.java:566)
 at 
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)
 at 
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)
 at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
 at 
org.apache.cloudstack.network.contrail.management.EventUtils$EventInterceptor.invoke(EventUtils.java:107)
 at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
 at 
com.cloud.event.ActionEventInterceptor.invoke(ActionEventInterceptor.java:52)
 at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
 at 
org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
 at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
 at 
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215)
 at com.sun.proxy.$Proxy119.discoverObjectStore(Unknown Source)
 at 
org.apache.cloudstack.api.command.admin.storage.AddObjectStoragePoolCmd.execute(AddObjectStoragePoolCmd.java:117)
 at com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:172)
 at com.cloud.api.ApiServer.queueCommand(ApiServer.java:782)
 at com.cloud.api.ApiServer.handleRequest(ApiServer.java:603)
 at 
com.cloud.api.ApiServlet.processRequestInContext(ApiServlet.java:347)
 at com.cloud.api.ApiServlet$1.run(ApiServlet.java:154)
 at 
org.apache.cloudstack.managed.context.impl.DefaultManagedContext$1.call(DefaultManagedContext.java:55)
 at 
org.apache.cloudstack.managed.context.impl.DefaultManagedContext.callWithContext(DefaultManagedContext.java:102)
 at 
org.apache.cloudstack.managed.context.impl.DefaultManagedContext.runWithContext(DefaultManagedContext.java:52)
 at com.cloud.api.ApiServlet.processRequest(ApiServlet.java:151)
 at com.cloud.api.ApiServlet.doGet(ApiServlet.java:105)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
 at 
org.eclipse.jetty.servlet.ServletHolder$NotAsyncServlet.service(ServletHolder.java:1386)
 at 
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:755)
 at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1617)
 at 
org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:226)
 at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604)
 at 
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:545)
 at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
 at 
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:590)
 at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
 at 
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
 at 
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1610)
 at 
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
 at 
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1300)
 at 

Re: New Object Storage - Huawei OBS

2023-12-16 Thread Wido den Hollander
pp/WEB-INF/

total 4
-rw-r--r--. 1 root root 2694 Dec 15 08:59 web.xml
drwxr-xr-x. 2 root root   21 Dec 15 08:59 .
drwxr-xr-x. 3 root root   39 Dec 15 08:59 ..

I have compared my plugin code to that of Minio and

https://github.com/wido/cloudstack/commits/ceph-object-store but fail

to

see what I have done wrong. The only significant thing I can make out

is my

choice for the directory name
"/opt/cloudstack-huawei-obs/plugins/storage/object/huawei-obs".

In plugins/pom.xml all object storage plugins have only a simple name

without the character "-" in it.

storage/object/minio
storage/object/simulator
storage/object/huawei-obs
But surely that cannot be the source of the error?



My code doesn't work either, just running it now:

"com.cloud.exception.InvalidParameterValueException: can't find object
store provider: Ceph RGW"

But the module was loaded:

2023-12-15 12:24:39,440 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Loading module context [storage-object-ceph] from
URL



[jar:file:/usr/share/cloudstack-management/lib/cloudstack-4.19.0.0-SNAPSHOT.jar!/META-INF/cloudstack/bootstrap/spring-bootstrap-context-inheritable.xml]

2023-12-15 12:24:39,496 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Loaded module context [storage-object-ceph] in 56

ms


Trying to figure out what is happening.

Wido


My fork is located here

https://github.com/scsynergy/cloudstack-huawei-obs and I created a Pull
Request for you.



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: Kishan Kavala 
Sent: Friday, December 15, 2023 06:35
To: dev@cloudstack.apache.org
Subject: RE: New Object Storage - Huawei OBS

Hi Ronald,
You need to add module to client/pom.xml and add the plugin folder

to

plugins/pom.xml.

Looks like your implementation of ObjectStoreProvider is not getting

registered as a ObjectStoreProvider.


If you can share a draft PR, I can review and suggest what is missing.

Regards,
Kishan




-Original Message-
From: Ronald Feicht 
Sent: Thursday, December 14, 2023 5:01 PM
To: dev@cloudstack.apache.org
Subject: Re: New Object Storage - Huawei OBS

Hi,


I had added the module to client/pom.xml, but then

http://192.168.17.252:8080/client/ retuns "HTTP ERROR 503 Service
Unavailable" because of the following exception:


[WARNING] Failed startup of context

o.e.j.m.p.JettyWebAppContext@1df8ea34



{/client,file:///opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/,UNAVAILABLE}{file:///opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/}

java.lang.NullPointerException
   at



org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet$1.with

(DefaultModuleDefinitionSet.java:104)

   at



org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule

(DefaultModuleDefinitionSet.java:263)

   at



org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule

(DefaultModuleDefinitionSet.java:268)

   at



org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule

(DefaultModuleDefinitionSet.java:268)

   at



org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule

(DefaultModuleDefinitionSet.java:268)

   at



org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule

(DefaultModuleDefinitionSet.java:268)

   at



org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule

(DefaultModuleDefinitionSet.java:268)

   at



org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule

(DefaultModuleDefinitionSet.java:251)

   at



org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.startContexts

(DefaultModuleDefinitionSet.java:96)

   at



org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.load

(DefaultModuleDefinitionSet.java:79)

   at



org.apache.cloudstack.spring.module.factory.ModuleBasedContextFactory.loadModules

(ModuleBasedContextFactory.java:37)

   at

org.apache.cloudstack.spring.module.factory.CloudStackSpringContext.init
(CloudStackSpringContext.java:70)

   at



org.apache.cloudstack.spring.module.factory.CloudStackSpringContext.

(CloudStackSpringContext.java:57)

   at



org.apache.cloudstack.spring.module.factory.CloudStackSpringContext.

(CloudStackSpringContext.java:61)

   at



org.apache.cloudstack.spring.module.web.CloudStackContextLoaderListener.contextInitialized

(CloudStackContextLoaderListener.java:52)

   at

org.eclipse.jetty.server.handler.ContextHandl

Re: New Object Storage - Huawei OBS

2023-12-15 Thread Wei ZHOU
 >>>   at org.apache.maven.DefaultMaven.doExecute
> (DefaultMaven.java:305)
> >>>   at org.apache.maven.DefaultMaven.doExecute
> (DefaultMaven.java:192)
> >>>   at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
> >>>   at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
> >>>   at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
> >>>   at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
> >>>   at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native
> >> Method)
> >>>   at jdk.internal.reflect.NativeMethodAccessorImpl.invoke
> >> (NativeMethodAccessorImpl.java:62)
> >>>   at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke
> >> (DelegatingMethodAccessorImpl.java:43)
> >>>   at java.lang.reflect.Method.invoke (Method.java:566)
> >>>   at
> org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced
> >> (Launcher.java:282)
> >>>   at org.codehaus.plexus.classworlds.launcher.Launcher.launch
> >> (Launcher.java:225)
> >>>   at
> >> org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode
> >> (Launcher.java:406)
> >>>   at org.codehaus.plexus.classworlds.launcher.Launcher.main
> >> (Launcher.java:347)
> >>>
> >>> But the directory exists and is not empty:
> >>>
> >>> [root@cloudstack-centos cloudstack-huawei-obs]# ll
> >> /opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/
> >>> total 4
> >>> drwxr-xr-x. 2 root root   21 Dec 15 08:59 WEB-INF
> >>> -rw-r--r--. 1 root root 1135 Dec 15 08:59 index.html
> >>> drwxr-xr-x. 3 root root   39 Dec 15 08:59 .
> >>> drwxr-xr-x. 4 root root   87 Dec 15 08:59 ..
> >>> [root@cloudstack-centos cloudstack-huawei-obs]# ll
> >>
> /opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/WEB-INF/
> >>> total 4
> >>> -rw-r--r--. 1 root root 2694 Dec 15 08:59 web.xml
> >>> drwxr-xr-x. 2 root root   21 Dec 15 08:59 .
> >>> drwxr-xr-x. 3 root root   39 Dec 15 08:59 ..
> >>>
> >>> I have compared my plugin code to that of Minio and
> >> https://github.com/wido/cloudstack/commits/ceph-object-store but fail
> to
> >> see what I have done wrong. The only significant thing I can make out
> is my
> >> choice for the directory name
> >> "/opt/cloudstack-huawei-obs/plugins/storage/object/huawei-obs".
> >>> In plugins/pom.xml all object storage plugins have only a simple name
> >> without the character "-" in it.
> >>> storage/object/minio
> >>> storage/object/simulator
> >>> storage/object/huawei-obs
> >>> But surely that cannot be the source of the error?
> >>>
> >>
> >> My code doesn't work either, just running it now:
> >>
> >> "com.cloud.exception.InvalidParameterValueException: can't find object
> >> store provider: Ceph RGW"
> >>
> >> But the module was loaded:
> >>
> >> 2023-12-15 12:24:39,440 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
> >> (main:null) (logid:) Loading module context [storage-object-ceph] from
> >> URL
> >>
> >>
> [jar:file:/usr/share/cloudstack-management/lib/cloudstack-4.19.0.0-SNAPSHOT.jar!/META-INF/cloudstack/bootstrap/spring-bootstrap-context-inheritable.xml]
> >> 2023-12-15 12:24:39,496 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
> >> (main:null) (logid:) Loaded module context [storage-object-ceph] in 56
> ms
> >>
> >> Trying to figure out what is happening.
> >>
> >> Wido
> >>
> >>> My fork is located here
> >> https://github.com/scsynergy/cloudstack-huawei-obs and I created a Pull
> >> Request for you.
> >>>
> >>>
> >>> 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: Kishan Kavala 
> >>

RE: New Object Storage - Huawei OBS

2023-12-15 Thread Kishan Kavala
Hi Ronald,
 Here is what I found from the logs:

Error:
WARN  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet] (main:null) (logid:) Failed to 
start module [root-ca] due to: [Failed to start bean 'cloudStackLifeCycle'; 
nested exception is java.lang.LinkageError: loader constraint violation: when 
resolving method 'org.bouncycastle.cert.X509v3CertificateBuilder 
org.bouncycastle.cert.X509v3CertificateBuilder.addExtension(org.bouncycastle.asn1.ASN1ObjectIdentifier,
 boolean, org.bouncycastle.asn1.ASN1Encodable)' the class loader 
org.eclipse.jetty.webapp.WebAppClassLoader @1d9295e2 of the current class, 
org/apache/cloudstack/utils/security/CertUtils, and the class loader 
org.codehaus.plexus.classworlds.realm.ClassRealm @7fecc26f for the method's 
defining class, org/bouncycastle/cert/X509v3CertificateBuilder, have different 
Class objects for the type org/bouncycastle/asn1/ASN1ObjectIdentifier used in 
the signature (org.apache.cloudstack.utils.security.CertUtils is in unnamed 
module of loader org.eclipse.jetty.webapp.WebAppClassLoader @1d9295e2, parent 
loader org.codehaus.plexus.classworlds.realm.ClassRealm @7fecc26f; 
org.bouncycastle.cert.X509v3CertificateBuilder is in unnamed module of loader 
org.codehaus.plexus.classworlds.realm.ClassRealm @7fecc26f, parent loader 
'bootstrap')].

Reason:
ASN1ObjectIdentifier has different versions in the dependencies of root-ca and 
Huawei OBS(huaweicloud-sdk-iam) packages. java.lang.LinkageError happens when 
code is compiled with dependency version say v1 and then is running with 
dependency version say v2.

Solution:

Add provided scope to huaweicloud-sdk-iam dependency in Huawei OBS project. 
This will mark dependencies that should be provided at runtime.


com.huaweicloud.sdk
huaweicloud-sdk-iam
3.1.69
 provided


Regards,
Kishan


 


-Original Message-
From: Kishan Kavala  
Sent: Friday, December 15, 2023 6:42 PM
To: dev@cloudstack.apache.org
Subject: RE: New Object Storage - Huawei OBS

Ronald,
 The error is coming from rootca project after adding Huawei OBS plugin.


org.apache.cloudstack
cloud-plugin-ca-rootca
${project.version}


After removing the above from client/pom.xml, Huawei OBS plugin was loaded.

On the other hand, if I remove Huawei OBS plugin and keep rootca project, I see 
no issues.

I'm investigating further, in the meantime removing rootca project can unblock 
your development.

Regards,
Kishan

 


-Original Message-
From: Ronald Feicht 
Sent: Friday, December 15, 2023 2:12 PM
To: dev@cloudstack.apache.org
Subject: Re: New Object Storage - Huawei OBS

Hi Kishan,


when I add my module to client/pom.xml I get the following error and 
http://192.168.17.252:8080/client/ returns "HTTP ERROR 503 Service Unavailable" 
because of the following exception:

[WARNING] Failed startup of context 
o.e.j.m.p.JettyWebAppContext@1df8ea34{/client,file:///opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/,UNAVAILABLE}{file:///opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/}
java.lang.NullPointerException
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet$1.with
 (DefaultModuleDefinitionSet.java:104)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:263)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:251)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.startContexts
 (DefaultModuleDefinitionSet.java:96)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.load 
(DefaultModuleDefinitionSet.java:79)
at 
org.apache.cloudstack.spring.module.factory.ModuleBasedContextFactory.loadModules
 (ModuleBasedContextFactory.java:37)
at org.apache.cloudstack.spring.module.factory.CloudStackSpringContext.init 
(CloudStackSpringContext.java:70)
at 
org.apache.cloudstack.spring.module.factory.CloudStackSpringContext. 
(CloudStackSpringContext.java:57)
at 
org.apache.cloudstack.spring.module.factory.CloudStackSpringContext. 
(CloudStackSpringConte

Re: New Object Storage - Huawei OBS

2023-12-15 Thread Wido den Hollander
nz,

Geschäftsführer: Christian Reichert




From: Kishan Kavala 
Sent: Friday, December 15, 2023 06:35
To: dev@cloudstack.apache.org
Subject: RE: New Object Storage - Huawei OBS

Hi Ronald,
   You need to add module to client/pom.xml and add the plugin folder to

plugins/pom.xml.

Looks like your implementation of ObjectStoreProvider is not getting

registered as a ObjectStoreProvider.


If you can share a draft PR, I can review and suggest what is missing.

Regards,
Kishan




-Original Message-
From: Ronald Feicht 
Sent: Thursday, December 14, 2023 5:01 PM
To: dev@cloudstack.apache.org
Subject: Re: New Object Storage - Huawei OBS

Hi,


I had added the module to client/pom.xml, but then

http://192.168.17.252:8080/client/ retuns "HTTP ERROR 503 Service
Unavailable" because of the following exception:


[WARNING] Failed startup of context o.e.j.m.p.JettyWebAppContext@1df8ea34

{/client,file:///opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/,UNAVAILABLE}{file:///opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/}

java.lang.NullPointerException
  at

org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet$1.with
(DefaultModuleDefinitionSet.java:104)

  at

org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
(DefaultModuleDefinitionSet.java:263)

  at

org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
(DefaultModuleDefinitionSet.java:268)

  at

org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
(DefaultModuleDefinitionSet.java:268)

  at

org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
(DefaultModuleDefinitionSet.java:268)

  at

org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
(DefaultModuleDefinitionSet.java:268)

  at

org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
(DefaultModuleDefinitionSet.java:268)

  at

org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
(DefaultModuleDefinitionSet.java:251)

  at

org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.startContexts
(DefaultModuleDefinitionSet.java:96)

  at

org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.load
(DefaultModuleDefinitionSet.java:79)

  at

org.apache.cloudstack.spring.module.factory.ModuleBasedContextFactory.loadModules
(ModuleBasedContextFactory.java:37)

  at

org.apache.cloudstack.spring.module.factory.CloudStackSpringContext.init
(CloudStackSpringContext.java:70)

  at

org.apache.cloudstack.spring.module.factory.CloudStackSpringContext.
(CloudStackSpringContext.java:57)

  at

org.apache.cloudstack.spring.module.factory.CloudStackSpringContext.
(CloudStackSpringContext.java:61)

  at

org.apache.cloudstack.spring.module.web.CloudStackContextLoaderListener.contextInitialized
(CloudStackContextLoaderListener.java:52)

  at

org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized
(ContextHandler.java:933)

  at

org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized
(ServletContextHandler.java:553)

  at org.eclipse.jetty.server.handler.ContextHandler.startContext

(ContextHandler.java:892)

  at org.eclipse.jetty.servlet.ServletContextHandler.startContext

(ServletContextHandler.java:356)

  at org.eclipse.jetty.webapp.WebAppContext.startWebapp

(WebAppContext.java:1445)

  at org.eclipse.jetty.maven.plugin.JettyWebAppContext.startWebapp

(JettyWebAppContext.java:328)

  at org.eclipse.jetty.webapp.WebAppContext.startContext

(WebAppContext.java:1409)

  at org.eclipse.jetty.server.handler.ContextHandler.doStart

(ContextHandler.java:825)

  at org.eclipse.jetty.servlet.ServletContextHandler.doStart

(ServletContextHandler.java:275)

  at org.eclipse.jetty.webapp.WebAppContext.doStart

(WebAppContext.java:524)

  at org.eclipse.jetty.maven.plugin.JettyWebAppContext.doStart

(JettyWebAppContext.java:397)

  at org.eclipse.jetty.util.component.AbstractLifeCycle.start

(AbstractLifeCycle.java:72)

  at org.eclipse.jetty.util.component.ContainerLifeCycle.start

(ContainerLifeCycle.java:169)

  at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart

(ContainerLifeCycle.java:117)

  at org.eclipse.jetty.server.handler.AbstractHandler.doStart

(AbstractHandler.java:97)

  at org.eclipse.jetty.util.component.AbstractLifeCycle.start

(AbstractLifeCycle.java:72)

  at org.eclipse.jetty.util.component.ContainerLifeCycle.start

(ContainerLifeCycle.java:169)

  at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart

(ContainerLifeCycle.java:117)

  at org.eclipse.jetty.server.handler.AbstractHandler.doStart

(AbstractHandler.java:97)

  at org.eclipse.jetty.util.component.A

RE: New Object Storage - Huawei OBS

2023-12-15 Thread Kishan Kavala
Ronald,
 The error is coming from rootca project after adding Huawei OBS plugin.


org.apache.cloudstack
cloud-plugin-ca-rootca
${project.version}


After removing the above from client/pom.xml, Huawei OBS plugin was loaded.

On the other hand, if I remove Huawei OBS plugin and keep rootca project, I see 
no issues.

I'm investigating further, in the meantime removing rootca project can unblock 
your development.

Regards,
Kishan

 


-Original Message-
From: Ronald Feicht  
Sent: Friday, December 15, 2023 2:12 PM
To: dev@cloudstack.apache.org
Subject: Re: New Object Storage - Huawei OBS

Hi Kishan,


when I add my module to client/pom.xml I get the following error and 
http://192.168.17.252:8080/client/ returns "HTTP ERROR 503 Service Unavailable" 
because of the following exception:

[WARNING] Failed startup of context 
o.e.j.m.p.JettyWebAppContext@1df8ea34{/client,file:///opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/,UNAVAILABLE}{file:///opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/}
java.lang.NullPointerException
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet$1.with
 (DefaultModuleDefinitionSet.java:104)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:263)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:251)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.startContexts
 (DefaultModuleDefinitionSet.java:96)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.load 
(DefaultModuleDefinitionSet.java:79)
at 
org.apache.cloudstack.spring.module.factory.ModuleBasedContextFactory.loadModules
 (ModuleBasedContextFactory.java:37)
at org.apache.cloudstack.spring.module.factory.CloudStackSpringContext.init 
(CloudStackSpringContext.java:70)
at 
org.apache.cloudstack.spring.module.factory.CloudStackSpringContext. 
(CloudStackSpringContext.java:57)
at 
org.apache.cloudstack.spring.module.factory.CloudStackSpringContext. 
(CloudStackSpringContext.java:61)
at 
org.apache.cloudstack.spring.module.web.CloudStackContextLoaderListener.contextInitialized
 (CloudStackContextLoaderListener.java:52)
at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized 
(ContextHandler.java:933)
at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized 
(ServletContextHandler.java:553)
at org.eclipse.jetty.server.handler.ContextHandler.startContext 
(ContextHandler.java:892)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext 
(ServletContextHandler.java:356)
at org.eclipse.jetty.webapp.WebAppContext.startWebapp 
(WebAppContext.java:1445)
at org.eclipse.jetty.maven.plugin.JettyWebAppContext.startWebapp 
(JettyWebAppContext.java:328)
at org.eclipse.jetty.webapp.WebAppContext.startContext 
(WebAppContext.java:1409)
at org.eclipse.jetty.server.handler.ContextHandler.doStart 
(ContextHandler.java:825)
at org.eclipse.jetty.servlet.ServletContextHandler.doStart 
(ServletContextHandler.java:275)
at org.eclipse.jetty.webapp.WebAppContext.doStart (WebAppContext.java:524)
at org.eclipse.jetty.maven.plugin.JettyWebAppContext.doStart 
(JettyWebAppContext.java:397)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start 
(AbstractLifeCycle.java:72)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start 
(ContainerLifeCycle.java:169)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart 
(ContainerLifeCycle.java:117)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart 
(AbstractHandler.java:97)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start 
(AbstractLifeCycle.java:72)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start 
(ContainerLifeCycle.java:169)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart 
(ContainerLifeCycle.java:117)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart 
(AbstractHandler.java:97)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start 
(AbstractLifeCyc

Re: New Object Storage - Huawei OBS

2023-12-15 Thread Wei ZHOU
on.InvalidParameterValueException: can't find object
> store provider: Ceph RGW"
>
> But the module was loaded:
>
> 2023-12-15 12:24:39,440 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
> (main:null) (logid:) Loading module context [storage-object-ceph] from
> URL
>
> [jar:file:/usr/share/cloudstack-management/lib/cloudstack-4.19.0.0-SNAPSHOT.jar!/META-INF/cloudstack/bootstrap/spring-bootstrap-context-inheritable.xml]
> 2023-12-15 12:24:39,496 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
> (main:null) (logid:) Loaded module context [storage-object-ceph] in 56 ms
>
> Trying to figure out what is happening.
>
> Wido
>
> > My fork is located here
> https://github.com/scsynergy/cloudstack-huawei-obs and I created a Pull
> Request for you.
> >
> >
> > 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: Kishan Kavala 
> > Sent: Friday, December 15, 2023 06:35
> > To: dev@cloudstack.apache.org
> > Subject: RE: New Object Storage - Huawei OBS
> >
> > Hi Ronald,
> >   You need to add module to client/pom.xml and add the plugin folder to
> plugins/pom.xml.
> > Looks like your implementation of ObjectStoreProvider is not getting
> registered as a ObjectStoreProvider.
> >
> > If you can share a draft PR, I can review and suggest what is missing.
> >
> > Regards,
> > Kishan
> >
> >
> >
> >
> > -Original Message-
> > From: Ronald Feicht 
> > Sent: Thursday, December 14, 2023 5:01 PM
> > To: dev@cloudstack.apache.org
> > Subject: Re: New Object Storage - Huawei OBS
> >
> > Hi,
> >
> >
> > I had added the module to client/pom.xml, but then
> http://192.168.17.252:8080/client/ retuns "HTTP ERROR 503 Service
> Unavailable" because of the following exception:
> >
> > [WARNING] Failed startup of context o.e.j.m.p.JettyWebAppContext@1df8ea34
> {/client,file:///opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/,UNAVAILABLE}{file:///opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/}
> > java.lang.NullPointerException
> >  at
> org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet$1.with
> (DefaultModuleDefinitionSet.java:104)
> >  at
> org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
> (DefaultModuleDefinitionSet.java:263)
> >  at
> org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
> (DefaultModuleDefinitionSet.java:268)
> >  at
> org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
> (DefaultModuleDefinitionSet.java:268)
> >  at
> org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
> (DefaultModuleDefinitionSet.java:268)
> >  at
> org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
> (DefaultModuleDefinitionSet.java:268)
> >  at
> org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
> (DefaultModuleDefinitionSet.java:268)
> >  at
> org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
> (DefaultModuleDefinitionSet.java:251)
> >  at
> org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.startContexts
> (DefaultModuleDefinitionSet.java:96)
> >  at
> org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.load
> (DefaultModuleDefinitionSet.java:79)
> >  at
> org.apache.cloudstack.spring.module.factory.ModuleBasedContextFactory.loadModules
> (ModuleBasedContextFactory.java:37)
> >  at
> org.apache.cloudstack.spring.module.factory.CloudStackSpringContext.init
> (CloudStackSpringContext.java:70)
> >  at
> org.apache.cloudstack.spring.module.factory.CloudStackSpringContext.
> (CloudStackSpringContext.java:57)
> >  at
> org.apache.cloudstack.spring.module.factory.CloudStackSpringContext.
> (CloudStackSpringContext.java:61)
> >  at
> org.apache.cloudstack.spring.module.web.CloudStackContextLoaderListener.contextInitialized
> (CloudStackContextLoaderListener.java:52)
> >  at
> org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized
>

Re: New Object Storage - Huawei OBS

2023-12-15 Thread Wido den Hollander
o.java:450)
 at org.eclipse.jetty.maven.plugin.AbstractJettyMojo.execute 
(AbstractJettyMojo.java:311)
 at org.eclipse.jetty.maven.plugin.JettyRunMojo.execute 
(JettyRunMojo.java:152)
 at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo 
(DefaultBuildPluginManager.java:137)
 at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:210)
 at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:156)
 at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:148)
 at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
(LifecycleModuleBuilder.java:117)
 at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
(LifecycleModuleBuilder.java:81)
 at 
org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
 (SingleThreadedBuilder.java:56)
 at org.apache.maven.lifecycle.internal.LifecycleStarter.execute 
(LifecycleStarter.java:128)
 at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
 at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
 at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
 at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
 at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
 at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
 at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
 at jdk.internal.reflect.NativeMethodAccessorImpl.invoke 
(NativeMethodAccessorImpl.java:62)
 at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke 
(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke (Method.java:566)
 at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced 
(Launcher.java:282)
 at org.codehaus.plexus.classworlds.launcher.Launcher.launch 
(Launcher.java:225)
 at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode 
(Launcher.java:406)
 at org.codehaus.plexus.classworlds.launcher.Launcher.main 
(Launcher.java:347)

But the directory exists and is not empty:

[root@cloudstack-centos cloudstack-huawei-obs]# ll 
/opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/
total 4
drwxr-xr-x. 2 root root   21 Dec 15 08:59 WEB-INF
-rw-r--r--. 1 root root 1135 Dec 15 08:59 index.html
drwxr-xr-x. 3 root root   39 Dec 15 08:59 .
drwxr-xr-x. 4 root root   87 Dec 15 08:59 ..
[root@cloudstack-centos cloudstack-huawei-obs]# ll 
/opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/WEB-INF/
total 4
-rw-r--r--. 1 root root 2694 Dec 15 08:59 web.xml
drwxr-xr-x. 2 root root   21 Dec 15 08:59 .
drwxr-xr-x. 3 root root   39 Dec 15 08:59 ..

I have compared my plugin code to that of Minio and 
https://github.com/wido/cloudstack/commits/ceph-object-store but fail to see what I have 
done wrong. The only significant thing I can make out is my choice for the directory name 
"/opt/cloudstack-huawei-obs/plugins/storage/object/huawei-obs".
In plugins/pom.xml all object storage plugins have only a simple name without the 
character "-" in it.
storage/object/minio
storage/object/simulator
storage/object/huawei-obs
But surely that cannot be the source of the error?



My code doesn't work either, just running it now:

"com.cloud.exception.InvalidParameterValueException: can't find object 
store provider: Ceph RGW"


But the module was loaded:

2023-12-15 12:24:39,440 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet] 
(main:null) (logid:) Loading module context [storage-object-ceph] from 
URL 
[jar:file:/usr/share/cloudstack-management/lib/cloudstack-4.19.0.0-SNAPSHOT.jar!/META-INF/cloudstack/bootstrap/spring-bootstrap-context-inheritable.xml]
2023-12-15 12:24:39,496 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet] 
(main:null) (logid:) Loaded module context [storage-object-ceph] in 56 ms


Trying to figure out what is happening.

Wido


My fork is located here https://github.com/scsynergy/cloudstack-huawei-obs and 
I created a Pull Request for you.


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: Kishan Kavala 
Sent: Friday, December 15, 2023 06:35
To: dev@cloudstack.apache.org
Subject: RE: New Object Storage - Huawei OBS

Hi Ronald,
  You need to add module to client/pom.xml and add the plugin folder to 
plugins/pom.xml.
Looks like your implementation of ObjectStoreProvider is not getting registered 
as a ObjectStoreProvider.

If you can share a draft PR, I can review and suggest what is missing.

Regards,
Kishan




-Original Message-
From: Ronald Feicht 
Sent: Thursday, December 14, 2023 5:01 PM
To: dev@cloudstack.ap

Re: New Object Storage - Huawei OBS

2023-12-15 Thread Ronald Feicht
o.java:311)
at org.eclipse.jetty.maven.plugin.JettyRunMojo.execute 
(JettyRunMojo.java:152)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo 
(DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:210)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
(LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
(LifecycleModuleBuilder.java:81)
at 
org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
 (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute 
(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke 
(NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke 
(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:566)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced 
(Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch 
(Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode 
(Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main 
(Launcher.java:347)

But the directory exists and is not empty:

[root@cloudstack-centos cloudstack-huawei-obs]# ll 
/opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/
total 4
drwxr-xr-x. 2 root root   21 Dec 15 08:59 WEB-INF
-rw-r--r--. 1 root root 1135 Dec 15 08:59 index.html
drwxr-xr-x. 3 root root   39 Dec 15 08:59 .
drwxr-xr-x. 4 root root   87 Dec 15 08:59 ..
[root@cloudstack-centos cloudstack-huawei-obs]# ll 
/opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/WEB-INF/
total 4
-rw-r--r--. 1 root root 2694 Dec 15 08:59 web.xml
drwxr-xr-x. 2 root root   21 Dec 15 08:59 .
drwxr-xr-x. 3 root root   39 Dec 15 08:59 ..

I have compared my plugin code to that of Minio and 
https://github.com/wido/cloudstack/commits/ceph-object-store but fail to see 
what I have done wrong. The only significant thing I can make out is my choice 
for the directory name 
"/opt/cloudstack-huawei-obs/plugins/storage/object/huawei-obs".
In plugins/pom.xml all object storage plugins have only a simple name without 
the character "-" in it.
storage/object/minio
storage/object/simulator
storage/object/huawei-obs
But surely that cannot be the source of the error?

My fork is located here https://github.com/scsynergy/cloudstack-huawei-obs and 
I created a Pull Request for you.


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: Kishan Kavala 
Sent: Friday, December 15, 2023 06:35
To: dev@cloudstack.apache.org
Subject: RE: New Object Storage - Huawei OBS

Hi Ronald,
 You need to add module to client/pom.xml and add the plugin folder to 
plugins/pom.xml.
Looks like your implementation of ObjectStoreProvider is not getting registered 
as a ObjectStoreProvider.

If you can share a draft PR, I can review and suggest what is missing.

Regards,
Kishan




-Original Message-
From: Ronald Feicht 
Sent: Thursday, December 14, 2023 5:01 PM
To: dev@cloudstack.apache.org
Subject: Re: New Object Storage - Huawei OBS

Hi,


I had added the module to client/pom.xml, but then 
http://192.168.17.252:8080/client/ retuns "HTTP ERROR 503 Service Unavailable" 
because of the following exception:

[WARNING] Failed startup of context 
o.e.j.m.p.JettyWebAppContext@1df8ea34{/client,file:///opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/,UNAVAILABLE}{file:///opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/}
java.lang.NullPointerException
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet$1.with
 (DefaultModuleDefinitionSet.java:104)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModu

Re: New Object Storage - Huawei OBS

2023-12-15 Thread Ronald Feicht
Hi Wido,


changing the method parameters from String to BucketTO is no problem for me - I 
will simply adapt my code accordingly and contribute my code upstream as soon 
as I get it to work.


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: Wido den Hollander 
Sent: Thursday, December 14, 2023 16:26
To: dev@cloudstack.apache.org; Ronald Feicht
Subject: Re: New Object Storage - Huawei OBS



Op 14/12/2023 om 10:51 schreef Ronald Feicht:
> Hi,
>
> I am trying to write an Object Storage plugin for Huawei OBS using Minio as 
> example. I added my plugin code to the plugins/storage/object/ directory, 
> added my plugin into plugins/pom.xml and added the string 'Huawei OBS' to 
> AddObjectStorage.vue for the dropdown in the UI. But when I select that 
> dropdown entry and click "Save" in the UI the following exception is thrown:

Great to see! I'm working on the Ceph plugin:
https://github.com/wido/cloudstack/commits/ceph-object-store

I will be changing something to the framework where a BucketTO is added
and passed, not just a String containing the bucket's name.

My PR will go out next week or after Christmas I think.

Wido

> com.cloud.exception.InvalidParameterValueException: can't find object store 
> provider: Huawei OBS
>  at 
> com.cloud.storage.StorageManagerImpl.discoverObjectStore(StorageManagerImpl.java:3743)
>  at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>  at 
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>  at 
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>  at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>  at 
> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)
>  at 
> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)
>  at 
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
>  at 
> org.apache.cloudstack.network.contrail.management.EventUtils$EventInterceptor.invoke(EventUtils.java:107)
>  at 
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
>  at 
> com.cloud.event.ActionEventInterceptor.invoke(ActionEventInterceptor.java:52)
>  at 
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
>  at 
> org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
>  at 
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
>  at 
> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215)
>  at com.sun.proxy.$Proxy119.discoverObjectStore(Unknown Source)
>  at 
> org.apache.cloudstack.api.command.admin.storage.AddObjectStoragePoolCmd.execute(AddObjectStoragePoolCmd.java:117)
>  at com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:172)
>  at com.cloud.api.ApiServer.queueCommand(ApiServer.java:782)
>  at com.cloud.api.ApiServer.handleRequest(ApiServer.java:603)
>  at 
> com.cloud.api.ApiServlet.processRequestInContext(ApiServlet.java:347)
>  at com.cloud.api.ApiServlet$1.run(ApiServlet.java:154)
>  at 
> org.apache.cloudstack.managed.context.impl.DefaultManagedContext$1.call(DefaultManagedContext.java:55)
>  at 
> org.apache.cloudstack.managed.context.impl.DefaultManagedContext.callWithContext(DefaultManagedContext.java:102)
>  at 
> org.apache.cloudstack.managed.context.impl.DefaultManagedContext.runWithContext(DefaultManagedContext.java:52)
>  at com.cloud.api.ApiServlet.processRequest(ApiServlet.java:151)
>  at com.cloud.api.ApiServlet.doGet(ApiServlet.java:105)
>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
>  at 
> org.eclipse.jetty.servlet.ServletHolder$NotAsyncServlet.service(ServletHolder.java:1386)
>  at 
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:755)
>  at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1617)
>  at 
>

RE: New Object Storage - Huawei OBS

2023-12-14 Thread Kishan Kavala
Hi Ronald,
 You need to add module to client/pom.xml and add the plugin folder to 
plugins/pom.xml.
Looks like your implementation of ObjectStoreProvider is not getting registered 
as a ObjectStoreProvider. 

If you can share a draft PR, I can review and suggest what is missing.

Regards,
Kishan  

 


-Original Message-
From: Ronald Feicht  
Sent: Thursday, December 14, 2023 5:01 PM
To: dev@cloudstack.apache.org
Subject: Re: New Object Storage - Huawei OBS

Hi,


I had added the module to client/pom.xml, but then 
http://192.168.17.252:8080/client/ retuns "HTTP ERROR 503 Service Unavailable" 
because of the following exception:

[WARNING] Failed startup of context 
o.e.j.m.p.JettyWebAppContext@1df8ea34{/client,file:///opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/,UNAVAILABLE}{file:///opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/}
java.lang.NullPointerException
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet$1.with
 (DefaultModuleDefinitionSet.java:104)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:263)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:251)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.startContexts
 (DefaultModuleDefinitionSet.java:96)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.load 
(DefaultModuleDefinitionSet.java:79)
at 
org.apache.cloudstack.spring.module.factory.ModuleBasedContextFactory.loadModules
 (ModuleBasedContextFactory.java:37)
at org.apache.cloudstack.spring.module.factory.CloudStackSpringContext.init 
(CloudStackSpringContext.java:70)
at 
org.apache.cloudstack.spring.module.factory.CloudStackSpringContext. 
(CloudStackSpringContext.java:57)
at 
org.apache.cloudstack.spring.module.factory.CloudStackSpringContext. 
(CloudStackSpringContext.java:61)
at 
org.apache.cloudstack.spring.module.web.CloudStackContextLoaderListener.contextInitialized
 (CloudStackContextLoaderListener.java:52)
at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized 
(ContextHandler.java:933)
at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized 
(ServletContextHandler.java:553)
at org.eclipse.jetty.server.handler.ContextHandler.startContext 
(ContextHandler.java:892)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext 
(ServletContextHandler.java:356)
at org.eclipse.jetty.webapp.WebAppContext.startWebapp 
(WebAppContext.java:1445)
at org.eclipse.jetty.maven.plugin.JettyWebAppContext.startWebapp 
(JettyWebAppContext.java:328)
at org.eclipse.jetty.webapp.WebAppContext.startContext 
(WebAppContext.java:1409)
at org.eclipse.jetty.server.handler.ContextHandler.doStart 
(ContextHandler.java:825)
at org.eclipse.jetty.servlet.ServletContextHandler.doStart 
(ServletContextHandler.java:275)
at org.eclipse.jetty.webapp.WebAppContext.doStart (WebAppContext.java:524)
at org.eclipse.jetty.maven.plugin.JettyWebAppContext.doStart 
(JettyWebAppContext.java:397)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start 
(AbstractLifeCycle.java:72)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start 
(ContainerLifeCycle.java:169)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart 
(ContainerLifeCycle.java:117)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart 
(AbstractHandler.java:97)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start 
(AbstractLifeCycle.java:72)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start 
(ContainerLifeCycle.java:169)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart 
(ContainerLifeCycle.java:117)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart 
(AbstractHandler.java:97)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start 
(AbstractLifeCycle.java:72)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start 
(ContainerLifeCycle.java:169)
at org.eclipse.jetty.server.Server.start (Server.java:407)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart 
(ContainerLifeCycl

Re: New Object Storage - Huawei OBS

2023-12-14 Thread Wido den Hollander




Op 14/12/2023 om 10:51 schreef Ronald Feicht:

Hi,

I am trying to write an Object Storage plugin for Huawei OBS using Minio as example. I 
added my plugin code to the plugins/storage/object/ directory, added my plugin into 
plugins/pom.xml and added the string 'Huawei OBS' to AddObjectStorage.vue for the 
dropdown in the UI. But when I select that dropdown entry and click "Save" in 
the UI the following exception is thrown:


Great to see! I'm working on the Ceph plugin: 
https://github.com/wido/cloudstack/commits/ceph-object-store


I will be changing something to the framework where a BucketTO is added 
and passed, not just a String containing the bucket's name.


My PR will go out next week or after Christmas I think.

Wido


com.cloud.exception.InvalidParameterValueException: can't find object store 
provider: Huawei OBS
 at 
com.cloud.storage.StorageManagerImpl.discoverObjectStore(StorageManagerImpl.java:3743)
 at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.base/java.lang.reflect.Method.invoke(Method.java:566)
 at 
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)
 at 
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)
 at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
 at 
org.apache.cloudstack.network.contrail.management.EventUtils$EventInterceptor.invoke(EventUtils.java:107)
 at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
 at 
com.cloud.event.ActionEventInterceptor.invoke(ActionEventInterceptor.java:52)
 at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
 at 
org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
 at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
 at 
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215)
 at com.sun.proxy.$Proxy119.discoverObjectStore(Unknown Source)
 at 
org.apache.cloudstack.api.command.admin.storage.AddObjectStoragePoolCmd.execute(AddObjectStoragePoolCmd.java:117)
 at com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:172)
 at com.cloud.api.ApiServer.queueCommand(ApiServer.java:782)
 at com.cloud.api.ApiServer.handleRequest(ApiServer.java:603)
 at 
com.cloud.api.ApiServlet.processRequestInContext(ApiServlet.java:347)
 at com.cloud.api.ApiServlet$1.run(ApiServlet.java:154)
 at 
org.apache.cloudstack.managed.context.impl.DefaultManagedContext$1.call(DefaultManagedContext.java:55)
 at 
org.apache.cloudstack.managed.context.impl.DefaultManagedContext.callWithContext(DefaultManagedContext.java:102)
 at 
org.apache.cloudstack.managed.context.impl.DefaultManagedContext.runWithContext(DefaultManagedContext.java:52)
 at com.cloud.api.ApiServlet.processRequest(ApiServlet.java:151)
 at com.cloud.api.ApiServlet.doGet(ApiServlet.java:105)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
 at 
org.eclipse.jetty.servlet.ServletHolder$NotAsyncServlet.service(ServletHolder.java:1386)
 at 
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:755)
 at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1617)
 at 
org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:226)
 at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604)
 at 
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:545)
 at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
 at 
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:590)
 at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
 at 
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
 at 
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1610)
 at 
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
 at 
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1300)
 at 

Re: New Object Storage - Huawei OBS

2023-12-14 Thread Rohit Yadav
Hi Ronald,

If it helps, there are some CloudStack dev learning guide around how to create 
a plugin and manage dependencies: https://github.com/shapeblue/hackerbook

Looking forward to see your new object storage plugin (if you decide to 
contribute upstream).


Regards.


From: Ronald Feicht 
Sent: Thursday, December 14, 2023 17:00
To: dev@cloudstack.apache.org 
Subject: Re: New Object Storage - Huawei OBS

Hi,


I had added the module to client/pom.xml, but then 
http://192.168.17.252:8080/client/ retuns "HTTP ERROR 503 Service Unavailable" 
because of the following exception:

[WARNING] Failed startup of context 
o.e.j.m.p.JettyWebAppContext@1df8ea34{/client,file:///opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/,UNAVAILABLE}{file:///opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/}
java.lang.NullPointerException
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet$1.with
 (DefaultModuleDefinitionSet.java:104)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:263)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:268)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.withModule
 (DefaultModuleDefinitionSet.java:251)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.startContexts
 (DefaultModuleDefinitionSet.java:96)
at 
org.apache.cloudstack.spring.module.model.impl.DefaultModuleDefinitionSet.load 
(DefaultModuleDefinitionSet.java:79)
at 
org.apache.cloudstack.spring.module.factory.ModuleBasedContextFactory.loadModules
 (ModuleBasedContextFactory.java:37)
at org.apache.cloudstack.spring.module.factory.CloudStackSpringContext.init 
(CloudStackSpringContext.java:70)
at 
org.apache.cloudstack.spring.module.factory.CloudStackSpringContext. 
(CloudStackSpringContext.java:57)
at 
org.apache.cloudstack.spring.module.factory.CloudStackSpringContext. 
(CloudStackSpringContext.java:61)
at 
org.apache.cloudstack.spring.module.web.CloudStackContextLoaderListener.contextInitialized
 (CloudStackContextLoaderListener.java:52)
at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized 
(ContextHandler.java:933)
at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized 
(ServletContextHandler.java:553)
at org.eclipse.jetty.server.handler.ContextHandler.startContext 
(ContextHandler.java:892)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext 
(ServletContextHandler.java:356)
at org.eclipse.jetty.webapp.WebAppContext.startWebapp 
(WebAppContext.java:1445)
at org.eclipse.jetty.maven.plugin.JettyWebAppContext.startWebapp 
(JettyWebAppContext.java:328)
at org.eclipse.jetty.webapp.WebAppContext.startContext 
(WebAppContext.java:1409)
at org.eclipse.jetty.server.handler.ContextHandler.doStart 
(ContextHandler.java:825)
at org.eclipse.jetty.servlet.ServletContextHandler.doStart 
(ServletContextHandler.java:275)
at org.eclipse.jetty.webapp.WebAppContext.doStart (WebAppContext.java:524)
at org.eclipse.jetty.maven.plugin.JettyWebAppContext.doStart 
(JettyWebAppContext.java:397)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start 
(AbstractLifeCycle.java:72)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start 
(ContainerLifeCycle.java:169)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart 
(ContainerLifeCycle.java:117)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart 
(AbstractHandler.java:97)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start 
(AbstractLifeCycle.java:72)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start 
(ContainerLifeCycle.java:169)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart 
(ContainerLifeCycle.java:117)
at org.eclipse.jetty.server.handler.AbstractHandler.doStart 
(AbstractHandler.java:97)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start 
(AbstractLifeCycle.java:72)
at org.eclipse.jetty.util.component.ContainerLifeCycle.start 
(ContainerLifeCycle.java:169)
at org.eclipse.jetty.server.Server.start (Server.java:407)
at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart 
(ContainerLifeCycl

Re: New Object Storage - Huawei OBS

2023-12-14 Thread Ronald Feicht
o.java:311)
at org.eclipse.jetty.maven.plugin.JettyRunMojo.execute 
(JettyRunMojo.java:152)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo 
(DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:210)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
(LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
(LifecycleModuleBuilder.java:81)
at 
org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build
 (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute 
(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke 
(NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke 
(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:566)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced 
(Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch 
(Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode 
(Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main 
(Launcher.java:347)

But the directory exists and is not empty:

[root@cloudstack-centos cloudstack-huawei-obs]# ll 
/opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/
total 4
drwxr-xr-x. 2 root root   21 Dec 14 12:17 WEB-INF
-rw-r--r--. 1 root root 1135 Dec 14 12:17 index.html
drwxr-xr-x. 3 root root   39 Dec 14 12:17 .
drwxr-xr-x. 4 root root   87 Dec 14 12:17 ..
[root@cloudstack-centos cloudstack-huawei-obs]# ll 
/opt/cloudstack-huawei-obs/client/target/classes/META-INF/webapp/WEB-INF/
total 4
-rw-r--r--. 1 root root 2694 Dec 14 12:17 web.xml
drwxr-xr-x. 2 root root   21 Dec 14 12:17 .
drwxr-xr-x. 3 root root   39 Dec 14 12:17 ..

Because of that error I had removed my plugin from client/pom.xml again and 
then afterwards http://192.168.17.252:8080/client/ worked.
So, I now understand that my plugin must by part of client/pom.xml but then I 
receive the same exception mentioned above - how do I fix that?


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: Slavka Peleva 
Sent: Thursday, December 14, 2023 11:37
To: dev@cloudstack.apache.org
Subject: Re: New Object Storage - Huawei OBS

Hi Ronald,

In the logs, you can find all the modules that are loaded like:

```
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy: storage
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   baremetal-storage
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:
server-alert-adapter-storage
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   server-storage
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   server-template-adapter
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   storage-allocator
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   storage-image-default
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   storage-image-s3
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   storage-image-swift
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   storage-object-minio
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   storage-object-simulator

Re: New Object Storage - Huawei OBS

2023-12-14 Thread Slavka Peleva
Hi Ronald,

In the logs, you can find all the modules that are loaded like:

```
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy: storage
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   baremetal-storage
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:
server-alert-adapter-storage
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   server-storage
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   server-template-adapter
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   storage-allocator
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   storage-image-default
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   storage-image-s3
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   storage-image-swift
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   storage-object-minio
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   storage-object-simulator
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   storage-volume-cloudbyte
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   storage-volume-datera
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   storage-volume-default
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   storage-volume-flasharray
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   storage-volume-linstor
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   storage-volume-primera
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   storage-volume-scaleio
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   storage-volume-solidfire
2023-12-14 12:28:21,480 INFO  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet]
(main:null) (logid:) Module Hierarchy:   storage-volume-storpool
```

Like Wei mentioned you need to add the module in the client/pom.xml or you
can copy the jar of your plugin (just for the tests) in
`/usr/share/cloudstack-management/lib/` and restart the service

Best regards,
Slavka

On Thu, Dec 14, 2023 at 11:57 AM Wei ZHOU  wrote:

> Is the module added to client/pom.xml ?
>
> -Wei
>
> On Thu, 14 Dec 2023 at 10:51, Ronald Feicht 
> wrote:
>
> > Hi,
> >
> > I am trying to write an Object Storage plugin for Huawei OBS using Minio
> > as example. I added my plugin code to the plugins/storage/object/
> > directory, added my plugin into plugins/pom.xml and added the string
> > 'Huawei OBS' to AddObjectStorage.vue for the dropdown in the UI. But
> when I
> > select that dropdown entry and click "Save" in the UI the following
> > exception is thrown:
> > com.cloud.exception.InvalidParameterValueException: can't find object
> > store provider: Huawei OBS
> > at
> >
> com.cloud.storage.StorageManagerImpl.discoverObjectStore(StorageManagerImpl.java:3743)
> > at
> > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
> > Method)
> > at
> >
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> > at
> >
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> > at java.base/java.lang.reflect.Method.invoke(Method.java:566)
> > at
> >
> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)
> > at
> >
> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)
> > at
> >
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
> > at
> >
> org.apache.cloudstack.network.contrail.management.EventUtils$EventInterceptor.invoke(EventUtils.java:107)
> > at
> >
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
> 

Re: New Object Storage - Huawei OBS

2023-12-14 Thread Wei ZHOU
Is the module added to client/pom.xml ?

-Wei

On Thu, 14 Dec 2023 at 10:51, Ronald Feicht 
wrote:

> Hi,
>
> I am trying to write an Object Storage plugin for Huawei OBS using Minio
> as example. I added my plugin code to the plugins/storage/object/
> directory, added my plugin into plugins/pom.xml and added the string
> 'Huawei OBS' to AddObjectStorage.vue for the dropdown in the UI. But when I
> select that dropdown entry and click "Save" in the UI the following
> exception is thrown:
> com.cloud.exception.InvalidParameterValueException: can't find object
> store provider: Huawei OBS
> at
> com.cloud.storage.StorageManagerImpl.discoverObjectStore(StorageManagerImpl.java:3743)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.base/java.lang.reflect.Method.invoke(Method.java:566)
> at
> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
> at
> org.apache.cloudstack.network.contrail.management.EventUtils$EventInterceptor.invoke(EventUtils.java:107)
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
> at
> com.cloud.event.ActionEventInterceptor.invoke(ActionEventInterceptor.java:52)
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
> at
> org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
> at
> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215)
> at com.sun.proxy.$Proxy119.discoverObjectStore(Unknown Source)
> at
> org.apache.cloudstack.api.command.admin.storage.AddObjectStoragePoolCmd.execute(AddObjectStoragePoolCmd.java:117)
> at com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:172)
> at com.cloud.api.ApiServer.queueCommand(ApiServer.java:782)
> at com.cloud.api.ApiServer.handleRequest(ApiServer.java:603)
> at
> com.cloud.api.ApiServlet.processRequestInContext(ApiServlet.java:347)
> at com.cloud.api.ApiServlet$1.run(ApiServlet.java:154)
> at
> org.apache.cloudstack.managed.context.impl.DefaultManagedContext$1.call(DefaultManagedContext.java:55)
> at
> org.apache.cloudstack.managed.context.impl.DefaultManagedContext.callWithContext(DefaultManagedContext.java:102)
> at
> org.apache.cloudstack.managed.context.impl.DefaultManagedContext.runWithContext(DefaultManagedContext.java:52)
> at com.cloud.api.ApiServlet.processRequest(ApiServlet.java:151)
> at com.cloud.api.ApiServlet.doGet(ApiServlet.java:105)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
> at
> org.eclipse.jetty.servlet.ServletHolder$NotAsyncServlet.service(ServletHolder.java:1386)
> at
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:755)
> at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1617)
> at
> org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:226)
> at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604)
> at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:545)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
> at
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:590)
> at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
> at
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1610)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
> at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1300)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
> at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:485)
> at
> 

New Object Storage - Huawei OBS

2023-12-14 Thread Ronald Feicht
Hi,

I am trying to write an Object Storage plugin for Huawei OBS using Minio as 
example. I added my plugin code to the plugins/storage/object/ directory, added 
my plugin into plugins/pom.xml and added the string 'Huawei OBS' to 
AddObjectStorage.vue for the dropdown in the UI. But when I select that 
dropdown entry and click "Save" in the UI the following exception is thrown:
com.cloud.exception.InvalidParameterValueException: can't find object store 
provider: Huawei OBS
at 
com.cloud.storage.StorageManagerImpl.discoverObjectStore(StorageManagerImpl.java:3743)
at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at 
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)
at 
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)
at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at 
org.apache.cloudstack.network.contrail.management.EventUtils$EventInterceptor.invoke(EventUtils.java:107)
at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
at 
com.cloud.event.ActionEventInterceptor.invoke(ActionEventInterceptor.java:52)
at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
at 
org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at 
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215)
at com.sun.proxy.$Proxy119.discoverObjectStore(Unknown Source)
at 
org.apache.cloudstack.api.command.admin.storage.AddObjectStoragePoolCmd.execute(AddObjectStoragePoolCmd.java:117)
at com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:172)
at com.cloud.api.ApiServer.queueCommand(ApiServer.java:782)
at com.cloud.api.ApiServer.handleRequest(ApiServer.java:603)
at com.cloud.api.ApiServlet.processRequestInContext(ApiServlet.java:347)
at com.cloud.api.ApiServlet$1.run(ApiServlet.java:154)
at 
org.apache.cloudstack.managed.context.impl.DefaultManagedContext$1.call(DefaultManagedContext.java:55)
at 
org.apache.cloudstack.managed.context.impl.DefaultManagedContext.callWithContext(DefaultManagedContext.java:102)
at 
org.apache.cloudstack.managed.context.impl.DefaultManagedContext.runWithContext(DefaultManagedContext.java:52)
at com.cloud.api.ApiServlet.processRequest(ApiServlet.java:151)
at com.cloud.api.ApiServlet.doGet(ApiServlet.java:105)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at 
org.eclipse.jetty.servlet.ServletHolder$NotAsyncServlet.service(ServletHolder.java:1386)
at 
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:755)
at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1617)
at 
org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:226)
at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604)
at 
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:545)
at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at 
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:590)
at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at 
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
at 
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1610)
at 
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at 
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1300)
at 
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
at 
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:485)
at 
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1580)
at 
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
at 
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1215)
at