openstack4j 向错误的主机发送请求
openstack4j sending request to wrong host
我在 Google Cloud Plataform VM 上有一个 OpenStack 运行。甚至我创建了一个带有外部 IP 的 openstack4j os,当我调用任何方法时我得到 connect timed out
,因为 openstack4j 使用的是内部 IP。我可以在调用 os.compute().flavors().list()
?
等方法时手动设置 host
OSClient.OSClientV3 os = OSFactory.builderV3()
.endpoint("http://external_ip:5000/v3")
.credentials("admin", "pass", domain)
.scopeToProject(project)
.authenticate();
os.compute().flavors().list();
使用 OSFactory.enableHttpLoggingFilter(true);
,我发现 flavors.list 正在调用 http://internal_ip:8774/v2.1/.../flavors/detail
。
另一个奇怪的事情是,如果我删除 .scopeToProject(project)
并调用相同的 flavors.list 方法,调用外部 ip,但 returns none 味道(可能是因为它应该坚持一个项目)。
为什么 flavors.list 调用我的 GCP VM 的内部 IP?我可以设置为外部吗?
正如@larsks 所建议的,我必须告诉 openstak4j 需要使用外部 IP。为了解决这个问题,我用 public IP 添加了一条指令:.withConfig(Config.newConfig().withEndpointNATResolution("x.x.x.x"))
。
新授权码:
OSClient.OSClientV3 os = OSFactory.builderV3()
.endpoint("http://external_ip:5000/v3")
.credentials("admin", "pass", domain)
.scopeToProject(project)
.authenticate();
我在 Google Cloud Plataform VM 上有一个 OpenStack 运行。甚至我创建了一个带有外部 IP 的 openstack4j os,当我调用任何方法时我得到 connect timed out
,因为 openstack4j 使用的是内部 IP。我可以在调用 os.compute().flavors().list()
?
OSClient.OSClientV3 os = OSFactory.builderV3()
.endpoint("http://external_ip:5000/v3")
.credentials("admin", "pass", domain)
.scopeToProject(project)
.authenticate();
os.compute().flavors().list();
使用 OSFactory.enableHttpLoggingFilter(true);
,我发现 flavors.list 正在调用 http://internal_ip:8774/v2.1/.../flavors/detail
。
另一个奇怪的事情是,如果我删除 .scopeToProject(project)
并调用相同的 flavors.list 方法,调用外部 ip,但 returns none 味道(可能是因为它应该坚持一个项目)。
为什么 flavors.list 调用我的 GCP VM 的内部 IP?我可以设置为外部吗?
正如@larsks 所建议的,我必须告诉 openstak4j 需要使用外部 IP。为了解决这个问题,我用 public IP 添加了一条指令:.withConfig(Config.newConfig().withEndpointNATResolution("x.x.x.x"))
。
新授权码:
OSClient.OSClientV3 os = OSFactory.builderV3()
.endpoint("http://external_ip:5000/v3")
.credentials("admin", "pass", domain)
.scopeToProject(project)
.authenticate();