summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2019-09-24 15:23:58 +0000
committerGerrit Code Review <review@openstack.org>2019-09-24 15:23:58 +0000
commitef94bdb7f8c1cab055e1a3a119aab95e5b683a7a (patch)
treeac9fe7c19ab2b8812401d870d3490d2259ca1783
parent72b5fc1d2a8091b9b84624cdf2fe927bc117310b (diff)
parent89088e2aaa8329bbb98380748e5d9716734e0db6 (diff)
downloadpython-ironicclient-ef94bdb7f8c1cab055e1a3a119aab95e5b683a7a.tar.gz
Merge "Fix usage of --owner filter during node list"
-rw-r--r--ironicclient/tests/unit/v1/test_node.py19
-rw-r--r--ironicclient/v1/node.py6
-rw-r--r--releasenotes/notes/fix-owner-feature-2f3f0163ff307727.yaml9
3 files changed, 32 insertions, 2 deletions
diff --git a/ironicclient/tests/unit/v1/test_node.py b/ironicclient/tests/unit/v1/test_node.py
index dd6b936..8eae431 100644
--- a/ironicclient/tests/unit/v1/test_node.py
+++ b/ironicclient/tests/unit/v1/test_node.py
@@ -51,7 +51,8 @@ NODE2 = {'uuid': '66666666-7777-8888-9999-111111111111',
'driver_info': {'user': 'foo', 'password': 'bar'},
'properties': {'num_cpu': 4},
'resource_class': 'bar',
- 'extra': {}}
+ 'extra': {},
+ 'owner': '33333333-2222-1111-0000-111111111111'}
PORT = {'uuid': '11111111-2222-3333-4444-555555555555',
'node_uuid': '66666666-7777-8888-9999-000000000000',
'address': 'AA:AA:AA:AA:AA:AA',
@@ -187,6 +188,13 @@ fake_responses = {
{"nodes": [NODE1]},
)
},
+ '/v1/nodes/?owner=%s' % NODE2['owner']:
+ {
+ 'GET': (
+ {},
+ {"nodes": [NODE2]},
+ )
+ },
'/v1/nodes/?driver=fake':
{
'GET': (
@@ -803,6 +811,15 @@ class NodeManagerTest(testtools.TestCase):
self.assertThat(nodes, HasLength(1))
self.assertEqual(NODE1['uuid'], getattr(nodes[0], 'uuid'))
+ def test_node_list_owner(self):
+ nodes = self.mgr.list(owner=NODE2['owner'])
+ expect = [
+ ('GET', '/v1/nodes/?owner=%s' % NODE2['owner'], {}, None),
+ ]
+ self.assertEqual(expect, self.api.calls)
+ self.assertThat(nodes, HasLength(1))
+ self.assertEqual(NODE2['owner'], getattr(nodes[0], 'owner'))
+
def test_node_list_provision_state_fail(self):
self.assertRaises(KeyError, self.mgr.list,
provision_state="test")
diff --git a/ironicclient/v1/node.py b/ironicclient/v1/node.py
index d525eed..16ed688 100644
--- a/ironicclient/v1/node.py
+++ b/ironicclient/v1/node.py
@@ -60,7 +60,7 @@ class NodeManager(base.CreateManager):
detail=False, sort_key=None, sort_dir=None, fields=None,
provision_state=None, driver=None, resource_class=None,
chassis=None, fault=None, os_ironic_api_version=None,
- conductor_group=None, conductor=None):
+ conductor_group=None, conductor=None, owner=None):
"""Retrieve a list of nodes.
:param associated: Optional. Either a Boolean or a string
@@ -116,6 +116,8 @@ class NodeManager(base.CreateManager):
with the given conductor group set.
:param conductor: Optional. String value to get only nodes
mapped to the given conductor.
+ :param owner: Optional. String value to get only nodes
+ mapped to a specific owner.
:returns: A list of nodes.
@@ -147,6 +149,8 @@ class NodeManager(base.CreateManager):
filters.append('conductor_group=%s' % conductor_group)
if conductor is not None:
filters.append('conductor=%s' % conductor)
+ if owner is not None:
+ filters.append('owner=%s' % owner)
path = ''
if detail:
diff --git a/releasenotes/notes/fix-owner-feature-2f3f0163ff307727.yaml b/releasenotes/notes/fix-owner-feature-2f3f0163ff307727.yaml
new file mode 100644
index 0000000..cf8bde0
--- /dev/null
+++ b/releasenotes/notes/fix-owner-feature-2f3f0163ff307727.yaml
@@ -0,0 +1,9 @@
+---
+fixes:
+ - |
+ ``openstack baremetal node list --owner`` was returning an error
+ instead of a list of nodes for the specified owner. It has been
+ fixed.
+
+ See `story 2006563
+ <https://storyboard.openstack.org/#!/story/2006563>`__ for details.