initial checkin
authorTony Mack <tmack@paris.CS.Princeton.EDU>
Wed, 14 Mar 2012 20:36:36 +0000 (16:36 -0400)
committerTony Mack <tmack@paris.CS.Princeton.EDU>
Wed, 14 Mar 2012 20:36:36 +0000 (16:36 -0400)
sfa/rspecs/elements/fw_rule.py [new file with mode: 0644]
sfa/rspecs/elements/versions/plosv1FWRule.py [new file with mode: 0644]

diff --git a/sfa/rspecs/elements/fw_rule.py b/sfa/rspecs/elements/fw_rule.py
new file mode 100644 (file)
index 0000000..9ae66ab
--- /dev/null
@@ -0,0 +1,10 @@
+from sfa.rspecs.elements.element import Element
+
+class FWRule(Element):
+    fields = [ 
+        'protocol',
+        'cidr_ip',
+        'port_range',
+        'icmp_type_code',
+    ]
+        
diff --git a/sfa/rspecs/elements/versions/plosv1FWRule.py b/sfa/rspecs/elements/versions/plosv1FWRule.py
new file mode 100644 (file)
index 0000000..1fd017a
--- /dev/null
@@ -0,0 +1,23 @@
+from sfa.rspecs.elements.element import Element  
+from sfa.rspecs.elements.fw_rule import FWRule
+
+class PLOSv1FWRule:
+    @staticmethod
+    def add_rules(xml, rules):
+        if not rules:
+            return 
+        for rule in rules:
+            rule_elem = xml.add_element('plos:fw_rule')
+            rule_elem.set('protocol', rule.get('protocol'))
+            rule_elem.set('port_range', rule.get('port_range'))
+            rule_elem.set('cidr_ip', rule.get('cidr_ip'))
+            rule_elem.set('icmp_type_code', rule.get('icmp_type_code'))
+              
+    @staticmethod
+    def get_rules(xml):
+        rules = []
+        for rule_elem in xml.xpath('./plos:fw_rule | ./fw_rule'):
+            rule = FWRule(rule_elem.attrib, rule_elem)
+            rules.append(rule)  
+        return rules
+