def create(self): config = self._dev_config slaves = get_slaves(config) if len(slaves) == 1: realdev_id = slaves[0] name = self._if_manager.get_mapped_device(realdev_id).get_name() dev_param = "dev %s" % name else: dev_param = "" dev_name = config["name"] vxlan_id = int(get_option(config, "id")) group_ip = get_option(config, "group_ip") remote_ip = get_option(config, "remote_ip") if group_ip: group_or_remote = "group %s" % group_ip elif remote_ip: group_or_remote = "remote %s" % remote_ip else: raise Exception("group or remote must be specified for vxlan") dstport = get_option(config, "dstport") if not dstport: dstport = 0 else: dstport = int(dstport) exec_cmd("ip link add %s type vxlan id %d %s %s dstport %d" % (dev_name, vxlan_id, dev_param, group_or_remote, dstport))
def create(self): config = self._dev_config dev_name = config["name"] params = [] slaves = get_slaves(config) if len(slaves) == 1: ul_id = slaves[0] ul_name = self._if_manager.get_mapped_device(ul_id).get_name() params.append(" dev %s" % ul_name) for k in ("ttl", "tos", "key", "ikey", "okey", "local_ip", "remote_ip"): v = get_option(config, k) if v is not None: flag = {"local_ip": "local", "remote_ip": "remote"}.get(k, k) params.append(" %s %s" % (flag, v)) for k in ("seq", "iseq", "oseq", "csum", "icsum", "ocsum"): v = get_option(config, k) if v is not None and bool_it(v): params.append(" " + k) exec_cmd("ip tunnel add name %s mode gre%s" % (dev_name, "".join(params)))
def create(self): config = self._dev_config slaves = get_slaves(config) if len(slaves) == 1: realdev_id = slaves[0] name = self._if_manager.get_mapped_device(realdev_id).get_name() dev_param = "dev %s" % name else: dev_param = "" dev_name = config["name"] vxlan_id = int(get_option(config, "id")) group_ip = get_option(config, "group_ip") remote_ip = get_option(config, "remote_ip") extra = get_option(config, "extra") or '' if group_ip: group_or_remote = "group %s" % group_ip elif remote_ip: group_or_remote = "remote %s" % remote_ip else: raise Exception("group or remote must be specified for vxlan") dstport = get_option(config, "dstport") if not dstport: dstport = 0 else: dstport = int(dstport) exec_cmd( "ip link add %s type vxlan id %d %s %s dstport %d %s" % (dev_name, vxlan_id, dev_param, group_or_remote, dstport, extra))
def _add_team(self): config = self._dev_config config["master_uuid"] = str(uuid.uuid4()) s_team_con = dbus.Dictionary({ 'type': 'team', 'autoconnect': dbus.Boolean(False), 'uuid': config["master_uuid"], 'id': config["name"]+"_con"}) teamd_config = get_option(config, "teamd_config") s_team = dbus.Dictionary({ 'interface-name': config["name"], 'config': teamd_config}) s_ipv4, s_ipv6 = self._nm_make_ip_settings(config["addresses"]) connection = dbus.Dictionary({ 'team': s_team, 'ipv4': s_ipv4, 'ipv6': s_ipv6, 'connection': s_team_con}) self._connection = connection self._nm_add_connection()
def assign_name(self, config): if "name" in config: return config["name"] dev_type = config["type"] if dev_type == "eth": if (not "hwaddr" in config or "name" in config): return hwaddr = normalize_hwaddr(config["hwaddr"]) for dev in self._devices: if dev.get_hwaddr() == hwaddr: return dev.get_name() elif dev_type == "bond": return self._assign_name_generic("t_bond") elif dev_type == "bridge" or dev_type == "ovs_bridge": return self._assign_name_generic("t_br") elif dev_type == "macvlan": return self._assign_name_generic("t_macvlan") elif dev_type == "team": return self._assign_name_generic("t_team") elif dev_type == "vlan": netdev_name = self.get_mapped_device(config["slaves"][0]).get_name() vlan_tci = get_option(config, "vlan_tci") prefix = "%s.%s_" % (netdev_name, vlan_tci) return self._assign_name_generic(prefix) elif dev_type == "veth": return self._assign_name_pair("veth") elif dev_type == "vti": return self._assign_name_generic("vti") elif dev_type == "vti6": return self._assign_name_generic("t_ip6vti") else: return self._assign_name_generic("dev")
def _get_vlan_info(self): netdev = self._netdev realdev_index = get_slaves(netdev)[0] realdev = self._config[realdev_index]["name"] dev_name = netdev["name"] vlan_tci = int(get_option(netdev, "vlan_tci")) return dev_name, realdev, vlan_tci
def _get_vlan_info(self): netdev = self._netdev; realdev_index = get_slaves(netdev)[0] realdev = self._config[realdev_index]["name"] dev_name = netdev["name"] vlan_tci = int(get_option(netdev, "vlan_tci")) return dev_name, realdev, vlan_tci
def assign_name(self, config): if "name" in config: return config["name"] dev_type = config["type"] if dev_type == "eth": if (not "hwaddr" in config or "name" in config): return hwaddr = normalize_hwaddr(config["hwaddr"]) for dev in self._devices: if dev.get_hwaddr() == hwaddr: return dev.get_name() elif dev_type == "bond": return self.assign_name_generic("t_bond") elif dev_type == "bridge" or dev_type == "ovs_bridge": return self.assign_name_generic("t_br") elif dev_type == "macvlan": return self.assign_name_generic("t_macvlan") elif dev_type == "team": return self.assign_name_generic("t_team") elif dev_type == "vlan": netdev_name = self.get_mapped_device(config["slaves"][0]).get_name() vlan_tci = get_option(config, "vlan_tci") prefix = "%s.%s_" % (netdev_name, vlan_tci) return self.assign_name_generic(prefix) elif dev_type == "veth": return self._assign_name_pair("veth") elif dev_type == "vti": return self.assign_name_generic("vti") elif dev_type == "vti6": return self.assign_name_generic("t_ip6vti") elif dev_type == "vxlan": return self.assign_name_generic("vxlan") else: return self.assign_name_generic("dev")
def _add_team(self): config = self._dev_config config["master_uuid"] = str(uuid.uuid4()) s_team_con = dbus.Dictionary( { "type": "team", "autoconnect": dbus.Boolean(False), "interface-name": config["name"], "uuid": config["master_uuid"], "id": config["name"] + "_con", } ) teamd_config = get_option(config, "teamd_config") s_team = dbus.Dictionary({"config": teamd_config}) connection = dbus.Dictionary( { "team": s_team, "ipv4": dbus.Dictionary({"method": "disabled"}, signature="sv"), "ipv6": dbus.Dictionary({"method": "ignore"}, signature="sv"), "connection": s_team_con, } ) self._connection = connection self._nm_add_connection()
def _get_vlan_info(self): config = self._dev_config; realdev_id = get_slaves(config)[0] realdev_name = self._if_manager.get_mapped_device(realdev_id).get_name() dev_name = config["name"] vlan_tci = int(get_option(config, "vlan_tci")) return dev_name, realdev_name, vlan_tci
def _add_team(self): config = self._dev_config config["master_uuid"] = str(uuid.uuid4()) s_team_con = dbus.Dictionary({ 'type': 'team', 'autoconnect': dbus.Boolean(False), 'interface-name': config["name"], 'uuid': config["master_uuid"], 'id': config["name"] + "_con" }) teamd_config = get_option(config, "teamd_config") s_team = dbus.Dictionary({'config': teamd_config}) connection = dbus.Dictionary({ 'team': s_team, 'ipv4': dbus.Dictionary({'method': 'disabled'}, signature='sv'), 'ipv6': dbus.Dictionary({'method': 'ignore'}, signature='sv'), 'connection': s_team_con }) self._connection = connection self._nm_add_connection()
def create(self): teamd_config = get_option(self._dev_config, "teamd_config") teamd_config = prepare_json_str(teamd_config) dev_name = self._dev_config["name"] dbus_option = " -D" if self._should_enable_dbus() else "" exec_cmd("teamd -r -d -c \"%s\" -t %s %s" % (teamd_config, dev_name, dbus_option))
def create(self): config = self._dev_config dev_name = config["name"] params = [] slaves = get_slaves(config) if len(slaves) == 1: ul_id = slaves[0] ul_name = self._if_manager.get_mapped_device(ul_id).get_name() params.append(" dev %s" % ul_name) v = get_option(config, "local_ip") if v is not None: params.append(" local %s" % v) v = get_option(config, "remote_ip") if v is not None: params.append(" remote %s" % v) exec_cmd("ip tunnel add name %s mode ipip%s" % (dev_name, "".join(params)))
def configure(self): self._ports_down() teamd_config = get_option(self._dev_config, "teamd_config") teamd_config = prepare_json_str(teamd_config) dev_name = self._dev_config["name"] dbus_option = " -D" if self._should_enable_dbus() else "" exec_cmd("teamd -r -d -c \"%s\" -t %s %s" % (teamd_config, dev_name, dbus_option)) for slave_id in get_slaves(self._dev_config): self.slave_add(slave_id) self._ports_up()
def configure(self): self._ports_down() teamd_config = get_option(self._netdev, "teamd_config") teamd_config = prepare_json_str(teamd_config) dev_name = self._netdev["name"] dbus_option = " -D" if self._should_enable_dbus() else "" exec_cmd("teamd -r -d -c \"%s\" -t %s %s" % (teamd_config, dev_name, dbus_option)) for slave_id in get_slaves(self._netdev): self.slave_add(slave_id) self._ports_up()
def _add_team(self): config = self._dev_config config["master_uuid"] = str(uuid.uuid4()) s_team_con = dbus.Dictionary({ 'type': 'team', 'autoconnect': dbus.Boolean(False), 'interface-name': config["name"], 'uuid': config["master_uuid"], 'id': config["name"]+"_con"}) teamd_config = get_option(config, "teamd_config") s_team = dbus.Dictionary({ 'config': teamd_config}) connection = dbus.Dictionary({ 'team': s_team, 'ipv4': dbus.Dictionary({'method': 'disabled'}, signature='sv'), 'ipv6': dbus.Dictionary({'method': 'ignore'}, signature='sv'), 'connection': s_team_con}) self._connection = connection self._nm_add_connection()
def _should_enable_dbus(self): dbus_disabled = get_option(self._dev_config, "dbus_disabled") if not dbus_disabled or bool_it(dbus_disabled): return True return False
def _assign_name_vlan(self, netdev, config): real_netdev = config[netdev["slaves"][0]] vlan_tci = get_option(netdev, "vlan_tci") netdev["name"] = "%s.%s" % (real_netdev["name"], vlan_tci)