Merge "Add node check and recover into CLI"

This commit is contained in:
Jenkins
2016-03-10 11:20:27 +00:00
committed by Gerrit Code Review
4 changed files with 99 additions and 0 deletions

View File

@@ -356,6 +356,23 @@ class ClientTest(testtools.TestCase):
self.service.delete_node.assert_called_once_with(
'FAKE_ID', True)
def test_check_node(self, mock_conn):
mock_conn.return_value = self.conn
sc = client.Client()
res = sc.check_node('FAKE_ID')
self.assertEqual(self.service.check_node.return_value, res)
self.service.check_node.assert_called_once_with('FAKE_ID')
def test_recover_node(self, mock_conn):
mock_conn.return_value = self.conn
sc = client.Client()
res = sc.recover_node('FAKE_ID')
self.assertEqual(self.service.recover_node.return_value, res)
self.service.recover_node.assert_called_once_with(
'FAKE_ID')
def test_delete_node_ignore_missing(self, mock_conn):
mock_conn.return_value = self.conn
sc = client.Client()

View File

@@ -1136,6 +1136,46 @@ class ShellTest(testtools.TestCase):
msg = _('Failed to delete some of the specified nodes.')
self.assertEqual(msg, six.text_type(ex))
def test_do_node_check(self):
service = mock.Mock()
args = self._make_args({'id': ['node1']})
service.check_node = mock.Mock()
sh.do_node_check(service, args)
service.check_node.assert_called_once_with('node1')
def test_do_node_check_not_found(self):
service = mock.Mock()
ex = exc.HTTPNotFound
service.check_node.side_effect = ex
args = self._make_args({'id': ['node1']})
ex = self.assertRaises(exc.CommandError,
sh.do_node_check, service, args)
msg = _('Failed to check some of the specified nodes.')
self.assertEqual(msg, six.text_type(ex))
def test_do_node_recover(self):
service = mock.Mock()
args = self._make_args({'id': ['node1']})
service.check_node = mock.Mock()
sh.do_node_recover(service, args)
service.recover_node.assert_called_once_with('node1')
def test_do_node_recover_not_found(self):
service = mock.Mock()
ex = exc.HTTPNotFound
service.recover_node.side_effect = ex
args = self._make_args({'id': ['node1']})
ex = self.assertRaises(exc.CommandError,
sh.do_node_recover, service, args)
msg = _('Failed to recover some of the specified nodes.')
self.assertEqual(msg, six.text_type(ex))
@mock.patch.object(sh, '_show_node')
def test_do_node_update(self, mock_show):
service = mock.Mock()

View File

@@ -128,6 +128,12 @@ class Client(object):
def delete_node(self, node, ignore_missing=True):
return self.service.delete_node(node, ignore_missing)
def check_node(self, node, **params):
return self.service.check_node(node, **params)
def recover_node(self, node, **params):
return self.service.recover_node(node, **params)
def receivers(self, **queries):
return self.service.receivers(**queries)

View File

@@ -940,6 +940,42 @@ def do_node_update(service, args):
_show_node(service, node.id)
@utils.arg('id', metavar='<NODE>', nargs='+',
help=_('ID of node(s) to check.'))
def do_node_check(service, args):
"""Check the node(s)."""
failure_count = 0
for nid in args.id:
try:
service.check_node(nid)
except exc.HTTPNotFound:
failure_count += 1
print('Node id "%s" not found' % nid)
if failure_count > 0:
msg = _('Failed to check some of the specified nodes.')
raise exc.CommandError(msg)
print('Request accepted')
@utils.arg('id', metavar='<NODE>', nargs='+',
help=_('ID of node(s) to recover.'))
def do_node_recover(service, args):
"""Recover the node(s)."""
failure_count = 0
for nid in args.id:
try:
service.recover_node(nid)
except exc.HTTPNotFound:
failure_count += 1
print('Node id "%s" not found' % nid)
if failure_count > 0:
msg = _('Failed to recover some of the specified nodes.')
raise exc.CommandError(msg)
print('Request accepted')
# RECEIVERS