diff options
| author | Zenghui Shi <zshi@redhat.com> | 2018-05-18 11:53:46 +0800 |
|---|---|---|
| committer | Zenghui Shi <zshi@redhat.com> | 2018-06-12 08:51:19 +0800 |
| commit | 2fabfa41036199a3db7aac60145ae3ec082b2d06 (patch) | |
| tree | c5c302b79e2cc9515e71687f9d6aacdb039ea224 | |
| parent | 695f501fa8e72ada53fb55b49cfb5523cf6e7a96 (diff) | |
| download | python-ironicclient-2fabfa41036199a3db7aac60145ae3ec082b2d06.tar.gz | |
BIOS Settings support
This adds support for the BIOS Setting APIs in the
openstackclient plugin. Also bump the last known
API version to 1.40 to get access to new API.
Change-Id: I1b4185e53818686c895d1fe526ba3fe5540873b3
| -rwxr-xr-x | ironicclient/osc/v1/baremetal_node.py | 94 | ||||
| -rw-r--r-- | ironicclient/tests/unit/osc/v1/fakes.py | 6 | ||||
| -rw-r--r-- | ironicclient/tests/unit/osc/v1/test_baremetal_driver.py | 24 | ||||
| -rw-r--r-- | ironicclient/tests/unit/osc/v1/test_baremetal_node.py | 74 | ||||
| -rw-r--r-- | ironicclient/tests/unit/v1/test_driver.py | 2 | ||||
| -rw-r--r-- | ironicclient/tests/unit/v1/test_driver_shell.py | 24 | ||||
| -rw-r--r-- | ironicclient/tests/unit/v1/test_node_shell.py | 1 | ||||
| -rw-r--r-- | ironicclient/v1/node.py | 30 | ||||
| -rw-r--r-- | ironicclient/v1/resource_fields.py | 12 | ||||
| -rw-r--r-- | releasenotes/notes/osc-baremetal-node-bios-setting-list-b062b31d0d4de337.yaml | 19 | ||||
| -rw-r--r-- | setup.cfg | 2 |
11 files changed, 250 insertions, 38 deletions
diff --git a/ironicclient/osc/v1/baremetal_node.py b/ironicclient/osc/v1/baremetal_node.py index 244bca1..2a768d4 100755 --- a/ironicclient/osc/v1/baremetal_node.py +++ b/ironicclient/osc/v1/baremetal_node.py @@ -351,6 +351,12 @@ class CreateBaremetalNode(command.ShowOne): metavar='<name>', help=_("Unique name for the node.")) parser.add_argument( + '--bios-interface', + metavar='<bios_interface>', + help=_('BIOS interface used by the node\'s driver. This is ' + 'only applicable when the specified --driver is a ' + 'hardware type.')) + parser.add_argument( '--boot-interface', metavar='<boot_interface>', help=_('Boot interface used by the node\'s driver. This is ' @@ -427,12 +433,13 @@ class CreateBaremetalNode(command.ShowOne): field_list = ['chassis_uuid', 'driver', 'driver_info', 'properties', 'extra', 'uuid', 'name', - 'boot_interface', 'console_interface', - 'deploy_interface', 'inspect_interface', - 'management_interface', 'network_interface', - 'power_interface', 'raid_interface', - 'rescue_interface', 'storage_interface', - 'vendor_interface', 'resource_class'] + 'bios_interface', 'boot_interface', + 'console_interface', 'deploy_interface', + 'inspect_interface', 'management_interface', + 'network_interface', 'power_interface', + 'raid_interface', 'rescue_interface', + 'storage_interface', 'vendor_interface', + 'resource_class'] fields = dict((k, v) for (k, v) in vars(parsed_args).items() if k in field_list and not (v is None)) fields = utils.args_array_to_dict(fields, 'driver_info') @@ -994,6 +1001,11 @@ class SetBaremetalNode(command.Command): help=_("Set the driver for the node"), ) parser.add_argument( + '--bios-interface', + metavar='<bios_interface>', + help=_('Set the BIOS interface for the node'), + ) + parser.add_argument( '--boot-interface', metavar='<boot_interface>', help=_('Set the boot interface for the node'), @@ -1125,6 +1137,11 @@ class SetBaremetalNode(command.Command): driver = ["driver=%s" % parsed_args.driver] properties.extend(utils.args_array_to_patch( 'add', driver)) + if parsed_args.bios_interface: + bios_interface = [ + "bios_interface=%s" % parsed_args.bios_interface] + properties.extend(utils.args_array_to_patch( + 'add', bios_interface)) if parsed_args.boot_interface: boot_interface = [ "boot_interface=%s" % parsed_args.boot_interface] @@ -1341,6 +1358,12 @@ class UnsetBaremetalNode(command.Command): help=_('Unset chassis UUID on this baremetal node'), ) parser.add_argument( + "--bios-interface", + dest='bios_interface', + action='store_true', + help=_('Unset BIOS interface on this baremetal node'), + ) + parser.add_argument( "--boot-interface", dest='boot_interface', action='store_true', @@ -1448,6 +1471,9 @@ class UnsetBaremetalNode(command.Command): if parsed_args.chassis_uuid: properties.extend(utils.args_array_to_patch('remove', ['chassis_uuid'])) + if parsed_args.bios_interface: + properties.extend(utils.args_array_to_patch('remove', + ['bios_interface'])) if parsed_args.boot_interface: properties.extend(utils.args_array_to_patch('remove', ['boot_interface'])) @@ -1747,3 +1773,59 @@ class RemoveTraitBaremetalNode(command.Command): if failures: raise exc.ClientException("\n".join(failures)) + + +class ListBIOSSettingBaremetalNode(command.Lister): + """List a node's BIOS settings.""" + + log = logging.getLogger(__name__ + ".ListBIOSSettingBaremetalNode") + + def get_parser(self, prog_name): + parser = super(ListBIOSSettingBaremetalNode, self).get_parser( + prog_name) + + parser.add_argument( + 'node', + metavar='<node>', + help=_("Name or UUID of the node") + ) + return parser + + def take_action(self, parsed_args): + self.log.debug("take_action(%s)", parsed_args) + + labels = res_fields.BIOS_RESOURCE.labels + baremetal_client = self.app.client_manager.baremetal + settings = baremetal_client.node.list_bios_settings(parsed_args.node) + return (labels, [[s['name'], s['value']] for s in settings]) + + +class BIOSSettingShowBaremetalNode(command.ShowOne): + """Show a specific BIOS setting for a node.""" + + log = logging.getLogger(__name__ + ".BIOSSettingShowBaremetalNode") + + def get_parser(self, prog_name): + parser = super(BIOSSettingShowBaremetalNode, self).get_parser( + prog_name) + + parser.add_argument( + 'node', + metavar='<node>', + help=_("Name or UUID of the node") + ) + parser.add_argument( + 'setting_name', + metavar='<setting name>', + help=_("Setting name to show") + ) + return parser + + def take_action(self, parsed_args): + self.log.debug("take_action(%s)", parsed_args) + + baremetal_client = self.app.client_manager.baremetal + setting = baremetal_client.node.get_bios_setting( + parsed_args.node, parsed_args.setting_name) + setting.pop("links", None) + return self.dict2columns(setting) diff --git a/ironicclient/tests/unit/osc/v1/fakes.py b/ironicclient/tests/unit/osc/v1/fakes.py index 696ee2a..57b659b 100644 --- a/ironicclient/tests/unit/osc/v1/fakes.py +++ b/ironicclient/tests/unit/osc/v1/fakes.py @@ -64,6 +64,7 @@ BAREMETAL_PORT = { baremetal_driver_hosts = ['fake-host1', 'fake-host2'] baremetal_driver_name = 'fakedrivername' baremetal_driver_type = 'classic' +baremetal_driver_default_bios_if = 'bios' baremetal_driver_default_boot_if = 'boot' baremetal_driver_default_console_if = 'console' baremetal_driver_default_deploy_if = 'deploy' @@ -75,6 +76,7 @@ baremetal_driver_default_raid_if = 'raid' baremetal_driver_default_rescue_if = 'rescue' baremetal_driver_default_storage_if = 'storage' baremetal_driver_default_vendor_if = 'vendor' +baremetal_driver_enabled_bios_ifs = ['bios', 'bios2'] baremetal_driver_enabled_boot_ifs = ['boot', 'boot2'] baremetal_driver_enabled_console_ifs = ['console', 'console2'] baremetal_driver_enabled_deploy_ifs = ['deploy', 'deploy2'] @@ -91,6 +93,7 @@ BAREMETAL_DRIVER = { 'hosts': baremetal_driver_hosts, 'name': baremetal_driver_name, 'type': baremetal_driver_type, + 'default_bios_interface': baremetal_driver_default_bios_if, 'default_boot_interface': baremetal_driver_default_boot_if, 'default_console_interface': baremetal_driver_default_console_if, 'default_deploy_interface': baremetal_driver_default_deploy_if, @@ -102,6 +105,7 @@ BAREMETAL_DRIVER = { 'default_rescue_interface': baremetal_driver_default_rescue_if, 'default_storage_interface': baremetal_driver_default_storage_if, 'default_vendor_interface': baremetal_driver_default_vendor_if, + 'enabled_bios_interfaces': baremetal_driver_enabled_bios_ifs, 'enabled_boot_interfaces': baremetal_driver_enabled_boot_ifs, 'enabled_console_interfaces': baremetal_driver_enabled_console_ifs, 'enabled_deploy_interfaces': baremetal_driver_enabled_deploy_ifs, @@ -142,6 +146,8 @@ PORTGROUP = {'uuid': baremetal_portgroup_uuid, VIFS = {'vifs': [{'id': 'aaa-aa'}]} TRAITS = ['CUSTOM_FOO', 'CUSTOM_BAR'] +BIOS_SETTINGS = [{'name': 'bios_name_1', 'value': 'bios_value_1', 'links': []}, + {'name': 'bios_name_2', 'value': 'bios_value_2', 'links': []}] baremetal_volume_connector_uuid = 'vvv-cccccc-vvvv' baremetal_volume_connector_type = 'iqn' diff --git a/ironicclient/tests/unit/osc/v1/test_baremetal_driver.py b/ironicclient/tests/unit/osc/v1/test_baremetal_driver.py index 14bcb97..c6c935f 100644 --- a/ironicclient/tests/unit/osc/v1/test_baremetal_driver.py +++ b/ironicclient/tests/unit/osc/v1/test_baremetal_driver.py @@ -88,6 +88,7 @@ class TestListBaremetalDriver(TestBaremetalDriver): "Supported driver(s)", "Type", "Active host(s)", + 'Default BIOS Interface', 'Default Boot Interface', 'Default Console Interface', 'Default Deploy Interface', @@ -99,6 +100,7 @@ class TestListBaremetalDriver(TestBaremetalDriver): 'Default Rescue Interface', 'Default Storage Interface', 'Default Vendor Interface', + 'Enabled BIOS Interfaces', 'Enabled Boot Interfaces', 'Enabled Console Interfaces', 'Enabled Deploy Interfaces', @@ -117,6 +119,7 @@ class TestListBaremetalDriver(TestBaremetalDriver): baremetal_fakes.baremetal_driver_name, baremetal_fakes.baremetal_driver_type, ', '.join(baremetal_fakes.baremetal_driver_hosts), + baremetal_fakes.baremetal_driver_default_bios_if, baremetal_fakes.baremetal_driver_default_boot_if, baremetal_fakes.baremetal_driver_default_console_if, baremetal_fakes.baremetal_driver_default_deploy_if, @@ -128,6 +131,7 @@ class TestListBaremetalDriver(TestBaremetalDriver): baremetal_fakes.baremetal_driver_default_rescue_if, baremetal_fakes.baremetal_driver_default_storage_if, baremetal_fakes.baremetal_driver_default_vendor_if, + ', '.join(baremetal_fakes.baremetal_driver_enabled_bios_ifs), ', '.join(baremetal_fakes.baremetal_driver_enabled_boot_ifs), ', '.join(baremetal_fakes.baremetal_driver_enabled_console_ifs), ', '.join(baremetal_fakes.baremetal_driver_enabled_deploy_ifs), @@ -361,14 +365,16 @@ class TestShowBaremetalDriver(TestBaremetalDriver): self.baremetal_mock.driver.get.assert_called_with(*args) self.assertFalse(self.baremetal_mock.driver.properties.called) - collist = ('default_boot_interface', 'default_console_interface', - 'default_deploy_interface', 'default_inspect_interface', - 'default_management_interface', 'default_network_interface', - 'default_power_interface', 'default_raid_interface', - 'default_rescue_interface', 'default_storage_interface', - 'default_vendor_interface', - 'enabled_boot_interfaces', 'enabled_console_interfaces', - 'enabled_deploy_interfaces', 'enabled_inspect_interfaces', + collist = ('default_bios_interface', 'default_boot_interface', + 'default_console_interface', 'default_deploy_interface', + 'default_inspect_interface', + 'default_management_interface', + 'default_network_interface', 'default_power_interface', + 'default_raid_interface', 'default_rescue_interface', + 'default_storage_interface', 'default_vendor_interface', + 'enabled_bios_interfaces', 'enabled_boot_interfaces', + 'enabled_console_interfaces', 'enabled_deploy_interfaces', + 'enabled_inspect_interfaces', 'enabled_management_interfaces', 'enabled_network_interfaces', 'enabled_power_interfaces', 'enabled_raid_interfaces', 'enabled_rescue_interfaces', @@ -377,6 +383,7 @@ class TestShowBaremetalDriver(TestBaremetalDriver): self.assertEqual(collist, columns) datalist = ( + baremetal_fakes.baremetal_driver_default_bios_if, baremetal_fakes.baremetal_driver_default_boot_if, baremetal_fakes.baremetal_driver_default_console_if, baremetal_fakes.baremetal_driver_default_deploy_if, @@ -388,6 +395,7 @@ class TestShowBaremetalDriver(TestBaremetalDriver): baremetal_fakes.baremetal_driver_default_rescue_if, baremetal_fakes.baremetal_driver_default_storage_if, baremetal_fakes.baremetal_driver_default_vendor_if, + ', '.join(baremetal_fakes.baremetal_driver_enabled_bios_ifs), ', '.join(baremetal_fakes.baremetal_driver_enabled_boot_ifs), ', '.join(baremetal_fakes.baremetal_driver_enabled_console_ifs), ', '.join(baremetal_fakes.baremetal_driver_enabled_deploy_ifs), diff --git a/ironicclient/tests/unit/osc/v1/test_baremetal_node.py b/ironicclient/tests/unit/osc/v1/test_baremetal_node.py index 6495e58..589aa7b 100644 --- a/ironicclient/tests/unit/osc/v1/test_baremetal_node.py +++ b/ironicclient/tests/unit/osc/v1/test_baremetal_node.py @@ -385,6 +385,11 @@ class TestBaremetalCreate(TestBaremetal): [('name', 'name')], {'name': 'name'}) + def test_baremetal_create_with_bios_interface(self): + self.check_with_options(['--bios-interface', 'bios'], + [('bios_interface', 'bios')], + {'bios_interface': 'bios'}) + def test_baremetal_create_with_boot_interface(self): self.check_with_options(['--boot-interface', 'boot'], [('boot_interface', 'boot')], @@ -599,12 +604,12 @@ class TestBaremetalList(TestBaremetal): 'Target Provision State', 'Target RAID configuration', 'Traits', 'Updated At', 'Inspection Finished At', 'Inspection Started At', 'UUID', 'Name', - 'Boot Interface', 'Console Interface', - 'Deploy Interface', 'Inspect Interface', - 'Management Interface', 'Network Interface', - 'Power Interface', 'RAID Interface', - 'Rescue Interface', 'Storage Interface', - 'Vendor Interface') + 'BIOS Interface', 'Boot Interface', + 'Console Interface', 'Deploy Interface', + 'Inspect Interface', 'Management Interface', + 'Network Interface', 'Power Interface', + 'RAID Interface', 'Rescue Interface', + 'Storage Interface', 'Vendor Interface') self.assertEqual(collist, columns) datalist = (( '', @@ -648,6 +653,7 @@ class TestBaremetalList(TestBaremetal): '', '', '', + '', ), ) self.assertEqual(datalist, tuple(data)) @@ -2041,6 +2047,9 @@ class TestBaremetalSet(TestBaremetal): 'value': 'xxxxx', 'op': 'add'}] ) + def test_baremetal_set_bios_interface(self): + self._test_baremetal_set_hardware_interface('bios') + def test_baremetal_set_boot_interface(self): self._test_baremetal_set_hardware_interface('boot') @@ -2662,6 +2671,9 @@ class TestBaremetalUnset(TestBaremetal): [{'path': '/%s_interface' % interface, 'op': 'remove'}] ) + def test_baremetal_unset_bios_interface(self): + self._test_baremetal_unset_hw_interface('bios') + def test_baremetal_unset_boot_interface(self): self._test_baremetal_unset_hw_interface('boot') @@ -3025,3 +3037,53 @@ class TestRemoveTrait(TestBaremetal): self.baremetal_mock.node.remove_all_traits.assert_not_called() self.baremetal_mock.node.remove_trait.assert_not_called() + + +class TestListBIOSSetting(TestBaremetal): + def setUp(self): + super(TestListBIOSSetting, self).setUp() + + self.baremetal_mock.node.list_bios_settings.return_value = ( + baremetal_fakes.BIOS_SETTINGS) + + # Get the command object to test + self.cmd = baremetal_node.ListBIOSSettingBaremetalNode(self.app, None) + + def test_baremetal_list_bios_setting(self): + arglist = ['node_uuid'] + verifylist = [('node', 'node_uuid')] + + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + data = self.cmd.take_action(parsed_args) + + self.baremetal_mock.node.list_bios_settings.assert_called_once_with( + 'node_uuid') + expected_data = (('BIOS setting name', 'BIOS setting value'), + [[s['name'], s['value']] + for s in baremetal_fakes.BIOS_SETTINGS]) + self.assertEqual(expected_data, data) + + +class TestBIOSSettingShow(TestBaremetal): + def setUp(self): + super(TestBIOSSettingShow, self).setUp() + + self.baremetal_mock.node.get_bios_setting.return_value = ( + baremetal_fakes.BIOS_SETTINGS[0]) + + # Get the command object to test + self.cmd = baremetal_node.BIOSSettingShowBaremetalNode(self.app, None) + + def test_baremetal_bios_setting_show(self): + arglist = ['node_uuid', 'bios_name_1'] + verifylist = [('node', 'node_uuid'), ('setting_name', 'bios_name_1')] + + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + columns, data = self.cmd.take_action(parsed_args) + + self.baremetal_mock.node.get_bios_setting.assert_called_once_with( + 'node_uuid', 'bios_name_1') + expected_data = ('bios_name_1', 'bios_value_1') + self.assertEqual(expected_data, tuple(data)) diff --git a/ironicclient/tests/unit/v1/test_driver.py b/ironicclient/tests/unit/v1/test_driver.py index 388b9f7..a5996f7 100644 --- a/ironicclient/tests/unit/v1/test_driver.py +++ b/ironicclient/tests/unit/v1/test_driver.py @@ -26,6 +26,7 @@ DRIVER1 = { 'name': 'fake', 'type': 'dynamic', 'hosts': ['fake-host1', 'fake-host2'], + 'default_bios_interface': 'bios', 'default_boot_interface': 'boot', 'default_console_interface': 'console', 'default_deploy_interface': 'deploy', @@ -35,6 +36,7 @@ DRIVER1 = { 'default_power_interface': 'power', 'default_raid_interface': 'raid', 'default_vendor_interface': 'vendor', + 'enabled_bios_interfaces': ['bios', 'bios2'], 'enabled_boot_interfaces': ['boot', 'boot2'], 'enabled_console_interfaces': ['console', 'console2'], 'enabled_deploy_interfaces': ['deploy', 'deploy2'], diff --git a/ironicclient/tests/unit/v1/test_driver_shell.py b/ironicclient/tests/unit/v1/test_driver_shell.py index 67aad9b..f73239a 100644 --- a/ironicclient/tests/unit/v1/test_driver_shell.py +++ b/ironicclient/tests/unit/v1/test_driver_shell.py @@ -35,18 +35,18 @@ class DriverShellTest(utils.BaseTestCase): driver = object() d_shell._print_driver_show(driver) exp = ['hosts', 'name', 'type', - 'default_boot_interface', 'default_console_interface', - 'default_deploy_interface', 'default_inspect_interface', - 'default_management_interface', 'default_network_interface', - 'default_power_interface', 'default_raid_interface', - 'default_rescue_interface', 'default_storage_interface', - 'default_vendor_interface', - 'enabled_boot_interfaces', 'enabled_console_interfaces', - 'enabled_deploy_interfaces', 'enabled_inspect_interfaces', - 'enabled_management_interfaces', 'enabled_network_interfaces', - 'enabled_power_interfaces', 'enabled_raid_interfaces', - 'enabled_rescue_interfaces', 'enabled_storage_interfaces', - 'enabled_vendor_interfaces'] + 'default_bios_interface', 'default_boot_interface', + 'default_console_interface', 'default_deploy_interface', + 'default_inspect_interface', 'default_management_interface', + 'default_network_interface', 'default_power_interface', + 'default_raid_interface', 'default_rescue_interface', + 'default_storage_interface', 'default_vendor_interface', + 'enabled_bios_interfaces', 'enabled_boot_interfaces', + 'enabled_console_interfaces', 'enabled_deploy_interfaces', + 'enabled_inspect_interfaces', 'enabled_management_interfaces', + 'enabled_network_interfaces', 'enabled_power_interfaces', + 'enabled_raid_interfaces', 'enabled_rescue_interfaces', + 'enabled_storage_interfaces', 'enabled_vendor_interfaces'] act = actual.keys() self.assertEqual(sorted(exp), sorted(act)) diff --git a/ironicclient/tests/unit/v1/test_node_shell.py b/ironicclient/tests/unit/v1/test_node_shell.py index be00747..636b6bf 100644 --- a/ironicclient/tests/unit/v1/test_node_shell.py +++ b/ironicclient/tests/unit/v1/test_node_shell.py @@ -48,6 +48,7 @@ class NodeShellTest(utils.BaseTestCase): 'maintenance_reason', 'fault', 'name', + 'bios_interface', 'boot_interface', 'console_interface', 'deploy_interface', diff --git a/ironicclient/v1/node.py b/ironicclient/v1/node.py index a5e92d2..ef88496 100644 --- a/ironicclient/v1/node.py +++ b/ironicclient/v1/node.py @@ -47,12 +47,13 @@ class NodeManager(base.CreateManager): resource_class = Node _creation_attributes = ['chassis_uuid', 'driver', 'driver_info', 'extra', 'uuid', 'properties', 'name', - 'boot_interface', 'console_interface', - 'deploy_interface', 'inspect_interface', - 'management_interface', 'network_interface', - 'power_interface', 'raid_interface', - 'rescue_interface', 'storage_interface', - 'vendor_interface', 'resource_class'] + 'bios_interface', 'boot_interface', + 'console_interface', 'deploy_interface', + 'inspect_interface', 'management_interface', + 'network_interface', 'power_interface', + 'raid_interface', 'rescue_interface', + 'storage_interface', 'vendor_interface', + 'resource_class'] _resource_name = 'nodes' def list(self, associated=None, maintenance=None, marker=None, limit=None, @@ -611,6 +612,23 @@ class NodeManager(base.CreateManager): path = "%s/traits" % node_ident return self.delete(path) + def get_bios_setting(self, node_ident, name): + """Get a BIOS setting from a node. + + :param node_ident: node UUID or name. + :param name: BIOS setting name to get from the node. + """ + path = "%s/bios/%s" % (node_ident, name) + return self._get_as_dict(path).get(name) + + def list_bios_settings(self, node_ident): + """List all BIOS settings from a node. + + :param node_ident: node UUID or name. + """ + path = "%s/bios" % node_ident + return self._list_primitives(self._path(path), 'bios') + def wait_for_provision_state(self, node_ident, expected_state, timeout=0, poll_interval=_DEFAULT_POLL_INTERVAL, diff --git a/ironicclient/v1/resource_fields.py b/ironicclient/v1/resource_fields.py index 0b87fed..dbbbb3d 100644 --- a/ironicclient/v1/resource_fields.py +++ b/ironicclient/v1/resource_fields.py @@ -34,11 +34,14 @@ class Resource(object): 'address': 'Address', 'async': 'Async', 'attach': 'Response is attachment', + 'bios_name': 'BIOS setting name', + 'bios_value': 'BIOS setting value', 'boot_index': 'Boot Index', 'chassis_uuid': 'Chassis UUID', 'clean_step': 'Clean Step', 'console_enabled': 'Console Enabled', 'created_at': 'Created At', + 'default_bios_interface': 'Default BIOS Interface', 'default_boot_interface': 'Default Boot Interface', 'default_console_interface': 'Default Console Interface', 'default_deploy_interface': 'Default Deploy Interface', @@ -54,6 +57,7 @@ class Resource(object): 'driver': 'Driver', 'driver_info': 'Driver Info', 'driver_internal_info': 'Driver Internal Info', + 'enabled_bios_interfaces': 'Enabled BIOS Interfaces', 'enabled_boot_interfaces': 'Enabled Boot Interfaces', 'enabled_console_interfaces': 'Enabled Console Interfaces', 'enabled_deploy_interfaces': 'Enabled Deploy Interfaces', @@ -99,6 +103,7 @@ class Resource(object): 'local_link_connection': 'Local Link Connection', 'pxe_enabled': 'PXE boot enabled', 'portgroup_uuid': 'Portgroup UUID', + 'bios_interface': 'BIOS Interface', 'boot_interface': 'Boot Interface', 'console_interface': 'Console Interface', 'deploy_interface': 'Deploy Interface', @@ -222,6 +227,7 @@ NODE_DETAILED_RESOURCE = Resource( 'inspection_started_at', 'uuid', 'name', + 'bios_interface', 'boot_interface', 'console_interface', 'deploy_interface', @@ -332,11 +338,16 @@ TRAIT_RESOURCE = Resource( ['traits'], ) +BIOS_RESOURCE = Resource( + ['bios_name', 'bios_value'], +) + # Drivers DRIVER_DETAILED_RESOURCE = Resource( ['name', 'type', 'hosts', + 'default_bios_interface', 'default_boot_interface', 'default_console_interface', 'default_deploy_interface', @@ -348,6 +359,7 @@ DRIVER_DETAILED_RESOURCE = Resource( 'default_rescue_interface', 'default_storage_interface', 'default_vendor_interface', + 'enabled_bios_interfaces', 'enabled_boot_interfaces', 'enabled_console_interfaces', 'enabled_deploy_interfaces', diff --git a/releasenotes/notes/osc-baremetal-node-bios-setting-list-b062b31d0d4de337.yaml b/releasenotes/notes/osc-baremetal-node-bios-setting-list-b062b31d0d4de337.yaml new file mode 100644 index 0000000..e3949ce --- /dev/null +++ b/releasenotes/notes/osc-baremetal-node-bios-setting-list-b062b31d0d4de337.yaml @@ -0,0 +1,19 @@ +--- +features: + - | + Adds two new commands. + + * ``openstack baremetal node bios setting list <node_ident>`` + * ``openstack baremetal node bios setting show <node_ident> <setting_name>`` + + The first command returns a list of BIOS settings for a given node, + the second command returns a specified BIOS setting from the given node. + + Also adds support of bios_interface for the commands below. + + * ``openstack baremetal node create`` + * ``openstack baremetal node show`` + * ``openstack baremetal node set`` + * ``openstack baremetal node unset`` + * ``openstack baremetal driver list`` + * ``openstack baremetal driver show`` @@ -44,6 +44,8 @@ openstack.baremetal.v1 = baremetal_node_abort = ironicclient.osc.v1.baremetal_node:AbortBaremetalNode baremetal_node_add_trait = ironicclient.osc.v1.baremetal_node:AddTraitBaremetalNode baremetal_node_adopt = ironicclient.osc.v1.baremetal_node:AdoptBaremetalNode + baremetal_node_bios_setting_list = ironicclient.osc.v1.baremetal_node:ListBIOSSettingBaremetalNode + baremetal_node_bios_setting_show = ironicclient.osc.v1.baremetal_node:BIOSSettingShowBaremetalNode baremetal_node_boot_device_set = ironicclient.osc.v1.baremetal_node:BootdeviceSetBaremetalNode baremetal_node_boot_device_show = ironicclient.osc.v1.baremetal_node:BootdeviceShowBaremetalNode baremetal_node_clean = ironicclient.osc.v1.baremetal_node:CleanBaremetalNode |
