0
我正在使用openstack4j來進行項目範圍的認證。如何在openstack4j中使用項目範圍認證時獲取項目ID?
os = OSFactory.builderV3()
.endpoint("http://controller:5000/v3")
.scopeToProject(Identifier.byId("1435221d37fd41699101bd739fe4375b"))
.credentials("admin", "openstack", Identifier.byName("default"))
.authenticate();
該聲明可以正確運行。 但我的問題是:在認證之前,我怎麼知道項目ID?
所以我改變了另一種方式來解決這個問題。首先,我刪除了上述代碼中的scopeToProject
方法,並獲得了成功的無格式驗證。我可以獲得userId = os.getToken().getUser().getId();
。但是,當我執行os.identity().users().listUserProjects(userId)
得到該用戶所屬的項目中,以下異常被拋出:
java.lang.NullPointerException
at org.openstack4j.openstack.identity.internal.DefaultEndpointURLResolver.resolveV3(DefaultEndpointURLResolver.java:120)
at org.openstack4j.openstack.identity.internal.DefaultEndpointURLResolver.findURLV3(DefaultEndpointURLResolver.java:70)
at org.openstack4j.openstack.internal.OSClientSession$OSClientSessionV3.getEndpoint(OSClientSession.java:388)
at org.openstack4j.core.transport.HttpRequest$RequestBuilder.build(HttpRequest.java:405)
at org.openstack4j.openstack.internal.BaseOpenStackService$Invocation.execute(BaseOpenStackService.java:192)
at org.openstack4j.openstack.internal.BaseOpenStackService$Invocation.execute(BaseOpenStackService.java:187)
at org.openstack4j.openstack.identity.v3.internal.UserServiceImpl.listUserProjects(UserServiceImpl.java:121)
...
此異常拋出的token.getCatalog()
。因爲getCatelog()
的結果爲空。
備註:我知道在openstack儀表板登錄頁面,用戶只需輸入域名,用戶名,密碼,然後項目信息就會在認證後返回。 這正是我想要的。