summaryrefslogtreecommitdiff
path: root/neutronclient
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-03-18 14:08:10 +0000
committerGerrit Code Review <review@openstack.org>2015-03-18 14:08:10 +0000
commitce93e4617cd9629d7c5eb62dda3aa8a872d2e603 (patch)
tree05b5256214b8822b7ddcbcb18de019c31fa159a5 /neutronclient
parentc6c788d70444d3455c64b2b683d779dc87476808 (diff)
parent6ca9a003a6e30ad11458f3a5ca1bb63c7bedfe94 (diff)
downloadpython-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.py53
-rw-r--r--neutronclient/shell.py4
-rw-r--r--neutronclient/tests/unit/test_cli20_agentschedulers.py24
-rw-r--r--neutronclient/v2_0/client.py15
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