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();