博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenStack4j访问OpenStack Q版本的Identity服务v2.0
阅读量:4178 次
发布时间:2019-05-26

本文共 2738 字,大约阅读时间需要 9 分钟。

OpenStack4j简洁易用,项目中一直使用方便,构造OS如下:

OSClientV2 os = OSFactory    .builderV2()    .endpoint(cred.getCloudURI())    .credentials(cred.getUsername(), cred.getPassword())    .tenantName(cred.getProject())    .withConfig(        Config.newConfig()            .withConnectionTimeout(1000 * 60)            .withReadTimeout(1000 * 60 * 5))    .authenticate();

近期用于访问OpenStack却发生如下异常:

2018-09-28 11:30:02 DEBUG HttpExecutor:50 - Executing Request: https://my-openstack-cloud:5000/v2.0 -> /tokensException in thread "main" ClientResponseException{message=Not Found, status=404, status-code=NOT_FOUND}	at org.openstack4j.core.transport.HttpExceptionHandler.mapException(HttpExceptionHandler.java:38)	at org.openstack4j.core.transport.HttpExceptionHandler.mapException(HttpExceptionHandler.java:23)	at org.openstack4j.openstack.internal.OSAuthenticator.authenticateV2(OSAuthenticator.java:125)	at org.openstack4j.openstack.internal.OSAuthenticator.invoke(OSAuthenticator.java:52)	at org.openstack4j.openstack.client.OSClientBuilder$ClientV2.authenticate(OSClientBuilder.java:117)	at org.openstack4j.openstack.client.OSClientBuilder$ClientV2.authenticate(OSClientBuilder.java:79)

在调试过程中,执行如下命令,得到熟悉的响应(从OpenStack M版本开始):

> curl https://my-openstack-cloud:5000/{	"versions": {		"values": [{			"status": "stable",			"updated": "2018-02-28T00:00:00Z",			"media-types": [{				"base": "application/json",				"type": "application/vnd.openstack.identity-v3+json"			}],			"id": "v3.10",			"links": [{				"href": "https://my-openstack-cloud:5000/v3/",				"rel": "self"			}]		}, {			"status": "deprecated",			"updated": "2016-08-04T00:00:00Z",			"media-types": [{				"base": "application/json",				"type": "application/vnd.openstack.identity-v2.0+json"			}],			"id": "v2.0",			"links": [{				"href": "https://my-openstack-cloud:5000/v2.0/",				"rel": "self"			}, {				"href": "https://docs.openstack.org/",				"type": "text/html",				"rel": "describedby"			}]		}]	}}

在确定OpenStack4j访问已有Cloud正常的情况下,怀疑是OpenStack的问题。

查看部署的OpenStack采用了OpenStack Q版本,恍然大悟。

通过OpenStack Q版本文档可知,对于OpenStack Queens及其之后版本:

  • 只有Keystone /v3有效
  • Keystone /v2.0的主要功能已经被移除
  • 仅保留Keystone /v2.0的ec2tokens API到OpenStack T版本

截图如下:

使用Keystone v3运行通过,代码如下:

OSClientV3 os = OSFactory    .builderV3()    .endpoint(cred.getCloudURI())    .credentials(cred.getUsername(), cred.getPassword(), Identifier.byName(cred.getDomain()))    .scopeToProject(Identifier.byName(cred.getProject()), Identifier.byName(cred.getDomain()))    .withConfig(        Config.newConfig()            .withConnectionTimeout(1000 * 60)            .withReadTimeout(1000 * 60 * 5))    .authenticate();

参考链接:

    

    https://docs.openstack.org/keystone/latest/api_curl_examples.html
    https://docs.openstack.org/keystone/pike/api_curl_examples.html

你可能感兴趣的文章
字符数组和16进制互换
查看>>
PHP项目中出现致命错误: Class 'Redis' not found
查看>>
There is no tracking information for the current branch.
查看>>
fatal: refusing to merge unrelated histories
查看>>
Git命令还原未提交的变更
查看>>
Linux系统中环境变量的配置
查看>>
Linux系统中配置脚本程序开机启动
查看>>
让Linux系统上的nginx支持php程序
查看>>
源码编译安装LNMP环境之Nginx篇
查看>>
源码编译安装LNMP环境之PHP篇
查看>>
Linux中rpm工具使用教程
查看>>
Linux中yum工具使用教程
查看>>
JS最佳实践——单例模式
查看>>
为php添加gd库支持
查看>>
$'\r': command not found
查看>>
bash脚本:一键安装MYSQL5.6
查看>>
javascript实现压缩图片
查看>>
webpack教程
查看>>
安装composer时出现 failed to open stream: HTTP request failed!的错误
查看>>
禁用HBuilderX自动更新
查看>>