Add node-validate to cli
Add the node-validate command that triggers the validation of the 'core' and 'standardized' driver interfaces of a given node. This will also be used by the ironic driver on nova to validate the node driver interfaces before deploying it. Change-Id: I93811c9bfbfe4f7b8559fc4ce566c8d4e19a54ac
This commit is contained in:
parent
f91e1b5bb9
commit
9712331aaa
ironicclient
@ -48,6 +48,10 @@ PORT = {'id': 456,
|
||||
POWER_STATE = {'current': 'power off',
|
||||
'target': 'power on'}
|
||||
|
||||
DRIVER_IFACES = {'power': True, 'deploy': True,
|
||||
'console': 'not supported',
|
||||
'rescue': 'not supported'}
|
||||
|
||||
CREATE_NODE = copy.deepcopy(NODE1)
|
||||
del CREATE_NODE['id']
|
||||
del CREATE_NODE['uuid']
|
||||
@ -125,6 +129,13 @@ fake_responses = {
|
||||
POWER_STATE,
|
||||
),
|
||||
},
|
||||
'/v1/nodes/%s/validate' % NODE1['uuid']:
|
||||
{
|
||||
'GET': (
|
||||
{},
|
||||
DRIVER_IFACES,
|
||||
),
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@ -224,3 +235,14 @@ class NodeManagerTest(testtools.TestCase):
|
||||
]
|
||||
self.assertEqual(expect, self.api.calls)
|
||||
self.assertEqual('power on', power_state.target)
|
||||
|
||||
def test_node_validate(self):
|
||||
ifaces = self.mgr.validate(NODE1['uuid'])
|
||||
expect = [
|
||||
('GET', '/v1/nodes/%s/validate' % NODE1['uuid'], {}, None),
|
||||
]
|
||||
self.assertEqual(expect, self.api.calls)
|
||||
self.assertEqual(DRIVER_IFACES['power'], ifaces.power)
|
||||
self.assertEqual(DRIVER_IFACES['deploy'], ifaces.deploy)
|
||||
self.assertEqual(DRIVER_IFACES['rescue'], ifaces.rescue)
|
||||
self.assertEqual(DRIVER_IFACES['console'], ifaces.console)
|
||||
|
@ -81,3 +81,7 @@ class NodeManager(base.Manager):
|
||||
path = "%s/state/power" % node_id
|
||||
target = {'target': "power %s" % state}
|
||||
return self._update(self._path(path), target, method='PUT')
|
||||
|
||||
def validate(self, node_uuid):
|
||||
path = "%s/validate" % node_uuid
|
||||
return self.get(path)
|
||||
|
@ -153,3 +153,14 @@ def do_node_set_power_state(cc, args):
|
||||
field_list = ['current', 'target']
|
||||
data = dict([(f, getattr(state, f, '')) for f in field_list])
|
||||
utils.print_dict(data, wrap=72)
|
||||
|
||||
|
||||
@utils.arg('node',
|
||||
metavar='<node uuid>',
|
||||
help="UUID of node")
|
||||
def do_node_validate(cc, args):
|
||||
"""Validate the node driver interfaces."""
|
||||
ifaces = cc.node.validate(args.node)
|
||||
field_list = ['power', 'deploy', 'console', 'rescue']
|
||||
data = dict([(f, getattr(ifaces, f, '')) for f in field_list])
|
||||
utils.print_dict(data, wrap=72)
|
||||
|
Loading…
x
Reference in New Issue
Block a user