如何使用 openstack4j 创建新角色?
How can I create a new Role with openstack4j?
我正在通过利用 openstack4j API (v. 2.0.9) 开发一个 eclipse 项目。我需要创建一个新角色,所以我尝试(在 V2 身份验证之后)使用像用户创建这样的生成器:
public void role_create(String name) {
Role role = os.identity().roles().create(Builders.role().name(name).build());
}
当我注意到错误时
The method create(String) in the type RoleService is not applicable
for the arguments (Role)
我想我只需要将 'name' 参数传递给创建方法:
public void role_create(String name) {
Role role = os.identity().roles().create(name);
}
无论如何,当我 运行 服务器上的程序时,我得到这个错误:
Exception in thread "main" ServerResponseException{message=Internal
Server Error, status=500, status-code=INTERNAL_SERVER_ERROR} at
org.openstack4j.core.transport.HttpExceptionHandler.mapException(HttpExceptionHandler.java:40)
at
org.openstack4j.core.transport.HttpExceptionHandler.mapException(HttpExceptionHandler.java:23)
at
org.openstack4j.core.transport.HttpEntityHandler.handle(HttpEntityHandler.java:50)
at
org.openstack4j.connectors.okhttp.HttpResponseImpl.getEntity(HttpResponseImpl.java:69)
at
org.openstack4j.openstack.internal.BaseOpenStackService$Invocation.execute(BaseOpenStackService.java:189)
at
org.openstack4j.openstack.internal.BaseOpenStackService$Invocation.execute(BaseOpenStackService.java:183)
at
org.openstack4j.openstack.identity.internal.RoleServiceImpl.create(RoleServiceImpl.java:121)
at openstack.Identity.role_create(Identity.java:75) at
openstack.openstackTest.main(openstackTest.java:21)
当我创建用户时,我使用 Builders 创建一个 User 对象并将其传递给 create 方法。角色的创建方法不需要角色对象而是字符串,这就是为什么我只是试图传递 'name' 字符串。发生异常时,我读取 RoleServiceImpl.java 文件以查看创建方法。这就是结果:
@Override
public Role create(String name) {
checkNotNull(name);
return post(KeystoneRole.class,
uri("/OS-SADM/roles")).entity(KeystoneRole.builder().name(name).build()).execute();
}
看来 Builder 已经实现了!谁能帮我解决这个问题并创建一个新角色?
此致,
法比奥
已解决! OpenStack V2 只需要角色名称来创建它,但我使用的 Openstack4j 版本自动嵌入到请求中还有 "enabled" 参数。这就是为什么我有一个例外。该错误已在最新版本的库 (2.20)
中修复
我正在通过利用 openstack4j API (v. 2.0.9) 开发一个 eclipse 项目。我需要创建一个新角色,所以我尝试(在 V2 身份验证之后)使用像用户创建这样的生成器:
public void role_create(String name) {
Role role = os.identity().roles().create(Builders.role().name(name).build());
}
当我注意到错误时
The method create(String) in the type RoleService is not applicable for the arguments (Role)
我想我只需要将 'name' 参数传递给创建方法:
public void role_create(String name) {
Role role = os.identity().roles().create(name);
}
无论如何,当我 运行 服务器上的程序时,我得到这个错误:
Exception in thread "main" ServerResponseException{message=Internal Server Error, status=500, status-code=INTERNAL_SERVER_ERROR} at org.openstack4j.core.transport.HttpExceptionHandler.mapException(HttpExceptionHandler.java:40) at org.openstack4j.core.transport.HttpExceptionHandler.mapException(HttpExceptionHandler.java:23) at org.openstack4j.core.transport.HttpEntityHandler.handle(HttpEntityHandler.java:50) at org.openstack4j.connectors.okhttp.HttpResponseImpl.getEntity(HttpResponseImpl.java:69) at org.openstack4j.openstack.internal.BaseOpenStackService$Invocation.execute(BaseOpenStackService.java:189) at org.openstack4j.openstack.internal.BaseOpenStackService$Invocation.execute(BaseOpenStackService.java:183) at org.openstack4j.openstack.identity.internal.RoleServiceImpl.create(RoleServiceImpl.java:121) at openstack.Identity.role_create(Identity.java:75) at openstack.openstackTest.main(openstackTest.java:21)
当我创建用户时,我使用 Builders 创建一个 User 对象并将其传递给 create 方法。角色的创建方法不需要角色对象而是字符串,这就是为什么我只是试图传递 'name' 字符串。发生异常时,我读取 RoleServiceImpl.java 文件以查看创建方法。这就是结果:
@Override
public Role create(String name) {
checkNotNull(name);
return post(KeystoneRole.class,
uri("/OS-SADM/roles")).entity(KeystoneRole.builder().name(name).build()).execute();
}
看来 Builder 已经实现了!谁能帮我解决这个问题并创建一个新角色?
此致, 法比奥
已解决! OpenStack V2 只需要角色名称来创建它,但我使用的 Openstack4j 版本自动嵌入到请求中还有 "enabled" 参数。这就是为什么我有一个例外。该错误已在最新版本的库 (2.20)
中修复