diff --git a/rdomanager_oscplugin/tests/v1/baremetal/test_baremetal.py b/rdomanager_oscplugin/tests/v1/baremetal/test_baremetal.py index b8017e8d8..9c13c1284 100644 --- a/rdomanager_oscplugin/tests/v1/baremetal/test_baremetal.py +++ b/rdomanager_oscplugin/tests/v1/baremetal/test_baremetal.py @@ -1003,3 +1003,33 @@ class TestConfigureBaremetalBoot(fakes.TestBaremetal): 'path': '/driver_info/deploy_kernel' }]), ]) + + +class TestShowNodeCapabilities(fakes.TestBaremetal): + + def setUp(self): + super(TestShowNodeCapabilities, self).setUp() + + # Get the command object to test + self.cmd = baremetal.ShowNodeCapabilities(self.app, None) + + def test_success(self): + + bm_client = self.app.client_manager.rdomanager_oscplugin.baremetal() + + bm_client.node.list.return_value = [ + mock.Mock(uuid='UUID1'), + mock.Mock(uuid='UUID2'), + ] + + bm_client.node.get.return_value = mock.Mock( + properties={'capabilities': 'boot_option:local'}) + + arglist = [] + parsed_args = self.check_parser(self.cmd, arglist, []) + result = self.cmd.take_action(parsed_args) + + self.assertEqual(( + ('Node UUID', 'Node Capabilities'), + [('UUID1', 'boot_option:local'), ('UUID2', 'boot_option:local')] + ), result) diff --git a/rdomanager_oscplugin/v1/baremetal.py b/rdomanager_oscplugin/v1/baremetal.py index 26c856714..3202fc61c 100644 --- a/rdomanager_oscplugin/v1/baremetal.py +++ b/rdomanager_oscplugin/v1/baremetal.py @@ -531,3 +531,18 @@ class ConfigureBaremetalBoot(command.Command): 'value': kernel_id, }, ]) + + +class ShowNodeCapabilities(lister.Lister): + """List the capabilities for all Nodes""" + + log = logging.getLogger(__name__ + ".ShowNodeProfile") + + def take_action(self, parsed_args): + bm_client = self.app.client_manager.rdomanager_oscplugin.baremetal() + rows = [] + for node in bm_client.node.list(): + node_detail = bm_client.node.get(node.uuid) + capabilities = node_detail.properties.get('capabilities') + rows.append((node.uuid, capabilities)) + return (("Node UUID", "Node Capabilities"), rows, ) diff --git a/setup.cfg b/setup.cfg index a92984e94..a6dfc7db0 100644 --- a/setup.cfg +++ b/setup.cfg @@ -59,6 +59,7 @@ openstack.rdomanager_oscplugin.v1 = baremetal_instackenv_validate = rdomanager_oscplugin.v1.baremetal:ValidateInstackEnv baremetal_import = rdomanager_oscplugin.v1.baremetal:ImportBaremetal baremetal_introspection_bulk_start = rdomanager_oscplugin.v1.baremetal:StartBaremetalIntrospectionBulk + baremetal_show_capabilities = rdomanager_oscplugin.v1.baremetal:ShowNodeCapabilities baremetal_introspection_bulk_status = rdomanager_oscplugin.v1.baremetal:StatusBaremetalIntrospectionBulk baremetal_configure_ready_state = rdomanager_oscplugin.v1.baremetal:ConfigureReadyState baremetal_configure_boot = rdomanager_oscplugin.v1.baremetal:ConfigureBaremetalBoot