From c2ef5eaf494401cb2e6a77c516d77fbe06bc6f08 Mon Sep 17 00:00:00 2001 From: Jay Lau Date: Tue, 21 Jan 2014 22:55:34 +0800 Subject: [PATCH] disable/enable a service has no output When disable/enable a cinder service, there is no output, this caused end user does not know if the service was disabled/enabled successfully. It is better add some output for the command just like nova to tell end user the service status. Change-Id: I9d440ab7437c268b17627e255f152db0b3bf4f53 Closes-Bug: #1261120 --- cinderclient/tests/v1/fakes.py | 4 ++-- cinderclient/tests/v1/test_services.py | 8 ++++++-- cinderclient/tests/v1/test_shell.py | 10 ++++++++++ cinderclient/tests/v2/fakes.py | 4 ++-- cinderclient/tests/v2/test_services.py | 8 ++++++-- cinderclient/tests/v2/test_shell.py | 10 ++++++++++ cinderclient/v1/services.py | 6 ++++-- cinderclient/v1/shell.py | 8 ++++++-- cinderclient/v2/services.py | 6 ++++-- cinderclient/v2/shell.py | 8 ++++++-- 10 files changed, 56 insertions(+), 16 deletions(-) diff --git a/cinderclient/tests/v1/fakes.py b/cinderclient/tests/v1/fakes.py index 1bebecb..0bd11c8 100644 --- a/cinderclient/tests/v1/fakes.py +++ b/cinderclient/tests/v1/fakes.py @@ -696,11 +696,11 @@ class FakeHTTPClient(base_client.HTTPClient): def put_os_services_enable(self, body, **kw): return (200, {}, {'host': body['host'], 'binary': body['binary'], - 'status': 'disabled'}) + 'status': 'enabled'}) def put_os_services_disable(self, body, **kw): return (200, {}, {'host': body['host'], 'binary': body['binary'], - 'status': 'enabled'}) + 'status': 'disabled'}) def get_os_availability_zone(self, **kw): return (200, {}, { diff --git a/cinderclient/tests/v1/test_services.py b/cinderclient/tests/v1/test_services.py index 7a1ec85..de89935 100644 --- a/cinderclient/tests/v1/test_services.py +++ b/cinderclient/tests/v1/test_services.py @@ -52,11 +52,15 @@ class ServicesTest(utils.TestCase): [self.assertEqual(s.binary, 'cinder-volume') for s in svs] def test_services_enable(self): - cs.services.enable('host1', 'cinder-volume') + s = cs.services.enable('host1', 'cinder-volume') values = {"host": "host1", 'binary': 'cinder-volume'} cs.assert_called('PUT', '/os-services/enable', values) + self.assertTrue(isinstance(s, services.Service)) + self.assertEqual(s.status, 'enabled') def test_services_disable(self): - cs.services.disable('host1', 'cinder-volume') + s = cs.services.disable('host1', 'cinder-volume') values = {"host": "host1", 'binary': 'cinder-volume'} cs.assert_called('PUT', '/os-services/disable', values) + self.assertTrue(isinstance(s, services.Service)) + self.assertEqual(s.status, 'disabled') diff --git a/cinderclient/tests/v1/test_shell.py b/cinderclient/tests/v1/test_shell.py index a679e4c..5899d5e 100644 --- a/cinderclient/tests/v1/test_shell.py +++ b/cinderclient/tests/v1/test_shell.py @@ -335,3 +335,13 @@ class ShellTest(utils.TestCase): self.run_command('readonly-mode-update 1234 False') expected = {'os-update_readonly_flag': {'readonly': False}} self.assert_called('POST', '/volumes/1234/action', body=expected) + + def test_service_disable(self): + self.run_command('service-disable host cinder-volume') + self.assert_called('PUT', '/os-services/disable', + {"binary": "cinder-volume", "host": "host"}) + + def test_service_disable(self): + self.run_command('service-enable host cinder-volume') + self.assert_called('PUT', '/os-services/enable', + {"binary": "cinder-volume", "host": "host"}) diff --git a/cinderclient/tests/v2/fakes.py b/cinderclient/tests/v2/fakes.py index 01b9404..784791a 100644 --- a/cinderclient/tests/v2/fakes.py +++ b/cinderclient/tests/v2/fakes.py @@ -706,11 +706,11 @@ class FakeHTTPClient(base_client.HTTPClient): def put_os_services_enable(self, body, **kw): return (200, {}, {'host': body['host'], 'binary': body['binary'], - 'status': 'disabled'}) + 'status': 'enabled'}) def put_os_services_disable(self, body, **kw): return (200, {}, {'host': body['host'], 'binary': body['binary'], - 'status': 'enabled'}) + 'status': 'disabled'}) def get_os_availability_zone(self, **kw): return (200, {}, { diff --git a/cinderclient/tests/v2/test_services.py b/cinderclient/tests/v2/test_services.py index 5ee3ea1..07a2389 100644 --- a/cinderclient/tests/v2/test_services.py +++ b/cinderclient/tests/v2/test_services.py @@ -52,11 +52,15 @@ class ServicesTest(utils.TestCase): [self.assertEqual(s.binary, 'cinder-volume') for s in svs] def test_services_enable(self): - cs.services.enable('host1', 'cinder-volume') + s = cs.services.enable('host1', 'cinder-volume') values = {"host": "host1", 'binary': 'cinder-volume'} cs.assert_called('PUT', '/os-services/enable', values) + self.assertTrue(isinstance(s, services.Service)) + self.assertEqual(s.status, 'enabled') def test_services_disable(self): - cs.services.disable('host1', 'cinder-volume') + s = cs.services.disable('host1', 'cinder-volume') values = {"host": "host1", 'binary': 'cinder-volume'} cs.assert_called('PUT', '/os-services/disable', values) + self.assertTrue(isinstance(s, services.Service)) + self.assertEqual(s.status, 'disabled') diff --git a/cinderclient/tests/v2/test_shell.py b/cinderclient/tests/v2/test_shell.py index eccfef9..b84cfac 100644 --- a/cinderclient/tests/v2/test_shell.py +++ b/cinderclient/tests/v2/test_shell.py @@ -313,3 +313,13 @@ class ShellTest(utils.TestCase): self.run_command('readonly-mode-update 1234 False') expected = {'os-update_readonly_flag': {'readonly': False}} self.assert_called('POST', '/volumes/1234/action', body=expected) + + def test_service_disable(self): + self.run_command('service-disable host cinder-volume') + self.assert_called('PUT', '/os-services/disable', + {"binary": "cinder-volume", "host": "host"}) + + def test_service_disable(self): + self.run_command('service-enable host cinder-volume') + self.assert_called('PUT', '/os-services/enable', + {"binary": "cinder-volume", "host": "host"}) diff --git a/cinderclient/v1/services.py b/cinderclient/v1/services.py index 6afd5c5..2669a5e 100644 --- a/cinderclient/v1/services.py +++ b/cinderclient/v1/services.py @@ -48,9 +48,11 @@ class ServiceManager(base.ManagerWithFind): def enable(self, host, binary): """Enable the service specified by hostname and binary.""" body = {"host": host, "binary": binary} - self._update("/os-services/enable", body) + result = self._update("/os-services/enable", body) + return self.resource_class(self, result) def disable(self, host, binary): """Enable the service specified by hostname and binary.""" body = {"host": host, "binary": binary} - self._update("/os-services/disable", body) + result = self._update("/os-services/disable", body) + return self.resource_class(self, result) diff --git a/cinderclient/v1/shell.py b/cinderclient/v1/shell.py index acefe26..f916850 100644 --- a/cinderclient/v1/shell.py +++ b/cinderclient/v1/shell.py @@ -993,7 +993,9 @@ def do_service_list(cs, args): @utils.service_type('volume') def do_service_enable(cs, args): """Enable the service.""" - cs.services.enable(args.host, args.binary) + result = cs.services.enable(args.host, args.binary) + columns = ["Host", "Binary", "Status"] + utils.print_list([result], columns) @utils.arg('host', metavar='', help='Name of host.') @@ -1001,7 +1003,9 @@ def do_service_enable(cs, args): @utils.service_type('volume') def do_service_disable(cs, args): """Disable the service.""" - cs.services.disable(args.host, args.binary) + result = cs.services.disable(args.host, args.binary) + columns = ["Host", "Binary", "Status"] + utils.print_list([result], columns) def _treeizeAvailabilityZone(zone): diff --git a/cinderclient/v2/services.py b/cinderclient/v2/services.py index 6afd5c5..2669a5e 100644 --- a/cinderclient/v2/services.py +++ b/cinderclient/v2/services.py @@ -48,9 +48,11 @@ class ServiceManager(base.ManagerWithFind): def enable(self, host, binary): """Enable the service specified by hostname and binary.""" body = {"host": host, "binary": binary} - self._update("/os-services/enable", body) + result = self._update("/os-services/enable", body) + return self.resource_class(self, result) def disable(self, host, binary): """Enable the service specified by hostname and binary.""" body = {"host": host, "binary": binary} - self._update("/os-services/disable", body) + result = self._update("/os-services/disable", body) + return self.resource_class(self, result) diff --git a/cinderclient/v2/shell.py b/cinderclient/v2/shell.py index 0182f32..a583c69 100644 --- a/cinderclient/v2/shell.py +++ b/cinderclient/v2/shell.py @@ -1087,7 +1087,9 @@ def do_service_list(cs, args): @utils.service_type('volumev2') def do_service_enable(cs, args): """Enable the service.""" - cs.services.enable(args.host, args.binary) + result = cs.services.enable(args.host, args.binary) + columns = ["Host", "Binary", "Status"] + utils.print_list([result], columns) @utils.arg('host', metavar='', help='Name of host.') @@ -1095,7 +1097,9 @@ def do_service_enable(cs, args): @utils.service_type('volumev2') def do_service_disable(cs, args): """Disable the service.""" - cs.services.disable(args.host, args.binary) + result = cs.services.disable(args.host, args.binary) + columns = ["Host", "Binary", "Status"] + utils.print_list([result], columns) def _treeizeAvailabilityZone(zone):