diff --git a/ironicclient/osc/v1/baremetal_node.py b/ironicclient/osc/v1/baremetal_node.py
index e4fd32ef9..9945a0d5b 100644
--- a/ironicclient/osc/v1/baremetal_node.py
+++ b/ironicclient/osc/v1/baremetal_node.py
@@ -395,6 +395,11 @@ class ListBaremetalNode(command.Lister):
             dest='resource_class',
             metavar='<resource class>',
             help="Limit list to nodes with resource class <resource class>")
+        parser.add_argument(
+            '--chassis',
+            dest='chassis',
+            metavar='<chassis UUID>',
+            help="Limit list to nodes of this chassis")
         display_group = parser.add_mutually_exclusive_group(required=False)
         display_group.add_argument(
             '--long',
@@ -436,6 +441,8 @@ class ListBaremetalNode(command.Lister):
             params['provision_state'] = parsed_args.provision_state
         if parsed_args.resource_class:
             params['resource_class'] = parsed_args.resource_class
+        if parsed_args.chassis:
+            params['chassis'] = parsed_args.chassis
         if parsed_args.long:
             params['detail'] = parsed_args.long
             columns = res_fields.NODE_DETAILED_RESOURCE.fields
diff --git a/ironicclient/tests/unit/osc/v1/test_baremetal_node.py b/ironicclient/tests/unit/osc/v1/test_baremetal_node.py
index b25ff9310..91eb1d58c 100644
--- a/ironicclient/tests/unit/osc/v1/test_baremetal_node.py
+++ b/ironicclient/tests/unit/osc/v1/test_baremetal_node.py
@@ -552,6 +552,31 @@ class TestBaremetalList(TestBaremetal):
             **kwargs
         )
 
+    def test_baremetal_list_chassis(self):
+        chassis_uuid = 'aaaaaaaa-1111-bbbb-2222-cccccccccccc'
+        arglist = [
+            '--chassis', chassis_uuid,
+        ]
+        verifylist = [
+            ('chassis', chassis_uuid),
+        ]
+
+        parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+        # DisplayCommandBase.take_action() returns two tuples
+        self.cmd.take_action(parsed_args)
+
+        # Set expected values
+        kwargs = {
+            'marker': None,
+            'limit': None,
+            'chassis': chassis_uuid
+        }
+
+        self.baremetal_mock.node.list.assert_called_with(
+            **kwargs
+        )
+
     def test_baremetal_list_fields(self):
         arglist = [
             '--fields', 'uuid', 'name',
diff --git a/ironicclient/tests/unit/v1/test_node.py b/ironicclient/tests/unit/v1/test_node.py
index ff2b18185..8b4d4d386 100644
--- a/ironicclient/tests/unit/v1/test_node.py
+++ b/ironicclient/tests/unit/v1/test_node.py
@@ -181,6 +181,13 @@ fake_responses = {
             {"nodes": [NODE1]},
         )
     },
+    '/v1/nodes/?chassis_uuid=%s' % NODE2['chassis_uuid']:
+    {
+        'GET': (
+            {},
+            {"nodes": [NODE2]},
+        )
+    },
     '/v1/nodes/detail?instance_uuid=%s' % NODE2['instance_uuid']:
     {
         'GET': (
@@ -567,6 +574,16 @@ class NodeManagerTest(testtools.TestCase):
         self.assertThat(nodes, HasLength(1))
         self.assertEqual(NODE1['uuid'], getattr(nodes[0], 'uuid'))
 
+    def test_node_list_chassis(self):
+        ch2 = NODE2['chassis_uuid']
+        nodes = self.mgr.list(chassis=ch2)
+        expect = [
+            ('GET', '/v1/nodes/?chassis_uuid=%s' % ch2, {}, None),
+        ]
+        self.assertEqual(expect, self.api.calls)
+        self.assertThat(nodes, HasLength(1))
+        self.assertEqual(NODE2['uuid'], getattr(nodes[0], 'uuid'))
+
     def test_node_list_no_maintenance(self):
         nodes = self.mgr.list(maintenance=False)
         expect = [
diff --git a/ironicclient/v1/node.py b/ironicclient/v1/node.py
index b64202b23..9327308a5 100644
--- a/ironicclient/v1/node.py
+++ b/ironicclient/v1/node.py
@@ -49,7 +49,8 @@ class NodeManager(base.CreateManager):
 
     def list(self, associated=None, maintenance=None, marker=None, limit=None,
              detail=False, sort_key=None, sort_dir=None, fields=None,
-             provision_state=None, driver=None, resource_class=None):
+             provision_state=None, driver=None, resource_class=None,
+             chassis=None):
         """Retrieve a list of nodes.
 
         :param associated: Optional. Either a Boolean or a string
@@ -93,6 +94,9 @@ class NodeManager(base.CreateManager):
         :param resource_class: Optional. String value to get only nodes
                                with the given resource class set.
 
+        :param chassis: Optional, the UUID of a chassis. Used to get only
+                        nodes of this chassis.
+
         :returns: A list of nodes.
 
         """
@@ -115,6 +119,8 @@ class NodeManager(base.CreateManager):
             filters.append('driver=%s' % driver)
         if resource_class is not None:
             filters.append('resource_class=%s' % resource_class)
+        if chassis is not None:
+            filters.append('chassis_uuid=%s' % chassis)
 
         path = ''
         if detail:
diff --git a/releasenotes/notes/osc-node-list-chassis-091d080684cdccf8.yaml b/releasenotes/notes/osc-node-list-chassis-091d080684cdccf8.yaml
new file mode 100644
index 000000000..c929f91b9
--- /dev/null
+++ b/releasenotes/notes/osc-node-list-chassis-091d080684cdccf8.yaml
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    Adds an optional '--chassis' (chassis UUID) to the
+    "openstack baremetal node list" command. It provides the
+    ability to get a list of the nodes of the specified chassis.