X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fplc%2Fvlink.py;h=625963d0170c82caee407ed62f0e0865801f8baf;hb=eb83ed3161f1a0c750b7d4aef5ebbd46315ad07a;hp=8aeee498701c922287f4606aae444dc88a481df9;hpb=dd2685ff6d20c84e57362ff36cacb3f94a5d134c;p=sfa.git diff --git a/sfa/plc/vlink.py b/sfa/plc/vlink.py index 8aeee498..625963d0 100644 --- a/sfa/plc/vlink.py +++ b/sfa/plc/vlink.py @@ -1,5 +1,5 @@ - -from sfa.util.plxrn import PlXrn +import re +from sfa.util.xrn import Xrn # Taken from bwlimit.py # # See tc_util.c and http://physics.nist.gov/cuu/Units/binary.html. Be @@ -79,34 +79,37 @@ class VLink: @staticmethod def get_virt_ip(if1, if2): - link_id = get_link_id(if1, if2) - iface_id = get_iface_id(if1, if2) + link_id = VLink.get_link_id(if1, if2) + iface_id = VLink.get_iface_id(if1, if2) first = link_id >> 6 second = ((link_id & 0x3f)<<2) + iface_id - return "192.168.%d.%s" % (frist, second) + return "192.168.%d.%s" % (first, second) @staticmethod def get_virt_net(link): - link_id = self.get_link_id(link) + link_id = VLink.get_link_id(link['interface1'], link['interface2']) first = link_id >> 6 second = (link_id & 0x3f)<<2 return "192.168.%d.%d/30" % (first, second) @staticmethod def get_interface_id(interface): - if_name = PlXrn(interface=interface['component_id']).interface_name() + if_name = Xrn(interface['component_id']).get_leaf() node, dev = if_name.split(":") - node_id = int(node.replace("pc", "")) + node_id = int(node.replace("node", "")) return node_id @staticmethod - def get_topo_rspec(link): + def get_topo_rspec(link, ipaddr): link['interface1']['id'] = VLink.get_interface_id(link['interface1']) link['interface2']['id'] = VLink.get_interface_id(link['interface2']) my_ip = VLink.get_virt_ip(link['interface1'], link['interface2']) remote_ip = VLink.get_virt_ip(link['interface2'], link['interface1']) net = VLink.get_virt_net(link) bw = format_tc_rate(long(link['capacity'])) - ipaddr = remote.get_primary_iface().ipv4 - return (link['interface2']['id'], ipaddr, bw, my_ip, remote_ip, net) + return (link['interface2']['id'], ipaddr, bw, my_ip, remote_ip, net) + + @staticmethod + def topo_rspec_to_link(topo_rspec): + pass