Add node validate OSC command
Adds 'openstack baremetal node validate' command to the OpenStackClient plugin. Change-Id: I53c0f949f2c0f2c353c40b3333669ed64c1062c4 Partial-Bug: #1526479
This commit is contained in:
parent
9088df2518
commit
d8cd1ce54b
|
@ -1103,3 +1103,36 @@ class UnsetBaremetal(UnsetBaremetalNode):
|
|||
self.log.warning("This command is deprecated. Instead, use "
|
||||
"'openstack baremetal node unset'.")
|
||||
super(UnsetBaremetal, self).take_action(parsed_args)
|
||||
|
||||
|
||||
class ValidateBaremetalNode(command.Lister):
|
||||
"""Validate a node's driver interfaces"""
|
||||
|
||||
log = logging.getLogger(__name__ + ".ValidateBaremetalNode")
|
||||
|
||||
def get_parser(self, prog_name):
|
||||
parser = super(ValidateBaremetalNode, 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)
|
||||
|
||||
baremetal_client = self.app.client_manager.baremetal
|
||||
|
||||
interfaces = baremetal_client.node.validate(parsed_args.node)._info
|
||||
data = []
|
||||
for key, value in interfaces.items():
|
||||
interface = {'interface': key}
|
||||
interface.update(value)
|
||||
data.append(interface)
|
||||
field_labels = ['Interface', 'Result', 'Reason']
|
||||
fields = ['interface', 'result', 'reason']
|
||||
data = oscutils.sort_items(data, 'interface')
|
||||
return (field_labels,
|
||||
(oscutils.get_dict_properties(s, fields) for s in data))
|
||||
|
|
|
@ -1619,3 +1619,44 @@ class TestBaremetalUnset(TestBaremetal):
|
|||
'node_uuid',
|
||||
[{'path': '/name', 'op': 'remove'}]
|
||||
)
|
||||
|
||||
|
||||
class TestValidate(TestBaremetal):
|
||||
def setUp(self):
|
||||
super(TestValidate, self).setUp()
|
||||
|
||||
# Get the command object to test
|
||||
self.cmd = baremetal_node.ValidateBaremetalNode(self.app, None)
|
||||
|
||||
self.baremetal_mock.node.validate.return_value = (
|
||||
baremetal_fakes.FakeBaremetalResource(
|
||||
None,
|
||||
{'management': {'result': True},
|
||||
'console': {'reason': "Missing 'ipmi_terminal_port'",
|
||||
'result': False},
|
||||
'network': {'result': True},
|
||||
'power': {'result': True},
|
||||
'deploy': {'result': True},
|
||||
'inspect': {'reason': "not supported", 'result': None},
|
||||
'boot': {'result': True},
|
||||
'raid': {'result': True}},
|
||||
loaded=True,
|
||||
))
|
||||
|
||||
def test_baremetal_validate_no_arg(self):
|
||||
arglist = []
|
||||
verifylist = []
|
||||
|
||||
self.assertRaises(oscutils.ParserException,
|
||||
self.check_parser,
|
||||
self.cmd, arglist, verifylist)
|
||||
|
||||
def test_baremetal_validate(self):
|
||||
arglist = ['node_uuid']
|
||||
verifylist = [('node', 'node_uuid')]
|
||||
|
||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||
|
||||
self.cmd.take_action(parsed_args)
|
||||
|
||||
self.baremetal_mock.node.validate.assert_called_once_with('node_uuid')
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
features:
|
||||
- |
|
||||
Extends the OpenStackClient plug-in with the new command:
|
||||
|
||||
* openstack baremetal node validate
|
|
@ -64,6 +64,7 @@ openstack.baremetal.v1 =
|
|||
baremetal_node_show = ironicclient.osc.v1.baremetal_node:ShowBaremetalNode
|
||||
baremetal_node_undeploy = ironicclient.osc.v1.baremetal_node:UndeployBaremetalNode
|
||||
baremetal_node_unset = ironicclient.osc.v1.baremetal_node:UnsetBaremetalNode
|
||||
baremetal_node_validate = ironicclient.osc.v1.baremetal_node:ValidateBaremetalNode
|
||||
baremetal_port_create = ironicclient.osc.v1.baremetal_port:CreateBaremetalPort
|
||||
baremetal_port_delete = ironicclient.osc.v1.baremetal_port:DeleteBaremetalPort
|
||||
baremetal_port_list = ironicclient.osc.v1.baremetal_port:ListBaremetalPort
|
||||
|
|
Loading…
Reference in New Issue