Как я могу получить доступ к HP Helion с помощью Apache jclouds

Я хочу получить доступ к облаку HP Helion с помощью Apache jclouds 1.8.0 (через проект Apache Brooklyn), и конфигурация, которую я использовал ранее, больше не работает. В документации предлагается использовать то же имя пользователя и пароль, что и в консоли, но это дает мне ошибку аутентификации HTTP 401.

Отправляемые данные POST записываются в журналы и выглядят следующим образом (с отформатированным и отредактированным именем пользователя/паролем):

{
  "auth":{
    "apiAccessKeyCredentials":{"accessKey":"[email protected]","secretKey":"XXXXXXXX"},
    "tenantName":"[email protected]"
  }
}

Моя конфигурация для jclouds состоит из установки удостоверения и учетных данных следующим образом:

identity = [email protected]:[email protected]
credential = XXXXXXXX

Трассировка исключения была следующей:

java.lang.IllegalStateException: Not authorized to access cloud JcloudsLocation[HP Helion (US East):[email protected]:[email protected]] to resolve PortableTemplateBuilder[ports=[22], os=ubuntu, locationId=region-b.geo-1, osVersionRegex=12.04, is64bit=true, imageChooserFunction=brooklyn.location.jclouds.BrooklynImageChooser$3@5ec6379b, minRam=2048]
at brooklyn.location.jclouds.JcloudsLocation.buildTemplate(JcloudsLocation.java:1052) ~[brooklyn-locations-jclouds-0.7.0-20140817.024657-169.jar:0.7.0-SNAPSHOT]
Caused by: org.jclouds.rest.AuthorizationException: POST https://region-a.geo-1.identity.hpcloudsvc.com:35357/v2.0/tokens HTTP/1.1 -> HTTP/1.1 401 Unauthorized
at org.jclouds.openstack.nova.v2_0.handlers.NovaErrorHandler.handleError(NovaErrorHandler.java:93) ~[openstack-nova-1.8.0.jar:1.8.0]
Caused by: org.jclouds.http.HttpResponseException: request: POST https://region-a.geo-1.identity.hpcloudsvc.com:35357/v2.0/tokens HTTP/1.1  [{"auth":{"apiAccessKeyCredentials":{"accessKey":"[email protected]","secretKey":"XXXXXXXX"},"tenantName":"[email protected]"}}] failed with response: HTTP/1.1 401 Unauthorized
at org.jclouds.openstack.nova.v2_0.handlers.NovaErrorHandler.handleError(NovaErrorHandler.java:78) ~[openstack-nova-1.8.0.jar:1.8.0]

person grkvlt    schedule 17.08.2014    source источник


Ответы (1)


Как оказалось, с этим есть пара проблем. Во-первых, в версии 1.8.0 произошли изменения в способе работы jclouds, описанные в примечаниях к выпуску< /а>

Начиная с версии 1.8.0 поставщик HP Cloud Object Storage требует явного указания атрибута региона. Этот атрибут теперь используется для выбора подходящей конечной точки. Если регион явно не задан, будет выбрана произвольная конечная точка, которая может отличаться от конечной точки, выбранной при использовании предыдущих версий jclouds.

Для меня это не проблема, но я сейчас все равно явно задаю регион в конфигурации.

Во-вторых, после отправки нескольких запросов POST на конечную точку с другим содержимым кажется, что jclouds использует аутентификацию на основе ключа доступа, а не аутентификацию по имени пользователя и паролю. Итак, после входа в консоль HP ​​Helion я выбрал Управление ключами доступа из списка имен пользователей. вниз вверху страницы. Затем я смог щелкнуть Показать секретные ключи, чтобы показать необходимые данные доступа и секретного ключа. Может потребоваться создание нового ключа, если срок действия существующих истек, но мне этого не нужно было делать. затем мне просто нужно было изменить данные jclouds identity и credential, чтобы они соответствовали:

identity = [email protected]:ACCESSKEYDATA
credential = SECRETKEYDATA

Это позволяет API jclouds успешно подключаться и создавать виртуальные машины.

Наконец, мне пришлось настроить имя региона как часть дескриптора местоположения для Бруклина, но другие приложения jclouds могут делать это по-другому:

brooklyn.location.named.hpcloud-west = jclouds:hpcloud-compute
brooklyn.location.named.hpcloud-west.region = region-a.geo-1
brooklyn.location.named.hpcloud-west.displayName = HP Helion (US West)
person grkvlt    schedule 17.08.2014
comment
Также можно было установить KeystoneProperties.CREDENTIAL_TYPE на CredentialTypes.PASSWORD_CREDENTIALS - person grkvlt; 18.08.2014