Support "--long" option in ListService

Add "--long" option in ListService so that compute service
disabled reason can be showed.

Change-Id: I1ace8f1c4e4efe0a1a8f6710425d73eb5db9e5e1
Closes-Bug: #1556815
This commit is contained in:
Rui Chen 2016-03-14 18:07:23 +08:00
parent 76081239d2
commit 8664a2f8ae
4 changed files with 59 additions and 10 deletions

View File

@ -31,6 +31,7 @@ List service command
os compute service list
[--host <host>]
[--service <service>]
[--long]
.. _compute-service-list:
.. describe:: --host <host>
@ -41,6 +42,10 @@ List service command
Name of service
.. describe:: --long
List additional fields in output
compute service set
-------------------

View File

@ -49,19 +49,37 @@ class ListService(command.Lister):
"--service",
metavar="<service>",
help="Name of service")
parser.add_argument(
"--long",
action="store_true",
default=False,
help="List additional fields in output"
)
return parser
def take_action(self, parsed_args):
compute_client = self.app.client_manager.compute
columns = (
"Id",
"Binary",
"Host",
"Zone",
"Status",
"State",
"Updated At"
)
if parsed_args.long:
columns = (
"Id",
"Binary",
"Host",
"Zone",
"Status",
"State",
"Updated At",
"Disabled Reason"
)
else:
columns = (
"Id",
"Binary",
"Host",
"Zone",
"Status",
"State",
"Updated At"
)
data = compute_client.services.list(parsed_args.host,
parsed_args.service)
return (columns,

View File

@ -79,10 +79,12 @@ QUOTA_data = tuple(QUOTA[x] for x in sorted(QUOTA))
service_host = 'host_test'
service_binary = 'compute_test'
service_status = 'enabled'
service_disabled_reason = 'earthquake'
SERVICE = {
'host': service_host,
'binary': service_binary,
'status': service_status,
'disabled_reason': service_disabled_reason,
}

View File

@ -85,13 +85,37 @@ class TestServiceList(TestService):
# In base command class Lister in cliff, abstract method take_action()
# returns a tuple containing the column names and an iterable
# containing the data to be listed.
self.cmd.take_action(parsed_args)
columns, data = self.cmd.take_action(parsed_args)
self.service_mock.list.assert_called_with(
compute_fakes.service_host,
compute_fakes.service_binary,
)
self.assertNotIn("Disabled Reason", columns)
self.assertNotIn(compute_fakes.service_disabled_reason, list(data)[0])
def test_service_list_with_long_option(self):
arglist = [
'--host', compute_fakes.service_host,
'--service', compute_fakes.service_binary,
'--long'
]
verifylist = [
('host', compute_fakes.service_host),
('service', compute_fakes.service_binary),
('long', True)
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
# In base command class Lister in cliff, abstract method take_action()
# returns a tuple containing the column names and an iterable
# containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args)
self.assertIn("Disabled Reason", columns)
self.assertIn(compute_fakes.service_disabled_reason, list(data)[0])
class TestServiceSet(TestService):