Пример #1
0
 def add_port(self, port_name):
     ipoplib.runshell([
         LinuxBridge.iptool, "link", "set", port_name, "mtu",
         str(self.mtu)
     ])
     ipoplib.runshell([LinuxBridge.brctl, "addif", self.name, port_name])
     self.ports.add(port_name)
Пример #2
0
 def stp(self, val=True):
     """ Turn STP protocol on/off. """
     if val:
         state = "on"
     else:
         state = "off"
     ipoplib.runshell([LinuxBridge.brctl, "stp", self.name, state])
Пример #3
0
 def stp(self, val=True):
     """ Turn STP protocol on/off. """
     if val:
         state = "on"
     else:
         state = "off"
     ipoplib.runshell([LinuxBridge.brctl, "stp", self.name, state])
Пример #4
0
 def add_port(self, port_name):
     ipoplib.runshell([
         OvsBridge.iptool, "link", "set", "dev", port_name, "mtu",
         str(self.mtu)
     ])
     ipoplib.runshell(
         [OvsBridge.brctl, "--may-exist", "add-port", self.name, port_name])
     self.ports.add(port_name)
Пример #5
0
    def add_sdn_ctrl(self, sdn_ctrl_cfg):
        if sdn_ctrl_cfg["ConnectionType"] == "tcp":
            ctrl_conn_str = ":".join([
                sdn_ctrl_cfg["ConnectionType"], sdn_ctrl_cfg["HostName"],
                sdn_ctrl_cfg["Port"]
            ])

            ipoplib.runshell(
                [OvsBridge.brctl, "set-controller", self.name, ctrl_conn_str])
Пример #6
0
 def stp(self, enable):
     if enable:
         ipoplib.runshell([OvsBridge.brctl,
                           "set", "bridge", self.name,
                           "stp_enable=true"])
     else:
         ipoplib.runshell([OvsBridge.brctl,
                           "set", "bridge", self.name,
                           "stp_enable=false"])
Пример #7
0
 def stp(self, enable):
     if enable:
         ipoplib.runshell([
             OvsBridge.brctl, "set", "bridge", self.name, "stp_enable=true"
         ])
     else:
         ipoplib.runshell([
             OvsBridge.brctl, "set", "bridge", self.name, "stp_enable=false"
         ])
Пример #8
0
 def del_port(self, port_name):
     p = ipoplib.runshell([LinuxBridge.brctl, "show", self.name])
     wlist = map(str.split, p.stdout.decode("utf-8").splitlines()[1:])
     port_lines = filter(lambda x: len(x) == 4, wlist)
     ports = map(lambda x: x[-1], port_lines)
     for port in ports:
         if port == port_name:
             ipoplib.runshell([LinuxBridge.brctl, "delif", self.name, port_name])
             if port_name in self.ports:
                 self.ports.remove(port_name)
Пример #9
0
    def add_sdn_ctrl(self, sdn_ctrl_cfg):
        if sdn_ctrl_cfg["ConnectionType"] == "tcp":
            ctrl_conn_str = ":".join([sdn_ctrl_cfg["ConnectionType"],
                                      sdn_ctrl_cfg["HostName"],
                                      sdn_ctrl_cfg["Port"]])

            ipoplib.runshell([OvsBridge.brctl,
                              "set-controller",
                              self.name,
                              ctrl_conn_str])
Пример #10
0
 def req_handler_remove_tunnel(self, cbt):
     msg = cbt.request.params
     ctl = ipoplib.CTL_REMOVE_TUNNEL
     ctl["IPOP"]["TransactionId"] = cbt.tag
     req = ctl["IPOP"]["Request"]
     req["OverlayId"] = msg["OverlayId"]
     req["TunnelId"] = msg["TunnelId"]
     self.send_control(json.dumps(ctl))
     if "TapName" in msg and msg["TapName"]:
         ipoplib.runshell(
             [self.iptool, "link", "del", "dev", msg["TapName"]])
Пример #11
0
 def del_port(self, port_name):
     p = ipoplib.runshell([LinuxBridge.brctl, "show", self.name])
     wlist = map(str.split, p.stdout.decode("utf-8").splitlines()[1:])
     port_lines = filter(lambda x: len(x) == 4, wlist)
     ports = map(lambda x: x[-1], port_lines)
     for port in ports:
         if port == port_name:
             ipoplib.runshell(
                 [LinuxBridge.brctl, "delif", self.name, port_name])
             if port_name in self.ports:
                 self.ports.remove(port_name)
