正在做一个类似dashboard的二次开发,我们使用openstack4j作为开发API,
首先描述一下环境部属,假如
工程部属服务器192.168.10.1,
openstack服务器192.168.30.1,
因为192.168.10.1不能PING通192.168.30.1,所以中间加了一层代理映射ip是192.168.20.1;
工程代码里openstack认证的url应该写http://192.168.20.1:5000/v2.0,
OSClient os = OSFactory.builderV2()
.endpoint(url)
.credentials(userName, password)
.tenantName(tenantName)
.authenticate();
List<? extends Server> servers = os.compute().servers().list();
问题出现出现了!!!!
认证通过,但是取虚拟机时报connection time out错误。
原因:
查看openstack日志能看到,取虚拟机时发送请求是http://192.168.30.1:5000/v2.0/xxx,并不是工程服务器能ping通的192.168.20.1,
所以才会报错,解决办法就是把返回的os对象里的endpoint的URL改掉。
能过一张dashboard认证图更能清晰看出调用时使用的url,到底是谁。
首先描述一下环境部属,假如
工程部属服务器192.168.10.1,
openstack服务器192.168.30.1,
因为192.168.10.1不能PING通192.168.30.1,所以中间加了一层代理映射ip是192.168.20.1;
工程代码里openstack认证的url应该写http://192.168.20.1:5000/v2.0,
OSClient os = OSFactory.builderV2()
.endpoint(url)
.credentials(userName, password)
.tenantName(tenantName)
.authenticate();
List<? extends Server> servers = os.compute().servers().list();
问题出现出现了!!!!
认证通过,但是取虚拟机时报connection time out错误。
原因:
查看openstack日志能看到,取虚拟机时发送请求是http://192.168.30.1:5000/v2.0/xxx,并不是工程服务器能ping通的192.168.20.1,
所以才会报错,解决办法就是把返回的os对象里的endpoint的URL改掉。
能过一张dashboard认证图更能清晰看出调用时使用的url,到底是谁。