def get_interfaces(self): interfaces = [] for data in split_on_bang(self.ssh.do("show running-config | begin interface")): interface = parse_interface(data) if interface: interfaces.append(interface) return interfaces
def list_vlans(self): vlans = [] for vlan_data in split_on_bang(self.ssh.do("show running-config vlan | begin vlan")): vlans.append(parse_vlan(vlan_data)) return vlans
def add_vif_data_to_vlans(self, vlans): vlans_interface_name_dict = {vlan.vlan_interface_name: vlan for vlan in vlans if vlan.vlan_interface_name} for int_vlan_data in split_on_bang(self.ssh.do("show running-config interface")): if regex.match("^interface ve (\d+)", int_vlan_data[0]): current_vlan = vlans_interface_name_dict.get(regex[0]) if current_vlan: add_interface_vlan_data(current_vlan, int_vlan_data)
def get_interfaces(self): interfaces = [] interface_vlans = {} for if_data in split_on_dedent(self.ssh.do("show interfaces")): if regex.match("^\w*Ethernet([^\s]*) is (\w*).*", if_data[0]): i = Interface(name=regex[0], port_mode=ACCESS, shutdown=regex[1] == "disabled") for line in if_data: if regex.match("Port name is (.*)", line): i.description = regex[0] interfaces.append(i) interface_vlans["ethe %s" % i.name] = { "object": i, "untagged": None, "tagged": [] } for vlan_data in split_on_bang(self.ssh.do("show running-config vlan")): if regex.match("^vlan (\d*)", vlan_data[0]): vlan_id = int(regex[0]) for line in vlan_data: if regex.match(" untagged (.*)", line): for name in parse_if_ranges(regex[0]): interface_vlans[name]["untagged"] = vlan_id if regex.match(" tagged (.*)", line): for name in parse_if_ranges(regex[0]): interface_vlans[name]["tagged"].append(vlan_id) for data in interface_vlans.values(): if data["untagged"] is not None and len(data["tagged"]) == 0: data["object"].access_vlan = data["untagged"] elif data["untagged"] is not None and len(data["tagged"]) > 0: data["object"].trunk_native_vlan = data["untagged"] if len(data["tagged"]) > 0: data["object"].port_mode = TRUNK data["object"].trunk_vlans = data["tagged"] return interfaces
def get_vlan(self, vlan_number): vlan_data = self.ssh.do("show running-config vlan | begin vlan %s" % vlan_number) if not vlan_data: raise UnknownVlan(vlan_number) return parse_vlan(next(split_on_bang(vlan_data)))