Keystoneauth does not consistently add the collect-timing parameter
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mistral |
Fix Released
|
Critical
|
Brad P. Crochet | ||
OpenStack Identity (keystone) |
Invalid
|
Undecided
|
Unassigned |
Bug Description
Mistral devstack tests started to fail due to the following error [1]
2018-06-04 19:23:37.223185 Server-side error: "no such option collect_timing in group [keystone_
2018-06-04 19:23:37.223221 Traceback (most recent call last):
2018-06-04 19:23:37.223226
2018-06-04 19:23:37.223231 File "/usr/local/
2018-06-04 19:23:37.223235 result = f(self, *args, **kwargs)
2018-06-04 19:23:37.223239
2018-06-04 19:23:37.223243 File "/opt/stack/
2018-06-04 19:23:37.223247 workflow_
2018-06-04 19:23:37.223251
2018-06-04 19:23:37.223255 File "/opt/stack/
2018-06-04 19:23:37.223259 return retry.call(
2018-06-04 19:23:37.223263
2018-06-04 19:23:37.223267 File "/opt/stack/
2018-06-04 19:23:37.223271 return super(MistralRe
2018-06-04 19:23:37.223275
2018-06-04 19:23:37.223279 File "/usr/local/
2018-06-04 19:23:37.223283 start_time=
2018-06-04 19:23:37.223287
2018-06-04 19:23:37.223291 File "/usr/local/
2018-06-04 19:23:37.223295 return fut.result()
2018-06-04 19:23:37.223299
2018-06-04 19:23:37.223303 File "/usr/local/
2018-06-04 19:23:37.223307 return self.__get_result()
2018-06-04 19:23:37.223311
2018-06-04 19:23:37.223315 File "/usr/local/
2018-06-04 19:23:37.223319 result = fn(*args, **kwargs)
2018-06-04 19:23:37.223322
2018-06-04 19:23:37.223326 File "/opt/stack/
2018-06-04 19:23:37.223330 return func(*args, **kw)
2018-06-04 19:23:37.223334
2018-06-04 19:23:37.223338 File "/opt/stack/
2018-06-04 19:23:37.223342 security.
2018-06-04 19:23:37.223355
2018-06-04 19:23:37.223360 File "/opt/stack/
2018-06-04 19:23:37.223364 trust = create_trust()
2018-06-04 19:23:37.223368
2018-06-04 19:23:37.223372 File "/opt/stack/
2018-06-04 19:23:37.223376 trustee_id = keystone.
2018-06-04 19:23:37.223380
2018-06-04 19:23:37.223384 File "/opt/stack/
2018-06-04 19:23:37.223388 return _admin_client()
2018-06-04 19:23:37.223392
2018-06-04 19:23:37.223396 File "/opt/stack/
2018-06-04 19:23:37.223400 auth=auth
2018-06-04 19:23:37.223403
2018-06-04 19:23:37.223408 File "/usr/local/
2018-06-04 19:23:37.223412 return Session(
2018-06-04 19:23:37.223416
2018-06-04 19:23:37.223420 File "/usr/local/
2018-06-04 19:23:37.223424 kwargs.
2018-06-04 19:23:37.223428
2018-06-04 19:23:37.223432 File "/usr/local/
2018-06-04 19:23:37.223436 return self._conf.
2018-06-04 19:23:37.223440
2018-06-04 19:23:37.223444 File "/usr/local/
2018-06-04 19:23:37.223448 value, loc = self._do_get(name, group, namespace)
2018-06-04 19:23:37.223452
2018-06-04 19:23:37.223456 File "/usr/local/
2018-06-04 19:23:37.223460 info = self._get_
2018-06-04 19:23:37.223464
2018-06-04 19:23:37.223468 File "/usr/local/
2018-06-04 19:23:37.223474 raise NoSuchOptError(
2018-06-04 19:23:37.223481
2018-06-04 19:23:37.223487 NoSuchOptError: no such option collect_timing in group [keystone_
The issue seems to be related to the release of the patch "Collect timing information for API calls" [2]
[1] http://
[2] https:/
Changed in mistral: | |
status: | New → Confirmed |
importance: | Undecided → Medium |
Changed in keystone: | |
status: | New → Confirmed |
Changed in mistral: | |
assignee: | nobody → Brad P. Crochet (brad-9) |
Changed in keystone: | |
status: | Confirmed → Invalid |
Changed in mistral: | |
importance: | Medium → Critical |
I think it's the irregular usage about keystoneauth in mistral.
Usually the service should first call https:/ /github. com/openstack/ keystoneauth/ blob/master/ keystoneauth1/ loading/ __init_ _.py#L32 to register the related options. Then the options can be used from the section/group where they are registered.
But it seems that mistral try to get these options from [keystone_ authtoken] directly. Coincidently, Some options are contained in both "keystoneauth" and "keystonemiddle ware", except "timeout", "collect_ timing" ,and "split_loggers". Mistral only registered "timeout" by itself. https:/ /github. com/openstack/ mistral/ blob/master/ mistral/ utils/openstack /keystone. py#L31 So the error happened.
Instead of registering the options one by one in mistral, if mistral use "register_ session_ conf_options" , this kind of error will never happen.