Low-level Compute v2 API: security group rules · openstack/python-openstackclient@1bf6706 · GitHub
Skip to content

Commit 1bf6706

Browse files
author
Dean Troyer
committed
Low-level Compute v2 API: security group rules
api.compute.APIv2 security group rule functions. 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. Change-Id: Ieabd61113bc6d3562738686f52bb06aa84fca765
1 parent 4289ddd commit 1bf6706

6 files changed

Lines changed: 301 additions & 118 deletions

File tree

openstackclient/api/compute_v2.py

Lines changed: 97 additions & 0 deletions

openstackclient/network/v2/security_group_rule.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -376,15 +376,15 @@ def take_action_compute(self, client, parsed_args):
376376
else:
377377
remote_ip = '0.0.0.0/0'
378378

379-
obj = client.security_group_rules.create(
380-
group['id'],
381-
protocol,
382-
from_port,
383-
to_port,
384-
remote_ip,
385-
parsed_args.remote_group,
379+
obj = client.api.security_group_rule_create(
380+
security_group_id=group['id'],
381+
ip_protocol=protocol,
382+
from_port=from_port,
383+
to_port=to_port,
384+
remote_ip=remote_ip,
385+
remote_group=parsed_args.remote_group,
386386
)
387-
return _format_security_group_rule_show(obj._info)
387+
return _format_security_group_rule_show(obj)
388388

389389

390390
class DeleteSecurityGroupRule(common.NetworkAndComputeDelete):
@@ -409,7 +409,7 @@ def take_action_network(self, client, parsed_args):
409409
client.delete_security_group_rule(obj)
410410

411411
def take_action_compute(self, client, parsed_args):
412-
client.security_group_rules.delete(self.r)
412+
client.api.security_group_rule_delete(self.r)
413413

414414

415415
class ListSecurityGroupRule(common.NetworkAndComputeLister):

openstackclient/tests/unit/api/test_compute_v2.py

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,3 +226,84 @@ def test_security_group_set_options_name(self):
226226
security_group='sg2',
227227
description='desc2')
228228
self.assertEqual(self.FAKE_SECURITY_GROUP_RESP_2, ret)
229+
230+
231+
class TestSecurityGroupRule(TestComputeAPIv2):
232+
233+
FAKE_SECURITY_GROUP_RULE_RESP = {
234+
'id': '1',
235+
'name': 'sgr1',
236+
'tenant_id': 'proj-1',
237+
'ip_protocol': 'TCP',
238+
'from_port': 1,
239+
'to_port': 22,
240+
'group': {},
241+
# 'ip_range': ,
242+
# 'cidr': ,
243+
# 'parent_group_id': ,
244+
}
245+
246+
def test_security_group_create_no_options(self):
247+
self.requests_mock.register_uri(
248+
'POST',
249+
FAKE_URL + '/os-security-group-rules',
250+
json={'security_group_rule': self.FAKE_SECURITY_GROUP_RULE_RESP},
251+
status_code=200,
252+
)
253+
ret = self.api.security_group_rule_create(
254+
security_group_id='1',
255+
ip_protocol='tcp',
256+
)
257+
self.assertEqual(self.FAKE_SECURITY_GROUP_RULE_RESP, ret)
258+
259+
def test_security_group_create_options(self):
260+
self.requests_mock.register_uri(
261+
'POST',
262+
FAKE_URL + '/os-security-group-rules',
263+
json={'security_group_rule': self.FAKE_SECURITY_GROUP_RULE_RESP},
264+
status_code=200,
265+
)
266+
ret = self.api.security_group_rule_create(
267+
security_group_id='1',
268+
ip_protocol='tcp',
269+
from_port=22,
270+
to_port=22,
271+
remote_ip='1.2.3.4/24',
272+
)
273+
self.assertEqual(self.FAKE_SECURITY_GROUP_RULE_RESP, ret)
274+
275+
def test_security_group_create_port_errors(self):
276+
self.requests_mock.register_uri(
277+
'POST',
278+
FAKE_URL + '/os-security-group-rules',
279+
json={'security_group_rule': self.FAKE_SECURITY_GROUP_RULE_RESP},
280+
status_code=200,
281+
)
282+
self.assertRaises(
283+
compute.InvalidValue,
284+
self.api.security_group_rule_create,
285+
security_group_id='1',
286+
ip_protocol='tcp',
287+
from_port='',
288+
to_port=22,
289+
remote_ip='1.2.3.4/24',
290+
)
291+
self.assertRaises(
292+
compute.InvalidValue,
293+
self.api.security_group_rule_create,
294+
security_group_id='1',
295+
ip_protocol='tcp',
296+
from_port=0,
297+
to_port=[],
298+
remote_ip='1.2.3.4/24',
299+
)
300+
301+
def test_security_group_rule_delete(self):
302+
self.requests_mock.register_uri(
303+
'DELETE',
304+
FAKE_URL + '/os-security-group-rules/1',
305+
status_code=202,
306+
)
307+
ret = self.api.security_group_rule_delete('1')
308+
self.assertEqual(202, ret.status_code)
309+
self.assertEqual("", ret.text)

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -556,10 +556,7 @@ def create_one_security_group_rule(attrs=None):
556556
# Overwrite default attributes.
557557
security_group_rule_attrs.update(attrs)
558558

559-
security_group_rule = fakes.FakeResource(
560-
info=copy.deepcopy(security_group_rule_attrs),
561-
loaded=True)
562-
return security_group_rule
559+
return security_group_rule_attrs
563560

564561
@staticmethod
565562
def create_security_group_rules(attrs=None, count=2):

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

Lines changed: 2 additions & 2 deletions

0 commit comments

Comments
 (0)