Example #1
0
File: tn.py Project: HalasNet/felix
    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
Example #2
0
    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
Example #3
0
 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)
Example #4
0
File: tn.py Project: HalasNet/felix
    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
Example #5
0
    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
Example #6
0
 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)
Example #7
0
    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
Example #8
0
    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)
Example #9
0
File: ro.py Project: HalasNet/felix
    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)