如何使用 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)

中修复