NoneOpenstack 4j отправляет запрос на неправильный хост

У меня 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 ответ

Решение

Как подсказал @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();
Другие вопросы по тегам