def read_interface(self, interface_name): data = self.get_interface_data(interface_name) interface = Interface(name=interface_name, port_mode=ACCESS, shutdown=False) for line in data: if regex.match("switchport mode \S+", line): interface.port_mode = TRUNK if regex.match("shutdown", line): interface.shutdown = True if regex.match("switchport access vlan (\d+)", line): interface.access_vlan = int(regex[0]) if regex.match("switchport general pvid (\d+)", line): interface.trunk_native_vlan = int(regex[0]) if regex.match("switchport \S+ allowed vlan add (\S+)", line): interface.trunk_vlans += parse_vlan_ranges(regex[0]) if regex.match("mtu (\d+)", line): interface.mtu = int(regex[0]) return interface
def parse_interfaces(interfaces_data, switchports_data): interfaces = [] for interface_data in interfaces_data.values(): if regex.match("(\w*Ethernet[^\s]*)", interface_data["name"]) or \ regex.match("(Port-channel[^\s]*)", interface_data["name"]): interface = Interface(name=interface_data["name"], shutdown=False) if interface_data["lineProtocolStatus"] == "down": interface.shutdown = True interface.mtu = int(interface_data["mtu"]) interface.auto_negotiation = ON if interface_data["autoNegotiate"] == "on" else OFF if interface.name in switchports_data: patch_switchport(interface, switchports_data[interface.name]["switchportInfo"]) interfaces.append(interface) return interfaces