def add_port(self, port_name): ipoplib.runshell_su( [IPEXE, "link", "set", port_name, "mtu", str(self.mtu)]) ipoplib.runshell_su( [LinuxBridge.brctlexe, "addif", self.name, port_name]) self.ports.add(port_name)
def stp(self, val=True): """ Turn STP protocol on/off. """ if val: state = "on" else: state = "off" ipoplib.runshell_su([LinuxBridge.brctlexe, "stp", self.name, state])
def add_port(self, port_name): ipoplib.runshell_su( [IPEXE, "link", "set", "dev", port_name, "mtu", str(self.mtu)]) ipoplib.runshell_su([ OvsBridge.brctlexe, "--may-exist", "add-port", self.name, port_name ]) self.ports.add(port_name)
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_su([ OvsBridge.brctlexe, "set-controller", self.name, ctrl_conn_str ])
def del_port(self, port_name): p = ipoplib.runshell_su([LinuxBridge.brctlexe, "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_su( [LinuxBridge.brctlexe, "delif", self.name, port_name]) if port_name in self.ports: self.ports.remove(port_name)
def stp(self, enable): if enable: ipoplib.runshell_su([ OvsBridge.brctlexe, "set", "bridge", self.name, "stp_enable=true" ]) else: ipoplib.runshell_su([ OvsBridge.brctlexe, "set", "bridge", self.name, "stp_enable=false" ])
def __init__(self, name, ip_addr, prefix_len, sdn_ctrl_cfg=dict()): """ Initialize a bridge object. """ super(OvsBridge, self).__init__(name, ip_addr, prefix_len) ipoplib.runshell_su( [OvsBridge.brctlexe, "--may-exist", "add-br", self.name]) '''net = "{0}/{1}".format(ip_addr, prefix_len) p = ipoplib.runshell_su([IPEXE, "addr", "show", self.name]) ip_addr_info = p.stdout.decode() if net not in ip_addr_info: ipoplib.runshell_su([IPEXE, "addr", "add", net, "dev", self.name]) self.stp(False) ipoplib.runshell_su([IPEXE, "link", "set", "dev", self.name, "up"])''' self.add_sdn_ctrl(sdn_ctrl_cfg)
def __init__(self, name, ip_addr, prefix_len, mtu, stp_enable, sdn_ctrl_cfg=None): """ Initialize a bridge object. """ super(OvsBridge, self).__init__(name, ip_addr, prefix_len, mtu) ipoplib.runshell_su( [OvsBridge.brctlexe, "--may-exist", "add-br", self.name]) try: p = ipoplib.runshell_su([ OvsBridge.brctlexe, "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_su([IPEXE, "addr", "show", self.name]) ip_addr_info = p.stdout.decode() if net not in ip_addr_info: ipoplib.runshell_su([IPEXE, "addr", "add", net, "dev", self.name]) self.stp(stp_enable) ipoplib.runshell_su([IPEXE, "link", "set", "dev", self.name, "up"]) if sdn_ctrl_cfg: self.add_sdn_ctrl(sdn_ctrl_cfg)
def __init__(self, name, ip_addr, prefix_len, *args, **kwargs): """ Initialize a bridge object. """ super(LinuxBridge, self).__init__(name, ip_addr, prefix_len) p = ipoplib.runshell_su([LinuxBridge.brctlexe, '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: print(br) if br == name: print("deleting {}".format(br)) self.del_br() ipoplib.runshell_su([LinuxBridge.brctlexe, "addbr", self.name]) net = "{0}/{1}".format(ip_addr, prefix_len) ipoplib.runshell_su([IPEXE, "addr", "add", net, "dev", name]) self.stp(False) ipoplib.runshell_su([IPEXE, "link", "set", "dev", name, "up"])
def __init__(self, name, ip_addr, prefix_len, mtu, stp_enable): """ Initialize a bridge object. """ super(LinuxBridge, self).__init__(name, ip_addr, prefix_len, mtu) p = ipoplib.runshell_su([LinuxBridge.brctlexe, "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_su([LinuxBridge.brctlexe, "addbr", self.name]) net = "{0}/{1}".format(ip_addr, prefix_len) ipoplib.runshell_su([IPEXE, "addr", "add", net, "dev", name]) self.stp(stp_enable) ipoplib.runshell_su([IPEXE, "link", "set", "dev", name, "up"])
def add_port(self, port_name): ipoplib.runshell_su([ OvsBridge.brctlexe, "--may-exist", "add-port", self.name, port_name ])
def del_br(self): self.del_sdn_ctrl() ipoplib.runshell_su( [OvsBridge.brctlexe, "--if-exists", "del-br", self.name])
def del_sdn_ctrl(self): ipoplib.runshell_su([OvsBridge.brctlexe, "del-controller", self.name])
def del_port(self, port_name): ipoplib.runshell_su([ OvsBridge.brctlexe, "--if-exists", "del-port", self.name, port_name ]) if port_name in self.ports: self.ports.remove(port_name)
def set_port_prio(self, port, prio): """ Set port priority value. """ ipoplib.runshell_su( [LinuxBridge.brctlexe, "setportprio", self.name, port, str(prio)])
def set_path_cost(self, port, cost): """ Set port path cost value for STP protocol. """ ipoplib.runshell_su( [LinuxBridge.brctlexe, "setpathcost", self.name, port, str(cost)])
def del_port(self, port): ipoplib.runshell_su([LinuxBridge.brctlexe, "delif", self.name, port])
def add_port(self, port): ipoplib.runshell_su([LinuxBridge.brctlexe, "addif", self.name, port])
def del_br(self): """ Set the device down and delete the bridge. """ ipoplib.runshell_su([IPEXE, "link", "set", "dev", self.name, "down"]) ipoplib.runshell_su([LinuxBridge.brctlexe, "delbr", self.name])
def del_port(self, port_name): ipoplib.runshell_su([ OvsBridge.brctlexe, "--if-exists", "del-port", self.name, port_name ])