From 0dbef6f95ad42a0f0312c5c8fa63fbaee3a158e5 Mon Sep 17 00:00:00 2001 From: Cindia-blue Date: Mon, 14 Mar 2016 10:39:55 +0800 Subject: [PATCH] Add cluster check and recover into CLI Expose check and recover for manual health management scenario Change-Id: Ib669d4e759d74f9dc7054e91d7247d50c90d41ed Implements: blueprint support-health-management-customization --- senlinclient/tests/unit/v1/test_client.py | 17 +++++++++++++++++ senlinclient/tests/unit/v1/test_shell.py | 19 +++++++++++++++++++ senlinclient/v1/client.py | 6 ++++++ senlinclient/v1/shell.py | 16 ++++++++++++++++ 4 files changed, 58 insertions(+) diff --git a/senlinclient/tests/unit/v1/test_client.py b/senlinclient/tests/unit/v1/test_client.py index 56240e39..605300a3 100644 --- a/senlinclient/tests/unit/v1/test_client.py +++ b/senlinclient/tests/unit/v1/test_client.py @@ -304,6 +304,23 @@ class ClientTest(testtools.TestCase): self.service.cluster_update_policy.assert_called_once_with( 'FOO', 'BAR', foo='bar') + def test_check_cluster(self, mock_conn): + mock_conn.return_value = self.conn + sc = client.Client() + + res = sc.check_cluster('FAKE_CLUSTER_ID') + self.assertEqual(self.service.check_cluster.return_value, res) + self.service.check_cluster.assert_called_once_with('FAKE_CLUSTER_ID') + + def test_recover_cluster(self, mock_conn): + mock_conn.return_value = self.conn + sc = client.Client() + + res = sc.recover_cluster('FAKE_CLUSTER_ID') + self.assertEqual(self.service.recover_cluster.return_value, res) + self.service.recover_cluster.assert_called_once_with( + 'FAKE_CLUSTER_ID') + def test_nodes(self, mock_conn): mock_conn.return_value = self.conn sc = client.Client() diff --git a/senlinclient/tests/unit/v1/test_shell.py b/senlinclient/tests/unit/v1/test_shell.py index ede9396c..d311f42c 100644 --- a/senlinclient/tests/unit/v1/test_shell.py +++ b/senlinclient/tests/unit/v1/test_shell.py @@ -1029,6 +1029,25 @@ class ShellTest(testtools.TestCase): service.cluster_update_policy.assert_called_once_with('C1', 'policy1', **kwargs) + def test_do_cluster_check(self): + service = mock.Mock() + args = self._make_args({'id': ['cluster1']}) + service.check_cluster = mock.Mock() + service.check_cluster.return_value = {'action': 'action_id'} + sh.do_cluster_check(service, args) + + service.check_cluster.assert_called_once_with(['cluster1']) + + def test_do_cluster_recover(self): + service = mock.Mock() + args = self._make_args({'id': ['cluster1']}) + service.recover_cluster = mock.Mock() + service.recover_cluster.return_value = {'action': 'action_id'} + + sh.do_cluster_recover(service, args) + + service.recover_cluster.assert_called_once_with(['cluster1']) + @mock.patch.object(utils, 'print_list') def test_do_node_list(self, mock_print): service = mock.Mock() diff --git a/senlinclient/v1/client.py b/senlinclient/v1/client.py index c6c6bf65..334f1d93 100644 --- a/senlinclient/v1/client.py +++ b/senlinclient/v1/client.py @@ -113,6 +113,12 @@ class Client(object): def cluster_update_policy(self, cluster, policy, **attrs): return self.service.cluster_update_policy(cluster, policy, **attrs) + def check_cluster(self, cluster, **params): + return self.service.check_cluster(cluster, **params) + + def recover_cluster(self, cluster, **params): + return self.service.recover_cluster(cluster, **params) + def nodes(self, **queries): return self.service.nodes(**queries) diff --git a/senlinclient/v1/shell.py b/senlinclient/v1/shell.py index ab9a2f27..b9cc55a8 100644 --- a/senlinclient/v1/shell.py +++ b/senlinclient/v1/shell.py @@ -776,6 +776,22 @@ def do_cluster_policy_update(service, args): print('Request accepted by action: %s' % resp['action']) +@utils.arg('id', metavar='', + help=_('ID or name of cluster to operate on.')) +def do_cluster_check(service, args): + """Check the cluster(s).""" + resp = service.check_cluster(args.id) + print('Request accepted by action: %s' % resp['action']) + + +@utils.arg('id', metavar='', + help=_('ID or name of cluster to operate on.')) +def do_cluster_recover(service, args): + """Recover the cluster(s).""" + resp = service.recover_cluster(args.id) + print('Request accepted by action: %s' % resp['action']) + + # NODES