summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2022-01-20 20:22:00 +0000
committerGerrit Code Review <review@openstack.org>2022-01-20 20:22:00 +0000
commit610bee7610aed76efe5bb2ea5eb645beaf1128e7 (patch)
treecab42bb56b650626cabf195114af15faf15d72ae
parent685a41bb8e6af4f4c0fa01fad74060f9084936ec (diff)
parent40db1089f78b7dbbad81318e5873fa6405d8edff (diff)
downloadironic-610bee7610aed76efe5bb2ea5eb645beaf1128e7.tar.gz
Merge "Set resource_url when getting all ports or portgroups" into stable/wallaby
-rw-r--r--ironic/api/controllers/v1/port.py6
-rw-r--r--ironic/api/controllers/v1/portgroup.py2
-rw-r--r--ironic/tests/unit/api/controllers/v1/test_node.py2
-rw-r--r--releasenotes/notes/fix_pagination_resource_url_ports-8d2696a6a7ab012f.yaml6
4 files changed, 14 insertions, 2 deletions
diff --git a/ironic/api/controllers/v1/port.py b/ironic/api/controllers/v1/port.py
index eacbdf5db..0658fbf3f 100644
--- a/ironic/api/controllers/v1/port.py
+++ b/ironic/api/controllers/v1/port.py
@@ -407,10 +407,12 @@ class PortsController(rest.RestController):
and not uuidutils.is_uuid_like(node)):
raise exception.NotAcceptable()
+ resource_url = 'ports'
return self._get_ports_collection(node_uuid or node, address,
portgroup, marker, limit, sort_key,
- sort_dir, fields=fields,
- detail=detail, project=project)
+ sort_dir, resource_url=resource_url,
+ fields=fields, detail=detail,
+ project=project)
@METRICS.timer('PortsController.detail')
@method.expose()
diff --git a/ironic/api/controllers/v1/portgroup.py b/ironic/api/controllers/v1/portgroup.py
index 9a2c2dc05..7900c4683 100644
--- a/ironic/api/controllers/v1/portgroup.py
+++ b/ironic/api/controllers/v1/portgroup.py
@@ -283,10 +283,12 @@ class PortgroupsController(pecan.rest.RestController):
fields = api_utils.get_request_return_fields(fields, detail,
_DEFAULT_RETURN_FIELDS)
+ resource_url = 'portgroups'
return self._get_portgroups_collection(node, address,
marker, limit,
sort_key, sort_dir,
fields=fields,
+ resource_url=resource_url,
detail=detail,
project=project)
diff --git a/ironic/tests/unit/api/controllers/v1/test_node.py b/ironic/tests/unit/api/controllers/v1/test_node.py
index f80225224..b1ed07122 100644
--- a/ironic/tests/unit/api/controllers/v1/test_node.py
+++ b/ironic/tests/unit/api/controllers/v1/test_node.py
@@ -1443,6 +1443,7 @@ class TestListNodes(test_api_base.BaseApiTest):
headers=headers)
self.assertEqual(1, len(data['portgroups']))
self.assertIn('next', data)
+ self.assertIn('portgroups', data['next'])
def test_portgroups_subresource_link(self):
node = obj_utils.create_test_node(self.context)
@@ -1481,6 +1482,7 @@ class TestListNodes(test_api_base.BaseApiTest):
data = self.get_json('/nodes/%s/ports?limit=1' % node.uuid)
self.assertEqual(1, len(data['ports']))
self.assertIn('next', data)
+ self.assertIn('ports', data['next'])
def test_ports_subresource_noid(self):
node = obj_utils.create_test_node(self.context)
diff --git a/releasenotes/notes/fix_pagination_resource_url_ports-8d2696a6a7ab012f.yaml b/releasenotes/notes/fix_pagination_resource_url_ports-8d2696a6a7ab012f.yaml
new file mode 100644
index 000000000..fc70d53c8
--- /dev/null
+++ b/releasenotes/notes/fix_pagination_resource_url_ports-8d2696a6a7ab012f.yaml
@@ -0,0 +1,6 @@
+---
+fixes:
+ - |
+ Fixes an issue where clients would get a 404 due to the port and
+ portgroups pagination breaking at max_limit due to an uninitialised
+ resource_url.