Cameron & Ed | Remove unused arguments from OpenStack and EC2 rules in rule transformers

This commit is contained in:
cameron-r 2014-11-05 17:06:24 -06:00
parent 693c165a73
commit 9ef0e8cb01
4 changed files with 39 additions and 5 deletions

View File

@ -9,7 +9,7 @@ class EC2RuleTransformer:
def to_rule(self, ec2_rule):
rule_args = deepcopy(vars(ec2_rule))
del rule_args['grants']
self._delete_unused_rule_args(rule_args)
if ec2_rule.grants[0].cidr_ip:
rule_args['ip_range'] = ec2_rule.grants[0].cidr_ip
@ -17,4 +17,8 @@ class EC2RuleTransformer:
group_id = ec2_rule.grants[0].group_id
rule_args['group_name'] = self.ec2_connection.get_all_security_groups(group_ids=group_id)[0].name
return Rule(**rule_args)
return Rule(**rule_args)
def _delete_unused_rule_args(self, rule_args):
del rule_args['grants']
del rule_args['parent']

View File

@ -7,9 +7,16 @@ class OpenstackRuleTransformer:
def to_rule(self, openstack_rule):
rule_args = deepcopy(openstack_rule)
self._delete_unused_rule_args(rule_args)
if 'cidr' in openstack_rule['ip_range']:
rule_args['ip_range'] = openstack_rule['ip_range']['cidr']
else:
rule_args['group_name'] = openstack_rule['group']['name']
return Rule(**openstack_rule)
return Rule(**rule_args)
def _delete_unused_rule_args(self, rule_args):
del rule_args['group']
del rule_args['parent_group_id']
del rule_args['id']

View File

@ -2,7 +2,7 @@ from collections import namedtuple
class FakeEC2RuleBuilder():
EC2Rule = namedtuple('EC2Rule', 'ip_protocol from_port to_port grants')
EC2Rule = namedtuple('EC2Rule', 'ip_protocol from_port to_port grants parent')
GroupOrCIDR = namedtuple('GroupOrCIDR', 'cidr_ip group_id')
def __init__(self):
@ -11,6 +11,7 @@ class FakeEC2RuleBuilder():
self.to_port = '3333'
self.ip_range = '0.0.0.0/0'
self.allowed_security_group_id = None
self.parent = None
@staticmethod
def an_ec2_rule():
@ -40,4 +41,4 @@ class FakeEC2RuleBuilder():
def build(self):
grants = [self.GroupOrCIDR(self.ip_range, self.allowed_security_group_id)]
return self.EC2Rule(self.ip_protocol, self.from_port, self.to_port, grants)
return self.EC2Rule(self.ip_protocol, self.from_port, self.to_port, grants, self.parent)

View File

@ -0,0 +1,22 @@
import unittest
from nova.virt.ec2.openstack_rule_transformer import OpenstackRuleTransformer
class TestEC2RuleTransformer(unittest.TestCase):
def setUp(self):
self.openstack_rule_transformer = OpenstackRuleTransformer()
def test_should_copy_to_port(self):
openstack_rule = {
'ip_protocol': 'abc',
'from_port': 123,
'to_port': 456,
'group': {},
'parent_group_id': 55,
'ip_range': {'cidr': '9.8.7.6/55'},
'id': 18
}
rule = self.openstack_rule_transformer.to_rule(openstack_rule)
self.assertEqual(rule.to_port, openstack_rule['to_port'])