summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2020-03-19 21:09:34 +0000
committerGerrit Code Review <review@openstack.org>2020-03-19 21:09:35 +0000
commit0f7e0da5e494840cd5878e34397c4ad71abaafed (patch)
treeb3abbdbe60b64cf845314f1062c74c882b8d8a77
parent859ac8dda1dc5cb9087f6fb5443714a7dd852fdb (diff)
parentb91592595141d7766c00255ffff04a25ca81c834 (diff)
downloadnova-0f7e0da5e494840cd5878e34397c4ad71abaafed.tar.gz
Merge "Fix listing deleted servers with a marker" into stable/ocata
-rw-r--r--nova/objects/build_request.py12
-rw-r--r--nova/tests/functional/regressions/test_bug_1849409.py4
2 files changed, 8 insertions, 8 deletions
diff --git a/nova/objects/build_request.py b/nova/objects/build_request.py
index 0906ae9122..cf1e19a96e 100644
--- a/nova/objects/build_request.py
+++ b/nova/objects/build_request.py
@@ -324,14 +324,16 @@ class BuildRequestList(base.ObjectListBase, base.NovaObject):
@base.remotable_classmethod
def get_by_filters(cls, context, filters, limit=None, marker=None,
sort_keys=None, sort_dirs=None):
- if limit == 0:
- return cls(context, objects=[])
+ # Short-circuit on anything that will not yield results.
# 'deleted' records can not be returned from here since build_requests
# are not soft deleted.
- if filters.get('deleted', False):
- return cls(context, objects=[])
# 'cleaned' records won't exist as they would need to be deleted.
- if filters.get('cleaned', False):
+ if (limit == 0 or
+ filters.get('deleted', False) or
+ filters.get('cleaned', False)):
+ # If we have a marker honor the MarkerNotFound semantics.
+ if marker:
+ raise exception.MarkerNotFound(marker=marker)
return cls(context, objects=[])
# Because the build_requests table stores an instance as a serialized
diff --git a/nova/tests/functional/regressions/test_bug_1849409.py b/nova/tests/functional/regressions/test_bug_1849409.py
index f842770cb3..5860c55331 100644
--- a/nova/tests/functional/regressions/test_bug_1849409.py
+++ b/nova/tests/functional/regressions/test_bug_1849409.py
@@ -72,7 +72,5 @@ class ListDeletedServersWithMarker(test.TestCase,
servers = self.api.get_servers(detail=False,
search_opts={'deleted': True,
'marker': server['id']})
- # FIXME(mriedem): This is bug 1849409 where the marker param is not
- # honored correctly when using deleted=True.
server_names = [serv['name'] for serv in servers]
- self.assertIn(server['name'], server_names)
+ self.assertNotIn(server['name'], server_names)