我正在通过使用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());
}当我注意到这个错误
RoleService类型中的创建(字符串)方法不适用于参数(角色)
我假设我只需将'name‘参数传递给create方法:
public void role_create(String name) {
Role role = os.identity().roles().create(name);
}无论如何,当我在服务器上运行程序时,我会得到以下错误:
线程"main“ServerResponseException{message=Internal服务器错误,status=500,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创建用户对象并将其传递给create方法。角色的create方法不需要一个角色对象,而是一个字符串,这就是为什么我试图传递'name‘字符串的原因。当异常发生时,我读取RoleServiceImpl.java文件以查看create方法。结果是:
@Override
public Role create(String name) {
checkNotNull(name);
return post(KeystoneRole.class,
uri("/OS-SADM/roles")).entity(KeystoneRole.builder().name(name).build()).execute();
}所以看来生成器已经实现了!有人能帮我解决这个问题并创造一个新的角色吗?
向你问好,法比奥
发布于 2016-04-13 13:36:08
解决了!OpenStack V2只需要角色的名称即可,但是我在请求中使用的Openstack4j版本也是“已启用”参数。所以我才有例外。该错误已在最新版本的库中修复(2.20)
https://stackoverflow.com/questions/36330052
复制相似问题