From f87d59b3f390e1709f5d62c9f36a0817e3dcbf1c Mon Sep 17 00:00:00 2001 From: Steve Noyes Date: Thu, 14 Jun 2018 10:01:02 -0400 Subject: [PATCH] Sort the children in the output of service list Currently when you do a "service list" the services are correctly sorted, but the children are not. This sorts the children. Change-Id: If951a7ef762c3fd7fac376e1b5b080808e1236bc --- kolla_cli/commands/service.py | 3 ++- kolla_cli/tests/unit/test_service_cmd.py | 25 +++++++++++++++++------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/kolla_cli/commands/service.py b/kolla_cli/commands/service.py index 7719c38..6dcfaa3 100644 --- a/kolla_cli/commands/service.py +++ b/kolla_cli/commands/service.py @@ -111,7 +111,8 @@ class ServiceList(Lister): if services: data = [] for service in services: - data.append((service.name, service.get_children())) + data.append((service.name, + sorted(service.get_children()))) data = convert_lists_to_string(data, parsed_args) return ((u._('Service'), u._('Children')), sorted(data)) diff --git a/kolla_cli/tests/unit/test_service_cmd.py b/kolla_cli/tests/unit/test_service_cmd.py index 773daf3..d6b68e0 100644 --- a/kolla_cli/tests/unit/test_service_cmd.py +++ b/kolla_cli/tests/unit/test_service_cmd.py @@ -18,20 +18,31 @@ from kolla_cli.tests.unit.common import KollaCliUnitTest class TestUnit(KollaCliUnitTest): + @mock.patch('cliff.lister.Lister.produce_output') @mock.patch('kolla_cli.api.client.ClientApi.service_get_all') @mock.patch('kolla_cli.shell.KollaCli._is_inventory_present', return_value=True) - def test_service_list(self, _, mock_service_get_all): - # list all services - servicename = 'service1' - childname = 'child1' - fake_service = self.get_fake_service(servicename, - childnames=[childname]) - mock_service_get_all.return_value = [fake_service] + def test_service_list(self, _, mock_service_get_all, mock_cliff): + # list all services, check that output is sorted properly + servicename1 = 'service1' + servicename2 = 'service2' + childnames = ['child2', 'child1'] + fake_service1 = self.get_fake_service(servicename1, + childnames=childnames) + fake_service2 = self.get_fake_service(servicename2, + childnames=childnames) + mock_service_get_all.return_value = [fake_service2, fake_service1] ret = self.run_cli_command('service list') self.assertEqual(ret, 0) mock_service_get_all.assert_called_once_with() + expected_childnames = '[child1,child2]' + mock_cliff.assert_called_once_with( + mock.ANY, ('Service', 'Children'), + [(servicename1, expected_childnames), + (servicename2, expected_childnames) + ]) + @mock.patch('kolla_cli.api.client.ClientApi.service_get_all') @mock.patch('kolla_cli.shell.KollaCli._is_inventory_present', return_value=True)