Merge "Low-level Compute v2 API: floating ip" · openstack/python-openstackclient@b0ce957 · GitHub
Skip to content

Commit b0ce957

Browse files
Jenkinsopenstack-gerrit
authored andcommitted
Merge "Low-level Compute v2 API: floating ip"
2 parents 18206a9 + e6ea45b commit b0ce957

5 files changed

Lines changed: 277 additions & 93 deletions

File tree

openstackclient/api/compute_v2.py

Lines changed: 82 additions & 0 deletions

openstackclient/network/v2/floating_ip.py

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -190,9 +190,9 @@ def take_action_network(self, client, parsed_args):
190190
return (display_columns, data)
191191

192192
def take_action_compute(self, client, parsed_args):
193-
obj = client.floating_ips.create(parsed_args.network)
194-
columns = _get_columns(obj._info)
195-
data = utils.get_dict_properties(obj._info, columns)
193+
obj = client.api.floating_ip_create(parsed_args.network)
194+
columns = _get_columns(obj)
195+
data = utils.get_dict_properties(obj, columns)
196196
return (columns, data)
197197

198198

@@ -245,13 +245,7 @@ def take_action_network(self, client, parsed_args):
245245
client.delete_ip(obj)
246246

247247
def take_action_compute(self, client, parsed_args):
248-
obj = utils.find_resource(client.floating_ips, self.r)
249-
client.floating_ips.delete(obj.id)
250-
251-
def take_action(self, parsed_args):
252-
"""Implements a naive cache for the list of floating IPs"""
253-
254-
super(DeleteFloatingIP, self).take_action(parsed_args)
248+
client.api.floating_ip_delete(self.r)
255249

256250

257251
class DeleteIPFloating(DeleteFloatingIP):
@@ -414,10 +408,10 @@ def take_action_compute(self, client, parsed_args):
414408
'Pool',
415409
)
416410

417-
data = client.floating_ips.list()
411+
data = client.api.floating_ip_list()
418412

419413
return (headers,
420-
(utils.get_item_properties(
414+
(utils.get_dict_properties(
421415
s, columns,
422416
formatters={},
423417
) for s in data))
@@ -510,12 +504,9 @@ def take_action_network(self, client, parsed_args):
510504
return (display_columns, data)
511505

512506
def take_action_compute(self, client, parsed_args):
513-
obj = utils.find_resource(
514-
client.floating_ips,
515-
parsed_args.floating_ip,
516-
)
517-
columns = _get_columns(obj._info)
518-
data = utils.get_dict_properties(obj._info, columns)
507+
obj = client.api.floating_ip_find(parsed_args.floating_ip)
508+
columns = _get_columns(obj)
509+
data = utils.get_dict_properties(obj, columns)
519510
return (columns, data)
520511

521512

openstackclient/tests/unit/api/test_compute_v2.py

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,117 @@ def setUp(self):
3434
self.requests_mock = self.useFixture(fixture.Fixture())
3535

3636

37+
class TestFloatingIP(TestComputeAPIv2):
38+
39+
FAKE_FLOATING_IP_RESP = {
40+
'id': 1,
41+
'ip': '203.0.113.11', # TEST-NET-3
42+
'fixed_ip': '198.51.100.11', # TEST-NET-2
43+
'pool': 'nova',
44+
'instance_id': None,
45+
}
46+
FAKE_FLOATING_IP_RESP_2 = {
47+
'id': 2,
48+
'ip': '203.0.113.12', # TEST-NET-3
49+
'fixed_ip': '198.51.100.12', # TEST-NET-2
50+
'pool': 'nova',
51+
'instance_id': None,
52+
}
53+
LIST_FLOATING_IP_RESP = [
54+
FAKE_FLOATING_IP_RESP,
55+
FAKE_FLOATING_IP_RESP_2,
56+
]
57+
58+
def test_floating_ip_create(self):
59+
self.requests_mock.register_uri(
60+
'POST',
61+
FAKE_URL + '/os-floating-ips',
62+
json={'floating_ip': self.FAKE_FLOATING_IP_RESP},
63+
status_code=200,
64+
)
65+
ret = self.api.floating_ip_create('nova')
66+
self.assertEqual(self.FAKE_FLOATING_IP_RESP, ret)
67+
68+
def test_floating_ip_create_not_found(self):
69+
self.requests_mock.register_uri(
70+
'POST',
71+
FAKE_URL + '/os-floating-ips',
72+
status_code=404,
73+
)
74+
self.assertRaises(
75+
osc_lib_exceptions.NotFound,
76+
self.api.floating_ip_create,
77+
'not-nova',
78+
)
79+
80+
def test_floating_ip_delete(self):
81+
self.requests_mock.register_uri(
82+
'DELETE',
83+
FAKE_URL + '/os-floating-ips/1',
84+
status_code=202,
85+
)
86+
ret = self.api.floating_ip_delete('1')
87+
self.assertEqual(202, ret.status_code)
88+
self.assertEqual("", ret.text)
89+
90+
def test_floating_ip_delete_none(self):
91+
ret = self.api.floating_ip_delete()
92+
self.assertIsNone(ret)
93+
94+
def test_floating_ip_find_id(self):
95+
self.requests_mock.register_uri(
96+
'GET',
97+
FAKE_URL + '/os-floating-ips/1',
98+
json={'floating_ip': self.FAKE_FLOATING_IP_RESP},
99+
status_code=200,
100+
)
101+
ret = self.api.floating_ip_find('1')
102+
self.assertEqual(self.FAKE_FLOATING_IP_RESP, ret)
103+
104+
def test_floating_ip_find_ip(self):
105+
self.requests_mock.register_uri(
106+
'GET',
107+
FAKE_URL + '/os-floating-ips/' + self.FAKE_FLOATING_IP_RESP['ip'],
108+
status_code=404,
109+
)
110+
self.requests_mock.register_uri(
111+
'GET',
112+
FAKE_URL + '/os-floating-ips',
113+
json={'floating_ips': self.LIST_FLOATING_IP_RESP},
114+
status_code=200,
115+
)
116+
ret = self.api.floating_ip_find(self.FAKE_FLOATING_IP_RESP['ip'])
117+
self.assertEqual(self.FAKE_FLOATING_IP_RESP, ret)
118+
119+
def test_floating_ip_find_not_found(self):
120+
self.requests_mock.register_uri(
121+
'GET',
122+
FAKE_URL + '/os-floating-ips/1.2.3.4',
123+
status_code=404,
124+
)
125+
self.requests_mock.register_uri(
126+
'GET',
127+
FAKE_URL + '/os-floating-ips',
128+
json={'floating_ips': self.LIST_FLOATING_IP_RESP},
129+
status_code=200,
130+
)
131+
self.assertRaises(
132+
osc_lib_exceptions.NotFound,
133+
self.api.floating_ip_find,
134+
'1.2.3.4',
135+
)
136+
137+
def test_floating_ip_list(self):
138+
self.requests_mock.register_uri(
139+
'GET',
140+
FAKE_URL + '/os-floating-ips',
141+
json={'floating_ips': self.LIST_FLOATING_IP_RESP},
142+
status_code=200,
143+
)
144+
ret = self.api.floating_ip_list()
145+
self.assertEqual(self.LIST_FLOATING_IP_RESP, ret)
146+
147+
37148
class TestSecurityGroup(TestComputeAPIv2):
38149

39150
FAKE_SECURITY_GROUP_RESP = {

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

Lines changed: 1 addition & 5 deletions

0 commit comments

Comments
 (0)