Floating IP: Neutron support for "ip floating list" command

Change-Id: I253f66f6bc64470e1a18ffea506048eb53f67d5c
partial-Bug: 1519502
Related-to: blueprint neutron-client
This commit is contained in:
Tang Chen 2016-02-09 14:23:28 +08:00 committed by Steve Martinelli
parent 6109dfcf63
commit d8abec33ad
5 changed files with 107 additions and 19 deletions

View File

@ -68,23 +68,6 @@ class CreateFloatingIP(command.ShowOne):
return zip(*sorted(six.iteritems(info)))
class ListFloatingIP(command.Lister):
"""List floating IP addresses"""
def take_action(self, parsed_args):
compute_client = self.app.client_manager.compute
columns = ('ID', 'Pool', 'IP', 'Fixed IP', 'Instance ID')
data = compute_client.floating_ips.list()
return (columns,
(utils.get_item_properties(
s, columns,
formatters={},
) for s in data))
class RemoveFloatingIP(command.Command):
"""Remove floating IP address from server"""

View File

@ -38,3 +38,29 @@ class DeleteFloatingIP(common.NetworkAndComputeCommand):
parsed_args.floating_ip,
)
client.floating_ips.delete(obj.id)
class ListFloatingIP(common.NetworkAndComputeLister):
"""List floating IP(s)"""
columns = ('ID', 'IP', 'Fixed IP', 'Instance ID', 'Pool')
column_headers = ('ID', 'Floating IP', 'Fixed IP', 'Server ID', 'Pool')
def take_action_network(self, client, parsed_args):
query = {}
data = client.ips(**query)
return (self.column_headers,
(utils.get_item_properties(
s, self.columns,
formatters={},
) for s in data))
def take_action_compute(self, client, parsed_args):
data = client.floating_ips.list()
return (self.column_headers,
(utils.get_item_properties(
s, self.columns,
formatters={},
) for s in data))

View File

@ -566,12 +566,15 @@ class FakeFloatingIP(object):
:param Dictionary methods:
A dictionary with all methods
:return:
A FakeResource object, with id, ip
A FakeResource object, with id, ip, and so on
"""
# Set default attributes.
floating_ip_attrs = {
'id': 'floating-ip-id-' + uuid.uuid4().hex,
'ip': '1.0.9.0',
'fixed_ip': '2.0.9.0',
'instance_id': 'server-id-' + uuid.uuid4().hex,
'pool': 'public',
}
# Overwrite default attributes.

View File

@ -59,6 +59,43 @@ class TestDeleteFloatingIPNetwork(TestFloatingIPNetwork):
self.assertIsNone(result)
class TestListFloatingIPNetwork(TestFloatingIPNetwork):
# The floating ips to list up
floating_ips = network_fakes.FakeFloatingIP.create_floating_ips(count=3)
columns = ('ID', 'Floating IP', 'Fixed IP', 'Server ID', 'Pool')
data = []
for ip in floating_ips:
data.append((
ip.id,
ip.ip,
ip.fixed_ip,
ip.instance_id,
ip.pool,
))
def setUp(self):
super(TestListFloatingIPNetwork, self).setUp()
self.network.ips = mock.Mock(return_value=self.floating_ips)
# Get the command object to test
self.cmd = floating_ip.ListFloatingIP(self.app, self.namespace)
def test_floating_ip_list(self):
arglist = []
verifylist = []
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
self.network.ips.assert_called_with(**{})
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, list(data))
# Tests for Nova network
#
class TestFloatingIPCompute(compute_fakes.TestComputev2):
@ -103,3 +140,42 @@ class TestDeleteFloatingIPCompute(TestFloatingIPCompute):
self.floating_ip.id
)
self.assertIsNone(result)
class TestListFloatingIPCompute(TestFloatingIPCompute):
# The floating ips to be list up
floating_ips = network_fakes.FakeFloatingIP.create_floating_ips(count=3)
columns = ('ID', 'Floating IP', 'Fixed IP', 'Server ID', 'Pool')
data = []
for ip in floating_ips:
data.append((
ip.id,
ip.ip,
ip.fixed_ip,
ip.instance_id,
ip.pool,
))
def setUp(self):
super(TestListFloatingIPCompute, self).setUp()
self.app.client_manager.network_endpoint_enabled = False
self.compute.floating_ips.list.return_value = self.floating_ips
# Get the command object to test
self.cmd = floating_ip.ListFloatingIP(self.app, None)
def test_floating_ip_list(self):
arglist = []
verifylist = []
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args)
self.compute.floating_ips.list.assert_called_with()
self.assertEqual(self.columns, columns)
self.assertEqual(self.data, list(data))

View File

@ -91,7 +91,6 @@ openstack.compute.v2 =
ip_floating_add = openstackclient.compute.v2.floatingip:AddFloatingIP
ip_floating_create = openstackclient.compute.v2.floatingip:CreateFloatingIP
ip_floating_list = openstackclient.compute.v2.floatingip:ListFloatingIP
ip_floating_remove = openstackclient.compute.v2.floatingip:RemoveFloatingIP
ip_floating_pool_list = openstackclient.compute.v2.floatingippool:ListFloatingIPPool
@ -326,6 +325,7 @@ openstack.image.v2 =
openstack.network.v2 =
ip_floating_delete = openstackclient.network.v2.floating_ip:DeleteFloatingIP
ip_floating_list = openstackclient.network.v2.floating_ip:ListFloatingIP
network_create = openstackclient.network.v2.network:CreateNetwork
network_delete = openstackclient.network.v2.network:DeleteNetwork
network_list = openstackclient.network.v2.network:ListNetwork