summaryrefslogtreecommitdiff
path: root/nova
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2019-12-18 13:37:27 +0000
committerGerrit Code Review <review@openstack.org>2019-12-18 13:37:28 +0000
commitfa7a9fb458b5b75ece942b70ffd007b65a23127a (patch)
tree5a1fddc82b8ceecd6debd20dca0a47d467df15d5 /nova
parent667feba8d66628e08e019bddb7ce2ddae9e3d3cc (diff)
parent133232603168e240292ca54a49cbab599e8e566a (diff)
downloadnova-fa7a9fb458b5b75ece942b70ffd007b65a23127a.tar.gz
Merge "Exclude build request marker from server listing" into stable/ocata
Diffstat (limited to 'nova')
-rw-r--r--nova/objects/build_request.py5
-rw-r--r--nova/tests/functional/db/test_build_request.py19
2 files changed, 15 insertions, 9 deletions
diff --git a/nova/objects/build_request.py b/nova/objects/build_request.py
index 566c349c12..0906ae9122 100644
--- a/nova/objects/build_request.py
+++ b/nova/objects/build_request.py
@@ -399,7 +399,10 @@ class BuildRequestList(base.ObjectListBase, base.NovaObject):
if marker:
for i, build_req in enumerate(sorted_build_reqs):
if build_req.instance.uuid == marker:
- marker_index = i
+ # The marker is the last seen item in the last page, so
+ # we increment the index to the next item immediately
+ # after the marker so the marker is not returned.
+ marker_index = i + 1
break
else:
raise exception.MarkerNotFound(marker=marker)
diff --git a/nova/tests/functional/db/test_build_request.py b/nova/tests/functional/db/test_build_request.py
index d65ab41fff..0a4198439b 100644
--- a/nova/tests/functional/db/test_build_request.py
+++ b/nova/tests/functional/db/test_build_request.py
@@ -520,11 +520,14 @@ class BuildRequestListTestCase(test.NoDBTestCase):
sort_dirs=['asc'])
self.assertIsInstance(req_list, objects.BuildRequestList)
- self.assertEqual(2, len(req_list))
- for i, req in enumerate(reqs[1:]):
- self.assertEqual(req.instance_uuid, req_list[i].instance_uuid)
- objects.base.obj_equal_prims(req.instance,
- req_list[i].instance)
+ self.assertEqual(1, len(req_list))
+ req = req_list[0]
+ expected_req = reqs[2]
+ # The returned build request should be the last one in the reqs list
+ # since the marker is the 2nd item in the list (of 3).
+ self.assertEqual(expected_req.instance_uuid, req.instance_uuid)
+ objects.base.obj_equal_prims(expected_req.instance,
+ req.instance)
def test_get_by_filters_marker_not_found(self):
self._create_req()
@@ -565,7 +568,7 @@ class BuildRequestListTestCase(test.NoDBTestCase):
self.assertIsInstance(req_list, objects.BuildRequestList)
self.assertEqual(2, len(req_list))
- for i, req in enumerate(reqs[1:3]):
+ for i, req in enumerate(reqs[2:]):
self.assertEqual(req.instance_uuid, req_list[i].instance_uuid)
objects.base.obj_equal_prims(req.instance,
req_list[i].instance)
@@ -585,8 +588,8 @@ class BuildRequestListTestCase(test.NoDBTestCase):
sort_keys=['id'], sort_dirs=['asc'])
self.assertIsInstance(req_list, objects.BuildRequestList)
- self.assertEqual(3, len(req_list))
- for i, req in enumerate(reqs[1:]):
+ self.assertEqual(2, len(req_list))
+ for i, req in enumerate(reqs[2:]):
self.assertEqual(req.instance_uuid, req_list[i].instance_uuid)
objects.base.obj_equal_prims(req.instance,
req_list[i].instance)