diff options
| author | Jenkins <jenkins@review.openstack.org> | 2017-01-08 03:54:19 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2017-01-08 03:54:19 +0000 |
| commit | 4811b95d1ed75e9ac979d0b8d864f7f5fbac0461 (patch) | |
| tree | 98687743dece46ba886eba1f11bc77cc77b03a91 /openstackclient | |
| parent | 33602fb4f43ac059d8bf3b64afa2eda1a03ce175 (diff) | |
| parent | 2e78c11c8d485195b9ae40b9d00cf3a557aebd6d (diff) | |
| download | python-openstackclient-4811b95d1ed75e9ac979d0b8d864f7f5fbac0461.tar.gz | |
Merge "Add options to allow filtering on agent list"
Diffstat (limited to 'openstackclient')
| -rw-r--r-- | openstackclient/network/v2/network_agent.py | 41 | ||||
| -rw-r--r-- | openstackclient/tests/unit/network/v2/test_network_agent.py | 35 |
2 files changed, 75 insertions, 1 deletions
diff --git a/openstackclient/network/v2/network_agent.py b/openstackclient/network/v2/network_agent.py index 65708499..b3411166 100644 --- a/openstackclient/network/v2/network_agent.py +++ b/openstackclient/network/v2/network_agent.py @@ -72,6 +72,25 @@ class DeleteNetworkAgent(command.Command): class ListNetworkAgent(command.Lister): _description = _("List network agents") + def get_parser(self, prog_name): + parser = super(ListNetworkAgent, self).get_parser(prog_name) + parser.add_argument( + '--agent-type', + metavar='<agent-type>', + choices=["dhcp", "open-vswitch", "linux-bridge", "ofa", "l3", + "loadbalancer", "metering", "metadata", "macvtap", "nic"], + help=_("List only agents with the specified agent type. " + "The supported agent types are: dhcp, open-vswitch, " + "linux-bridge, ofa, l3, loadbalancer, metering, " + "metadata, macvtap, nic.") + ) + parser.add_argument( + '--host', + metavar='<host>', + help=_("List only agents running on the specified host") + ) + return parser + def take_action(self, parsed_args): client = self.app.client_manager.network columns = ( @@ -92,7 +111,27 @@ class ListNetworkAgent(command.Lister): 'State', 'Binary' ) - data = client.agents() + + key_value = { + 'dhcp': 'DHCP agent', + 'open-vswitch': 'Open vSwitch agent', + 'linux-bridge': 'Linux bridge agent', + 'ofa': 'OFA driver agent', + 'l3': 'L3 agent', + 'loadbalancer': 'Loadbalancer agent', + 'metering': 'Metering agent', + 'metadata': 'Metadata agent', + 'macvtap': 'Macvtap agent', + 'nic': 'NIC Switch agent' + } + + filters = {} + if parsed_args.agent_type is not None: + filters['agent_type'] = key_value[parsed_args.agent_type] + if parsed_args.host is not None: + filters['host'] = parsed_args.host + + data = client.agents(**filters) return (column_headers, (utils.get_item_properties( s, columns, formatters=_formatters, diff --git a/openstackclient/tests/unit/network/v2/test_network_agent.py b/openstackclient/tests/unit/network/v2/test_network_agent.py index 9f5b442a..9fd395b4 100644 --- a/openstackclient/tests/unit/network/v2/test_network_agent.py +++ b/openstackclient/tests/unit/network/v2/test_network_agent.py @@ -130,6 +130,7 @@ class TestListNetworkAgent(TestNetworkAgent): ) data = [] for agent in network_agents: + agent.agent_type = 'DHCP agent' data.append(( agent.id, agent.agent_type, @@ -159,6 +160,40 @@ class TestListNetworkAgent(TestNetworkAgent): self.assertEqual(self.columns, columns) self.assertEqual(self.data, list(data)) + def test_network_agents_list_agent_type(self): + arglist = [ + '--agent-type', 'dhcp', + ] + verifylist = [ + ('agent_type', 'dhcp'), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + columns, data = self.cmd.take_action(parsed_args) + + self.network.agents.assert_called_once_with(**{ + 'agent_type': self.network_agents[0].agent_type, + }) + self.assertEqual(self.columns, columns) + self.assertEqual(self.data, list(data)) + + def test_network_agents_list_host(self): + arglist = [ + '--host', self.network_agents[0].host, + ] + verifylist = [ + ('host', self.network_agents[0].host), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + columns, data = self.cmd.take_action(parsed_args) + + self.network.agents.assert_called_once_with(**{ + 'host': self.network_agents[0].host, + }) + self.assertEqual(self.columns, columns) + self.assertEqual(self.data, list(data)) + class TestSetNetworkAgent(TestNetworkAgent): |
