Add --node to 'openstack baremetal port list'
This adds an optional '--node' (name or UUID of a node) to the 'openstack baremetal port list' command. It provides the ability to get a list of ports of a specified node. The existing release note covers this: releasenotes/notes/osc-plugin-7769f5bef627654c.yaml. Change-Id: Ic7064dafe061c9f751ffe0da99ede609c46c9255 Partial-Bug: #1526479
This commit is contained in:
@@ -292,6 +292,12 @@ class ListBaremetalPort(command.Lister):
|
|||||||
metavar='<mac-address>',
|
metavar='<mac-address>',
|
||||||
help="Only show information for the port with this MAC address."
|
help="Only show information for the port with this MAC address."
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
'--node',
|
||||||
|
dest='node',
|
||||||
|
metavar='<node>',
|
||||||
|
help="Only list ports of this node (name or UUID)."
|
||||||
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--limit',
|
'--limit',
|
||||||
metavar='<limit>',
|
metavar='<limit>',
|
||||||
@@ -351,6 +357,8 @@ class ListBaremetalPort(command.Lister):
|
|||||||
|
|
||||||
if parsed_args.address is not None:
|
if parsed_args.address is not None:
|
||||||
params['address'] = parsed_args.address
|
params['address'] = parsed_args.address
|
||||||
|
if parsed_args.node is not None:
|
||||||
|
params['node'] = parsed_args.node
|
||||||
|
|
||||||
if parsed_args.detail:
|
if parsed_args.detail:
|
||||||
params['detail'] = parsed_args.detail
|
params['detail'] = parsed_args.detail
|
||||||
|
@@ -407,6 +407,20 @@ class TestBaremetalPortList(TestBaremetalPort):
|
|||||||
}
|
}
|
||||||
self.baremetal_mock.port.list.assert_called_with(**kwargs)
|
self.baremetal_mock.port.list.assert_called_with(**kwargs)
|
||||||
|
|
||||||
|
def test_baremetal_port_list_node(self):
|
||||||
|
arglist = ['--node', baremetal_fakes.baremetal_uuid]
|
||||||
|
verifylist = [('node', baremetal_fakes.baremetal_uuid)]
|
||||||
|
|
||||||
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
columns, data = self.cmd.take_action(parsed_args)
|
||||||
|
|
||||||
|
kwargs = {
|
||||||
|
'node': baremetal_fakes.baremetal_uuid,
|
||||||
|
'marker': None,
|
||||||
|
'limit': None,
|
||||||
|
}
|
||||||
|
self.baremetal_mock.port.list.assert_called_with(**kwargs)
|
||||||
|
|
||||||
def test_baremetal_port_list_long(self):
|
def test_baremetal_port_list_long(self):
|
||||||
arglist = ['--long']
|
arglist = ['--long']
|
||||||
verifylist = [('detail', True)]
|
verifylist = [('detail', True)]
|
||||||
|
@@ -110,7 +110,14 @@ fake_responses = {
|
|||||||
{},
|
{},
|
||||||
{"ports": [PORT]},
|
{"ports": [PORT]},
|
||||||
),
|
),
|
||||||
}
|
},
|
||||||
|
'/v1/ports/?node=%s' % PORT['node_uuid']:
|
||||||
|
{
|
||||||
|
'GET': (
|
||||||
|
{},
|
||||||
|
{"ports": [PORT]},
|
||||||
|
),
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
fake_responses_pagination = {
|
fake_responses_pagination = {
|
||||||
@@ -187,6 +194,14 @@ class PortManagerTest(testtools.TestCase):
|
|||||||
self.assertEqual(expect, self.api.calls)
|
self.assertEqual(expect, self.api.calls)
|
||||||
self.assertEqual(1, len(ports))
|
self.assertEqual(1, len(ports))
|
||||||
|
|
||||||
|
def test_ports_list_by_node(self):
|
||||||
|
ports = self.mgr.list(node=PORT['node_uuid'])
|
||||||
|
expect = [
|
||||||
|
('GET', '/v1/ports/?node=%s' % PORT['node_uuid'], {}, None),
|
||||||
|
]
|
||||||
|
self.assertEqual(expect, self.api.calls)
|
||||||
|
self.assertEqual(1, len(ports))
|
||||||
|
|
||||||
def test_ports_list_detail(self):
|
def test_ports_list_detail(self):
|
||||||
ports = self.mgr.list(detail=True)
|
ports = self.mgr.list(detail=True)
|
||||||
expect = [
|
expect = [
|
||||||
|
@@ -32,8 +32,8 @@ class PortManager(base.CreateManager):
|
|||||||
_resource_name = 'ports'
|
_resource_name = 'ports'
|
||||||
|
|
||||||
def list(self, address=None, limit=None, marker=None, sort_key=None,
|
def list(self, address=None, limit=None, marker=None, sort_key=None,
|
||||||
sort_dir=None, detail=False, fields=None):
|
sort_dir=None, detail=False, fields=None, node=None):
|
||||||
"""Retrieve a list of port.
|
"""Retrieve a list of ports.
|
||||||
|
|
||||||
:param address: Optional, MAC address of a port, to get
|
:param address: Optional, MAC address of a port, to get
|
||||||
the port which has this MAC address
|
the port which has this MAC address
|
||||||
@@ -61,6 +61,9 @@ class PortManager(base.CreateManager):
|
|||||||
of the resource to be returned. Can not be used
|
of the resource to be returned. Can not be used
|
||||||
when 'detail' is set.
|
when 'detail' is set.
|
||||||
|
|
||||||
|
:param node: Optional, name or UUID of a node. Used to get
|
||||||
|
ports of this node.
|
||||||
|
|
||||||
:returns: A list of ports.
|
:returns: A list of ports.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@@ -75,6 +78,8 @@ class PortManager(base.CreateManager):
|
|||||||
fields)
|
fields)
|
||||||
if address is not None:
|
if address is not None:
|
||||||
filters.append('address=%s' % address)
|
filters.append('address=%s' % address)
|
||||||
|
if node is not None:
|
||||||
|
filters.append('node=%s' % node)
|
||||||
|
|
||||||
path = ''
|
path = ''
|
||||||
if detail:
|
if detail:
|
||||||
|
Reference in New Issue
Block a user