Skip to content

Commit 107cad2

Browse files
author
Dean Troyer
committed
Low-level Compute v2 API: floating ip pool
api.compute.APIv2 floating ip pool function. novaclient 8.0 is now released without support for the previously deprecated nova-net functions, so include a new low-level REST implementation of the removed APIs. Also includes a handful of cleanups that the previous security group and floating IP reviews missed. Change-Id: I20116ec4fc1113857d8d917bfb30fa3170d05b9f
1 parent 7e13508 commit 107cad2

6 files changed

Lines changed: 50 additions & 29 deletions

File tree

openstackclient/api/compute_v2.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,13 +168,30 @@ def floating_ip_list(
168168
https://developer.openstack.org/api-ref/compute/#show-floating-ip-address-details
169169
170170
:returns:
171-
list of security groups names
171+
list of floating IPs
172172
"""
173173

174174
url = "/os-floating-ips"
175175

176176
return self.list(url)["floating_ips"]
177177

178+
# Floating IP Pools
179+
180+
def floating_ip_pool_list(
181+
self,
182+
):
183+
"""Get floating IP pools
184+
185+
https://developer.openstack.org/api-ref/compute/?expanded=#list-floating-ip-pools
186+
187+
:returns:
188+
list of floating IP pools
189+
"""
190+
191+
url = "/os-floating-ip-pools"
192+
193+
return self.list(url)["floating_ip_pools"]
194+
178195
# Networks
179196

180197
def network_create(

openstackclient/network/v2/floating_ip_pool.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ def take_action_compute(self, client, parsed_args):
3434
columns = (
3535
'Name',
3636
)
37-
data = client.floating_ip_pools.list()
37+
data = client.api.floating_ip_pool_list()
3838

3939
return (columns,
40-
(utils.get_item_properties(
40+
(utils.get_dict_properties(
4141
s, columns,
4242
) for s in data))
4343

openstackclient/tests/unit/api/test_compute_v2.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,24 @@ def test_floating_ip_list(self):
145145
self.assertEqual(self.LIST_FLOATING_IP_RESP, ret)
146146

147147

148+
class TestFloatingIPPool(TestComputeAPIv2):
149+
150+
LIST_FLOATING_IP_POOL_RESP = [
151+
{"name": "tide"},
152+
{"name": "press"},
153+
]
154+
155+
def test_floating_ip_pool_list(self):
156+
self.requests_mock.register_uri(
157+
'GET',
158+
FAKE_URL + '/os-floating-ip-pools',
159+
json={'floating_ip_pools': self.LIST_FLOATING_IP_POOL_RESP},
160+
status_code=200,
161+
)
162+
ret = self.api.floating_ip_pool_list()
163+
self.assertEqual(self.LIST_FLOATING_IP_POOL_RESP, ret)
164+
165+
148166
class TestNetwork(TestComputeAPIv2):
149167

150168
FAKE_NETWORK_RESP = {

openstackclient/tests/unit/compute/v2/fakes.py

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -181,15 +181,6 @@ def __init__(self, **kwargs):
181181
self.hypervisors_stats = mock.Mock()
182182
self.hypervisors_stats.resource_class = fakes.FakeResource(None, {})
183183

184-
self.security_group_rules = mock.Mock()
185-
self.security_group_rules.resource_class = fakes.FakeResource(None, {})
186-
187-
self.floating_ips = mock.Mock()
188-
self.floating_ips.resource_class = fakes.FakeResource(None, {})
189-
190-
self.floating_ip_pools = mock.Mock()
191-
self.floating_ip_pools.resource_class = fakes.FakeResource(None, {})
192-
193184
self.keypairs = mock.Mock()
194185
self.keypairs.resource_class = fakes.FakeResource(None, {})
195186

@@ -1074,11 +1065,7 @@ def create_one_floating_ip_pool(attrs=None):
10741065
# Overwrite default attributes.
10751066
floating_ip_pool_attrs.update(attrs)
10761067

1077-
floating_ip_pool = fakes.FakeResource(
1078-
info=copy.deepcopy(floating_ip_pool_attrs),
1079-
loaded=True)
1080-
1081-
return floating_ip_pool
1068+
return floating_ip_pool_attrs
10821069

10831070
@staticmethod
10841071
def create_floating_ip_pools(attrs=None, count=2):

openstackclient/tests/unit/network/v2/test_floating_ip_compute.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,10 +103,6 @@ def setUp(self):
103103

104104
self.app.client_manager.network_endpoint_enabled = False
105105

106-
# Return value of utils.find_resource()
107-
self.compute.floating_ips.get = (
108-
compute_fakes.FakeFloatingIP.get_floating_ips(self._floating_ips))
109-
110106
# Get the command object to test
111107
self.cmd = fip.DeleteFloatingIP(self.app, None)
112108

openstackclient/tests/unit/network/v2/test_floating_ip_pool_compute.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
# under the License.
1212
#
1313

14+
import mock
15+
1416
from openstackclient.network.v2 import floating_ip_pool
1517
from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
1618

@@ -26,40 +28,41 @@ def setUp(self):
2628
self.compute = self.app.client_manager.compute
2729

2830

31+
@mock.patch(
32+
'openstackclient.api.compute_v2.APIv2.floating_ip_pool_list'
33+
)
2934
class TestListFloatingIPPoolCompute(TestFloatingIPPoolCompute):
3035

3136
# The floating ip pools to list up
32-
floating_ip_pools = \
37+
_floating_ip_pools = \
3338
compute_fakes.FakeFloatingIPPool.create_floating_ip_pools(count=3)
3439

3540
columns = (
3641
'Name',
3742
)
3843

3944
data = []
40-
for pool in floating_ip_pools:
45+
for pool in _floating_ip_pools:
4146
data.append((
42-
pool.name,
47+
pool['name'],
4348
))
4449

4550
def setUp(self):
4651
super(TestListFloatingIPPoolCompute, self).setUp()
4752

4853
self.app.client_manager.network_endpoint_enabled = False
4954

50-
self.compute.floating_ip_pools.list.return_value = \
51-
self.floating_ip_pools
52-
5355
# Get the command object to test
5456
self.cmd = floating_ip_pool.ListFloatingIPPool(self.app, None)
5557

56-
def test_floating_ip_list(self):
58+
def test_floating_ip_list(self, fipp_mock):
59+
fipp_mock.return_value = self._floating_ip_pools
5760
arglist = []
5861
verifylist = []
5962
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
6063

6164
columns, data = self.cmd.take_action(parsed_args)
6265

63-
self.compute.floating_ip_pools.list.assert_called_once_with()
66+
fipp_mock.assert_called_once_with()
6467
self.assertEqual(self.columns, columns)
6568
self.assertEqual(self.data, list(data))

0 commit comments

Comments
 (0)