summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArne Wiebalck <Arne.Wiebalck@cern.ch>2022-01-11 12:37:41 +0100
committerArne Wiebalck <Arne.Wiebalck@cern.ch>2022-01-18 12:41:33 +0100
commitaaa1afbefcffdacca64cd619a3bcb796fa49c319 (patch)
tree9b7250ca1cd83a6007821b02a32c254dadbdfa14
parent4b317360dfb6ec942307d23cc57df327440ae9e4 (diff)
downloadironic-aaa1afbefcffdacca64cd619a3bcb796fa49c319.tar.gz
Set resource_url when getting all nodes
Since the default value resource_url is None, make sure the parameter is set to 'nodes' when getting all nodes. Change-Id: I6cc52eb56c7888a433d24aa79154143d6f35cf83 (cherry picked from commit 69227c66c25d49beab3210bdf08f53cbde78d87f)
-rw-r--r--ironic/api/controllers/v1/node.py2
-rw-r--r--ironic/tests/unit/api/controllers/v1/test_node.py8
-rw-r--r--releasenotes/notes/fix_pagination_resource_url-42fb4023fde9da2b.yaml5
3 files changed, 15 insertions, 0 deletions
diff --git a/ironic/api/controllers/v1/node.py b/ironic/api/controllers/v1/node.py
index 8a53c4fbb..39ebe968d 100644
--- a/ironic/api/controllers/v1/node.py
+++ b/ironic/api/controllers/v1/node.py
@@ -2078,6 +2078,7 @@ class NodesController(rest.RestController):
fields = api_utils.get_request_return_fields(fields, detail,
_DEFAULT_RETURN_FIELDS)
+ resource_url = 'nodes'
extra_args = {'description_contains': description_contains}
return self._get_nodes_collection(chassis_uuid, instance_uuid,
associated, maintenance, retired,
@@ -2085,6 +2086,7 @@ class NodesController(rest.RestController):
limit, sort_key, sort_dir,
driver=driver,
resource_class=resource_class,
+ resource_url=resource_url,
fields=fields, fault=fault,
conductor_group=conductor_group,
detail=detail,
diff --git a/ironic/tests/unit/api/controllers/v1/test_node.py b/ironic/tests/unit/api/controllers/v1/test_node.py
index 0ae598026..cf15f94be 100644
--- a/ironic/tests/unit/api/controllers/v1/test_node.py
+++ b/ironic/tests/unit/api/controllers/v1/test_node.py
@@ -1346,6 +1346,7 @@ class TestListNodes(test_api_base.BaseApiTest):
next_marker = data['nodes'][-1]['uuid']
self.assertIn(next_marker, data['next'])
+ self.assertIn('nodes', data['next'])
def test_collection_links_default_limit(self):
cfg.CONF.set_override('max_limit', 3, 'api')
@@ -1359,6 +1360,7 @@ class TestListNodes(test_api_base.BaseApiTest):
next_marker = data['nodes'][-1]['uuid']
self.assertIn(next_marker, data['next'])
+ self.assertIn('nodes', data['next'])
def test_collection_links_custom_fields(self):
fields = 'driver_info,uuid'
@@ -1378,6 +1380,7 @@ class TestListNodes(test_api_base.BaseApiTest):
next_marker = data['nodes'][-1]['uuid']
self.assertIn(next_marker, data['next'])
self.assertIn('fields', data['next'])
+ self.assertIn('nodes', data['next'])
def test_get_collection_pagination_no_uuid(self):
fields = 'name'
@@ -1395,6 +1398,7 @@ class TestListNodes(test_api_base.BaseApiTest):
self.assertEqual(limit, len(data['nodes']))
self.assertIn('marker=%s' % nodes[limit - 1].uuid, data['next'])
+ self.assertIn('nodes', data['next'])
def test_collection_links_instance_uuid_param(self):
cfg.CONF.set_override('max_limit', 1, 'api')
@@ -1612,6 +1616,7 @@ class TestListNodes(test_api_base.BaseApiTest):
headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(1, len(data['connectors']))
self.assertIn('next', data)
+ self.assertIn('volume/connectors', data['next'])
def test_volume_connectors_subresource_noid(self):
node = obj_utils.create_test_node(self.context)
@@ -1651,6 +1656,7 @@ class TestListNodes(test_api_base.BaseApiTest):
headers={api_base.Version.string: str(api_v1.max_version())})
self.assertEqual(1, len(data['targets']))
self.assertIn('next', data)
+ self.assertIn('volume/target', data['next'])
def test_volume_targets_subresource_noid(self):
node = obj_utils.create_test_node(self.context)
@@ -1855,6 +1861,7 @@ class TestListNodes(test_api_base.BaseApiTest):
data = self.get_json('/nodes/?limit=3&associated=True')
self.assertThat(data['nodes'], matchers.HasLength(3))
self.assertIn('associated=True', data['next'])
+ self.assertIn('nodes', data['next'])
def test_detail_with_association_filter(self):
associated_nodes = (self
@@ -1869,6 +1876,7 @@ class TestListNodes(test_api_base.BaseApiTest):
self.assertThat(data['nodes'], matchers.HasLength(3))
self.assertIn('driver', data['nodes'][0])
self.assertIn('associated=True', data['next'])
+ self.assertIn('nodes', data['next'])
def test_detail_with_instance_uuid(self):
node = obj_utils.create_test_node(
diff --git a/releasenotes/notes/fix_pagination_resource_url-42fb4023fde9da2b.yaml b/releasenotes/notes/fix_pagination_resource_url-42fb4023fde9da2b.yaml
new file mode 100644
index 000000000..eb255a105
--- /dev/null
+++ b/releasenotes/notes/fix_pagination_resource_url-42fb4023fde9da2b.yaml
@@ -0,0 +1,5 @@
+---
+fixes:
+ - |
+ Fixes an issue where clients would get a 404 due to the node pagination
+ breaking at max_limit due to an uninitialised resource_url.