Merge branch 'thgeneric'
[sfa.git] / sfa / rspecs / elements / versions / pgv2Link.py
index 727afaf..db28f6c 100644 (file)
@@ -3,25 +3,26 @@ from sfa.util.plxrn import PlXrn
 from sfa.util.xrn import Xrn
 from sfa.rspecs.elements.link import Link
 from sfa.rspecs.elements.interface import Interface
+from sfa.rspecs.elements.link_type import LinkType
+from sfa.rspecs.elements.component_manager import ComponentManager
+from sfa.rspecs.elements.property import Property    
 from sfa.rspecs.rspec_elements import RSpecElement, RSpecElements
 
 class PGv2Link:
-
     elements = {
         'link': RSpecElement(RSpecElements.LINK, '//default:link | //link'),
         'component_manager': RSpecElement(RSpecElements.COMPONENT_MANAGER, './default:component_manager | ./component_manager'),
         'link_type': RSpecElement(RSpecElements.LINK_TYPE, './default:link_type | ./link_type'),
         'property': RSpecElement(RSpecElements.PROPERTY, './default:property | ./property'),
-        'interface_ref': RSpecElement(RSpecElements.INTERFACE_REF, './default:interface_ref | ./interface_ref') 
+        'interface_ref': RSpecElement(RSpecElements.INTERFACE_REF, './default:interface_ref | ./interface_ref'), 
     }
     
     @staticmethod
     def add_links(xml, links):
-        root = xml.root
         for link in links:
-            link_elem = etree.SubElement(root, 'link')
+            link_elem = etree.SubElement(xml, 'link')
             for attrib in ['component_name', 'component_id', 'client_id']:
-                if attrib in link and link[attrib]:
+                if attrib in link and link[attrib] is not None:
                     link_elem.set(attrib, link[attrib])
             if 'component_manager' in link and link['component_manager']:
                 cm_element = etree.SubElement(link_elem, 'component_manager', name=link['component_manager'])
@@ -38,7 +39,6 @@ class PGv2Link:
                 latency=link['latency'], packet_loss=link['packet_loss'])
             if 'type' in link and link['type']:
                 type_elem = etree.SubElement(link_elem, 'link_type', name=link['type'])             
-   
     @staticmethod 
     def get_links(xml):
         links = []
@@ -87,18 +87,16 @@ class PGv2Link:
         available_links = PGv2Link.get_links(xml)
         recently_added = []
         for link in available_links:
-            auth = Xrn(link['component_id']).get_authority_hrn()
             if_name1 =  Xrn(link['interface1']['component_id']).get_leaf()
             if_name2 =  Xrn(link['interface2']['component_id']).get_leaf()
-            
+             
             requested_link = None
             l_tup_1 = (if_name1, if_name2)
-            l_tup_2 = (if_name2, if_name1) 
+            l_tup_2 = (if_name2, if_name1)
             if link_tuples.issuperset([(if_name1, if_name2)]):
                 requested_link = (if_name1, if_name2)        
             elif link_tuples.issuperset([(if_name2, if_name2)]):
                 requested_link = (if_name2, if_name1)
-            
             if requested_link:
                 # add client id to link ane interface elements 
                 link.element.set('client_id', link['component_name'])
@@ -117,6 +115,6 @@ class PGv2Link:
     def get_link_requests(xml):
         link_requests = []
         for link in PGv2Link.get_links(xml):
-            if link['client_id']:
+            if link['client_id'] != None:
                 link_requests.append(link)
         return link_requests