summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGaƫtan Trellu <gaetan.trellu@incloudus.com>2019-09-17 10:42:15 -0400
committerKaifeng Wang <kaifeng.w@gmail.com>2019-09-25 09:01:39 +0000
commit4ed5966931a7ad11a73b762addf9df563b1b7664 (patch)
tree28a52f2876276a030e84e8388cddd9bdd327ec62
parent266a700534cbd166c800999dd92556cb431d2055 (diff)
downloadpython-ironicclient-4ed5966931a7ad11a73b762addf9df563b1b7664.tar.gz
Fix usage of --owner filter during node list
When using --owner filter during node list, the CLI returns this error: list() got an unexpected keyword argument 'owner' Change-Id: Id751336d8d8cb99e62e465e17114e610f619c520 Story: 2006563 Task: 36660 (cherry picked from commit 89088e2aaa8329bbb98380748e5d9716734e0db6)
-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 baba5ea..30bc9d3 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': (
@@ -773,6 +781,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.