def add_trunk_vlan(self, interface_id, vlan): interface_data = self.get_interface_data(interface_id) actual_port_mode = resolve_port_mode(interface_data) if actual_port_mode == "access": raise InterfaceInWrongPortMode("access") vlans = self.get_vlans() if not [v for v in vlans if v.number == vlan]: raise UnknownVlan(vlan) with self.config(), self.interface(interface_id): if actual_port_mode is None: self.set("switchport mode trunk") actual_port_mode = "trunk" if actual_port_mode == "trunk": if has_trunk_vlans(interface_data): self.set("switchport {} allowed vlan add {}", actual_port_mode, vlan) \ .on_result_matching(".*VLAN does not exist.*", UnknownVlan, vlan) else: self.set("switchport {} allowed vlan {}", actual_port_mode, vlan) \ .on_result_matching(".*VLAN does not exist.*", UnknownVlan, vlan) else: self.set("switchport {} allowed vlan add {}", actual_port_mode, vlan) \ .on_result_matching(".*VLAN does not exist.*", UnknownVlan, vlan)
def set_trunk_mode(self, interface_id): interface_data = self.get_interface_data(interface_id) actual_port_mode = resolve_port_mode(interface_data) if actual_port_mode in ("access", None): with self.config(), self.interface(interface_id): self.shell.do("no switchport access vlan") self.shell.do("switchport mode trunk")
def set_access_vlan(self, interface_id, vlan): interface_data = self.get_interface_data(interface_id) actual_port_mode = resolve_port_mode(interface_data) if actual_port_mode in ("trunk", "general"): raise InterfaceInWrongPortMode(actual_port_mode) with self.config(), self.interface(interface_id): self.set("switchport access vlan {}", vlan).on_result_matching(".*VLAN ID not found.*", UnknownVlan, vlan)
def remove_trunk_vlan(self, interface_id, vlan): interface_data = self.get_interface_data(interface_id) trunk_vlans = resolve_trunk_vlans(interface_data) if vlan not in trunk_vlans: raise TrunkVlanNotSet(interface_id) actual_port_mode = resolve_port_mode(interface_data) with self.config(), self.interface(interface_id): self.set("switchport {} allowed vlan remove {}", actual_port_mode, vlan)
def set_access_vlan(self, interface_id, vlan): interface_data = self.get_interface_data(interface_id) actual_port_mode = resolve_port_mode(interface_data) if actual_port_mode in ("trunk", "general"): raise InterfaceInWrongPortMode(actual_port_mode) with self.config(), self.interface(interface_id): self.set("switchport access vlan {}", vlan) \ .on_result_matching(".*VLAN ID not found.*", UnknownVlan, vlan)