Skip to content

Commit d8abec3

Browse files
Tang ChenSteve Martinelli
authored andcommitted
Floating IP: Neutron support for "ip floating list" command
Change-Id: I253f66f6bc64470e1a18ffea506048eb53f67d5c partial-Bug: 1519502 Related-to: blueprint neutron-client
1 parent 6109dfc commit d8abec3

5 files changed

Lines changed: 107 additions & 19 deletions

File tree

openstackclient/compute/v2/floatingip.py

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -68,23 +68,6 @@ def take_action(self, parsed_args):
6868
return zip(*sorted(six.iteritems(info)))
6969

7070

71-
class ListFloatingIP(command.Lister):
72-
"""List floating IP addresses"""
73-
74-
def take_action(self, parsed_args):
75-
compute_client = self.app.client_manager.compute
76-
77-
columns = ('ID', 'Pool', 'IP', 'Fixed IP', 'Instance ID')
78-
79-
data = compute_client.floating_ips.list()
80-
81-
return (columns,
82-
(utils.get_item_properties(
83-
s, columns,
84-
formatters={},
85-
) for s in data))
86-
87-
8871
class RemoveFloatingIP(command.Command):
8972
"""Remove floating IP address from server"""
9073

openstackclient/network/v2/floating_ip.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,29 @@ def take_action_compute(self, client, parsed_args):
3838
parsed_args.floating_ip,
3939
)
4040
client.floating_ips.delete(obj.id)
41+
42+
43+
class ListFloatingIP(common.NetworkAndComputeLister):
44+
"""List floating IP(s)"""
45+
46+
columns = ('ID', 'IP', 'Fixed IP', 'Instance ID', 'Pool')
47+
column_headers = ('ID', 'Floating IP', 'Fixed IP', 'Server ID', 'Pool')
48+
49+
def take_action_network(self, client, parsed_args):
50+
query = {}
51+
data = client.ips(**query)
52+
53+
return (self.column_headers,
54+
(utils.get_item_properties(
55+
s, self.columns,
56+
formatters={},
57+
) for s in data))
58+
59+
def take_action_compute(self, client, parsed_args):
60+
data = client.floating_ips.list()
61+
62+
return (self.column_headers,
63+
(utils.get_item_properties(
64+
s, self.columns,
65+
formatters={},
66+
) for s in data))

openstackclient/tests/network/v2/fakes.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -566,12 +566,15 @@ def create_one_floating_ip(attrs={}, methods={}):
566566
:param Dictionary methods:
567567
A dictionary with all methods
568568
:return:
569-
A FakeResource object, with id, ip
569+
A FakeResource object, with id, ip, and so on
570570
"""
571571
# Set default attributes.
572572
floating_ip_attrs = {
573573
'id': 'floating-ip-id-' + uuid.uuid4().hex,
574574
'ip': '1.0.9.0',
575+
'fixed_ip': '2.0.9.0',
576+
'instance_id': 'server-id-' + uuid.uuid4().hex,
577+
'pool': 'public',
575578
}
576579

577580
# Overwrite default attributes.

openstackclient/tests/network/v2/test_floating_ip.py

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,43 @@ def test_floating_ip_delete(self):
5959
self.assertIsNone(result)
6060

6161

62+
class TestListFloatingIPNetwork(TestFloatingIPNetwork):
63+
64+
# The floating ips to list up
65+
floating_ips = network_fakes.FakeFloatingIP.create_floating_ips(count=3)
66+
67+
columns = ('ID', 'Floating IP', 'Fixed IP', 'Server ID', 'Pool')
68+
69+
data = []
70+
for ip in floating_ips:
71+
data.append((
72+
ip.id,
73+
ip.ip,
74+
ip.fixed_ip,
75+
ip.instance_id,
76+
ip.pool,
77+
))
78+
79+
def setUp(self):
80+
super(TestListFloatingIPNetwork, self).setUp()
81+
82+
self.network.ips = mock.Mock(return_value=self.floating_ips)
83+
84+
# Get the command object to test
85+
self.cmd = floating_ip.ListFloatingIP(self.app, self.namespace)
86+
87+
def test_floating_ip_list(self):
88+
arglist = []
89+
verifylist = []
90+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
91+
92+
columns, data = self.cmd.take_action(parsed_args)
93+
94+
self.network.ips.assert_called_with(**{})
95+
self.assertEqual(self.columns, columns)
96+
self.assertEqual(self.data, list(data))
97+
98+
6299
# Tests for Nova network
63100
#
64101
class TestFloatingIPCompute(compute_fakes.TestComputev2):
@@ -103,3 +140,42 @@ def test_floating_ip_delete(self):
103140
self.floating_ip.id
104141
)
105142
self.assertIsNone(result)
143+
144+
145+
class TestListFloatingIPCompute(TestFloatingIPCompute):
146+
147+
# The floating ips to be list up
148+
floating_ips = network_fakes.FakeFloatingIP.create_floating_ips(count=3)
149+
150+
columns = ('ID', 'Floating IP', 'Fixed IP', 'Server ID', 'Pool')
151+
152+
data = []
153+
for ip in floating_ips:
154+
data.append((
155+
ip.id,
156+
ip.ip,
157+
ip.fixed_ip,
158+
ip.instance_id,
159+
ip.pool,
160+
))
161+
162+
def setUp(self):
163+
super(TestListFloatingIPCompute, self).setUp()
164+
165+
self.app.client_manager.network_endpoint_enabled = False
166+
167+
self.compute.floating_ips.list.return_value = self.floating_ips
168+
169+
# Get the command object to test
170+
self.cmd = floating_ip.ListFloatingIP(self.app, None)
171+
172+
def test_floating_ip_list(self):
173+
arglist = []
174+
verifylist = []
175+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
176+
177+
columns, data = self.cmd.take_action(parsed_args)
178+
179+
self.compute.floating_ips.list.assert_called_with()
180+
self.assertEqual(self.columns, columns)
181+
self.assertEqual(self.data, list(data))

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ openstack.compute.v2 =
9191

9292
ip_floating_add = openstackclient.compute.v2.floatingip:AddFloatingIP
9393
ip_floating_create = openstackclient.compute.v2.floatingip:CreateFloatingIP
94-
ip_floating_list = openstackclient.compute.v2.floatingip:ListFloatingIP
9594
ip_floating_remove = openstackclient.compute.v2.floatingip:RemoveFloatingIP
9695
ip_floating_pool_list = openstackclient.compute.v2.floatingippool:ListFloatingIPPool
9796

@@ -326,6 +325,7 @@ openstack.image.v2 =
326325

327326
openstack.network.v2 =
328327
ip_floating_delete = openstackclient.network.v2.floating_ip:DeleteFloatingIP
328+
ip_floating_list = openstackclient.network.v2.floating_ip:ListFloatingIP
329329
network_create = openstackclient.network.v2.network:CreateNetwork
330330
network_delete = openstackclient.network.v2.network:DeleteNetwork
331331
network_list = openstackclient.network.v2.network:ListNetwork

0 commit comments

Comments
 (0)