首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Apache jclouds访问HP Helion?

如何使用Apache jclouds访问HP Helion?
EN

Stack Overflow用户
提问于 2014-08-17 16:41:08
回答 1查看 414关注 0票数 2

我想使用Apache 1.8.0 (通过Apache布鲁克林项目)访问Helion,而我以前使用的配置不再起作用。文档建议我使用与控制台相同的用户名和密码,但这会导致HTTP 401身份验证错误。

发送的POST数据记录在日志中,如下所示(格式化并修改了用户名/密码):

代码语言:javascript
复制
{
  "auth":{
    "apiAccessKeyCredentials":{"accessKey":"user@example.org","secretKey":"XXXXXXXX"},
    "tenantName":"user@example.org.com-tenant1"
  }
}

我对jclouds的配置包括将标识和凭据设置为:

代码语言:javascript
复制
identity = user@example.org-tenant1:user@example.org
credential = XXXXXXXX

异常跟踪如下:

代码语言:javascript
复制
java.lang.IllegalStateException: Not authorized to access cloud JcloudsLocation[HP Helion (US East):user@example.org-tenant1:user@example.org] 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":"user@example.org","secretKey":"XXXXXXXX"},"tenantName":"user@example.org-tenant1"}}] 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]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-17 16:41:08

事实证明,这有几个问题。首先,jclouds在1.8.0中的工作方式发生了变化,这在发布说明中有记录。

从1.8.0开始,要求显式地指定region属性。该属性现在用于选择适当的端点。如果未显式设置区域,则将选择任意端点,这可能与使用先前版本的jclouds时选择的端点不同。

这对我来说不是一个问题,但我现在仍然显式地在配置中设置区域。

其次,在向具有不同内容的端点发送几个POST请求之后,jclouds似乎使用了基于访问密钥的身份验证,而不是用户名和密码身份验证。因此,在登录到Helion 控制台之后,我从用户名中选择了管理访问键。然后,我可以单击显示密钥来显示我需要的访问和秘密密钥数据。如果现有密钥已过期,则可能需要创建新密钥,但我不需要这样做。然后,我只需更改jclouds标识和凭据数据即可:

代码语言:javascript
复制
identity = user@example.org-tenant1:ACCESSKEYDATA
credential = SECRETKEYDATA

这使得jclouds能够成功地连接和创建VM。

最后,我不得不将区域名称配置为布鲁克林位置描述符的一部分,但其他jclouds应用程序可能会采取不同的做法:

代码语言:javascript
复制
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)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25351307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档