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
doc/source/command-objects
openstackclient
compute/v2
tests/compute/v2

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

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

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

@ -85,13 +85,37 @@ class TestServiceList(TestService):
# In base command class Lister in cliff, abstract method take_action() # In base command class Lister in cliff, abstract method take_action()
# returns a tuple containing the column names and an iterable # returns a tuple containing the column names and an iterable
# containing the data to be listed. # 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( self.service_mock.list.assert_called_with(
compute_fakes.service_host, compute_fakes.service_host,
compute_fakes.service_binary, 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): class TestServiceSet(TestService):