Exemple #1
0
    def _ensure_vrf(self, vrf, vrf_ip, cidr):
        """Ensure vrf interface

        return: vrf_table
        """
        if self.vrf_tables:
            vrf_table = max(list(self.vrf_tables.values())) + 1
        else:
            vrf_table = VRF_TABLE_NAMBER_BASE
        if vrf not in list(self.vrf_tables):
            privileged.create_interface(vrf, None, "vrf", vrf_table=vrf_table)
            privileged.set_link_attribute(vrf, None, state="up")

            LOG.debug("VRF %s is created" % vrf)
            self.vrf_tables[vrf] = vrf_table

            # TODO(hichihara): Refactor to use ip_lib instead of command
            ip = vrf_ip + '/' + cidr
            self._setup_interface_ip(ip, vrf)
            cmd = ["ip", "route", "replace", vrf_ip, "dev", vrf]
            utils.execute(cmd, run_as_root=True, check_exit_code=False)
            vrf_sid = ("%(node_id)s:%(vrf_ip)s/128" % {
                "node_id": self.node_id,
                "vrf_ip": vrf_ip
            })
            self._setup_interface_ip(vrf_sid, vrf)
            self._setup_interface_ip("169.254.169.254/32", vrf)
            # Create encap rules
            for encap_info in self.encap_info:
                if vrf == encap_info['vrf']:
                    self.add_encap_rules([encap_info], add_flag=False)
                    break
        else:
            vrf_table = self.vrf_tables[vrf]
        return vrf_table
Exemple #2
0
 def set_mtu(self, mtu_size):
     try:
         privileged.set_link_attribute(
             self.name, self._parent.namespace, mtu=mtu_size)
     except NetlinkError as e:
         if e.code == errno.EINVAL:
             raise InvalidArgument(parameter="MTU", value=mtu_size)
         raise
Exemple #3
0
 def set_mtu(self, mtu_size):
     try:
         privileged.set_link_attribute(self.name,
                                       self._parent.namespace,
                                       mtu=mtu_size)
     except NetlinkError as e:
         if e.code == errno.EINVAL:
             raise InvalidArgument(parameter="MTU", value=mtu_size)
         raise
Exemple #4
0
 def set_netns(self, namespace):
     privileged.set_link_attribute(
         self.name, self._parent.namespace, net_ns_fd=namespace)
     self._parent.namespace = namespace
Exemple #5
0
 def set_down(self):
     privileged.set_link_attribute(
         self.name, self._parent.namespace, state='down')
Exemple #6
0
 def set_up(self):
     privileged.set_link_attribute(
         self.name, self._parent.namespace, state='up')
Exemple #7
0
 def set_address(self, mac_address):
     privileged.set_link_attribute(
         self.name, self._parent.namespace, address=mac_address)
Exemple #8
0
 def set_alias(self, alias_name):
     privileged.set_link_attribute(self.name,
                                   self._parent.namespace,
                                   ifalias=alias_name)
Exemple #9
0
 def _add_avr_to_vrf(self, vrf, qvr):
     vrf_idx = privileged.get_link_id(vrf, None)
     privileged.set_link_attribute(qvr, None, master=vrf_idx)
Exemple #10
0
 def set_netns(self, namespace):
     privileged.set_link_attribute(self.name,
                                   self._parent.namespace,
                                   net_ns_fd=namespace)
     self._parent.namespace = namespace
Exemple #11
0
 def set_down(self):
     privileged.set_link_attribute(self.name,
                                   self._parent.namespace,
                                   state='down')
Exemple #12
0
 def set_up(self):
     privileged.set_link_attribute(self.name,
                                   self._parent.namespace,
                                   state='up')
Exemple #13
0
 def set_address(self, mac_address):
     privileged.set_link_attribute(self.name,
                                   self._parent.namespace,
                                   address=mac_address)
Exemple #14
0
 def set_mtu(self, mtu_size):
     privileged.set_link_attribute(self.name,
                                   self._parent.namespace,
                                   mtu=mtu_size)
Exemple #15
0
 def remove_vrf(self, vrf):
     if self.vrf_tables.get(vrf):
         privileged.set_link_attribute(vrf, None, state="down")
         privileged.delete_interface(vrf, None)
         self.vrf_tables.pop(vrf)
         LOG.debug("Removed vrf %s", vrf)
Exemple #16
0
 def set_name(self, name):
     privileged.set_link_attribute(
         self.name, self._parent.namespace, ifname=name)
     self._parent.name = name
Exemple #17
0
 def set_alias(self, alias_name):
     privileged.set_link_attribute(
         self.name, self._parent.namespace, ifalias=alias_name)
Exemple #18
0
 def set_name(self, name):
     privileged.set_link_attribute(self.name,
                                   self._parent.namespace,
                                   ifname=name)
     self._parent.name = name