From 060057c5840949abcb5eea3b2b424bf4e5c8df5a Mon Sep 17 00:00:00 2001 From: Yong Sheng Gong Date: Sun, 12 Aug 2012 09:33:40 +0800 Subject: [PATCH] deal with -c option when the list result is empty. bug #1033123 Change-Id: Idd10e9ae8fd57e6173ef7f92411176834efebff5 --- quantum_test.sh | 2 ++ quantumclient/quantum/v2_0/__init__.py | 2 ++ .../tests/unit/test_cli20_network.py | 30 +++++++++++++++++++ 3 files changed, 34 insertions(+) diff --git a/quantum_test.sh b/quantum_test.sh index 590d22690..1a4cef974 100755 --- a/quantum_test.sh +++ b/quantum_test.sh @@ -25,6 +25,8 @@ quantum net-show $network_id || die "fail to show network $network_id" quantum net-update $network --admin_state_up False || die "fail to update network $network" quantum net-update $network_id --admin_state_up True || die "fail to update network $network_id" +quantum net-list -c id -- --id fakeid || die "fail to list networks with column selection on empty list" + # test the CRUD of subnet subnet=mysubnet1 cidr=10.0.1.3/24 diff --git a/quantumclient/quantum/v2_0/__init__.py b/quantumclient/quantum/v2_0/__init__.py index 5de594bf2..78c53395d 100644 --- a/quantumclient/quantum/v2_0/__init__.py +++ b/quantumclient/quantum/v2_0/__init__.py @@ -362,6 +362,8 @@ class ListCommand(QuantumCommand, lister.Lister): if collection in data: info = data[collection] _columns = len(info) > 0 and sorted(info[0].keys()) or [] + if not _columns: + parsed_args.columns = [] return (_columns, (utils.get_item_properties( s, _columns, formatters=self._formatters, ) for s in info), ) diff --git a/quantumclient/tests/unit/test_cli20_network.py b/quantumclient/tests/unit/test_cli20_network.py index 16837b349..de627ded2 100644 --- a/quantumclient/tests/unit/test_cli20_network.py +++ b/quantumclient/tests/unit/test_cli20_network.py @@ -18,6 +18,7 @@ import sys from quantumclient.common import exceptions +from quantumclient.tests.unit import test_cli20 from quantumclient.tests.unit.test_cli20 import CLITestV20Base from quantumclient.tests.unit.test_cli20 import MyApp from quantumclient.quantum.v2_0.network import CreateNetwork @@ -79,6 +80,35 @@ class CLITestV20Network(CLITestV20Base): position_names, position_values, admin_state_up=False) + def test_lsit_nets_empty_with_column(self): + resources = "networks" + cmd = ListNetwork(MyApp(sys.stdout), None) + self.mox.StubOutWithMock(cmd, "get_client") + self.mox.StubOutWithMock(self.client.httpclient, "request") + cmd.get_client().MultipleTimes().AndReturn(self.client) + reses = {resources: []} + resstr = self.client.serialize(reses) + # url method body + query = "id=myfakeid" + args = ['-c', 'id', '--', '--id', 'myfakeid'] + path = getattr(self.client, resources + "_path") + self.client.httpclient.request( + test_cli20.end_url(path, query), 'GET', + body=None, + headers=test_cli20.ContainsKeyValue( + 'X-Auth-Token', + test_cli20.TOKEN)).AndReturn( + (test_cli20.MyResp(200), resstr)) + self.mox.ReplayAll() + cmd_parser = cmd.get_parser("list_" + resources) + + parsed_args = cmd_parser.parse_args(args) + cmd.run(parsed_args) + self.mox.VerifyAll() + self.mox.UnsetStubs() + _str = self.fake_stdout.make_string() + self.assertEquals('\n', _str) + def test_list_nets_detail(self): """list nets: -D.""" resources = "networks"