Collect resource id from RequestSpec parameter

Try to get resource id from RequestSpec parameter
instead of VolumeProperties, fix the incorrect
log output as below:

```
Exceeded max scheduling attempts 3 for volume None
```

Change-Id: Ib28539c7970f66b94fc2540d66d8cf5c3b7bfc6b
Closes-Bugs: #1765927
This commit is contained in:
TommyLike 2018-04-21 17:44:42 +08:00
parent e6028249cc
commit fe6ec36515
1 changed files with 8 additions and 7 deletions

View File

@ -238,7 +238,7 @@ class FilterScheduler(driver.Scheduler):
'last_backend': last_backend,
'exc': exc})
def _populate_retry(self, filter_properties, properties):
def _populate_retry(self, filter_properties, request_spec):
"""Populate filter properties with history of retries for request.
If maximum retries is exceeded, raise NoValidBackend.
@ -261,15 +261,16 @@ class FilterScheduler(driver.Scheduler):
}
filter_properties['retry'] = retry
volume_id = properties.get('volume_id')
self._log_volume_error(volume_id, retry)
resource_id = request_spec.get(
'volume_id') or request_spec.get("group_id")
self._log_volume_error(resource_id, retry)
if retry['num_attempts'] > max_attempts:
raise exception.NoValidBackend(
reason=_("Exceeded max scheduling attempts %(max_attempts)d "
"for volume %(volume_id)s") %
"for resource %(resource_id)s") %
{'max_attempts': max_attempts,
'volume_id': volume_id})
'resource_id': resource_id})
def _get_weighted_candidates(self, context, request_spec,
filter_properties=None):
@ -290,7 +291,7 @@ class FilterScheduler(driver.Scheduler):
if filter_properties is None:
filter_properties = {}
self._populate_retry(filter_properties,
request_spec['volume_properties'])
request_spec)
request_spec_dict = jsonutils.to_primitive(request_spec)
@ -378,7 +379,7 @@ class FilterScheduler(driver.Scheduler):
filter_properties = filter_properties_list[index]
if filter_properties is None:
filter_properties = {}
self._populate_retry(filter_properties, resource_properties)
self._populate_retry(filter_properties, request_spec)
# Add group_support in extra_specs if it is not there.
# Make sure it is populated in filter_properties