我正在通过利用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类型中的方法create(String)不适用 参数(角色)
我想我只需要将'name'参数传递给create方法:
public void role_create(String name) {
Role role = os.identity().roles().create(name);
}
无论如何,当我在服务器上运行程序时,我收到此错误:
线程“main”中的异常ServerResponseException {message = Internal 服务器错误,状态= 500,状态代码= INTERNAL_SERVER_ERROR} at org.openstack4j.core.transport.HttpExceptionHandler.mapException(HttpExceptionHandler.java:40) 在 org.openstack4j.core.transport.HttpExceptionHandler.mapException(HttpExceptionHandler.java:23) 在 org.openstack4j.core.transport.HttpEntityHandler.handle(HttpEntityHandler.java:50) 在 org.openstack4j.connectors.okhttp.HttpResponseImpl.getEntity(HttpResponseImpl.java:69) 在 org.openstack4j.openstack.internal.BaseOpenStackService $ Invocation.execute(BaseOpenStackService.java:189) 在 org.openstack4j.openstack.internal.BaseOpenStackService $ Invocation.execute(BaseOpenStackService.java:183) 在 org.openstack4j.openstack.identity.internal.RoleServiceImpl.create(RoleServiceImpl.java:121) 在openstack.Identity.role_create(Identity.java:75)at openstack.openstackTest.main(openstackTest.java:21)
当我创建用户时,我使用Builders创建User对象并将其传递给create方法。角色的create方法不需要Role对象而是String,这就是为什么我只是尝试传递'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();
}
所以看来Builder已经实现了!任何人都可以帮我解决这个问题并创建一个新角色吗?
祝你好运, 法比奥
答案 0 :(得分:0)
解决! OpenStack V2只需要角色的名称来创建它,但是我自动嵌入在请求中的Openstack4j版本也启用了"启用了#34;参数。这就是我得到例外的原因。该错误已在最新版本的库中修复(2.20)