def generate_tn_link(src_dom, src_vlan, dst_dom, dst_vlan): """ Generate link (tree/lxml structure) so it can be appended to the request RSpec. """ tn_ref_node = db_sync_manager.get_tn_nodes()[0] stp_reg = "+stp" link_cid = tn_ref_node.get("component_id", "") link_prefix = link_cid.split(stp_reg)[0] src_dom_ogf = src_dom[src_dom.find(stp_reg)+1+len(stp_reg):] dst_dom_ogf = dst_dom[dst_dom.find(stp_reg)+1+len(stp_reg):] #link_clid = generate_unique_link_id(link_cid, src_dom, dst_dom) link_clid_full = "%s+link+%s?vlan=%s-%s?vlan=%s" % (link_prefix, src_dom_ogf, src_vlan, dst_dom_ogf, dst_vlan) logger.debug("Chosen TN inter-domain link: %s" % link_clid_full) link = {"component_id": link_clid_full, "component_manager_name": tn_ref_node.get("component_manager_id", ""), "interface_ref": [{"component_id": src_dom}, {"component_id": dst_dom,}], "property": [{"capacity": "100", "source_id": src_dom, "dest_id": dst_dom}, {"capacity": "100", "source_id": dst_dom, "dest_id": src_dom}], "component_manager_uuid": None, "vlantag": None, } return link
def generate_tn_node(src_dom, dst_dom, transport_vlans={}): src_node = db_sync_manager.\ get_tn_node_interface({"component_id": src_dom}) dst_node = db_sync_manager.\ get_tn_node_interface({"component_id": dst_dom}) if len(src_node) == 0 or len(dst_node) == 0: logger.warning("Problem obtaining TN nodes: invalid endpoints \ (%s, %s)" % (src_dom, dst_dom)) return None else: src_node = src_node[0] dst_node = dst_node[0] src_iface_new = TNUtils.fill_name_tag_in_tn_iface( src_node, src_dom, transport_vlans) # If translation within NSI is not allowed, use same transport # VLAN for both source and destination force_vlan = None if "translation" in transport_vlans and\ transport_vlans.get("translation") == False: force_vlan = src_iface_new["vlan"][0]["tag"] dst_iface_new = TNUtils.fill_name_tag_in_tn_iface( dst_node, dst_dom, transport_vlans, force_vlan) # Assumption: just one TN node node = db_sync_manager.get_tn_nodes()[0] node["interfaces"] = [src_iface_new, dst_iface_new] return node
def __init__(self, source_tn, destination_tn, *args, **kwargs): # CIDs of source and destination TN endpoints self.src_dom = source_tn self.dst_dom = destination_tn # Link type can be "nsi" or "gre". Empty means "all" self.link_type = kwargs.get("link_type", "") # Filters to match against required switches self.src_of_cids = kwargs.get("src_of_switch_cids", []) self.dst_of_cids = kwargs.get("dst_of_switch_cids", []) self.of_cids_check_by_auth = kwargs.get("of_switch_cids_check_by_auth", False) # Dummy list to reduce lines of code self.src_dst_values = ["src", "dst"] # Nodes and links from database self.tn_nodes = [x for x in db_sync_manager.get_tn_nodes()] self.se_links = [x for x in db_sync_manager.get_se_links()] # Mapping structure to be returned is a list of possible src-dst paths self.mapping_tn_se_of = [] self.organisation_name_mappings = { "psnc": ["pionier"], "iminds": ["iMinds"], "kddi": ["jgn-x.jp"], } # Update with parameters passed self.__dict__.update(kwargs)
def generate_tn_node(src_dom, dst_dom): src_node = db_sync_manager.get_tn_node_interface({"component_id": src_dom}) dst_node = db_sync_manager.get_tn_node_interface({"component_id": dst_dom}) if len(src_node) == 0 or len(dst_node) == 0: logger.warning("Problem obtaining TN nodes: invalid endpoints (%s, %s)" % (src_dom, dst_dom)) return None else: src_node = src_node[0] dst_node = dst_node[0] src_iface_new = TNUtils.fill_name_tag_in_tn_iface(src_node, src_dom) dst_iface_new = TNUtils.fill_name_tag_in_tn_iface(dst_node, dst_dom) # Assumption: just one TN node node = db_sync_manager.get_tn_nodes()[0] node["interfaces"] = [src_iface_new, dst_iface_new] return node
def generate_tn_link(src_dom, src_vlan, dst_dom, dst_vlan): """ Generate link (tree/lxml structure) so it can be appended to the request RSpec. """ tn_ref_node = db_sync_manager.get_tn_nodes()[0] stp_reg = "+stp" link_cid = tn_ref_node.get("component_id", "") link_prefix = link_cid.split(stp_reg)[0] src_dom_ogf = src_dom[src_dom.find(stp_reg) + 1 + len(stp_reg):] dst_dom_ogf = dst_dom[dst_dom.find(stp_reg) + 1 + len(stp_reg):] #link_clid = generate_unique_link_id(link_cid, src_dom, dst_dom) link_clid_full = "%s+link+%s?vlan=%s-%s?vlan=%s" % ( link_prefix, src_dom_ogf, src_vlan, dst_dom_ogf, dst_vlan) logger.debug("Chosen TN inter-domain link: %s" % link_clid_full) link = { "component_id": link_clid_full, "component_manager_name": tn_ref_node.get("component_manager_id", ""), "interface_ref": [{ "component_id": src_dom }, { "component_id": dst_dom, }], "property": [{ "capacity": "100", "source_id": src_dom, "dest_id": dst_dom }, { "capacity": "100", "source_id": dst_dom, "dest_id": src_dom }], "component_manager_uuid": None, "vlantag": None, } return link
def __init__(self, source_tn, destination_tn, *args, **kwargs): # CIDs of source and destination TN endpoints self.src_dom = source_tn self.dst_dom = destination_tn # Link type can be "nsi" or "gre". Empty means "all" self.link_type = kwargs.get("link_type", "") # Filters to match against required switches self.src_of_cids = kwargs.get("src_of_switch_cids", []) self.dst_of_cids = kwargs.get("dst_of_switch_cids", []) self.of_cids_check_by_auth = kwargs.get( "of_switch_cids_check_by_auth", False) # Dummy list to reduce lines of code self.src_dst_values = ["src", "dst"] # Nodes and links from database self.tn_nodes = [x for x in db_sync_manager.get_tn_nodes()] self.se_links = [x for x in db_sync_manager.get_se_links()] # Mapping structure to be returned is a list of possible src-dst paths self.mapping_tn_se_of = [] # Update with parameters passed self.__dict__.update(kwargs)
def generate_tn_node(src_dom, dst_dom): src_node = db_sync_manager.get_tn_node_interface( {"component_id": src_dom}) dst_node = db_sync_manager.get_tn_node_interface( {"component_id": dst_dom}) if len(src_node) == 0 or len(dst_node) == 0: logger.warning( "Problem obtaining TN nodes: invalid endpoints (%s, %s)" % (src_dom, dst_dom)) return None else: src_node = src_node[0] dst_node = dst_node[0] src_iface_new = TNUtils.fill_name_tag_in_tn_iface(src_node, src_dom) dst_iface_new = TNUtils.fill_name_tag_in_tn_iface(dst_node, dst_dom) # Assumption: just one TN node node = db_sync_manager.get_tn_nodes()[0] node["interfaces"] = [src_iface_new, dst_iface_new] return node
def generate_list_resources_internal(rspec, inner_call=True): """ Appends TN and SE (internal) information when any of the following: * It is an internal call (MRO->RO, MRO->MRO) * Configuration flag "interdomain_available_to_user" is set to True """ for n in db_sync_manager.get_tn_nodes(): logger.debug("TN resources node=%s" % (n, )) rspec.tn_node(n, inner_call) for n in db_sync_manager.get_se_nodes(): logger.debug("SE resources node=%s" % (n, )) rspec.se_node(n, inner_call) for l in db_sync_manager.get_tn_links(): logger.debug("TN resources tn-link=%s" % (l, )) rspec.tn_link(l, inner_call) for l in db_sync_manager.get_se_links(): logger.debug("SE resources se-link=%s" % (l, )) rspec.se_link(l, inner_call)
def generate_list_resources_internal(rspec, inner_call=True): """ Appends TN and SE (internal) information when any of the following: * It is an internal call (MRO->RO, MRO->MRO) * Configuration flag "interdomain_available_to_user" is set to True """ for n in db_sync_manager.get_tn_nodes(): logger.debug("TN resources node=%s" % (n,)) rspec.tn_node(n, inner_call) for n in db_sync_manager.get_se_nodes(): logger.debug("SE resources node=%s" % (n,)) rspec.se_node(n, inner_call) for l in db_sync_manager.get_tn_links(): logger.debug("TN resources tn-link=%s" % (l,)) rspec.tn_link(l, inner_call) for l in db_sync_manager.get_se_links(): logger.debug("SE resources se-link=%s" % (l,)) rspec.se_link(l, inner_call)