Public bug reported:
version: 8.1.3.dev1
branch: stable/liberty
in my keystone.conf
```
[cache]
config_prefix = cache.keystone
expiration_time = 600
backend = dogpile.cache.redis
backend_argument = host:127.0.0.1
backend_argument = port:6380
backend_argument = db:0
```
Using this keystone.conf is not working.
```
2016-08-31 13:46:56.552 10387 CRITICAL keystone [-] AttributeError: 'list'
object has no attribute 'decode'
2016-08-31 13:46:56.552 10387 ERROR keystone Traceback (most recent call last):
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/bin/keystone-wsgi-admin", line 34, in <module>
2016-08-31 13:46:56.552 10387 ERROR keystone server = wss.make_server('',
args.port, initialize_admin_application())
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/keystone/server/wsgi.py",
line 78, in initialize_admin_application
2016-08-31 13:46:56.552 10387 ERROR keystone return
initialize_application('admin')
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/keystone/server/wsgi.py",
line 64, in initialize_application
2016-08-31 13:46:56.552 10387 ERROR keystone startup_application_fn=loadapp)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/keystone/server/common.py",
line 49, in setup_backends
2016-08-31 13:46:56.552 10387 ERROR keystone drivers =
backends.load_backends()
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/keystone/server/backends.py",
line 33, in load_backends
2016-08-31 13:46:56.552 10387 ERROR keystone
cache.configure_cache_region(cache.REGION)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/keystone/common/cache/core.py",
line 142, in configure_cache_region
2016-08-31 13:46:56.552 10387 ERROR keystone '%s.' %
CONF.cache.config_prefix)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/dogpile/cache/region.py",
line 552, in configure_from_config
2016-08-31 13:46:56.552 10387 ERROR keystone "%swrap" % prefix, None),
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/dogpile/cache/region.py",
line 417, in configure
2016-08-31 13:46:56.552 10387 ERROR keystone _config_prefix
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/dogpile/cache/api.py",
line 81, in from_config_dict
2016-08-31 13:46:56.552 10387 ERROR keystone for key in config_dict
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/dogpile/cache/backends/redis.py",
line 109, in __init__
2016-08-31 13:46:56.552 10387 ERROR keystone self.client =
self._create_client()
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/dogpile/cache/backends/redis.py",
line 129, in _create_client
2016-08-31 13:46:56.552 10387 ERROR keystone return
redis.StrictRedis.from_url(**args)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/redis/client.py", line
391, in from_url
2016-08-31 13:46:56.552 10387 ERROR keystone connection_pool =
ConnectionPool.from_url(url, db=db, **kwargs)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/redis/connection.py",
line 774, in from_url
2016-08-31 13:46:56.552 10387 ERROR keystone url = urlparse(url)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/usr/lib64/python3.5/urllib/parse.py", line 294, in urlparse
2016-08-31 13:46:56.552 10387 ERROR keystone url, scheme, _coerce_result =
_coerce_args(url, scheme)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/usr/lib64/python3.5/urllib/parse.py", line 114, in _coerce_args
2016-08-31 13:46:56.552 10387 ERROR keystone return _decode_args(args) +
(_encode_result,)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/usr/lib64/python3.5/urllib/parse.py", line 98, in _decode_args
2016-08-31 13:46:56.552 10387 ERROR keystone return
tuple(x.decode(encoding, errors) if x else '' for x in args)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/usr/lib64/python3.5/urllib/parse.py", line 98, in <genexpr>
2016-08-31 13:46:56.552 10387 ERROR keystone return
tuple(x.decode(encoding, errors) if x else '' for x in args)
2016-08-31 13:46:56.552 10387 ERROR keystone AttributeError: 'list' object has
no attribute 'decode'
2016-08-31 13:46:56.552 10387 ERROR keystone
```
Therefore, I view the code, find the reason.
Although I have not configured the `url` of `backend_argument`, the code
sets the default `url` values `CONF.cache.memcache_servers`(file
`keystone/common/cache/core.py`, line 112-113).
Therefore, the variable of `CONF.cache.memcache_servers` default value
is `["localhost:11211"]`(file `keystone/common/config.py`, line
356-359).
So, when the code runs after `build_cache_conf` (file
`keystone/common/cache/core.py`, line 139), the configuration of `cache`
contain:
```
url = ["localhost:11211"]
host = "127.0.0.1"
port = 6380
db = 0
```
I use the cache backend `dogpile.cache.redis`, when the code is
configured the `url` argument and creates `redis_client`, will use the
function `StrictRedis.from_url` and `url` argument, and ignore the
argument `host`,`port` and `db`.
If I will use the cache backend `dogpile.cache.redis`, I must configure the
`keystone.conf`
```
[cache]
config_prefix = cache.keystone
expiration_time = 600
backend = dogpile.cache.redis
backend_argument = url:redis://192.168.7.51:6380/0
```
** Affects: keystone
Importance: Undecided
Status: New
** Description changed:
version: 8.1.3.dev1
branch: stable/liberty
in my keystone.conf
```
[cache]
config_prefix = cache.keystone
expiration_time = 600
backend = dogpile.cache.redis
backend_argument = host:127.0.0.1
backend_argument = port:6380
backend_argument = db:0
```
Using this keystone.conf is not working.
```
2016-08-31 13:46:56.552 10387 CRITICAL keystone [-] AttributeError: 'list'
object has no attribute 'decode'
2016-08-31 13:46:56.552 10387 ERROR keystone Traceback (most recent call
last):
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/bin/keystone-wsgi-admin", line 34, in <module>
2016-08-31 13:46:56.552 10387 ERROR keystone server = wss.make_server('',
args.port, initialize_admin_application())
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/keystone/server/wsgi.py",
line 78, in initialize_admin_application
2016-08-31 13:46:56.552 10387 ERROR keystone return
initialize_application('admin')
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/keystone/server/wsgi.py",
line 64, in initialize_application
2016-08-31 13:46:56.552 10387 ERROR keystone
startup_application_fn=loadapp)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/keystone/server/common.py",
line 49, in setup_backends
2016-08-31 13:46:56.552 10387 ERROR keystone drivers =
backends.load_backends()
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/keystone/server/backends.py",
line 33, in load_backends
2016-08-31 13:46:56.552 10387 ERROR keystone
cache.configure_cache_region(cache.REGION)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/keystone/common/cache/core.py",
line 142, in configure_cache_region
2016-08-31 13:46:56.552 10387 ERROR keystone '%s.' %
CONF.cache.config_prefix)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/dogpile/cache/region.py",
line 552, in configure_from_config
2016-08-31 13:46:56.552 10387 ERROR keystone "%swrap" % prefix, None),
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/dogpile/cache/region.py",
line 417, in configure
2016-08-31 13:46:56.552 10387 ERROR keystone _config_prefix
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/dogpile/cache/api.py",
line 81, in from_config_dict
2016-08-31 13:46:56.552 10387 ERROR keystone for key in config_dict
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/dogpile/cache/backends/redis.py",
line 109, in __init__
2016-08-31 13:46:56.552 10387 ERROR keystone self.client =
self._create_client()
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/dogpile/cache/backends/redis.py",
line 129, in _create_client
2016-08-31 13:46:56.552 10387 ERROR keystone return
redis.StrictRedis.from_url(**args)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/redis/client.py", line
391, in from_url
2016-08-31 13:46:56.552 10387 ERROR keystone connection_pool =
ConnectionPool.from_url(url, db=db, **kwargs)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/redis/connection.py",
line 774, in from_url
2016-08-31 13:46:56.552 10387 ERROR keystone url = urlparse(url)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/usr/lib64/python3.5/urllib/parse.py", line 294, in urlparse
2016-08-31 13:46:56.552 10387 ERROR keystone url, scheme, _coerce_result
= _coerce_args(url, scheme)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/usr/lib64/python3.5/urllib/parse.py", line 114, in _coerce_args
2016-08-31 13:46:56.552 10387 ERROR keystone return _decode_args(args) +
(_encode_result,)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/usr/lib64/python3.5/urllib/parse.py", line 98, in _decode_args
2016-08-31 13:46:56.552 10387 ERROR keystone return
tuple(x.decode(encoding, errors) if x else '' for x in args)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/usr/lib64/python3.5/urllib/parse.py", line 98, in <genexpr>
2016-08-31 13:46:56.552 10387 ERROR keystone return
tuple(x.decode(encoding, errors) if x else '' for x in args)
2016-08-31 13:46:56.552 10387 ERROR keystone AttributeError: 'list' object
has no attribute 'decode'
- 2016-08-31 13:46:56.552 10387 ERROR keystone
+ 2016-08-31 13:46:56.552 10387 ERROR keystone
```
Therefore, I view the code, find the reason.
Although I have not configured the `url` of `backend_argument`, the code
sets the default `url` values `CONF.cache.memcache_servers`(file
`keystone/common/cache/core.py`, line 112-113).
Therefore, the variable of `CONF.cache.memcache_servers` default value
is `["localhost:11211"]`(file `keystone/common/config.py`, line
356-359).
So, when the code runs after `build_cache_conf` (file
`keystone/common/cache/core.py`, line 139), the configuration of `cache`
contain:
```
url = ["localhost:11211"]
host = "127.0.0.1"
port = 6380
db = 0
```
I use the cache backend `dogpile.cache.redis`, when the code is
configured the `url` argument and creates `redis_client`, will use the
function `StrictRedis.from_url` and `url` argument, and ignore the
argument `host`,`port` and `db`.
If I will use the cache backend `dogpile.cache.redis`, I must configure the
`keystone.conf`
```
[cache]
config_prefix = cache.keystone
expiration_time = 600
backend = dogpile.cache.redis
backend_argument = url:redis://192.168.7.51:6380/0
```
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Identity (keystone).
https://bugs.launchpad.net/bugs/1618705
Title:
keystone.cache.redis config arguments url conflict host and port
Status in OpenStack Identity (keystone):
New
Bug description:
version: 8.1.3.dev1
branch: stable/liberty
in my keystone.conf
```
[cache]
config_prefix = cache.keystone
expiration_time = 600
backend = dogpile.cache.redis
backend_argument = host:127.0.0.1
backend_argument = port:6380
backend_argument = db:0
```
Using this keystone.conf is not working.
```
2016-08-31 13:46:56.552 10387 CRITICAL keystone [-] AttributeError: 'list'
object has no attribute 'decode'
2016-08-31 13:46:56.552 10387 ERROR keystone Traceback (most recent call
last):
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/bin/keystone-wsgi-admin", line 34, in <module>
2016-08-31 13:46:56.552 10387 ERROR keystone server = wss.make_server('',
args.port, initialize_admin_application())
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/keystone/server/wsgi.py",
line 78, in initialize_admin_application
2016-08-31 13:46:56.552 10387 ERROR keystone return
initialize_application('admin')
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/keystone/server/wsgi.py",
line 64, in initialize_application
2016-08-31 13:46:56.552 10387 ERROR keystone
startup_application_fn=loadapp)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/keystone/server/common.py",
line 49, in setup_backends
2016-08-31 13:46:56.552 10387 ERROR keystone drivers =
backends.load_backends()
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/keystone/server/backends.py",
line 33, in load_backends
2016-08-31 13:46:56.552 10387 ERROR keystone
cache.configure_cache_region(cache.REGION)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/keystone/common/cache/core.py",
line 142, in configure_cache_region
2016-08-31 13:46:56.552 10387 ERROR keystone '%s.' %
CONF.cache.config_prefix)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/dogpile/cache/region.py",
line 552, in configure_from_config
2016-08-31 13:46:56.552 10387 ERROR keystone "%swrap" % prefix, None),
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/dogpile/cache/region.py",
line 417, in configure
2016-08-31 13:46:56.552 10387 ERROR keystone _config_prefix
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/dogpile/cache/api.py",
line 81, in from_config_dict
2016-08-31 13:46:56.552 10387 ERROR keystone for key in config_dict
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/dogpile/cache/backends/redis.py",
line 109, in __init__
2016-08-31 13:46:56.552 10387 ERROR keystone self.client =
self._create_client()
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/dogpile/cache/backends/redis.py",
line 129, in _create_client
2016-08-31 13:46:56.552 10387 ERROR keystone return
redis.StrictRedis.from_url(**args)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/redis/client.py", line
391, in from_url
2016-08-31 13:46:56.552 10387 ERROR keystone connection_pool =
ConnectionPool.from_url(url, db=db, **kwargs)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/home/chuangwang/.ostack/lib/python3.5/site-packages/redis/connection.py",
line 774, in from_url
2016-08-31 13:46:56.552 10387 ERROR keystone url = urlparse(url)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/usr/lib64/python3.5/urllib/parse.py", line 294, in urlparse
2016-08-31 13:46:56.552 10387 ERROR keystone url, scheme, _coerce_result
= _coerce_args(url, scheme)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/usr/lib64/python3.5/urllib/parse.py", line 114, in _coerce_args
2016-08-31 13:46:56.552 10387 ERROR keystone return _decode_args(args) +
(_encode_result,)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/usr/lib64/python3.5/urllib/parse.py", line 98, in _decode_args
2016-08-31 13:46:56.552 10387 ERROR keystone return
tuple(x.decode(encoding, errors) if x else '' for x in args)
2016-08-31 13:46:56.552 10387 ERROR keystone File
"/usr/lib64/python3.5/urllib/parse.py", line 98, in <genexpr>
2016-08-31 13:46:56.552 10387 ERROR keystone return
tuple(x.decode(encoding, errors) if x else '' for x in args)
2016-08-31 13:46:56.552 10387 ERROR keystone AttributeError: 'list' object
has no attribute 'decode'
2016-08-31 13:46:56.552 10387 ERROR keystone
```
Therefore, I view the code, find the reason.
Although I have not configured the `url` of `backend_argument`, the
code sets the default `url` values `CONF.cache.memcache_servers`(file
`keystone/common/cache/core.py`, line 112-113).
Therefore, the variable of `CONF.cache.memcache_servers` default value
is `["localhost:11211"]`(file `keystone/common/config.py`, line
356-359).
So, when the code runs after `build_cache_conf` (file
`keystone/common/cache/core.py`, line 139), the configuration of `cache`
contain:
```
url = ["localhost:11211"]
host = "127.0.0.1"
port = 6380
db = 0
```
I use the cache backend `dogpile.cache.redis`, when the code is
configured the `url` argument and creates `redis_client`, will use the
function `StrictRedis.from_url` and `url` argument, and ignore the
argument `host`,`port` and `db`.
If I will use the cache backend `dogpile.cache.redis`, I must configure the
`keystone.conf`
```
[cache]
config_prefix = cache.keystone
expiration_time = 600
backend = dogpile.cache.redis
backend_argument = url:redis://192.168.7.51:6380/0
```
To manage notifications about this bug go to:
https://bugs.launchpad.net/keystone/+bug/1618705/+subscriptions
--
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to : [email protected]
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help : https://help.launchpad.net/ListHelp