openstack4j发送请求到错误的主机

时间:2019-04-19 20:39:09

标签: google-cloud-platform openstack openstack4j

我有一个在Google Cloud Plataform VM上运行的OpenStack。当我调用任何我得到connect timed out的方法时,甚至很难用外部IP创建一个openstack4j操作系统,因为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);正在调用http://internal_ip:8774/v2.1/.../flavors/detail

另一个更奇怪的事情是,如果我删除.scopeToProject(project)并调用相同的flavors.list方法,则会调用外部ip,但不会返回任何flavour(可能是因为它应该坚持一个项目)。

为什么flavors.list会调用我的GCP VM的内部IP?我可以设置为外部吗?

1 个答案:

答案 0 :(得分:0)

正如@larsks所建议的,我不得不告诉openstak4j使用外部IP所需。为了解决这个问题,我在我的公共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();