def find_used_tn_vlans(): tn_vlans = dict() slice_monitoring = [ p for p in db_sync_manager.get_slice_monitoring_info() ] for slice_mon in slice_monitoring: if slice_mon is not None: slice_mon_tree = etree.fromstring(slice_mon) #slice_mon_tree.xpath("link//link_type[contains(@name, '%s')]" % ("virtual_link")) #slice_mon_tree.xpath("link_type[@name='%s']" % ("tn")) #slice_mon_tree.xpath("topology_list//topology//link_type[@name='%s']" % ("tn")) tn_link = slice_mon_tree.xpath( "topology//link[@type='tn'][contains(@id, 'urn')]") if tn_link is None: break # Retrieve SRC and DST STP endpoints and their associated VLAN link_id = tn_link[0].get("id") urn_reg = "urn.*(urn.*)\?vlan=(\d{1,4})-(urn.*)\?vlan=(\d{1,4})+.*" groups_reg = re.match(urn_reg, link_id) urn_src, vlan_src, urn_dst, vlan_dst = [ groups_reg.group(i) for i in xrange(1, 5) ] if urn_src not in tn_vlans: tn_vlans[urn_src] = set([vlan_src]) else: tn_vlans[urn_src].add(vlan_src) if urn_dst not in tn_vlans: tn_vlans[urn_dst] = set([vlan_dst]) else: tn_vlans[urn_dst].add(vlan_dst) return tn_vlans
def send_topology(self, monitoring_server): # retrieve slice info from db (the info are already formatted!) slices = db_sync_manager.get_slice_monitoring_info() logger.debug("Slices: %d" % (len(slices),)) for s in slices: self.__topologies = etree.fromstring(s) self.send()
def find_used_tn_vlans(): tn_vlans = dict() slice_monitoring = [ p for p in db_sync_manager.get_slice_monitoring_info() ] for slice_mon in slice_monitoring: if slice_mon is not None: slice_mon_tree = etree.fromstring(slice_mon) #slice_mon_tree.xpath("link//link_type[contains(@name, '%s')]" % ("virtual_link")) #slice_mon_tree.xpath("link_type[@name='%s']" % ("tn")) #slice_mon_tree.xpath("topology_list//topology//link_type[@name='%s']" % ("tn")) tn_link = slice_mon_tree.xpath("topology//link[@type='tn'][contains(@id, 'urn')]") if tn_link is None: break # Retrieve SRC and DST STP endpoints and their associated VLAN link_id = tn_link[0].get("id") urn_reg = "urn.*(urn.*)\?vlan=(\d{1,4})-(urn.*)\?vlan=(\d{1,4})+.*" groups_reg = re.match(urn_reg, link_id) urn_src, vlan_src, urn_dst, vlan_dst = [ groups_reg.group(i) for i in xrange(1,5) ] if urn_src not in tn_vlans: tn_vlans[urn_src] = set([vlan_src]) else: tn_vlans[urn_src].add(vlan_src) if urn_dst not in tn_vlans: tn_vlans[urn_dst] = set([vlan_dst]) else: tn_vlans[urn_dst].add(vlan_dst) return tn_vlans