openstack4j отправляет запрос на неправильный хост - PullRequest
0 голосов
/ 19 апреля 2019

У меня OpenStack, запущенный на виртуальной машине Google Cloud Plataform.Даже трудно создать ОС openstack4j с внешним IP-адресом, когда я вызываю любой полученный мной метод 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, но не возвращается ни один из вариантов (вероятно, потому что он должен быть привязан к проекту).

Почему flavors.list вызывает внутренний IP-адрес моей виртуальной машины GCP?Можно ли установить на внешний?

1 Ответ

0 голосов
/ 20 апреля 2019

Как подсказал @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();
...