Update OSC baremetal node set/unset supporting dynamic drivers
Update OSC baremetal node set and unset to support setting the hardware interfaces boot, console, deploy, inspect, management, power, raid, and vendor for a node. Change-Id: I70514b8cb5968703854e23739e0a380783df5378 Partial-Bug: #1524745
This commit is contained in:
@@ -945,11 +945,51 @@ class SetBaremetalNode(command.Command):
|
|||||||
metavar="<driver>",
|
metavar="<driver>",
|
||||||
help=_("Set the driver for the node"),
|
help=_("Set the driver for the node"),
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
'--boot-interface',
|
||||||
|
metavar='<boot_interface>',
|
||||||
|
help=_('Set the boot interface for the node'),
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
'--console-interface',
|
||||||
|
metavar='<console_interface>',
|
||||||
|
help=_('Set the console interface for the node'),
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
'--deploy-interface',
|
||||||
|
metavar='<deploy_interface>',
|
||||||
|
help=_('Set the deploy interface for the node'),
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
'--inspect-interface',
|
||||||
|
metavar='<inspect_interface>',
|
||||||
|
help=_('Set the inspect interface for the node'),
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
'--management-interface',
|
||||||
|
metavar='<management_interface>',
|
||||||
|
help=_('Set the management interface for the node'),
|
||||||
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--network-interface',
|
'--network-interface',
|
||||||
metavar='<network_interface>',
|
metavar='<network_interface>',
|
||||||
help=_('Set the network interface for the node'),
|
help=_('Set the network interface for the node'),
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
'--power-interface',
|
||||||
|
metavar='<power_interface>',
|
||||||
|
help=_('Set the power interface for the node'),
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
'--raid-interface',
|
||||||
|
metavar='<raid_interface>',
|
||||||
|
help=_('Set the RAID interface for the node'),
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
'--vendor-interface',
|
||||||
|
metavar='<vendor_interface>',
|
||||||
|
help=_('Set the vendor interface for the node'),
|
||||||
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--resource-class',
|
'--resource-class',
|
||||||
metavar='<resource_class>',
|
metavar='<resource_class>',
|
||||||
@@ -1027,11 +1067,51 @@ class SetBaremetalNode(command.Command):
|
|||||||
driver = ["driver=%s" % parsed_args.driver]
|
driver = ["driver=%s" % parsed_args.driver]
|
||||||
properties.extend(utils.args_array_to_patch(
|
properties.extend(utils.args_array_to_patch(
|
||||||
'add', driver))
|
'add', driver))
|
||||||
|
if parsed_args.boot_interface:
|
||||||
|
boot_interface = [
|
||||||
|
"boot_interface=%s" % parsed_args.boot_interface]
|
||||||
|
properties.extend(utils.args_array_to_patch(
|
||||||
|
'add', boot_interface))
|
||||||
|
if parsed_args.console_interface:
|
||||||
|
console_interface = [
|
||||||
|
"console_interface=%s" % parsed_args.console_interface]
|
||||||
|
properties.extend(utils.args_array_to_patch(
|
||||||
|
'add', console_interface))
|
||||||
|
if parsed_args.deploy_interface:
|
||||||
|
deploy_interface = [
|
||||||
|
"deploy_interface=%s" % parsed_args.deploy_interface]
|
||||||
|
properties.extend(utils.args_array_to_patch(
|
||||||
|
'add', deploy_interface))
|
||||||
|
if parsed_args.inspect_interface:
|
||||||
|
inspect_interface = [
|
||||||
|
"inspect_interface=%s" % parsed_args.inspect_interface]
|
||||||
|
properties.extend(utils.args_array_to_patch(
|
||||||
|
'add', inspect_interface))
|
||||||
|
if parsed_args.management_interface:
|
||||||
|
management_interface = [
|
||||||
|
"management_interface=%s" % parsed_args.management_interface]
|
||||||
|
properties.extend(utils.args_array_to_patch(
|
||||||
|
'add', management_interface))
|
||||||
if parsed_args.network_interface:
|
if parsed_args.network_interface:
|
||||||
network_interface = [
|
network_interface = [
|
||||||
"network_interface=%s" % parsed_args.network_interface]
|
"network_interface=%s" % parsed_args.network_interface]
|
||||||
properties.extend(utils.args_array_to_patch(
|
properties.extend(utils.args_array_to_patch(
|
||||||
'add', network_interface))
|
'add', network_interface))
|
||||||
|
if parsed_args.power_interface:
|
||||||
|
power_interface = [
|
||||||
|
"power_interface=%s" % parsed_args.power_interface]
|
||||||
|
properties.extend(utils.args_array_to_patch(
|
||||||
|
'add', power_interface))
|
||||||
|
if parsed_args.raid_interface:
|
||||||
|
raid_interface = [
|
||||||
|
"raid_interface=%s" % parsed_args.raid_interface]
|
||||||
|
properties.extend(utils.args_array_to_patch(
|
||||||
|
'add', raid_interface))
|
||||||
|
if parsed_args.vendor_interface:
|
||||||
|
vendor_interface = [
|
||||||
|
"vendor_interface=%s" % parsed_args.vendor_interface]
|
||||||
|
properties.extend(utils.args_array_to_patch(
|
||||||
|
'add', vendor_interface))
|
||||||
if parsed_args.resource_class:
|
if parsed_args.resource_class:
|
||||||
resource_class = [
|
resource_class = [
|
||||||
"resource_class=%s" % parsed_args.resource_class]
|
"resource_class=%s" % parsed_args.resource_class]
|
||||||
@@ -1208,6 +1288,60 @@ class UnsetBaremetalNode(command.Command):
|
|||||||
action='store_true',
|
action='store_true',
|
||||||
help=_('Unset chassis UUID on this baremetal node'),
|
help=_('Unset chassis UUID on this baremetal node'),
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--boot-interface",
|
||||||
|
dest='boot_interface',
|
||||||
|
action='store_true',
|
||||||
|
help=_('Unset boot interface on this baremetal node'),
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--console-interface",
|
||||||
|
dest='console_interface',
|
||||||
|
action='store_true',
|
||||||
|
help=_('Unset console interface on this baremetal node'),
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--deploy-interface",
|
||||||
|
dest='deploy_interface',
|
||||||
|
action='store_true',
|
||||||
|
help=_('Unset deploy interface on this baremetal node'),
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--inspect-interface",
|
||||||
|
dest='inspect_interface',
|
||||||
|
action='store_true',
|
||||||
|
help=_('Unset inspect interface on this baremetal node'),
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--management-interface",
|
||||||
|
dest='management_interface',
|
||||||
|
action='store_true',
|
||||||
|
help=_('Unset management interface on this baremetal node'),
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--network-interface",
|
||||||
|
dest='network_interface',
|
||||||
|
action='store_true',
|
||||||
|
help=_('Unset network interface on this baremetal node'),
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--power-interface",
|
||||||
|
dest='power_interface',
|
||||||
|
action='store_true',
|
||||||
|
help=_('Unset power interface on this baremetal node'),
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--raid-interface",
|
||||||
|
dest='raid_interface',
|
||||||
|
action='store_true',
|
||||||
|
help=_('Unset RAID interface on this baremetal node'),
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--vendor-interface",
|
||||||
|
dest='vendor_interface',
|
||||||
|
action='store_true',
|
||||||
|
help=_('Unset vendor interface on this baremetal node'),
|
||||||
|
)
|
||||||
|
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
@@ -1250,6 +1384,33 @@ class UnsetBaremetalNode(command.Command):
|
|||||||
if parsed_args.chassis_uuid:
|
if parsed_args.chassis_uuid:
|
||||||
properties.extend(utils.args_array_to_patch('remove',
|
properties.extend(utils.args_array_to_patch('remove',
|
||||||
['chassis_uuid']))
|
['chassis_uuid']))
|
||||||
|
if parsed_args.boot_interface:
|
||||||
|
properties.extend(utils.args_array_to_patch('remove',
|
||||||
|
['boot_interface']))
|
||||||
|
if parsed_args.console_interface:
|
||||||
|
properties.extend(utils.args_array_to_patch('remove',
|
||||||
|
['console_interface']))
|
||||||
|
if parsed_args.deploy_interface:
|
||||||
|
properties.extend(utils.args_array_to_patch('remove',
|
||||||
|
['deploy_interface']))
|
||||||
|
if parsed_args.inspect_interface:
|
||||||
|
properties.extend(utils.args_array_to_patch('remove',
|
||||||
|
['inspect_interface']))
|
||||||
|
if parsed_args.management_interface:
|
||||||
|
properties.extend(utils.args_array_to_patch('remove',
|
||||||
|
['management_interface']))
|
||||||
|
if parsed_args.network_interface:
|
||||||
|
properties.extend(utils.args_array_to_patch('remove',
|
||||||
|
['network_interface']))
|
||||||
|
if parsed_args.power_interface:
|
||||||
|
properties.extend(utils.args_array_to_patch('remove',
|
||||||
|
['power_interface']))
|
||||||
|
if parsed_args.raid_interface:
|
||||||
|
properties.extend(utils.args_array_to_patch('remove',
|
||||||
|
['raid_interface']))
|
||||||
|
if parsed_args.vendor_interface:
|
||||||
|
properties.extend(utils.args_array_to_patch('remove',
|
||||||
|
['vendor_interface']))
|
||||||
if properties:
|
if properties:
|
||||||
baremetal_client.node.update(parsed_args.node, properties)
|
baremetal_client.node.update(parsed_args.node, properties)
|
||||||
else:
|
else:
|
||||||
|
@@ -1801,14 +1801,14 @@ class TestBaremetalSet(TestBaremetal):
|
|||||||
[{'path': '/driver', 'value': 'xxxxx', 'op': 'add'}]
|
[{'path': '/driver', 'value': 'xxxxx', 'op': 'add'}]
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_baremetal_set_network_interface(self):
|
def _test_baremetal_set_hardware_interface(self, interface):
|
||||||
arglist = [
|
arglist = [
|
||||||
'node_uuid',
|
'node_uuid',
|
||||||
'--network-interface', 'xxxxx',
|
'--%s-interface' % interface, 'xxxxx',
|
||||||
]
|
]
|
||||||
verifylist = [
|
verifylist = [
|
||||||
('node', 'node_uuid'),
|
('node', 'node_uuid'),
|
||||||
('network_interface', 'xxxxx')
|
('%s_interface' % interface, 'xxxxx')
|
||||||
]
|
]
|
||||||
|
|
||||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
@@ -1817,9 +1817,37 @@ class TestBaremetalSet(TestBaremetal):
|
|||||||
|
|
||||||
self.baremetal_mock.node.update.assert_called_once_with(
|
self.baremetal_mock.node.update.assert_called_once_with(
|
||||||
'node_uuid',
|
'node_uuid',
|
||||||
[{'path': '/network_interface', 'value': 'xxxxx', 'op': 'add'}]
|
[{'path': '/%s_interface' % interface,
|
||||||
|
'value': 'xxxxx', 'op': 'add'}]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_baremetal_set_boot_interface(self):
|
||||||
|
self._test_baremetal_set_hardware_interface('boot')
|
||||||
|
|
||||||
|
def test_baremetal_set_console_interface(self):
|
||||||
|
self._test_baremetal_set_hardware_interface('console')
|
||||||
|
|
||||||
|
def test_baremetal_set_deploy_interface(self):
|
||||||
|
self._test_baremetal_set_hardware_interface('deploy')
|
||||||
|
|
||||||
|
def test_baremetal_set_inspect_interface(self):
|
||||||
|
self._test_baremetal_set_hardware_interface('inspect')
|
||||||
|
|
||||||
|
def test_baremetal_set_management_interface(self):
|
||||||
|
self._test_baremetal_set_hardware_interface('management')
|
||||||
|
|
||||||
|
def test_baremetal_set_network_interface(self):
|
||||||
|
self._test_baremetal_set_hardware_interface('network')
|
||||||
|
|
||||||
|
def test_baremetal_set_power_interface(self):
|
||||||
|
self._test_baremetal_set_hardware_interface('power')
|
||||||
|
|
||||||
|
def test_baremetal_set_raid_interface(self):
|
||||||
|
self._test_baremetal_set_hardware_interface('raid')
|
||||||
|
|
||||||
|
def test_baremetal_set_vendor_interface(self):
|
||||||
|
self._test_baremetal_set_hardware_interface('vendor')
|
||||||
|
|
||||||
def test_baremetal_set_resource_class(self):
|
def test_baremetal_set_resource_class(self):
|
||||||
arglist = [
|
arglist = [
|
||||||
'node_uuid',
|
'node_uuid',
|
||||||
@@ -2377,6 +2405,52 @@ class TestBaremetalUnset(TestBaremetal):
|
|||||||
[{'path': '/chassis_uuid', 'op': 'remove'}]
|
[{'path': '/chassis_uuid', 'op': 'remove'}]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def _test_baremetal_unset_hw_interface(self, interface):
|
||||||
|
arglist = [
|
||||||
|
'node_uuid',
|
||||||
|
'--%s-interface' % interface,
|
||||||
|
]
|
||||||
|
verifylist = [
|
||||||
|
('node', 'node_uuid'),
|
||||||
|
('%s_interface' % interface, True)
|
||||||
|
]
|
||||||
|
|
||||||
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
|
||||||
|
self.cmd.take_action(parsed_args)
|
||||||
|
|
||||||
|
self.baremetal_mock.node.update.assert_called_once_with(
|
||||||
|
'node_uuid',
|
||||||
|
[{'path': '/%s_interface' % interface, 'op': 'remove'}]
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_baremetal_unset_boot_interface(self):
|
||||||
|
self._test_baremetal_unset_hw_interface('boot')
|
||||||
|
|
||||||
|
def test_baremetal_unset_console_interface(self):
|
||||||
|
self._test_baremetal_unset_hw_interface('console')
|
||||||
|
|
||||||
|
def test_baremetal_unset_deploy_interface(self):
|
||||||
|
self._test_baremetal_unset_hw_interface('deploy')
|
||||||
|
|
||||||
|
def test_baremetal_unset_inspect_interface(self):
|
||||||
|
self._test_baremetal_unset_hw_interface('inspect')
|
||||||
|
|
||||||
|
def test_baremetal_unset_management_interface(self):
|
||||||
|
self._test_baremetal_unset_hw_interface('management')
|
||||||
|
|
||||||
|
def test_baremetal_unset_network_interface(self):
|
||||||
|
self._test_baremetal_unset_hw_interface('network')
|
||||||
|
|
||||||
|
def test_baremetal_unset_power_interface(self):
|
||||||
|
self._test_baremetal_unset_hw_interface('power')
|
||||||
|
|
||||||
|
def test_baremetal_unset_raid_interface(self):
|
||||||
|
self._test_baremetal_unset_hw_interface('raid')
|
||||||
|
|
||||||
|
def test_baremetal_unset_vendor_interface(self):
|
||||||
|
self._test_baremetal_unset_hw_interface('vendor')
|
||||||
|
|
||||||
|
|
||||||
class TestValidate(TestBaremetal):
|
class TestValidate(TestBaremetal):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- Adds new arguments to the OSC baremetal-node-set to allow setting
|
||||||
|
boot, console, deploy, inspect, management, power, raid, and vendor
|
||||||
|
hardware interfaces. They are available starting with ironic API
|
||||||
|
microversion 1.30.
|
Reference in New Issue
Block a user