Пример #12
0
    def __init__(self,
                 name,
                 ip_addr,
                 prefix_len,
                 mtu,
                 cm,
                 stp_enable,
                 sdn_ctrl_cfg=None):
        """ Initialize an OpenvSwitch bridge object. """
        super(OvsBridge, self).__init__(name, ip_addr, prefix_len, mtu, cm)
        if OvsBridge.brctl is None or OvsBridge.iptool is None:
            raise RuntimeError(
                "openvswitch-switch was not found"
                if not OvsBridge.brctl else "iproute2 was not found")
        ipoplib.runshell([OvsBridge.brctl, "--may-exist", "add-br", self.name])

        # try:
        #    p = ipoplib.runshell([OvsBridge.brctl, "set", "int",
        #                             self.name,
        #                             "mtu_request=" + str(self.mtu)])
        # except RuntimeError as e:
        #    pass
        # self.register_cbt(
        # "Logger", "LOG_WARN", "Following error occurred while"
        # " setting MTU for OVS bridge: " + e.message
        # + ". Proceeding with OVS-specified default"
        # " value for the bridge...")

        if ip_addr and prefix_len:
            net = "{0}/{1}".format(ip_addr, prefix_len)
            ipoplib.runshell(
                [OvsBridge.iptool, "addr", "flush", "dev", self.name])
            ipoplib.runshell(
                [OvsBridge.iptool, "addr", "add", net, "dev", self.name])

        try:
            ipoplib.runshell([
                OvsBridge.brctl, "set", "int", self.name,
                "mtu_request=" + str(self.mtu)
            ])
        except RuntimeError as e:
            self.cm.register_cbt(
                "Logger", "LOG_WARN",
                "The following error occurred while setting"
                " MTU for OVS bridge: {0}".format(e))

        self.stp(stp_enable)
        ipoplib.runshell(
            [OvsBridge.iptool, "link", "set", "dev", self.name, "up"])

        if sdn_ctrl_cfg:
            self.add_sdn_ctrl(sdn_ctrl_cfg)
Пример #13
0
    def __init__(self, name, ip_addr, prefix_len, mtu, stp_enable, sdn_ctrl_cfg=None):
        """ Initialize an OpenvSwitch bridge object. """
        super(OvsBridge, self).__init__(name, ip_addr, prefix_len, mtu)
        if OvsBridge.brctl is None or OvsBridge.iptool is None:
            raise RuntimeError("openvswitch-switch was not found" if not OvsBridge.brctl else
                               "iproute2 was not found")
        ipoplib.runshell([OvsBridge.brctl,
                          "--may-exist", "add-br", self.name])

        # try:
        #    p = ipoplib.runshell([OvsBridge.brctl, "set", "int",
        #                             self.name,
        #                             "mtu_request=" + str(self.mtu)])
        # except RuntimeError as e:
        #    pass
        # self.register_cbt(
        # "Logger", "LOG_WARN", "Following error occurred while"
        # " setting MTU for OVS bridge: " + e.message
        # + ". Proceeding with OVS-specified default"
        # " value for the bridge...")

        net = "{0}/{1}".format(ip_addr, prefix_len)

        p = ipoplib.runshell([OvsBridge.iptool, "addr", "show", self.name])
        ip_addr_info = p.stdout.decode()
        if net not in ip_addr_info:
            ipoplib.runshell([OvsBridge.iptool, "addr", "add", net, "dev", self.name])

        self.stp(stp_enable)
        ipoplib.runshell([OvsBridge.iptool, "link", "set", "dev", self.name, "up"])

        if sdn_ctrl_cfg:
            self.add_sdn_ctrl(sdn_ctrl_cfg)
Пример #14
0
 def add_port(self, port_name):
     self.name = port_name
     net = "{0}/{1}".format(self.ip_addr, self.prefix_len)
     ipoplib.runshell([VNIC.iptool, "addr", "add", net, "dev", self.name])
     ipoplib.runshell(
         [VNIC.iptool, "link", "set", self.name, "mtu",
          str(self.mtu)])
     ipoplib.runshell([VNIC.iptool, "link", "set", "dev", self.name, "up"])
Пример #15
0
    def __init__(self, name, ip_addr, prefix_len, mtu, stp_enable):
        """ Initialize a Linux bridge object. """
        super(LinuxBridge, self).__init__(name, ip_addr, prefix_len, mtu)
        if LinuxBridge.brctl is None or LinuxBridge.iptool is None:
            raise RuntimeError("bridge-utils was not found" if not LinuxBridge.brctl else
                               "iproute2 was not found")
        p = ipoplib.runshell([LinuxBridge.brctl, "show"])
        wlist = map(str.split, p.stdout.decode("utf-8").splitlines()[1:])
        brwlist = filter(lambda x: len(x) != 1, wlist)
        brlist = map(lambda x: x[0], brwlist)
        for br in brlist:
            if br == name:
                return

        p = ipoplib.runshell([LinuxBridge.brctl, "addbr", self.name])
        net = "{0}/{1}".format(ip_addr, prefix_len)
        ipoplib.runshell([LinuxBridge.iptool, "addr", "add", net, "dev", name])
        self.stp(stp_enable)
        ipoplib.runshell([LinuxBridge.iptool, "link", "set", "dev", name, "up"])
