Skip to content

Commit b620c40

Browse files
committed
dxcli-1121 pools on lb agent
1 parent cb331ed commit b620c40

3 files changed

Lines changed: 46 additions & 2 deletions

File tree

‎openstackclient/network/v2_0/lb/pool.py‎

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
"""Load Balancer pool action implementations"""
1717

18+
from neutronclient.neutron.v2_0 import agentscheduler
1819
from neutronclient.neutron.v2_0.lb import pool as neu2
1920
from openstackclient.network import v2_0 as v2_0
2021

@@ -69,7 +70,28 @@ class DeletePool(v2_0.DeleteCommand):
6970
class ListPool(v2_0.ListCommand):
7071
"""List load balancer pool"""
7172

72-
clazz = neu2.ListPool
73+
def get_parser(self, prog_name):
74+
parser = super(ListPool, self).get_parser(prog_name)
75+
parser.add_argument(
76+
'--lbaas-agent',
77+
help='ID of the LBaaS agent to query',
78+
)
79+
return parser
80+
81+
def take_action(self, parsed_args):
82+
self.log.debug('take_action(%s)' % parsed_args)
83+
parsed_args.request_format = 'json'
84+
parsed_args.fields = []
85+
parsed_args.page_size = None
86+
parsed_args.sort_key = []
87+
parsed_args.sort_dir = []
88+
if parsed_args.lbaas_agent:
89+
neuter = agentscheduler.ListPoolsOnLbaasAgent(self.app,
90+
self.app_args)
91+
else:
92+
neuter = neu2.ListPool(self.app, self.app_args)
93+
neuter.get_client = self.get_client
94+
return neuter.take_action(parsed_args)
7395

7496

7597
class SetPool(v2_0.SetCommand):

‎openstackclient/tests/network/v2_0/lb/test_pool.py‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,14 @@ class TestListLbPool(common.TestNetworkBase):
5959
def test_get_parser_nothing(self):
6060
given = "" + self.given_default_list_options()
6161
parsed = self.given_args(pool.ListPool, given)
62+
self.assertEqual(None, parsed.lbaas_agent)
6263
self.assertEqual(False, parsed.show_details)
6364
self.then_default_list_options(parsed)
6465

6566
def test_get_parser_all(self):
66-
allargs = "--long" + self.given_all_list_options()
67+
allargs = "--long --lbaas-agent gent" + self.given_all_list_options()
6768
parsed = self.given_args(pool.ListPool, allargs)
69+
self.assertEqual('gent', parsed.lbaas_agent)
6870
self.assertEqual(True, parsed.show_details)
6971
self.then_all_list_options(parsed)
7072

‎openstackclient/tests/network/v2_0/lb/test_pool_integration.py‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
class TestPoolIntegration(common.TestIntegrationBase):
2323
HOSTESS = common.TestIntegrationBase.HOST + common.TestIntegrationBase.VER
24+
AGENTS_URL = HOSTESS + "/agents/foo/loadbalancer-pools.json"
2425
POOLS_URL = HOSTESS + "/lb/pools.json"
2526
POOLS = '{ "pools": [{ "id": "1111111" }] }'
2627
SUBNETS_URL = HOSTESS + "/subnets.json"
@@ -105,6 +106,7 @@ def test_delete(self):
105106
@httpretty.activate
106107
def test_list(self):
107108
pargs = common.FakeParsedArgs()
109+
pargs.lbaas_agent = None
108110
pargs.page_size = None
109111
pargs.sort_key = []
110112
pargs.sort_dir = []
@@ -117,6 +119,24 @@ def test_list(self):
117119
id,name,status
118120
a9254bdb,nameo,ACTIVE
119121
b8408dgd,croc,ACTIVE
122+
""", self.stdout())
123+
124+
@httpretty.activate
125+
def test_list_lbaas_agent(self):
126+
pargs = common.FakeParsedArgs()
127+
pargs.lbaas_agent = 'foo'
128+
pargs.page_size = None
129+
pargs.sort_key = []
130+
pargs.sort_dir = []
131+
pargs.formatter = 'csv'
132+
httpretty.register_uri(httpretty.GET, self.AGENTS_URL,
133+
body=self.LIST)
134+
self.when_run(pool.ListPool, pargs)
135+
self.assertEqual('', self.stderr())
136+
self.assertEqual("""\
137+
id,name,status
138+
a9254bdb,nameo,ACTIVE
139+
b8408dgd,croc,ACTIVE
120140
""", self.stdout())
121141

122142
@httpretty.activate

0 commit comments

Comments
 (0)