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] is not None:
link_elem.set(attrib, link[attrib])
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 = []
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'])