如何使用openstack4j创建新角色?

时间:2016-03-31 09:57:12

标签: java eclipse identity roles openstack

我正在通过利用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已经实现了!任何人都可以帮我解决这个问题并创建一个新角色吗?

祝你好运, 法比奥

1 个答案:

答案 0 :(得分:0)

解决! OpenStack V2只需要角色的名称来创建它,但是我自动嵌入在请求中的Openstack4j版本也启用了"启用了#34;参数。这就是我得到例外的原因。该错误已在最新版本的库中修复(2.20)