2016-08-20 61 views
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儀表板登錄頁面,用戶只需輸入域名,用戶名,密碼,然後項目信息就會在認證後返回。 這正是我想要的。

回答

0

我使用openstack儀表板爲用戶admin分配了一個默認項目,現在它工作正常。

相關問題