diff options
author | Jenkins <jenkins@review.openstack.org> | 2015-03-18 14:08:10 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2015-03-18 14:08:10 +0000 |
commit | ce93e4617cd9629d7c5eb62dda3aa8a872d2e603 (patch) | |
tree | 05b5256214b8822b7ddcbcb18de019c31fa159a5 /neutronclient | |
parent | c6c788d70444d3455c64b2b683d779dc87476808 (diff) | |
parent | 6ca9a003a6e30ad11458f3a5ca1bb63c7bedfe94 (diff) | |
download | python-neutronclient-ce93e4617cd9629d7c5eb62dda3aa8a872d2e603.tar.gz |
Merge "Added client calls for the lbaas v2 agent scheduler"
Diffstat (limited to 'neutronclient')
-rw-r--r-- | neutronclient/neutron/v2_0/agentscheduler.py | 53 | ||||
-rw-r--r-- | neutronclient/shell.py | 4 | ||||
-rw-r--r-- | neutronclient/tests/unit/test_cli20_agentschedulers.py | 24 | ||||
-rw-r--r-- | neutronclient/v2_0/client.py | 15 |
4 files changed, 96 insertions, 0 deletions
diff --git a/neutronclient/neutron/v2_0/agentscheduler.py b/neutronclient/neutron/v2_0/agentscheduler.py index e77f186..6776b99 100644 --- a/neutronclient/neutron/v2_0/agentscheduler.py +++ b/neutronclient/neutron/v2_0/agentscheduler.py @@ -275,3 +275,56 @@ class GetLbaasAgentHostingPool(neutronV20.ListCommand): agent = neutron_client.get_lbaas_agent_hosting_pool(**search_opts) data = {'agents': [agent['agent']]} return data + + +class ListLoadBalancersOnLbaasAgent(neutronV20.ListCommand): + """List the loadbalancers on a loadbalancer v2 agent.""" + + list_columns = ['id', 'name', 'admin_state_up', 'provisioning_status'] + resource = 'loadbalancer' + unknown_parts_flag = False + + def get_parser(self, prog_name): + parser = super(ListLoadBalancersOnLbaasAgent, self).get_parser( + prog_name) + parser.add_argument( + 'lbaas_agent', + help=_('ID of the loadbalancer agent to query.')) + return parser + + def call_server(self, neutron_client, search_opts, parsed_args): + data = neutron_client.list_loadbalancers_on_lbaas_agent( + parsed_args.lbaas_agent, **search_opts) + return data + + +class GetLbaasAgentHostingLoadBalancer(neutronV20.ListCommand): + """Get lbaas v2 agent hosting a loadbalancer. + + Deriving from ListCommand though server will return only one agent + to keep common output format for all agent schedulers + """ + + resource = 'agent' + list_columns = ['id', 'host', 'admin_state_up', 'alive'] + unknown_parts_flag = False + + def get_parser(self, prog_name): + parser = super(GetLbaasAgentHostingLoadBalancer, + self).get_parser(prog_name) + parser.add_argument('loadbalancer', + help=_('LoadBalancer to query.')) + return parser + + def extend_list(self, data, parsed_args): + for agent in data: + agent['alive'] = ":-)" if agent['alive'] else 'xxx' + + def call_server(self, neutron_client, search_opts, parsed_args): + _id = neutronV20.find_resourceid_by_name_or_id( + neutron_client, 'loadbalancer', parsed_args.loadbalancer) + search_opts['loadbalancer'] = _id + agent = neutron_client.get_lbaas_agent_hosting_loadbalancer( + **search_opts) + data = {'agents': [agent['agent']]} + return data
\ No newline at end of file diff --git a/neutronclient/shell.py b/neutronclient/shell.py index 2619363..177de52 100644 --- a/neutronclient/shell.py +++ b/neutronclient/shell.py @@ -258,6 +258,10 @@ COMMAND_V2 = { 'l3-agent-list-hosting-router': agentscheduler.ListL3AgentsHostingRouter, 'lb-pool-list-on-agent': agentscheduler.ListPoolsOnLbaasAgent, 'lb-agent-hosting-pool': agentscheduler.GetLbaasAgentHostingPool, + 'lbaas-loadbalancer-list-on-agent': + agentscheduler.ListLoadBalancersOnLbaasAgent, + 'lbaas-agent-hosting-loadbalancer': + agentscheduler.GetLbaasAgentHostingLoadBalancer, 'service-provider-list': servicetype.ListServiceProvider, 'firewall-rule-list': firewallrule.ListFirewallRule, 'firewall-rule-show': firewallrule.ShowFirewallRule, diff --git a/neutronclient/tests/unit/test_cli20_agentschedulers.py b/neutronclient/tests/unit/test_cli20_agentschedulers.py index 8dc307a..4c8992e 100644 --- a/neutronclient/tests/unit/test_cli20_agentschedulers.py +++ b/neutronclient/tests/unit/test_cli20_agentschedulers.py @@ -186,5 +186,29 @@ class CLITestV20LBaaSAgentScheduler(test_cli20.CLITestV20Base): path=path, response_contents=contents) +class CLITestV20LBaaSV2AgentScheduler(test_cli20.CLITestV20Base): + + def test_list_loadbalancers_on_agent(self): + resources = 'loadbalancers' + cmd = agentscheduler.ListLoadBalancersOnLbaasAgent( + test_cli20.MyApp(sys.stdout), None) + agent_id = 'agent_id1' + path = ((self.client.agent_path + self.client.AGENT_LOADBALANCERS) % + agent_id) + self._test_list_resources(resources, cmd, base_args=[agent_id], + path=path) + + def test_get_lbaas_agent_hosting_pool(self): + resources = 'agent' + cmd = agentscheduler.GetLbaasAgentHostingLoadBalancer( + test_cli20.MyApp(sys.stdout), None) + lb_id = 'lb_id1' + path = ((self.client.lbaas_loadbalancer_path + + self.client.LOADBALANCER_HOSTING_AGENT) % lb_id) + contents = {self.id_field: 'myid1', 'alive': True} + self._test_list_resources(resources, cmd, base_args=[lb_id], + path=path, response_contents=contents) + + class CLITestV20LBaaSAgentSchedulerXML(CLITestV20LBaaSAgentScheduler): format = 'xml' diff --git a/neutronclient/v2_0/client.py b/neutronclient/v2_0/client.py index 2e63bb2..6c430a9 100644 --- a/neutronclient/v2_0/client.py +++ b/neutronclient/v2_0/client.py @@ -421,6 +421,8 @@ class Client(ClientBase): L3_AGENTS = '/l3-agents' LOADBALANCER_POOLS = '/loadbalancer-pools' LOADBALANCER_AGENT = '/loadbalancer-agent' + AGENT_LOADBALANCERS = '/agent-loadbalancers' + LOADBALANCER_HOSTING_AGENT = '/loadbalancer-hosting-agent' firewall_rules_path = "/fw/firewall_rules" firewall_rule_path = "/fw/firewall_rules/%s" firewall_policies_path = "/fw/firewall_policies" @@ -1396,6 +1398,19 @@ class Client(ClientBase): lbaas_agent, params=_params) @APIParamsCall + def get_lbaas_agent_hosting_loadbalancer(self, loadbalancer, **_params): + """Fetches a loadbalancer agent hosting a loadbalancer.""" + return self.get((self.lbaas_loadbalancer_path + + self.LOADBALANCER_HOSTING_AGENT) % loadbalancer, + params=_params) + + @APIParamsCall + def list_loadbalancers_on_lbaas_agent(self, lbaas_agent, **_params): + """Fetches a list of loadbalancers hosted by the loadbalancer agent.""" + return self.get((self.agent_path + self.AGENT_LOADBALANCERS) % + lbaas_agent, params=_params) + + @APIParamsCall def list_service_providers(self, retrieve_all=True, **_params): """Fetches service providers.""" # Pass filters in "params" argument to do_request |