OpenStack 指定者:“_AuthTokenPlugin”没有属性 'register_conf_options'

OpenStack Designate: '_AuthTokenPlugin' has no attribute 'register_conf_options'

我最近开始使用OpenStack。问题在于:我正在为 OpenStack (DNSaaS) 设置 Designate,并且我已根据此处的说明进行相应设置 -- https://designate.readthedocs.org/en/latest/getting-started.html

使用 "noauth" auth_strategy,API 和 Central 服务工作正常,但我一直在寻找与 OpenStack Keystone 的集成,所以我在 designate.conf 文件:

#-----------------------
# API Service
#-----------------------
[service:api]
# Address to bind the API server
api_host = 0.0.0.0

# Port the bind the API server to
api_port = 9001

# Authentication strategy to use - can be either "noauth" or "keystone"
auth_strategy = keystone

&&

#-----------------------
# Keystone Middleware
#-----------------------
[keystone_authtoken]
auth_host = xxx.xxx.xxx.xxx <-- redacted
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = redacted
admin_password = redacted

&&

##############
## Network API
##############
[network_api:neutron]
endpoints = RegionOne|http://xxx.xxx.xxx.xxx:9696
endpoint_type = publicURL
timeout = 30
admin_username = redacted
admin_password = redacted
admin_tenant_name = service
auth_url = http://xxx.xxx.xxx.xxx:35357/v2.0
#insecure = False
auth_strategy = keystone
#ca_certificates_file = /etc/path/to/ca.pem

保存这些更改并启动 Designate API 后出现以下错误并且服务未启动:

2015-02-23 11:44:09.534 27878 TRACE designate   File "/usr/local/lib/python2.7/dist-packages/keystonemiddleware/auth_token.py", line 667, in <module>
2015-02-23 11:44:09.534 27878 TRACE designate     _AuthTokenPlugin.register_conf_options(CONF, _AUTHTOKEN_GROUP)
2015-02-23 11:44:09.534 27878 TRACE designate AttributeError: type object '_AuthTokenPlugin' has no attribute 'register_conf_options'
2015-02-23 11:44:09.534 27878 TRACE designate 

显然 _AuthTokenPlugin 没有属性 'register_conf_options'。仔细检查 Designate(keystonemiddleware 插件)提供的 auth_token.py 文件。 只有两个 'register_conf_options' 被提及;调用它的第 667 行。

_AuthTokenPlugin.register_conf_options(CONF, _AUTHTOKEN_GROUP)

以及之前的第 335 行:

_AUTHTOKEN_GROUP = 'keystone_authtoken'
CONF = cfg.CONF
CONF.register_opts(_OPTS, group=_AUTHTOKEN_GROUP)
auth.register_conf_options(CONF, _AUTHTOKEN_GROUP) 

问题出在哪里?我该怎么做呢?预先感谢您提供任何提示或解决方案。

我正在尝试同样的事情,但我没有收到这样的错误。 最终指定服务开始查找,但是当我使用 keystone 用户名和密码点击 api url 时,它给了我 401 错误。

不知道哪里出了问题。 这是 /var/log/designate/designate.api.log

的痕迹
keystonemiddleware.auth_token [-] Unable to find authentication token in headers
keystonemiddleware.auth_token [-] Invalid user token - rejecting request
eventlet.wsgi [-] 203.143.184.13,54.85.95.189 - - [23/Feb/2015 05:37:24] "GET /v1/servers HTTP/1.1" 401 282 0.001634

不幸的是,这些文档已经过时了。 :( 虽然它们应该在大部分情况下都有效。我只是 运行 在 Trusty VM 上通过它们,它似乎对我有用。

当前文档在这里 - http://docs.openstack.org/developer/designate/

可能是您当前安装的其他 OpenStack 项目的版本与您尝试安装的 Designate 版本不兼容。

看起来像是 keystonemiddleware 的问题。我们不将其作为 Designate 的一部分提供,它是一项要求。

最好的起点是获取您拥有的 OpenStack 版本,然后是 virtualenv 中 pip freeze 的输出。

freenode 上的#openstack-dns 通常也是几个人,他们可以运行 实时处理事情