Ed & Cameron | Common rule class for comparing openstack and ec2 rules
This commit is contained in:
parent
85473ced07
commit
6f2fc65bf4
18
ec2_rule_transformer.py
Normal file
18
ec2_rule_transformer.py
Normal file
@ -0,0 +1,18 @@
|
||||
from copy import deepcopy
|
||||
from rule import Rule
|
||||
|
||||
|
||||
class EC2RuleTransformer:
|
||||
|
||||
def __init__(self, ec2_connection):
|
||||
self.ec2_connection = ec2_connection
|
||||
|
||||
def to_rule(self, ec2_rule):
|
||||
rule_args = deepcopy(ec2_rule)
|
||||
|
||||
if ec2_rule.grants[0].cidr_ip:
|
||||
rule_args['ip_range'] = ec2_rule.grants[0].cidr_ip
|
||||
else:
|
||||
group_id = ec2_rule.grants[0].group_id
|
||||
rule_args['group_name'] = self.ec2_connection.get_all_security_groups(group_ids=group_id)[0]
|
||||
return Rule(**ec2_rule)
|
15
openstack_rule_transformer.py
Normal file
15
openstack_rule_transformer.py
Normal file
@ -0,0 +1,15 @@
|
||||
from copy import deepcopy
|
||||
from rule import Rule
|
||||
|
||||
|
||||
class OpenStackRuleTransformer:
|
||||
|
||||
def to_rule(self, openstack_rule):
|
||||
rule_args = deepcopy(openstack_rule)
|
||||
|
||||
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)
|
16
rule.py
Normal file
16
rule.py
Normal file
@ -0,0 +1,16 @@
|
||||
class Rule:
|
||||
def __init__(self, ip_protocol, from_port, to_port, ip_range=None, group_name=None):
|
||||
self.ip_protocol = ip_protocol
|
||||
self.from_port = from_port
|
||||
self.to_port = to_port
|
||||
self.ip_range = ip_range
|
||||
self.group_name = group_name
|
||||
|
||||
def __key(self):
|
||||
return self.ip_protocol, self.from_port, self.to_port, self.ip_range, self.group_name
|
||||
|
||||
def __eq__(self, other):
|
||||
return self.__key() == other.__key()
|
||||
|
||||
def __hash__(self):
|
||||
return hash(self.__key())
|
Loading…
x
Reference in New Issue
Block a user