Пример #16
0
    def __init__(self, name, ip_addr, prefix_len, mtu, cm, stp_enable):
        """ Initialize a Linux bridge object. """
        super(LinuxBridge, self).__init__(name, ip_addr, prefix_len, mtu, cm)
        if LinuxBridge.brctl is None or LinuxBridge.iptool is None:
            raise RuntimeError("bridge-utils was not found" if not LinuxBridge.
                               brctl else "iproute2 was not found")
        p = ipoplib.runshell([LinuxBridge.brctl, "show"])
        wlist = map(str.split, p.stdout.decode("utf-8").splitlines()[1:])
        brwlist = filter(lambda x: len(x) != 1, wlist)
        brlist = map(lambda x: x[0], brwlist)
        for br in brlist:
            if br == name:
                return

        p = ipoplib.runshell([LinuxBridge.brctl, "addbr", self.name])
        net = "{0}/{1}".format(ip_addr, prefix_len)
        ipoplib.runshell([LinuxBridge.iptool, "addr", "add", net, "dev", name])
        self.stp(stp_enable)
        ipoplib.runshell(
            [LinuxBridge.iptool, "link", "set", "dev", name, "up"])
Пример #17
0
 def del_port(self, port_name):
     ipoplib.runshell([OvsBridge.brctl,
                       "--if-exists", "del-port", self.name, port_name])
     if port_name in self.ports:
         self.ports.remove(port_name)
Пример #18
0
 def set_path_cost(self, port, cost):
     """ Set port path cost value for STP protocol. """
     ipoplib.runshell(
         [LinuxBridge.brctl, "setpathcost", self.name, port,
          str(cost)])
Пример #19
0
 def set_port_prio(self, port, prio):
     """ Set port priority value. """
     ipoplib.runshell(
         [LinuxBridge.brctl, "setportprio", self.name, port,
          str(prio)])
Пример #20
0
    def del_br(self):
        self.del_sdn_ctrl()

        ipoplib.runshell([OvsBridge.brctl,
                          "--if-exists", "del-br", self.name])
Пример #21
0
 def set_bridge_prio(self, prio):
     """ Set bridge priority value. """
     ipoplib.runshell(
         [LinuxBridge.brctl, "setbridgeprio", self.name,
          str(prio)])
Пример #22
0
 def add_port(self, port_name):
     ipoplib.runshell([OvsBridge.iptool, "link", "set", "dev", port_name, "mtu",
                       str(self.mtu)])
     ipoplib.runshell([OvsBridge.brctl,
                       "--may-exist", "add-port", self.name, port_name])
     self.ports.add(port_name)
Пример #23
0
 def set_path_cost(self, port, cost):
     """ Set port path cost value for STP protocol. """
     ipoplib.runshell([LinuxBridge.brctl,
                       "setpathcost", self.name, port, str(cost)])
Пример #24
0
 def set_bridge_prio(self, prio):
     """ Set bridge priority value. """
     ipoplib.runshell([LinuxBridge.brctl,
                       "setbridgeprio", self.name, str(prio)])
Пример #25
0
 def del_br(self):
     # Set the device down and delete the bridge
     ipoplib.runshell(
         [LinuxBridge.iptool, "link", "set", "dev", self.name, "down"])
     ipoplib.runshell([LinuxBridge.brctl, "delbr", self.name])
Пример #26
0
 def set_port_prio(self, port, prio):
     """ Set port priority value. """
     ipoplib.runshell([LinuxBridge.brctl,
                       "setportprio", self.name, port, str(prio)])
Пример #27
0
 def del_port(self, port_name):
     ipoplib.runshell(
         [OvsBridge.brctl, "--if-exists", "del-port", self.name, port_name])
     if port_name in self.ports:
         self.ports.remove(port_name)
Пример #28
0
 def del_br(self):
     # Set the device down and delete the bridge
     ipoplib.runshell([LinuxBridge.iptool, "link", "set", "dev", self.name, "down"])
     ipoplib.runshell([LinuxBridge.brctl, "delbr", self.name])
Пример #29
0
    def del_br(self):
        self.del_sdn_ctrl()

        ipoplib.runshell([OvsBridge.brctl, "--if-exists", "del-br", self.name])
Пример #30
0
 def del_sdn_ctrl(self):
     ipoplib.runshell([OvsBridge.brctl, "del-controller", self.name])
Пример #31
0
 def del_sdn_ctrl(self):
     ipoplib.runshell([OvsBridge.brctl, "del-controller", self.name])
Пример #32
0
 def add_port(self, port_name):
     ipoplib.runshell([LinuxBridge.iptool, "link", "set", port_name, "mtu", str(self.mtu)])
     ipoplib.runshell([LinuxBridge.brctl, "addif", self.name, port_name])
     self.ports.add(port_name)